<?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>237568</bug_id>
          
          <creation_ts>2022-03-07 16:53:54 -0800</creation_ts>
          <short_desc>Optimize further the passing of data across threads</short_desc>
          <delta_ts>2022-03-08 12:07:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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>
          <dependson>237502</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1849035</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-07 16:53:54 -0800</bug_when>
    <thetext>Optimize further the passing of data across threads by leveraging more broadly the optimized versions of isolatedCopy() on r-value references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849036</commentid>
    <comment_count>1</comment_count>
      <attachid>454052</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-07 16:56:34 -0800</bug_when>
    <thetext>Created attachment 454052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849046</commentid>
    <comment_count>2</comment_count>
      <attachid>454056</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-07 17:25:29 -0800</bug_when>
    <thetext>Created attachment 454056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849072</commentid>
    <comment_count>3</comment_count>
      <attachid>454061</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-07 19:15:34 -0800</bug_when>
    <thetext>Created attachment 454061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849323</commentid>
    <comment_count>4</comment_count>
      <attachid>454061</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-08 09:58:44 -0800</bug_when>
    <thetext>Comment on attachment 454061
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849354</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-08 12:06:45 -0800</bug_when>
    <thetext>Committed r291003 (248179@main): &lt;https://commits.webkit.org/248179@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454061.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849356</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-08 12:07:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/89981832&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454052</attachid>
            <date>2022-03-07 16:56:34 -0800</date>
            <delta_ts>2022-03-07 17:27:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237568-20220307165633.patch</filename>
            <type>text/plain</type>
            <size>266746</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdkNjg1YjA3YzMxYTdi
NWVhZWY2N2JhZmY0YzEwYzNhOTJlNmMxOS4uY2NhMjE1ZjkzOWY1ZWYwNmMxYjEzY2I3ZDQzY2Fi
MzFhZDIyYzNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIyLTAzLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgZnVydGhlciB0
aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpbWl6ZSBmdXJ0aGVyIHRoZSBwYXNzaW5nIG9m
IGRhdGEgYWNyb3NzIHRocmVhZHMgYnkgbGV2ZXJhZ2luZyBtb3JlIGJyb2FkbHkgdGhlIG9wdGlt
aXplZAorICAgICAgICB2ZXJzaW9ucyBvZiBpc29sYXRlZENvcHkoKSBvbiByLXZhbHVlIHJlZmVy
ZW5jZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldFBhcmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01GaWxlU3lzdGVtOjpnZXRFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlSGFuZGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0
RGlyZWN0b3J5SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGVOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Om1vdmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnRE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleEtleTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkluZGV4S2V5Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFuYWdlcjo6
ZmlsZVN5c3RlbUFjY2Vzc0dldERpcmVjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9zdG9yYWdl
L1dvcmtlclN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclN0
b3JhZ2VDb25uZWN0aW9uOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3Nvcik6CisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRj
aEFsZ29yaXRobU9wZXJhdGlvbik6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAg
ICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgICog
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENv
bm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudHM6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50czo6
bWF0Y2hBbGwpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZp
bmlzaGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9X
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2No
ZWR1bGVVbnJlZ2lzdGVySm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vi
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9u
RGF0YWJhc2U6OmRvUHVzaENoYW5nZXMpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxlKToKKwogMjAyMi0wMy0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIHRoZSBw
YXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjQyZWQxODkyZmYwZjBl
NjYwN2E2OWExM2M1N2UxNjFhYjQyZGI3MS4uOWUzZDdjOTNhZmY2M2I0MjhjMjQ4MTU0YjU4MDFh
NTgzYmVhZjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTYgQEAKKzIwMjItMDMtMDcgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBmdXJ0aGVyIHRo
ZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE9wdGltaXplIGZ1cnRoZXIgdGhlIHBhc3Npbmcgb2Yg
ZGF0YSBhY3Jvc3MgdGhyZWFkcyBieSBsZXZlcmFnaW5nIG1vcmUgYnJvYWRseSB0aGUgb3B0aW1p
emVkCisgICAgICAgIHZlcnNpb25zIG9mIGlzb2xhdGVkQ29weSgpIG9uIHItdmFsdWUgcmVmZXJl
bmNlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcik6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29r
aWVCbG9ja2luZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92
ZURhdGFSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVz
dGluZ0V2ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZp
Z2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojpsb2dVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlcklu
dGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RTZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVsYXRp
b25zaGlwT25seUluRGF0YWJhc2VPbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omlz
UmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVudFJlc291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldEdyYW5kZmF0aGVyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0VmVyeVByZXZh
bGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldExhc3RTZWVuKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmhhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2Zlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNv
b2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lz
dHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGVs
ZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OmNsZWFyRm9y
UmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9y
ZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9y
UmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclNl
bnRBdHRyaWJ1dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlsczo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zQ3Jvc3NUaHJlYWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFn
ZU9yaWdpbnNDcm9zc1RocmVhZENvcHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjp3cml0ZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6cmVtb3ZlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp3
cml0ZVNpemVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Omdl
dERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhy
ZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6UmVjb3JkSW5mb3JtYXRpb246
Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6VHJhdmVyc2Fs
UmVzdWx0Ojppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjppc29sYXRlZENvcHkp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6Q2FjaGVzOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2Fj
aGVzOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0No
YW5uZWwuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6Om9wZW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnVwZGF0ZUZpbGVNb2Rp
ZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpk
aXNwYXRjaFJlYWRPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZElu
Y3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1v
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3Rl
clRlbXBvcmFyeUJsb2JGaWxlUGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVN0cmluZy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6OkVudHJ5Ojppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6RW50cnk6Omlzb2xhdGVkQ29w
eSk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmNyZWF0ZUV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3Jl
Ojpsb29rdXBDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxl
TGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuY3BwOgorICAgICAgICAod2Vi
a2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZVNhdmVCeXRlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OmRlbGV0ZUhhc2hTYWx0RnJvbURpc2spOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW46Okhhc2hTYWx0Rm9yT3JpZ2luKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3Jp
Z2luOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKToKKwogMjAyMi0wMy0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIHRoZSBw
YXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggODMx
ZTE0MmM0ODJmMzU5OGY4MTZlOTUxZjFkNmFiMzI0MGM0NGU1MS4uNDhjMjQwNWU3OTEzNTE0NTY5
NGNjZjRiZDU1ZGY3YzRmMzUzNWM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMi0wMy0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE9wdGltaXplIGZ1cnRoZXIgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTY4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3B0aW1pemUg
ZnVydGhlciB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0aHJlYWRzIGJ5IGxldmVyYWdpbmcg
bW9yZSBicm9hZGx5IHRoZSBvcHRpbWl6ZWQKKyAgICAgICAgdmVyc2lvbnMgb2YgaXNvbGF0ZWRD
b3B5KCkgb24gci12YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAqIFN0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4pOgorCiAyMDIyLTAzLTA3ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgdGhlIHBh
c3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDk4MmU1YjU4MzdmNWM1ZTUy
ODA3OTE1Y2E3YmJiNjZjYTEzOTY3ZDguLmI3MDBkODQ0NGIyMGViZDcwZTllNTM0MTRlMTc2NTli
MWZhNDVlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9E
T01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3Rl
bURpcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNvbnRleHQg
fSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnVsbFBh
dGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGNy
b3NzVGhyZWFkQ29weShkaXJlY3RvcnlWaXJ0dWFsUGF0aCldKCkgbXV0YWJsZSB7CisgICAgbV93
b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4
dCA9IFJlZiB7IGNvbnRleHQgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShmdWxsUGF0aCkp
LCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRpcmVjdG9y
eVZpcnR1YWxQYXRoKSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4g
PSBsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKGZ1bGxQYXRoKTsKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHQg
PSBXVEZNb3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJlbiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGxpc3Rl
ZENoaWxkcmVuKSksIGRpcmVjdG9yeVZpcnR1YWxQYXRoID0gZGlyZWN0b3J5VmlydHVhbFBhdGgu
aXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih0b0ZpbGVTeXN0ZW1FbnRyaWVzKGNvbnRleHQsIHByb3RlY3RlZFRoaXMsIFdURk1vdmUobGlz
dGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCkpOwpAQCAtMjcwLDkgKzI3MCw5IEBA
IHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEZpbGVTeXN0ZW1FbnRyeSYKICAgICBhdXRvIHZpcnR1YWxQYXRoID0gcmVzb2x2ZVJl
bGF0aXZlVmlydHVhbFBhdGgoZW50cnkudmlydHVhbFBhdGgoKSwgIi4uIik7CiAgICAgQVNTRVJU
KHZpcnR1YWxQYXRoWzBdID09ICcvJyk7CiAgICAgYXV0byBmdWxsUGF0aCA9IGV2YWx1YXRlUGF0
aCh2aXJ0dWFsUGF0aCk7Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgZnVsbFBhdGggPSBj
cm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2
aXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0ID0gUmVmIHsgY29udGV4dCB9LCBmdWxsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSksIHZpcnR1YWxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUodmlydHVhbFBhdGgpKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHZhbGlk
YXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdU
Rk1vdmUodmlydHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFj
ayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNv
bnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHZhbGlkYXRlZFZpcnR1YWxQYXRoKSksIGNvbXBsZXRpb25DYWxsYmFj
ayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlv
bigpKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTMxMSw5ICszMTEsOSBAQCB2b2lkIERPTUZpbGVT
eXN0ZW06OmdldEVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0
ZW1EaXJlY3RvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNv
bnRleHQgfSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCByZXNvbHZlZFZp
cnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHJlc29sdmVkVmlydHVhbFBhdGgpLCBjb21wbGV0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7Cisg
ICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y29udGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShmdWxsUGF0aCkpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdU
Rk1vdmUocmVzb2x2ZWRWaXJ0dWFsUGF0aCkpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZW50cnlUeXBl
ID0gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGZ1bGxQYXRoKTsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHQgPSBXVEZNb3ZlKGNvbnRleHQpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRD
b3B5KHJlc29sdmVkVmlydHVhbFBhdGgpLCBlbnRyeVR5cGUsIGNvbXBsZXRpb25DYWxsYmFjayA9
IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHQgPSBXVEZNb3ZlKGNvbnRleHQpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUocmVzb2x2ZWRWaXJ0dWFsUGF0aCkpLCBlbnRyeVR5cGUsIGNvbXBsZXRpb25D
YWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmICghZW50cnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxi
YWNrKEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJDYW5ub3QgZmluZCBlbnRyeSBhdCBnaXZl
biBwYXRoIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzNyw5ICszMzcsOSBA
QCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgRmlsZVN5c3RlbUZpbGVFbnRyeQogewogICAgIGF1dG8gdmlydHVhbFBhdGggPSBmaWxl
RW50cnkudmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRoKHZp
cnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2Z1bGxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVh
bFBhdGgpLCBjb250ZXh0ID0gUmVmIHsgY29udGV4dCB9LCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUt
PmRpc3BhdGNoKFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSks
IHZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmlydHVhbFBhdGgpKSwgY29u
dGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21w
bGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHZhbGlkYXRlZFZpcnR1
YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdURk1vdmUodmly
dHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmFsaWRh
dGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmFsaWRhdGVkVmlydHVhbFBhdGgpLCBj
b250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShj
b21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSksIHZhbGlkYXRl
ZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmFsaWRhdGVkVmlydHVhbFBh
dGgpKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICh2
YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggMmZkYmM4YzkzMDVhMzc1NWE2ZDI1NjFjOGIzMzdjZWRi
MDRiOGYxNS4uZTVkYzFhZWE3OWNjMjkzMmNhY2ZiNjVkMTgwNGRmZWM4ZmIyOTBlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAg
LTEwMiw4ICsxMDIsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
aXNTYW1lRW50cnkoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaQogICAgIG1fc2FtZUVudHJ5
Q2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
UmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5U
aHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBvdGhlcklkZW50aWZpZXJdKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwg
d29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUo
W2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChh
dXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi0+ZGlkSXNTYW1lRW50cnkoY2FsbGJhY2tJZGVudGlmaWVyLCBX
VEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7CkBAIC0xMjgsOCArMTI4LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmdldEZpbGVIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIKICAgICBt
X2dldEhhbmRsZUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtl
clRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9u
ID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgbmFtZSA9IG5hbWUuaXNvbGF0
ZWRDb3B5KCksIGNyZWF0ZUlmTmVjZXNzYXJ5XSgpIG11dGFibGUgewotICAgICAgICBhdXRvIG1h
aW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdU
Rk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAg
d29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZp
ZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFi
bGUgeworICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZp
ZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zv
ck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUocmVzdWx0KSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8gY29ubmVjdGlvbiA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24tPmRpZEdldEhhbmRsZShjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAg
ICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKQEAgLTE0OCw4ICsx
NDgsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RGlyZWN0
b3J5SGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudAogICAgIG1fZ2V0SGFuZGxlQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxP
bk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9z
Y29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLCBpZGVudGlmaWVyLCBuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwgY3JlYXRlSWZO
ZWNlc3NhcnldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
bWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
V1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVu
dGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+ZGlkR2V0SGFuZGxlKGNh
bGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtl
clJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeShGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpCiAgICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIs
IFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRl
bnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRo
cmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBuYW1l
ID0gbmFtZS5pc29sYXRlZENvcHkoKSwgZGVsZXRlUmVjdXJzaXZlbHldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29y
a2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2Nh
bGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRv
JiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVs
dE1vZGUoKSk7CkBAIC0xOTQsOCArMTk0LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OnJlc29sdmUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnQKICAg
ICBtX3Jlc29sdmVDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3Jr
ZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlv
biA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXIsIG90aGVySWRlbnRpZmllcl0o
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJ
ZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVz
dWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHko
cmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFk
Q2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdv
cmtlclRocmVhZCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJl
c3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5kaWRSZXNvbHZlKGNhbGxiYWNrSWRlbnRp
ZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOwpAQCAtMjIwLDggKzIyMCw4IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
CiAgICAgbV9zdHJpbmdDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3
b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVj
dGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29y
a2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2Nh
bGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRv
JiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVTdHJpbmdDYWxsYmFjayhjYWxsYmFja0lkZW50aWZp
ZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKQEAgLTI1OCwxMCArMjU4LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUkK
ICAgICBtX2dldEFjY2Vzc0hhbmRsQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRp
Zmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVh
ZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyXSgpIG11dGFi
bGUgewotICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZp
ZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11
dGFibGUgewotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0LmV4Y2VwdGlvbigpKTsKLSAg
ICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJh
Y2tJZGVudGlmaWVyLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0
YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRp
Zmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBp
ZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5m
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVj
dGlvbi0+ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShjYWxsYmFja0lkZW50aWZpZXIsIFdURk1v
dmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKQEAgLTI4MCw4ICsyNzgsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZAogICAgIG1fdm9p
ZENhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAK
ICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9
IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWlu
VGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllcl0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVu
dGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVz
dWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFkQ2Fs
bGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtl
clRocmVhZCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3Vs
dCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQogICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb21wbGV0ZVZvaWRDYWxsYmFjayhjYWxsYmFj
a0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5M
b29wOjpkZWZhdWx0TW9kZSgpKTsKQEAgLTMyNSw4ICszMjMsOCBAQCB2b2lkIFdvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlTmFtZXMoRmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZQogICAgIG1fZ2V0SGFuZGxlTmFtZXNDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRp
ZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJh
Y2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBt
YWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXJd
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNr
SWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5
KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVh
ZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3
b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCBy
ZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkK
ICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+ZGlkR2V0SGFuZGxlTmFtZXMoY2FsbGJh
Y2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSk7CkBAIC0zNTEsOCArMzQ5LDggQEAgdm9pZCBXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGUKICAgICBtX2dldEhhbmRsZUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVy
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lk
ZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5U
aHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgbmFt
ZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRo
cmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92
ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwg
cmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwg
d29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9k
ZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShy
ZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+
ZGlkR2V0SGFuZGxlKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAg
ICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMzcxLDggKzM2OSw4
IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKEZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpCiAgICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxs
YmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhy
ZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBp
ZGVudGlmaWVyLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG5hbWUgPSBjcm9zc1RocmVhZENvcHko
bmV3TmFtZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
bWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
V1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVu
dGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2Fs
bGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAg
fSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0
aW9uVG9DbGllbnREZWxlZ2F0ZS5oCmluZGV4IDk4NDViZmY3YzVhY2IyZjk4NTE2ZTYzMmU0YzZj
ZDUxZWRiMjE3OGUuLmFjZWVkZTM3MWJlZjYyYzlhMGUyN2U0YmM4OWNmYjIxNDUzNTY5ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25u
ZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VGcm9tU2VydmVyKFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQkVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBu
ZXdWZXJzaW9uKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1l
c0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IFZlY3RvcjxJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYs
IFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JbmRleEtleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSW5kZXhLZXkuY3BwCmluZGV4IGI1ODc1ZGNiZWU3NmM3MTE5MGE3MDFhMTVi
MWE5MDM1NzVjODQwNjcuLmRiNGU5NzAzNzg2OWFhOWE4NDA2MDE2ZDM5YjE0OWVmMjgyM2FmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRl
eEtleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
ZGV4S2V5LmNwcApAQCAtMzcsMTEgKzM3LDE2IEBAIEluZGV4S2V5OjpJbmRleEtleShWZWN0b3I8
SURCS2V5RGF0YT4mJiBrZXlzKQogICAgIG1fa2V5cy5zd2FwKGtleXMpOwogfQogCi1JbmRleEtl
eSBJbmRleEtleTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0luZGV4S2V5IEluZGV4S2V5Ojppc29s
YXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KG1fa2V5
cykgfTsKIH0KIAorSW5kZXhLZXkgSW5kZXhLZXk6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAg
cmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9rZXlzKSkgfTsKK30KKwogSURCS2V5
RGF0YSBJbmRleEtleTo6YXNPbmVLZXkoKSBjb25zdAogewogICAgIGlmIChtX2tleXMuaXNFbXB0
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0luZGV4S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5k
ZXhLZXkuaAppbmRleCA3OGNjNTJlMDgxMzkzMmIyYThjZTI5Y2ZlOTU5NzA2NjRjZTI0YTZjLi5i
YzkwYmQxYjVhOWRmYTNlZGEyMTg4YWFhZTJkOTg5OGQxMmY4MmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaApAQCAtMzYsNyAr
MzYsOCBAQCBwdWJsaWM6CiAgICAgSW5kZXhLZXkoKTsKICAgICBJbmRleEtleShWZWN0b3I8SURC
S2V5RGF0YT4mJik7CiAKLSAgICBJbmRleEtleSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBJ
bmRleEtleSBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIEluZGV4S2V5IGlzb2xhdGVkQ29w
eSgpICYmOwogCiAgICAgSURCS2V5RGF0YSBhc09uZUtleSgpIGNvbnN0OwogICAgIFZlY3RvcjxJ
REJLZXlEYXRhPiBtdWx0aUVudHJ5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3ODA0YTgwMjdkNDA2OTIzYTM0
YzM5ZWFjY2VjNjkzY2QxMDYxMTZjLi5jZDQ2NjMwZGI3MGMwYmI4ZTgwOWM3NGI5ODc5OTVmNDli
NzM1ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpmaWxl
U3lzdGVtQWNjZXNzR2V0RGlyZWN0b3J5KERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhYwog
ICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoY29ubmVjdGlvbkluZm9PckV4Y2VwdGlvbi5y
ZWxlYXNlRXhjZXB0aW9uKCkpOwogCiAgICAgYXV0byBjb25uZWN0aW9uSW5mbyA9IGNvbm5lY3Rp
b25JbmZvT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgY29ubmVjdGlvbklu
Zm8uY29ubmVjdGlvbi5maWxlU3lzdGVtR2V0RGlyZWN0b3J5KGNvbm5lY3Rpb25JbmZvLm9yaWdp
biwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB3ZWFrTmF2aWdhdG9yID0gbV9uYXZpZ2F0
b3JdKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9uSW5mby5jb25uZWN0aW9u
LmZpbGVTeXN0ZW1HZXREaXJlY3RvcnkoY29ubmVjdGlvbkluZm8ub3JpZ2luLCBbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIHdlYWtOYXZpZ2F0b3IgPSBtX25hdmlnYXRvcl0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9Xb3JrZXJTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvV29ya2Vy
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGE4MjIwMWU5MmFhOTJjZWIyYTM3NDhiOTM1MjIz
NDBjMjFjOWJhZjQuLmQ1ZGNjYzM0Y2QzMTEwYjhlYjU3YWNmZjdkY2Y0NDcxNmMzMmRjMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9Xb3JrZXJTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1dvcmtlclN0
b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtOTQsOCArOTQsOCBAQCB2b2lkIFdvcmtlclN0b3JhZ2VD
b25uZWN0aW9uOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luLAogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJU
aHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbWFpblRocmVhZENvbm5lY3Rpb24g
PSB3b3JrZXJUaHJlYWQtPndvcmtlckxvYWRlclByb3h5KCkuc3RvcmFnZUNvbm5lY3Rpb24oKTsK
LSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3
b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShb
Y2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0gKGF1
dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBb
Y2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCld
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3RvcmFnZUNv
bm5lY3Rpb24oKS5kaWRHZXREaXJlY3RvcnkoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJl
c3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAg
ICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDhhNTEzMGRiOTcwZmJmNjJjMTg0
NTIwOWE0MDNhMmE0OTIxZTQyNTUuLmFjMDUwNWQ1NDk2NDIzZmM1ZmRlZTY2MzBlYjdmOTUzODAy
MTMzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKFN0
cmluZyYmIG5hbWUsIFJlZjwKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJBIHByb2Nlc3NvciB3YXMg
YWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07CiAKLSAgICB0aHJlYWQoKS5t
ZXNzYWdpbmdQcm94eSgpLnBvc3RUYXNrVG9BdWRpb1dvcmtsZXQoW25hbWUgPSBXVEZNb3ZlKG5h
bWUpLmlzb2xhdGVkQ29weSgpLCBwYXJhbWV0ZXJEZXNjcmlwdG9ycyA9IGNyb3NzVGhyZWFkQ29w
eShwYXJhbWV0ZXJEZXNjcmlwdG9ycyldKEF1ZGlvV29ya2xldCYgd29ya2xldCkgbXV0YWJsZSB7
CisgICAgdGhyZWFkKCkubWVzc2FnaW5nUHJveHkoKS5wb3N0VGFza1RvQXVkaW9Xb3JrbGV0KFtu
YW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgcGFyYW1ldGVyRGVzY3JpcHRvcnMg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXJhbWV0ZXJEZXNjcmlwdG9ycykpXShBdWRpb1dv
cmtsZXQmIHdvcmtsZXQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoYXV0byogYXVkaW9Db250ZXh0ID0gd29ya2xldC5hdWRpb0NvbnRleHQo
KSkKICAgICAgICAgICAgIGF1ZGlvQ29udGV4dC0+YWRkQXVkaW9QYXJhbURlc2NyaXB0b3JzKG5h
bWUsIFdURk1vdmUocGFyYW1ldGVyRGVzY3JpcHRvcnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobS5jcHAKaW5kZXggZmY5ODY0NjYzOGNmYzI2YjVkNTVjYzZlMTVlNTFl
MDk3ZTY5NmNhYS4uY2EzYjk3YmZmNWE5Mzc0MDYyOGQxMzg5NTJlODQwOWZlNGE2NTQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKQEAgLTk4LDcgKzk4LDcg
QEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24oV29ya1F1ZXVlJiB3b3Jr
UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICB3b3JrUXVldWUuZGlzcGF0Y2goCiAgICAg
ICAgIFtvcGVyYXRpb24gPSBXVEZNb3ZlKG9wZXJhdGlvbiksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
IGNvbnRleHRJZGVudGlmaWVyID0gY29udGV4dC5pZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbigpOwotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW3Jlc3VsdCA9
IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShhdXRvJikgbXV0
YWJsZSB7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNv
bnRleHRJZGVudGlmaWVyLCBbcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbk9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAppbmRleCAxYTE5YjBl
ZTlhMmE0NTJiZjU3NzQwYTJhYmZkYmRkYmMyMzM4YWU0Li40ZDMzNmZhM2M4YWM0NzNlNzdiZTk3
ZjlkYmZkMmNhOTBiZjU3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uT3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApAQCAtMjE5LDYg
KzIxOSwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2Us
IGZhbHNlLCBXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPgogICAgICAgICAgICAgcmV0dXJuIGNy
b3NzVGhyZWFkQ29weShzb3VyY2UuZXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KKyAgICBzdGF0aWMgVHlwZSBjb3B5KFR5cGUmJiBzb3VyY2UpCisgICAgeworICAgICAg
ICBpZiAoc291cmNlLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGNyb3NzVGhy
ZWFkQ29weShzb3VyY2UucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAxMmRkZWZlZDRmNjBlNzRjMTYxYzYwOTE1MjI0ZGVlOGI0
ZTY2ZjY3Li42MmQxYjM0OGU0OWQ3YTYyYzlkNTBhMjdhYTY3OWMxNTYwMjcwYzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKQEAg
LTk5LDcgKzk5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQmxvYlVSTENvbnRhaW5zTnVsbE9y
aWdpbihjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZyhz
dGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggLSAxKSA9PSAibnVsbCI7CiB9CiAKLXZv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4sIGNvbnN0IFBvbGljeUNvbnRhaW5lciYgcG9saWN5Q29udGFpbmVyLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBQb2xpY3lDb250YWluZXIm
JiBwb2xpY3lDb250YWluZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsK
ICAgICAvLyBJZiB0aGUgYmxvYiBVUkwgY29udGFpbnMgbnVsbCBvcmlnaW4sIGFzIGluIHRoZSBj
b250ZXh0IHdpdGggdW5pcXVlIHNlY3VyaXR5IG9yaWdpbiBvciBmaWxlIFVSTCwgc2F2ZSB0aGUg
bWFwcGluZyBiZXR3ZWVuIHVybCBhbmQgb3JpZ2luIHNvIHRoYXQgdGhlIG9yaWdpbiBjYW4gYmUg
cmV0cml2ZWQgd2hlbiBkb2luZyBzZWN1cml0eSBvcmlnaW4gY2hlY2suCiAgICAgaWYgKG9yaWdp
biAmJiBpc0Jsb2JVUkxDb250YWluc051bGxPcmlnaW4odXJsKSkKQEAgLTExMCw3ICsxMTAsNyBA
QCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBjb25zdCBQb2xpYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNV
UkwuaXNvbGF0ZWRDb3B5KCksIHBvbGljeUNvbnRhaW5lciA9IGNyb3NzVGhyZWFkQ29weShwb2xp
Y3lDb250YWluZXIpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVk
Q29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCksIHBvbGljeUNvbnRhaW5lciA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHBvbGljeUNvbnRhaW5lcikpXSB7CiAgICAgICAgIGJs
b2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCwgcG9saWN5Q29udGFpbmVy
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmgKaW5kZXggZDk0M2RmMTBlODBjNDkyM2FlOTgwYjIyNmRjZmE4NmEzZWEyOTll
MS4uMGY2YjU4ZjM1OGUxZTI2YmM0YTk4N2YyMmRlYzM4ZjFkM2VlOTVlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJs
b2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgUG9saWN5Q29u
dGFpbmVyJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIFBvbGljeUNvbnRhaW5lciYmLCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJM
LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChjb25zdCBVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggZjE2ZDc5ZWU5Nzg5Y2Y2ZmZlOGMwODU2MDVk
M2ZhMWJjMmMxOTY5Ni4uYjRjZWQzYjYwM2I0OWJjNjgwMDBiYzZhMTQ0ZTMzMzQ4ZDEzMzdlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKQEAgLTEwOSwxMyArMTA5LDEzIEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9u
OjpyZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
CiAgICAgICAgIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKHJlZ2lzdHJhdGlvbkRhdGEu
a2V5KTsKIH0KIAotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JT
ZXJ2ZXIoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam9iSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBGZXRjaE9wdGlvbnM6
OkNhY2hlIGNhY2hlUG9saWN5KQordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0
RmV0Y2hGb3JTZXJ2ZXIoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam9iSWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmIHJlZ2lzdHJhdGlvbktleSwgRmV0Y2hPcHRp
b25zOjpDYWNoZSBjYWNoZVBvbGljeSkKIHsKICAgICBib29sIGlzUG9zdGVkID0gcG9zdFRhc2tG
b3JKb2Ioam9iSWRlbnRpZmllciwgSXNKb2JDb21wbGV0ZTo6Tm8sIFtjYWNoZVBvbGljeV0gKGF1
dG8mIGpvYikgewogICAgICAgICBqb2Iuc3RhcnRTY3JpcHRGZXRjaChjYWNoZVBvbGljeSk7CiAg
ICAgfSk7CiAgICAgaWYgKCFpc1Bvc3RlZCkKLSAgICAgICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJ
blNlcnZlcih7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGpvYklkZW50aWZpZXIgfSwg
cmVnaXN0cmF0aW9uS2V5LCB3b3JrZXJGZXRjaEVycm9yKFJlc291cmNlRXJyb3IgeyBlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBmZXRjaCBz
Y3JpcHQgZm9yIHNlcnZpY2Ugd29ya2VyIHdpdGggc2NvcGUgIiwgcmVnaXN0cmF0aW9uS2V5LnNj
b3BlKCkuc3RyaW5nKCkpIH0pKTsKKyAgICAgICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cih7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGpvYklkZW50aWZpZXIgfSwgV1RGTW92
ZShyZWdpc3RyYXRpb25LZXkpLCB3b3JrZXJGZXRjaEVycm9yKFJlc291cmNlRXJyb3IgeyBlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBmZXRj
aCBzY3JpcHQgZm9yIHNlcnZpY2Ugd29ya2VyIHdpdGggc2NvcGUgIiwgcmVnaXN0cmF0aW9uS2V5
LnNjb3BlKCkuc3RyaW5nKCkpIH0pKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNmRiMmI5MGNiM2NhYTky
YTg5YmQ1YmE0YWFjZTVjOWI1YWM2YjM4Mi4uZjk1NDA0Yjc0YjZkNDgyZGU3ZTY4YTA1ZWE1MzJl
MWI4ODY4ZjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uaApAQCAtODEsMTAgKzgxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVn
aXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEmJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcj4mLCBTdHJpbmcmJiB1c2VyQWdlbnQpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hGZXRjaGluZ1Nj
cmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiYsIFdvcmtlckZldGNoUmVzdWx0JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9CiAgICAgdmlydHVhbCB2b2lkIHdoZW5TZXJ2
aWNlV29ya2VySXNUZXJtaW5hdGVkRm9yVGVzdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKCk7IH0KQEAg
LTExNiw3ICsxMTYsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGpv
YlJlamVjdGVkSW5TZXJ2ZXIoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IEV4Y2Vw
dGlvbkRhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29s
dmVkSW5TZXJ2ZXIoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVu
dGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgRmV0Y2hPcHRpb25z
OjpDYWNoZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9yU2Vy
dmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJiwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2UsIFN0cmluZyYmIHNvdXJjZU9yaWdpbik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0
YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCAzODRkYzcxNDcyYmI2MDEx
ZDZjZGUwMzFhYThlODJjNWEyMmMxZDNlLi4zYzVkNDc4ZTkwOTgzMmEzOGZiMGU4OWU3N2UzMzM2
NGNmODI4N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyQ2xpZW50czo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgaWQKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlUG9pbnRlciwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGlkID0gaWQuaXNvbGF0ZWRDb3B5KCldICgpIHsKICAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOwogICAgICAgICBjb25uZWN0aW9uLT5maW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaWQsIFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXJdIChhdXRvJiYgY2xpZW50RGF0YSkgewotICAgICAgICAgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShjbGll
bnREYXRhKV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFtwcm9taXNlUG9pbnRlciwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKGNsaWVudERhdGEpKV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIGlmIChhdXRvIHByb21pc2UgPSBjb250ZXh0LmNsaWVudHMoKS5tX3BlbmRpbmdQcm9taXNl
cy50YWtlKHByb21pc2VQb2ludGVyKSkKICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoR2V0
UmVxdWVzdChjb250ZXh0LCAqcHJvbWlzZSwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgICAgICB9
KTsKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgQ2xpZW4KICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG9wdGlv
bnNdICgpIG11dGFibGUgewogICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7CiAgICAgICAgIGNvbm5lY3Rpb24tPm1hdGNo
QWxsKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBvcHRpb25zLCBbcHJvbWlzZVBvaW50ZXIsIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoYXV0byYmIGNsaWVudHNEYXRhKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIGNsaWVudHNE
YXRhID0gY3Jvc3NUaHJlYWRDb3B5KGNsaWVudHNEYXRhKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9T
ZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIGNs
aWVudHNEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY2xpZW50c0RhdGEpKV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2Nv
cGUuY2xpZW50cygpLm1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVBvaW50ZXIpKQogICAg
ICAgICAgICAgICAgICAgICBtYXRjaEFsbENvbXBsZXRlZChzY29wZSwgKnByb21pc2UsIFdURk1v
dmUoY2xpZW50c0RhdGEpKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4
IDQxZjM0YzYxZDAwOWQ1ZGU1ZmEyMGQ3OTRiMDIxNGNlYmRlNTJkNDMuLjEwZmY3ZTQyZjBiMTFh
NDlhNTNlOWViYWQ0ZWJiY2RhMWRiNmY4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQ5MSwx
MyArNDkxLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRj
aEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIEZldGNoCiAgICAgam9iLmZldGNoU2NyaXB0
V2l0aENvbnRleHQoKmNvbnRleHQsIGNhY2hlUG9saWN5KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYg
am9iLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgZmV0Y2hSZXN1bHQpCit2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiBqb2IsIFdvcmtlckZldGNoUmVzdWx0JiYgZmV0Y2hSZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1f
Y3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIENPTlRB
SU5FUl9SRUxFQVNFX0xPRygiam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0OiBTdWNjZXNzZnVseSBm
aW5pc2hlZCBmZXRjaGluZyBzY3JpcHQgZm9yIGpvYiAlIiBQUkl1NjQsIGpvYi5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CiAKLSAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5maW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgp
LnJlZ2lzdHJhdGlvbktleSgpLCBmZXRjaFJlc3VsdCk7CisgICAgZW5zdXJlU1dDbGllbnRDb25u
ZWN0aW9uKCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihqb2IuZGF0YSgpLmlkZW50aWZp
ZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IGpvYi5kYXRhKCkucmVnaXN0cmF0
aW9uS2V5KCkgfSwgV1RGTW92ZShmZXRjaFJlc3VsdCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9i
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQpAQCAt
NTIyLDcgKzUyMiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9h
ZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0CiAKIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6bm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpv
YiYgam9iLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBlbnN1cmVTV0NsaWVu
dENvbm5lY3Rpb24oKS5maW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGpvYi5kYXRhKCkuaWRl
bnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCB3b3JrZXJGZXRjaEVycm9y
KFJlc291cmNlRXJyb3IgeyBlcnJvciB9KSk7CisgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9u
KCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5
KCkgfSwgd29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3IgfSkpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRlc3Ryb3lKb2IoU2VydmljZVdvcmtlckpvYiYg
am9iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmgKaW5kZXggN2FmMjE3M2U4ZDVlMjQ5MWU1NmUyM2Q0NTM1OWRiMDNl
Zjk5ZTUzNC4uYWIyYjIzNzc1MjRhMzk4NjM2YWZlMDQwZDhkMWVkODAzMTY3ZDNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGpvYlJlc29s
dmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiwgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSBmaW5hbDsKICAgICB2b2lk
IGpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBi
b29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0
Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOwot
ICAgIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25z
dCBXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOworICAgIHZvaWQgam9iRmluaXNoZWRMb2FkaW5n
U2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBXb3JrZXJGZXRjaFJlc3VsdCYmKSBmaW5hbDsKICAg
ICB2b2lkIGpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJl
c291cmNlRXJyb3ImLCBFeGNlcHRpb24mJikgZmluYWw7CiAKICAgICB2b2lkIG5vdGlmeUZhaWxl
ZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JDbGllbnQuaAppbmRleCAwNDU5MzNjNjI0MzAyMjhmNTNhNTkxYjFkZjA3MGMxZGNiMjRh
NmRhLi4yMzE0OTQxODgxOWE1ZTEyOWYwNGI4NmJhODQzM2Y3NDNjN2Q5ZDZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xp
ZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBqb2JSZXNv
bHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2Vy
Sm9iJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
dGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImLCBGZXRjaE9wdGlvbnM6OkNh
Y2hlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2
aWNlV29ya2VySm9iJiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgV29ya2Vy
RmV0Y2hSZXN1bHQmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgRXhjZXB0aW9uJiYp
ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9X
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMjFmOGQ2OGU0MDNkMjNiZWY4
N2RkOGY2MWQxN2YzYjZmOTk4ZjNhYi4uYmUyZjNlZjFjZTBlYWFiODI3MjhhMWMxODRmZjEyNWFj
NDUyNTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTE3OSwxMSArMTc5LDExIEBAIGJv
b2wgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjptYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVy
ZWRGb3JPcmlnaW4oY29uc3QgU2VjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmIGRh
dGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgaWRl
bnRpZmllciwgU3RyaW5nJiYgdXNlckFnZW50KQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rv
cE9yaWdpbiA9IHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKSwgZGF0YSA9IGNyb3NzVGhyZWFkQ29w
eShkYXRhKSwgaWRlbnRpZmllciwgdXNlckFnZW50ID0gY3Jvc3NUaHJlYWRDb3B5KHVzZXJBZ2Vu
dCldIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0b3BPcmlnaW4gPSB0b3BPcmlnaW4uaXNvbGF0
ZWRDb3B5KCksIGRhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkYXRhKSksIGlkZW50aWZp
ZXIsIHVzZXJBZ2VudCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHVzZXJBZ2VudCkpXSgpIG11
dGFibGUgewogICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVy
OjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwotICAgICAgICBjb25uZWN0
aW9uLnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCh0b3BPcmlnaW4sIGRhdGEsIGlkZW50aWZp
ZXIsIHVzZXJBZ2VudCk7CisgICAgICAgIGNvbm5lY3Rpb24ucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KHRvcE9yaWdpbiwgV1RGTW92ZShkYXRhKSwgaWRlbnRpZmllciwgV1RGTW92ZSh1c2Vy
QWdlbnQpKTsKICAgICB9KTsKIH0KIApAQCAtMTkyLDExICsxOTIsMTEgQEAgdm9pZCBXb3JrZXJT
V0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXb3JrZXJT
V0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBXb3JrZXJG
ZXRjaFJlc3VsdCYgcmVzdWx0KQordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmIHJl
Z2lzdHJhdGlvbktleSwgV29ya2VyRmV0Y2hSZXN1bHQmJiByZXN1bHQpCiB7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSA9IGNyb3NzVGhy
ZWFkQ29weShyZWdpc3RyYXRpb25LZXkpLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0
KV0oKSBtdXRhYmxlIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtqb2JEYXRhSWRlbnRpZmllciwg
cmVnaXN0cmF0aW9uS2V5ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVnaXN0cmF0aW9uS2V5
KSksIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSgpIG11dGFibGUg
ewogICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5n
bGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwotICAgICAgICBjb25uZWN0aW9uLmZp
bmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bktleSwgcmVzdWx0KTsKKyAgICAgICAgY29ubmVjdGlvbi5maW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbktleSksIFdURk1v
dmUocmVzdWx0KSk7CiAgICAgfSk7CiB9CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFdvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVVbnJlZ2lzdGVySm9iSW5TZXJ2ZXIoU2Vydmlj
ZVdvcmtlclJlZ2lzdAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCBy
ZXF1ZXN0SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29udGV4dElkZW50aWZp
ZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiAgICAgICAg
IGNvbm5lY3Rpb24uc2NoZWR1bGVVbnJlZ2lzdGVySm9iSW5TZXJ2ZXIocmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgY29udGV4dElkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJl
cXVlc3RJZGVudGlmaWVyXShhdXRvJiYgcmVzdWx0KSB7Ci0gICAgICAgICAgICB0aHJlYWQtPnJ1
bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9z
c1RocmVhZENvcHkocmVzdWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAg
dGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVz
dWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX3VucmVnaXN0ZXJSZXF1ZXN0
cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSk7CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnN1
YnNjcmliZVRvUHVzaFNlcnZpY2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkkKICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aHJlYWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIGFwcGxpY2F0aW9uU2VydmVyS2V5XSgpIG11dGFibGUgewogICAg
ICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24o
KS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9uLnN1YnNjcmli
ZVRvUHVzaFNlcnZpY2UocmVnaXN0cmF0aW9uSWRlbnRpZmllciwgYXBwbGljYXRpb25TZXJ2ZXJL
ZXksIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYg
cmVzdWx0KSB7Ci0gICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUo
W3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0oYXV0
byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdU
Rk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBh
dXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVu
dENvbm5lY3Rpb24oKS5tX3N1YnNjcmliZVRvUHVzaFNlcnZpY2VSZXF1ZXN0cy50YWtlKHJlcXVl
c3RJZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkp
OwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CkBAIC0yNTMs
NyArMjUzLDcgQEAgdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnVuc3Vic2NyaWJlRnJv
bVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXQKICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aHJlYWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIHN1YnNjcmlwdGlvbklkZW50aWZpZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8m
IGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VX
b3JrZXJDb25uZWN0aW9uKCk7CiAgICAgICAgIGNvbm5lY3Rpb24udW5zdWJzY3JpYmVGcm9tUHVz
aFNlcnZpY2UocmVnaXN0cmF0aW9uSWRlbnRpZmllciwgc3Vic2NyaXB0aW9uSWRlbnRpZmllciwg
W3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1
bHQpIHsKLSAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXShhdXRvJiBz
Y29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zv
ck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xpZW50Q29u
bmVjdGlvbigpLm1fdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VSZXF1ZXN0cy50YWtlKHJlcXVl
c3RJZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkp
OwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CkBAIC0yNjks
NyArMjY5LDcgQEAgdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OmdldFB1c2hTdWJzY3Jp
cHRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW4KICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aHJlYWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbklkZW50
aWZpZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29y
a2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiAgICAg
ICAgIGNvbm5lY3Rpb24uZ2V0UHVzaFN1YnNjcmlwdGlvbihyZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJl
c3VsdCkgewotICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFty
ZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHJlc3VsdCkpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgYXV0
byBjYWxsYmFjayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRD
b25uZWN0aW9uKCkubV9nZXRQdXNoU3Vic2NyaXB0aW9uUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRl
bnRpZmllcik7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKICAg
ICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMjg1LDcgKzI4
NSw3IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0
YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhy
ZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVy
XSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogICAgICAgICBj
b25uZWN0aW9uLmdldFB1c2hQZXJtaXNzaW9uU3RhdGUocmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
W3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1
bHQpIHsKLSAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXShhdXRvJiBz
Y29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zv
ck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xpZW50Q29u
bmVjdGlvbigpLm1fZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrcy50YWtlKHJlcXVlc3RJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwog
ICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uLmgKaW5kZXggMzliZTk1Mzk1YmM3MDgxNDBmMTc3ZjE0YTVlMzhiYjZkODVlMmQwYy4uNDc3
OWRmZjMxNjBlY2Q2YzAyOGY3ZjM1N2NkMTNiYzI5ZjMxMWJmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24u
aApAQCAtNTEsOSArNTEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNv
dXJjZSkgZmluYWw7CiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgbWF5SGF2ZVNlcnZpY2VX
b3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0
IGZpbmFsOwotICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgU2VydmljZVdvcmtl
ckNsaWVudERhdGEmJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcj4mLCBTdHJpbmcmJiB1c2VyQWdlbnQpIGZpbmFsOwogICAgIHZvaWQgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKKyAgICB2b2lkIGZp
bmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmLCBXb3JrZXJGZXRjaFJlc3Vs
dCYmKSBmaW5hbDsKICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJP
ckNsaWVudElkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAg
ICAgdm9pZCBzY2hlZHVsZVVucmVnaXN0ZXJKb2JJblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4mJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGU2MjhlZjBlYTQ3MGZhMjZlNjVhZTM0OTZlZmZmYmQx
ZTE3NjQ1OTcuLmQ0N2U3YjgwNWM2MmQzNGQyZDgyZDVmZGY3ZDc3ZDQ1ZjhkNzdjMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC00ODQsMTMgKzQ4NCwxMyBAQCBib29sIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+JgogICAgICAgICBpZiAoIW1haW5TY3JpcHQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+IGltcG9ydGVkU2Ny
aXB0czsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkg
ewotICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUo
ZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtleSwgcGFpci52YWx1ZS5zY3JpcHQpOworICAg
ICAgICBmb3IgKGF1dG8mIFtzY3JpcHRVUkwsIHNjcmlwdF0gOiBkYXRhLnNjcmlwdFJlc291cmNl
TWFwKSB7CisgICAgICAgICAgICBhdXRvIGltcG9ydGVkU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5z
dG9yZShkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIHNjcmlwdFVSTCwgc2NyaXB0LnNjcmlwdCk7CiAg
ICAgICAgICAgICBBU1NFUlQoaW1wb3J0ZWRTY3JpcHQpOwogICAgICAgICAgICAgaWYgKGltcG9y
dGVkU2NyaXB0KQotICAgICAgICAgICAgICAgIGltcG9ydGVkU2NyaXB0cy5hZGQoY3Jvc3NUaHJl
YWRDb3B5KHBhaXIua2V5KSwgY3Jvc3NUaHJlYWRDb3B5KGltcG9ydGVkU2NyaXB0KSk7CisgICAg
ICAgICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkoc2NyaXB0VVJM
KSwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoaW1wb3J0ZWRTY3JpcHQpKSk7CiAgICAgICAgIH0K
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgbWFpblNjcmlwdCA9IGNyb3NzVGhyZWFkQ29weShtYWluU2NyaXB0KSwgaW1wb3J0ZWRT
Y3JpcHRzID0gV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpXSgpIG11dGFibGUgeworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgPSBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtYWlu
U2NyaXB0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobWFpblNjcmlwdCkpLCBpbXBvcnRlZFNj
cmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAobV9zdG9yZSkKICAgICAgICAgICAgICAgICBtX3N0b3JlLT5kaWRTYXZlV29ya2VyU2Ny
aXB0c1RvRGlzayhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGTW92ZShtYWluU2NyaXB0KSwg
V1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXQuY3BwCmluZGV4IDc0NTZiZTQzNjdkMmQzNmJlMTQwM2QzNjQ1M2JlMGFlYzY3Y2I0
OGMuLmI0NWE5OWY3ZTVkY2RiMTY5NGJjZWRjZGNjN2RiYzJiMWNkMmIyNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV29ya2xldDo6YWRk
TW9kdWxlKGNvbnN0IFN0cmluZyYgbW9kdWxlVVJMU3RyaW5nLCBXb3JrbGV0T3B0aW9ucyYmIG9w
dGlvbnMsCiAgICAgZm9yIChhdXRvJiBwcm94eSA6IG1fcHJveGllcykgewogICAgICAgICBwcm94
eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrbGV0R2xvYmFsU2NvcGUoW3BlbmRpbmdUYXNrcyA9IHBl
bmRpbmdUYXNrcy5jb3B5UmVmKCksIG1vZHVsZVVSTCA9IG1vZHVsZVVSTC5pc29sYXRlZENvcHko
KSwgY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzLCBwZW5kaW5nQWN0aXZpdHkgPSBt
YWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBkb3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNv
bnRleHQpLmZldGNoQW5kSW52b2tlU2NyaXB0KG1vZHVsZVVSTCwgY3JlZGVudGlhbHMsIFtwZW5k
aW5nVGFza3MgPSBXVEZNb3ZlKHBlbmRpbmdUYXNrcyksIHBlbmRpbmdBY3Rpdml0eSA9IFdURk1v
dmUocGVuZGluZ0FjdGl2aXR5KV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwZW5kaW5nVGFz
a3MgPSBXVEZNb3ZlKHBlbmRpbmdUYXNrcyksIGV4Y2VwdGlvbiA9IGNyb3NzVGhyZWFkQ29weShl
eGNlcHRpb24pLCBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcGVuZGluZ1Rhc2tz
ID0gV1RGTW92ZShwZW5kaW5nVGFza3MpLCBleGNlcHRpb24gPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShleGNlcHRpb24pKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShwZW5kaW5nQWN0aXZp
dHkpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLT5hYm9ydChXVEZNb3ZlKCpleGNlcHRp
b24pKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggYTU1Mjk1ZjMwNTUwZGYy
NzQwNGJjZTQyOTlkMmZlMzc5YjBlNDllNC4uNTE2YTJmNTAyY2M5MGNjY2UxMzZiNDMyZjI4OGEw
ZjM0YzA1OWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0xMTc3LDcgKzExNzcsNyBAQCBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFRvcEZyYW1l
RG9tYWluJgogICAgIHJldHVybiByZWxhdGlvbnNoaXBFeGlzdHMoc2NvcGVkU3RhdGVtZW50LCBk
b21haW5JRChzdWJGcmFtZURvbWFpbiksIHRvcEZyYW1lRG9tYWluKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhh
c1N0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIApAQCAtMTE5Miw3ICsxMTkyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBD
b29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k6Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0sIHN1YkZyYW1lRG9tYWluID0gc3Vi
RnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0sIHN1YkZyYW1lRG9tYWluID0gV1RGTW92
ZShzdWJGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzdG9yZS0+
aGFzQ29va2llcyhzdWJGcmFtZURvbWFpbiwgW3N0b3JlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdICgpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAtMTIwNSw3
ICsxMjA1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYKICAgICAgICAgYnJlYWs7CiAgICAg
fTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgp
IH0sIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZy
YW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJ
RCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUo
KSB9LCBzdWJGcmFtZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLmlzb2xhdGVkQ29w
eSgpLCB0b3BGcmFtZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVEb21haW4pLmlzb2xhdGVkQ29w
eSgpLCBmcmFtZUlELCBwYWdlSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIHN0b3JlLT5jYWxsSGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1l
SUQudmFsdWUoKSwgcGFnZUlELCBbc3RvcmUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIHN0
b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzdWx0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpAQCAtMTM0Myw3ICsxMzQzLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb20KICAgICAgICAgc2V0VXNlckludGVyYWN0aW9uKHN1YkZyYW1l
RG9tYWluLCB0cnVlLCBXYWxsVGltZTo6bm93KCkpOwogICAgIH0KIAotICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENv
cHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJh
bWVJRCwgcGFnZUlELCBzdG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwgc2NvcGUsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdWJGcmFtZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVE
b21haW4pLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVE
b21haW4pLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlID0gUmVmIHsgc3Rv
cmUoKSB9LCBzY29wZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBz
Y29wZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0
b3JlXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbd2FzR3JhbnRlZCwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZCk7CkBAIC0xNjY0
LDcgKzE2NjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpz
ZXREb21haW5zQXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPgogICAgIH0KIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmR1bXBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIGlmIChkYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCgpKSB7CkBAIC0yMDM2LDcgKzIwMzYsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcAogCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciA9IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRl
YnVnTW9kZSgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFp
bnNUb0Jsb2NrIHsgcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3Is
IHsgfSwgeyB9LCB7IH0gfTsKLSAgICB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoZG9t
YWluc1RvQmxvY2ssIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgdXBkYXRlQ29va2ll
QmxvY2tpbmdGb3JEb21haW5zKFdURk1vdmUoZG9tYWluc1RvQmxvY2spLCBbY2FsbGJhY2tBZ2dy
ZWdhdG9yXSB7IH0pOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjphcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcihjb25zdCBUb3BGcmFtZURv
bWFpbiYgdG9wRnJhbWVEb21haW4pCkBAIC0yMTc1LDcgKzIxNzUsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0
aW9uSGFuZGxlcgogICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgJiYgKCFkb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpIHx8ICFkb21haW5zVG9CbG9ja0J1dEtl
ZXBDb29raWVzRm9yLmlzRW1wdHkoKSkpCiAgICAgICAgIGRlYnVnTG9nRG9tYWluc0luQmF0Y2hl
cygiQXBwbHlpbmcgY3Jvc3Mtc2l0ZSB0cmFja2luZyByZXN0cmljdGlvbnMiLCBkb21haW5zVG9C
bG9jayk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHN0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBkb21haW5zVG9CbG9jayA9IGNy
b3NzVGhyZWFkQ29weShkb21haW5zVG9CbG9jayksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc3RvcmUgPSBSZWYgeyBzdG9y
ZSgpIH0sIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1Rv
QmxvY2spKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIHN0b3JlLT5jYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
QmxvY2tDb29raWVzRm9ySGFuZGxlcihkb21haW5zVG9CbG9jaywgW3dlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIHN0b3JlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1
ZSgpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IDY5MDE4NmYyMTQ2MDljMjkwODIyYjE1
YjdjY2Y2YWQ5NjQ5NjcyMTkuLjgxMWJiZjk3MGVhYzZmYTcwZGFhMDk3MmI1NjlkNWU5ZjgyZjE5
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVnaXN0ZXJlZEFz
UmVkaXJlY3RpbmdUbyhjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0
ZWRUb0RvbWFpbiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclByZXZhbGVudFJl
c291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKSBmaW5hbDsKICAgICBib29sIGlzUHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVEb21haW4mLCBj
b25zdCBSZWRpcmVjdERvbWFpbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFp
biYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1l
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2Nv
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCA1NmY2N2JmMDg4ZGM2MDAyMjNmOGJm
YTMwZmRmNzg0OGUwYmVlZDI5Li5jOGJlZGMyYjUyMTI3MmY2NTA3MDI5ZGVjM2IxMWFkZTNhM2Qz
MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVnaXN0ZXJlZEFzUmVk
aXJlY3RpbmdUbyhjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0ZWRU
b0RvbWFpbiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291
cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkdW1wUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKSBmaW5hbDsKICAgICBib29sIGlzUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9t
YWluJikgb3ZlcnJpZGU7CiAgICAgQ29va2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhjb25zdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiwgY29uc3QgVG9wRnJhbWVEb21haW4mKTsKLSAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1l
RG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBncmFudFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAy
MDFkMWFmZGY3MzJlMmJjZjBmNThkYTMxMDAyNDA4YmI3YWFhYTZhLi4zNTQxNDU4Mzg5MDZiNTgx
MzJhOWUyMGNlYTFkYzY3OTQ2YzdiZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtMTc1LDkgKzE3NSw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYKIAogICAgIHNldERhdGFSZWNvcmRzQmVpbmdSZW1vdmVkKHRydWUpOwogCi0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IFJlZiB7IG1fc3RvcmUgfSwgZG9tYWluc1RvRGVs
ZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Rl
bGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNob3Vs
ZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSBtX3BhcmFtZXRlcnMuc2hv
dWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgd29ya1F1ZXVlID0gbV93
b3JrUXVldWVdICgpIG11dGFibGUgewotICAgICAgICBzdG9yZS0+ZGVsZXRlQW5kUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBXVEZNb3ZlKGRvbWFpbnNUb0RlbGV0ZU9yUmVz
dHJpY3RXZWJzaXRlRGF0YUZvciksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2Vy
ZVNjYW5uZWQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3b3JrUXVldWVdKGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21haW5zV2l0aERlbGV0ZWRX
ZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0
YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtU
aGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldICgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBtX3N0b3JlIH0sIGRvbWFpbnNUb0RlbGV0ZU9yUmVz
dHJpY3RXZWJzaXRlRGF0YUZvciA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNUb0Rl
bGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzaG91
bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkID0gbV9wYXJhbWV0ZXJzLnNo
b3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIHdvcmtRdWV1ZSA9IG1f
d29ya1F1ZXVlXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgc3RvcmUtPmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShkb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3IpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgd29ya1F1ZXVlXShIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPiYmIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHdvcmtRdWV1ZS0+ZGlzcGF0Y2goW2RvbWFpbnNXaXRoRGVsZXRlZFdlYnNp
dGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0
ZURhdGEpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
d2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRl
RGF0YShDb21wbGV0aW9uSGFuZGwKIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
c2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVy
cy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCB3b3JrUXVldWUg
PSBtX3dvcmtRdWV1ZSwgc3RvcmUgPSBSZWYgeyBtX3N0b3JlIH1dICgpIG11dGFibGUgewogICAg
ICAgICBzdG9yZS0+cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCksIHNob3VsZE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3b3JrUXVldWVdIChIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgewotICAg
ICAgICAgICAgd29ya1F1ZXVlLT5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZG9tYWluc1dpdGhXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aFdl
YnNpdGVEYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBkb21haW5zV2l0aFdlYnNpdGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9t
YWluc1dpdGhXZWJzaXRlRGF0YSkpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5Niwx
MSArMzk2LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXREYXRhUmVj
b3Jkc0JlaW5nUmVtb3ZlZChib29sIHZhbHVlKQogICAgICAgICBtX2xhc3RUaW1lRGF0YVJlY29y
ZHNXZXJlUmVtb3ZlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogfQogCi12b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiBkb21haW5zVG9CbG9jaywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhSZWdp
c3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYmIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dG9yZSA9IFJlZiB7IG1fc3RvcmUgfSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHko
ZG9tYWluc1RvQmxvY2spLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3Jl
ID0gUmVmIHsgbV9zdG9yZSB9LCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKGRvbWFpbnNUb0Jsb2NrKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBzdG9yZS0+Y2FsbFVwZGF0ZVByZXZh
bGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoZG9tYWluc1RvQmxvY2ssIFtzdG9y
ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtNDM4LDExICs0MzgsMTEg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVm
YXVsdFZhbHVlcygpCiAgICAgbV9hcHBCb3VuZERvbWFpbnMuY2xlYXIoKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcm
IGV2ZW50KQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1Rlc3RpbmdFdmVu
dChTdHJpbmcmJiBldmVudCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBtX3N0b3JlIH0sIGV2
ZW50ID0gZXZlbnQuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3N0b3JlID0gUmVmIHsgbV9zdG9yZSB9LCBldmVudCA9IFdURk1vdmUoZXZlbnQpLmlzb2xh
dGVkQ29weSgpXSB7CiAgICAgICAgIHN0b3JlLT5sb2dUZXN0aW5nRXZlbnQoZXZlbnQpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGJj
N2FlODhmNzU4MjM2NDZkNGZhMmJjMTk0MjY3MjY0MzE4OGNiNDUuLjVmMjNjN2Q0YzNiOGQ5MWQz
Y2RjMThkZDEyYmU4ZTBiMjQ5YTBmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0
b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gYWdncmVn
YXRlZFRoaXJkUGFydHlEYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUNvb2tpZUJsb2NraW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwotICAgIHZv
aWQgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
c1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhSZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llc0ZvciYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
Y2xlYXJCbG9ja2luZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+JiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBw
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3Qg
UmVkaXJlY3RlZEZyb21Eb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKSA9IDA7CkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVE
b21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFpbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBS
ZWRpcmVjdERvbWFpbiYpID0gMDsKIAotICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KFN0cmluZyYmKTsKIAogICAgIHZvaWQg
c2V0TWF4U3RhdGlzdGljc0VudHJpZXMoc2l6ZV90IG1heGltdW1FbnRyeUNvdW50KTsKICAgICB2
b2lkIHNldFBydW5lRW50cmllc0Rvd25UbyhzaXplX3QgcHJ1bmVUYXJnZXRDb3VudCk7CkBAIC0x
NzIsNyArMTcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGFyZUFs
bFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2Nv
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGU4NzZlYzM3NzcxZmY0MDBjYWE4MzRjZWZh
ZTk1NjI1NGNjM2ZkOTMuLjJkNWIwMjc3YjI5ZTEwNmY5Y2ZkNmRhZDJhY2UzOTVhYjg3MTE5M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBA
IC0yNzIsNyArMjcyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCB2YWwKICAgICB9KTsKIH0KIAot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFByZXZhbGVudFJlc291cmNl
Rm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCkBAIC0y
ODEsNyArMjgxLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFBy
ZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2kKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29s
YXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGRv
bWFpbik7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtMzQ0LDE1ICszNDQsMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXIKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBzdGQ6Om9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChz
dWJGcmFtZURvbWFpbiAhPSB0b3BGcmFtZURvbWFpbik7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIGlmIChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm4gaGFzU3Rv
cmFnZUFjY2Vzc0VwaGVtZXJhbChzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm4g
aGFzU3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92
ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVE
b21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNv
bGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgc3Vi
RnJhbWVEb21haW4gPSBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9w
RnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgZnJh
bWVJRCwgcGFnZUlELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7CiAgICAg
ICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9zdGF0aXN0aWNzU3Rv
cmUtPmhhc1N0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFt
ZUlELCBwYWdlSUQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIG11dGFibGUgeworICAgICAgICBtX3N0YXRpc3Rp
Y3NTdG9yZS0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92
ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBoYXNTdG9yYWdlQWNjZXNzXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhc1N0b3JhZ2VBY2Nlc3MpOwogICAgICAg
ICAgICAgfSk7CkBAIC00MDgsMTcgKzQwOCwxNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgog
ICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0
b3BGcmFtZURvbWFpbikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkOjpZZXMsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3Bl
LCB0b3BGcmFtZURvbWFpbiwgc3ViRnJhbWVEb21haW4gfSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObywgc2NvcGUsIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBXVEZNb3ZlKHN1
YkZyYW1lRG9tYWluKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBpZiAo
aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuIHJlcXVlc3RTdG9yYWdlQWNjZXNzRXBoZW1l
cmFsKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFnZUlELCB3
ZWJQYWdlUHJveHlJRCwgc2NvcGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgcmV0dXJuIHJlcXVlc3RTdG9yYWdlQWNjZXNzRXBoZW1lcmFsKFdURk1vdmUoc3ViRnJhbWVE
b21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgd2ViUGFnZUlELCB3ZWJQ
YWdlUHJveHlJRCwgc2NvcGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGF1
dG8gc3RhdHVzSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
c3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVE
b21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgd2ViUGFnZUlE
LCB3ZWJQYWdlUHJveHlJRCwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKFN0b3JhZ2VBY2Nlc3NTdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKICAg
ICAgICAgc3dpdGNoIChzdGF0dXMpIHsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haQogCiAgICAgICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBy
ZXF1ZXN0Q29uZmlybWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cywgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNj
b3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9v
bCB1c2VyRGlkR3JhbnRBY2Nlc3MpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh1c2Vy
RGlkR3JhbnRBY2Nlc3MpCi0gICAgICAgICAgICAgICAgICAgIGdyYW50U3RvcmFnZUFjY2Vzcyhz
dWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHdlYlBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMsIHNjb3BlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgICAgICAgICAgICAgIGdyYW50U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1
YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHdlYlBhZ2VJ
RCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMsIHNjb3BlLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMsIHNjb3BlLCB0b3BGcmFtZURvbWFpbiwgc3ViRnJh
bWVEb21haW4gfSk7CiAgICAgICAgICAgICB9OwpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgcG9zdFRhc2soW3RoaXMs
IHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1l
RG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHdlYlBhZ2VJ
RCwgc2NvcGUsIHN0YXR1c0hhbmRsZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IFdURk1vdmUoc3ViRnJh
bWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IFdURk1vdmUodG9wRnJh
bWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNjb3BlLCBzdGF0
dXNIYW5kbGVyID0gV1RGTW92ZShzdGF0dXNIYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewogICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbc3Rh
dHVzSGFuZGxlciA9IFdURk1vdmUoc3RhdHVzSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgc3RhdHVzSGFuZGxlcihTdG9yYWdlQWNjZXNzU3RhdHVzOjpDYW5ub3RSZXF1ZXN0
QWNjZXNzKTsKQEAgLTUwNCwxOSArNTA0LDE5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyRXBoZW1lcmFsKFJlCiAg
ICAgfQogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJv
bXB0V2FzU2hvd24sIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgU3RvcmFnZUFj
Y2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNj
ZXNzUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1l
RG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBzY29wZSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21haW4gPSBXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1lRG9t
YWluKS5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgc2Nv
cGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIHBv
c3RUYXNrUmVwbHkoW3N1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5
KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHByb21w
dFdhc1Nob3duLCBzY29wZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3N1YkZyYW1l
RG9tYWluID0gV1RGTW92ZShzdWJGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1l
RG9tYWluID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHByb21wdFdh
c1Nob3duLCBzY29wZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgcHJvbXB0V2FzU2hvd24sIHNjb3BlLCB0b3BGcmFt
ZURvbWFpbiwgc3ViRnJhbWVEb21haW4gfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5ncmFudFN0
b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21h
aW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBzY29wZSwgW3N1YkZyYW1lRG9t
YWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9w
RnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHByb21wdFdhc1Nob3duLCBzY29wZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgd2FzR3JhbnRlZEFjY2VzcykgbXV0YWJsZSB7Ci0gICAgICAgICAgICBwb3N0VGFz
a1JlcGx5KFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0
b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB3YXNHcmFudGVk
QWNjZXNzLCBwcm9tcHRXYXNTaG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwb3N0VGFza1Jl
cGx5KFtzdWJGcmFtZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLmlzb2xhdGVkQ29w
eSgpLCB0b3BGcmFtZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVEb21haW4pLmlzb2xhdGVkQ29w
eSgpLCB3YXNHcmFudGVkQWNjZXNzLCBwcm9tcHRXYXNTaG93biwgc2NvcGUsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB3YXNHcmFudGVkQWNjZXNzLCBwcm9tcHRXYXNT
aG93biwgc2NvcGUsIHRvcEZyYW1lRG9tYWluLCBzdWJGcmFtZURvbWFpbiB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9KTsKQEAgLTcxOCwyNSArNzE4LDI1IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcygpCiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmlnYXRpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9t
YWluLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMgZGVsYXlBZnRl
ck1haW5GcmFtZURvY3VtZW50TG9hZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNl
cikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmlnYXRp
b24oUmVnaXN0cmFibGVEb21haW4mJiB0YXJnZXREb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYg
dG9wRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgc291cmNlRG9tYWluLCBib29sIGlz
UmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMgZGVsYXlBZnRlck1haW5GcmFtZURv
Y3VtZW50TG9hZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcikKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHRhcmdldERv
bWFpbiA9IHRhcmdldERvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BG
cmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgc291cmNlRG9tYWluID0gc291cmNlRG9tYWluLmlz
b2xhdGVkQ29weSgpLCBpc1JlZGlyZWN0LCBpc01haW5GcmFtZSwgZGVsYXlBZnRlck1haW5GcmFt
ZURvY3VtZW50TG9hZCwgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXJdIHsKKyAgICBwb3N0
VGFzayhbdGhpcywgdGFyZ2V0RG9tYWluID0gV1RGTW92ZSh0YXJnZXREb21haW4pLmlzb2xhdGVk
Q29weSgpLCB0b3BGcmFtZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVEb21haW4pLmlzb2xhdGVk
Q29weSgpLCBzb3VyY2VEb21haW4gPSBXVEZNb3ZlKHNvdXJjZURvbWFpbikuaXNvbGF0ZWRDb3B5
KCksIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRM
b2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcl0gewogICAgICAgICBpZiAobV9zdGF0
aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+bG9nRnJhbWVOYXZp
Z2F0aW9uKHRhcmdldERvbWFpbiwgdG9wRnJhbWVEb21haW4sIHNvdXJjZURvbWFpbiwgaXNSZWRp
cmVjdCwgaXNNYWluRnJhbWUsIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIHdhc1Bv
dGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVXNlckludGVy
YWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb25zIG5lZWQgdG8gYmUgbG9nZ2VkIGZvciBlcGhl
bWVyYWwgc2Vzc2lvbnMgdG8gc3VwcG9ydCB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJLgogICAgIGlm
IChpc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm4gbG9nVXNlckludGVyYWN0aW9uRXBoZW1l
cmFsKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICByZXR1cm4g
bG9nVXNlckludGVyYWN0aW9uRXBoZW1lcmFsKFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5p
c29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gV1RGTW92ZShk
b21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIGlubmVyQ29tcGxldGlvbkhh
bmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICB9OwpAQCAtNzU2LDI2ICs3NTYsMjYgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbkVwaGVtZXJhbChjb25z
dCBSZWdpc3RyYWIKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nQ3Jvc3NTaXRl
TG9hZFdpdGhMaW5rRGVjb3JhdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIGZyb21Eb21haW4sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
IEFTU0VSVChmcm9tRG9tYWluICE9IHRvRG9tYWluKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhp
cywgZnJvbURvbWFpbiA9IGZyb21Eb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvRG9tYWluID0gdG9E
b21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGZyb21Eb21haW4g
PSBXVEZNb3ZlKGZyb21Eb21haW4pLmlzb2xhdGVkQ29weSgpLCB0b0RvbWFpbiA9IFdURk1vdmUo
dG9Eb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3Rv
cmUpCiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbihmcm9tRG9tYWluLCB0b0RvbWFpbik7CiAgICAgICAgIHBvc3RUYXNrUmVw
bHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFy
VXNlckludGVyYWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIGlmIChpc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gY2xl
YXJVc2VySW50ZXJhY3Rpb25FcGhlbWVyYWwoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29w
eSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBXVEZNb3ZlKGRvbWFpbikuaXNv
bGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gaW5uZXJDb21wbGV0aW9uSGFuZGxlciA9IFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIH07CkBAIC03OTUsMTQgKzc5NSwxNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y2xlYXJVc2VySW50ZXJhY3Rpb25FcGhlbWVyYWwoY29uc3QgUmVnaXN0
cgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50
ZXJhY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIGlmIChpc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gaGFzSGFk
VXNlckludGVyYWN0aW9uRXBoZW1lcmFsKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHko
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gV1RGTW92ZShkb21haW4pLmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiA9IG1fc3RhdGlz
dGljc1N0b3JlID8gbV9zdGF0aXN0aWNzU3RvcmUtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihkb21h
aW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSA6IGZhbHNlOwogICAgICAgICBwb3N0VGFz
a1JlcGx5KFtoYWRVc2VySW50ZXJhY3Rpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihoYWRVc2VySW50ZXJhY3Rpb24pOwpAQCAtODE3LDIyICs4MTcsMjIgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbkVwaGVtZXJh
bChjb25zdCBSZWdpc3QKICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2RvbWFpbnNXaXRoRXBoZW1l
cmFsVXNlckludGVyYWN0aW9uLmNvbnRhaW5zKGRvbWFpbikpOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbiwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2V0TGFzdFNlZW4oUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIFNlY29uZHMgc2Vjb25kcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFp
biA9IGRvbWFpbi5pc29sYXRlZENvcHkoKSwgc2Vjb25kcywgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhp
cywgZG9tYWluID0gV1RGTW92ZShkb21haW4pLmlzb2xhdGVkQ29weSgpLCBzZWNvbmRzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
ICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NT
dG9yZS0+c2V0TGFzdFNlZW4oZG9tYWluLCBzZWNvbmRzKTsKICAgICAgICAgcG9zdFRhc2tSZXBs
eShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluMSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluMiwgU2Vj
b25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQs
IGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUmVnaXN0cmFi
bGVEb21haW4mJiBkb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4xLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwg
Ym9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFs
ZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKSwg
dG9wRnJhbWVEb21haW4xID0gdG9wRnJhbWVEb21haW4xLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFt
ZURvbWFpbjIgPSB0b3BGcmFtZURvbWFpbjIuaXNvbGF0ZWRDb3B5KCksIGxhc3RTZWVuLCBoYWRV
c2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJl
ZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBXVEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5
KCksIHRvcEZyYW1lRG9tYWluMSA9IFdURk1vdmUodG9wRnJhbWVEb21haW4xKS5pc29sYXRlZENv
cHkoKSwgdG9wRnJhbWVEb21haW4yID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbjIpLmlzb2xhdGVk
Q29weSgpLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVy
YWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRh
dGFSZWNvcmRzUmVtb3ZlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKSB7CiAg
ICAgICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3RpYyhkb21haW4pOwogICAg
ICAgICAgICAgc3RhdGlzdGljLmxhc3RTZWVuID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGxh
c3RTZWVuLnNlY29uZHMoKSk7CkBAIC04NTksMTEgKzg1OSwxMSBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lz
dHJhYmxlRAogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHN1YkRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcERvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25j
ZShSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkRvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BE
b21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlz
LCBzdWJEb21haW4gPSBzdWJEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcERvbWFpbiA9IHRvcERv
bWFpbi5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgc3ViRG9tYWluID0g
V1RGTW92ZShzdWJEb21haW4pLmlzb2xhdGVkQ29weSgpLCB0b3BEb21haW4gPSBXVEZNb3ZlKHRv
cERvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3Rv
cmUgfHwgIWlzPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0aXN0
aWNzU3RvcmUpKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC04NzcsNDcgKzg3Nyw0NyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoY29uc3Qg
UmVnaQogICAgIH0pOwogfQogICAgIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBwb3N0
VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RU
YXNrKFt0aGlzLCBkb21haW4gPSBXVEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0
b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShkb21haW4pOwogICAgICAgICBwb3N0VGFza1JlcGx5
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
VmVyeVByZXZhbGVudFJlc291cmNlKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4u
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUo
ZG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3Jl
KQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShkb21haW4pOwogICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICB9KTsKIH0KICAgICAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAogICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIGlubmVy
Q29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oY29uc3QgU3RyaW5nJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAg
cG9zdFRhc2tSZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CisgICAgICAgIGF1dG8gaW5uZXJD
b21wbGV0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShTdHJpbmcmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcG9zdFRh
c2tSZXBseShbcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfTsKICAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewot
ICAgICAgICAgICAgaW5uZXJDb21wbGV0aW9uSGFuZGxlcihlbXB0eVN0cmluZygpKTsKKyAgICAg
ICAgICAgIGlubmVyQ29tcGxldGlvbkhhbmRsZXIoU3RyaW5nIHsgZW1wdHlTdHJpbmcoKSB9KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
ZS0+ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoV1RGTW92ZShpbm5lckNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC05
MjYsNyArOTI2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29s
YXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlID0gbV9zdGF0
aXN0aWNzU3RvcmUgPyBtX3N0YXRpc3RpY3NTdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZShkb21h
aW4pIDogZmFsc2U7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2lzUHJldmFsZW50UmVzb3VyY2Us
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc1ByZXZhbGVudFJlc291cmNlKTsK
QEAgLTkzNCwxMSArOTM0LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgfSk7CiB9
CiAgICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjppc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIHBv
c3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9z
dFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSA9IG1fc3RhdGlzdGljc1N0b3Jl
ID8gbV9zdGF0aXN0aWNzU3RvcmUtPmlzVmVyeVByZXZhbGVudFJlc291cmNlKGRvbWFpbikgOiBm
YWxzZTsKICAgICAgICAgcG9zdFRhc2tSZXBseShbaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk7
CkBAIC05NDYsMTEgKzk0NiwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEbwogICAgIH0pOwog
fQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJyZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihSZWdpc3Ry
YWJsZURvbWFpbiYmIHN1YnJlc291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhb
dGhpcywgc3VicmVzb3VyY2VEb21haW4gPSBzdWJyZXNvdXJjZURvbWFpbi5pc29sYXRlZENvcHko
KSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICBwb3N0VGFzayhbdGhpcywgc3VicmVzb3VyY2VEb21haW4gPSBXVEZNb3ZlKHN1YnJlc291cmNl
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYm9vbCBpc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXIgPSBtX3N0YXRpc3RpY3NTdG9yZSA/IG1fc3RhdGlzdGljc1N0b3JlLT5p
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1l
RG9tYWluKQogICAgICAgICAgICAgOiBmYWxzZTsKICAgICAgICAgcG9zdFRhc2tSZXBseShbaXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtOTU5LDExICs5NTksMTEgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVnaXN0ZXJlZEFzU3VicmVzb3Vy
Y2VVbmRlcihjb25zdCBSZWdpc3QKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVyZWRB
c1N1YkZyYW1lVW5kZXIoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4u
aXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRD
b3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0gV1RGTW92ZShz
dWJGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gV1RGTW92ZSh0
b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgaXNSZWdpc3Rl
cmVkQXNTdWJGcmFtZVVuZGVyID0gbV9zdGF0aXN0aWNzU3RvcmUgPyBtX3N0YXRpc3RpY3NTdG9y
ZS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURv
bWFpbikKICAgICAgICAgICAgIDogZmFsc2U7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2lzUmVn
aXN0ZXJlZEFzU3ViRnJhbWVVbmRlciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTk3MiwxMSArOTcyLDExIEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIo
Y29uc3QgUmVnaXN0cmFiCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjppc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVnaXN0
ZXJlZEFzUmVkaXJlY3RpbmdUbyhSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRG
cm9tLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpblJlZGlyZWN0ZWRG
cm9tID0gZG9tYWluUmVkaXJlY3RlZEZyb20uaXNvbGF0ZWRDb3B5KCksIGRvbWFpblJlZGlyZWN0
ZWRUbyA9IGRvbWFpblJlZGlyZWN0ZWRUby5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFz
ayhbdGhpcywgZG9tYWluUmVkaXJlY3RlZEZyb20gPSBXVEZNb3ZlKGRvbWFpblJlZGlyZWN0ZWRG
cm9tKS5pc29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZFRvID0gV1RGTW92ZShkb21haW5S
ZWRpcmVjdGVkVG8pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBib29sIGlzUmVnaXN0ZXJl
ZEFzUmVkaXJlY3RpbmdUbyA9IG1fc3RhdGlzdGljc1N0b3JlID8gbV9zdGF0aXN0aWNzU3RvcmUt
PmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhkb21haW5SZWRpcmVjdGVkRnJvbSwgZG9tYWlu
UmVkaXJlY3RlZFRvKQogICAgICAgICAgICAgOiBmYWxzZTsKICAgICAgICAgcG9zdFRhc2tSZXBs
eShbaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtOTg1LDMzICs5ODUsMzMgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVnaXN0ZXJlZEFzUmVkaXJl
Y3RpbmdUbyhjb25zdCBSZWdpc3RyYWIKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJldmFs
ZW50UmVzb3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIAotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0
ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWlu
KS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAg
ICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoZG9tYWlu
KTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRHcmFu
ZGZhdGhlcmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgdmFsdWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmVkKFJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluLCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIHZhbHVlLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBXVEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRD
b3B5KCksIHZhbHVlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAg
ICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+c2V0R3JhbmRmYXRoZXJlZChkb21haW4sIHZhbHVlKTsK
ICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
fSk7CiB9CiAgICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNHcmFu
ZGZhdGhlcmVkKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aXNHcmFuZGZhdGhlcmVkKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWluID0g
ZG9tYWluLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW4gPSBX
VEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wg
aXNHcmFuZEZhdGhlcmVkID0gbV9zdGF0aXN0aWNzU3RvcmUgPyBtX3N0YXRpc3RpY3NTdG9yZS0+
aXNHcmFuZGZhdGhlcmVkKGRvbWFpbikKICAgICAgICAgICAgIDogZmFsc2U7CiAgICAgICAgIHBv
c3RUYXNrUmVwbHkoW2lzR3JhbmRGYXRoZXJlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTEwMjAsNjYgKzEwMjAsNjYgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG8KICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29s
YXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHko
KV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc3ViRnJhbWVEb21haW4gPSBXVEZNb3ZlKHN1YkZy
YW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZy
YW1lRG9tYWluKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3Rh
dGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pOwogICAg
ICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3VicmVzb3VyY2VE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihSZWdp
c3RyYWJsZURvbWFpbiYmIHN1YnJlc291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBwb3N0VGFz
ayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
c3VicmVzb3VyY2VEb21haW4gPSBzdWJyZXNvdXJjZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9w
RnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsK
KyAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgc3VicmVzb3VyY2VEb21haW4gPSBXVEZNb3ZlKHN1YnJlc291cmNlRG9tYWlu
KS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWlu
KS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0
b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbihzdWJyZXNvdXJjZURvbWFpbiwgdG9wRnJhbWVEb21haW4pOwogICAgICAg
ICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RUbyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3VicmVzb3VyY2VEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUmVnaXN0cmFi
bGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5S
ZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIHBvc3RUYXNr
KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBz
dWJyZXNvdXJjZURvbWFpbiA9IHN1YnJlc291cmNlRG9tYWluLmlzb2xhdGVkQ29weSgpLCBkb21h
aW5SZWRpcmVjdGVkVG8gPSBkb21haW5SZWRpcmVjdGVkVG8uaXNvbGF0ZWRDb3B5KCldKCkgbXV0
YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHN1YnJlc291cmNlRG9tYWluID0gV1RGTW92ZShzdWJyZXNvdXJj
ZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGRvbWFpblJlZGlyZWN0ZWRUbyA9IFdURk1vdmUoZG9t
YWluUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdWJyZXNvdXJjZURvbWFpbiwgZG9tYWluUmVkaXJl
Y3RlZFRvKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVj
dGVkRnJvbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3VicmVzb3VyY2VEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIAotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdWJyZXNvdXJjZURvbWFpbiA9IHN1YnJlc291cmNlRG9t
YWluLmlzb2xhdGVkQ29weSgpLCBkb21haW5SZWRpcmVjdGVkRnJvbSA9IGRvbWFpblJlZGlyZWN0
ZWRGcm9tLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdWJyZXNvdXJj
ZURvbWFpbiA9IFdURk1vdmUoc3VicmVzb3VyY2VEb21haW4pLmlzb2xhdGVkQ29weSgpLCBkb21h
aW5SZWRpcmVjdGVkRnJvbSA9IFdURk1vdmUoZG9tYWluUmVkaXJlY3RlZEZyb20pLmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCiAgICAg
ICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZy
b20oc3VicmVzb3VyY2VEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9tKTsKICAgICAgICAgcG9z
dFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0VG8oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdG9wRnJhbWVEb21haW4gPSB0
b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZFRvID0gZG9tYWlu
UmVkaXJlY3RlZFRvLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0b3BG
cmFtZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCBkb21h
aW5SZWRpcmVjdGVkVG8gPSBXVEZNb3ZlKGRvbWFpblJlZGlyZWN0ZWRUbykuaXNvbGF0ZWRDb3B5
KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAg
ICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8odG9wRnJh
bWVEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRUbyk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFt
ZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZEZyb20gPSBkb21haW5SZWRp
cmVjdGVkRnJvbS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdG9wRnJh
bWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgZG9tYWlu
UmVkaXJlY3RlZEZyb20gPSBXVEZNb3ZlKGRvbWFpblJlZGlyZWN0ZWRGcm9tKS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAg
ICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKHRv
cEZyYW1lRG9tYWluLCBkb21haW5SZWRpcmVjdGVkRnJvbSk7CiAgICAgICAgIHBvc3RUYXNrUmVw
bHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdHJhYmxlRG9tYWlucyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBSZWdpc3RyYWJs
ZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnNUb0RlbGV0
ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3IsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRl
bGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9y
UmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnNUb0RlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0
ZURhdGFGb3IsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIApAQCAtMTQzMSwxMSArMTQzMSwxMSBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzdW1lKCkKICAgICBzaGFy
ZWRTdGF0aXN0aWNzUXVldWUoKS0+cmVzdW1lKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQ
YXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhSZWdpc3RyYWJsZURvbWFp
biYmIGRvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1v
dmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBv
c3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIG51bWJlck9mT3Bl
cmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywg
ZG9tYWluID0gV1RGTW92ZShkb21haW4pLmlzb2xhdGVkQ29weSgpLCBudW1iZXJPZk9wZXJhdGlu
Z0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NT
dG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5pbnNlcnRFeHBpcmVkU3RhdGlz
dGljRm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbiksIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3Nl
ZCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1v
dmFsLCBpc1ByZXZhbGVudCk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCmluZGV4IGM1Y2Q5ZjE0ZGZhMjY3NjZkZTMxMTAyY2RjNDI0MWNmYTY5MWE0NjYuLmNhYTQ5
OGEzYjlhNTNjMjEzZWJmNzUxM2IxYWU4MDQ1MTU5MmM5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTE0OCw0MyArMTQ4LDQzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRz
UmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgU3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJik7CisgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKIAotICAgIHZvaWQgbG9n
RnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29s
IGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJv
b2wgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpOwotICAgIHZvaWQgbG9nVXNlckludGVy
YWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgTmF2
aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGxv
Z0ZyYW1lTmF2aWdhdGlvbihOYXZpZ2F0ZWRUb0RvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBO
YXZpZ2F0ZWRGcm9tRG9tYWluJiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSwg
U2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCBib29sIHdhc1BvdGVudGlh
bGx5SW5pdGlhdGVkQnlVc2VyKTsKKyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihUb3BGcmFt
ZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbG9nQ3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihOYXZpZ2F0ZWRGcm9tRG9tYWluJiYsIE5hdmln
YXRlZFRvRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBj
bGVhclVzZXJJbnRlcmFjdGlvbihUb3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZUFu
ZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVE
YXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFu
ZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVE
YXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURv
bWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3NJblN0b3JhZ2VTZXNzaW9uKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdl
QWNjZXNzU2NvcGUpOwotICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSwgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKLSAgICB2b2lkIHNldExhc3RTZWVu
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjEsIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJv
b2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVu
dCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgaXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YkRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcERv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRQcmV2
YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcp
PiYmKTsKLSAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzVmVyeVBy
ZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIoY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFz
UmVkaXJlY3RpbmdUbyhjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0
ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQg
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIGlzR3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgU3Rv
cmFnZUFjY2Vzc1Njb3BlLCAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1Jlc3VsdCk+JiYpOworICAgIHZvaWQgc2V0TGFzdFNlZW4oUmVnaXN0cmFibGVEb21haW4m
JiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1lcmdl
U3RhdGlzdGljRm9yVGVzdGluZyhSZWdpc3RyYWJsZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluMSwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbjIsIFNlY29u
ZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBi
b29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRh
YmFzZU9uY2UoUmVnaXN0cmFibGVEb21haW4mJiBzdWJEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgdG9wRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldFByZXZhbGVudFJlc291cmNlKFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUmVnaXN0
cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGR1
bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmKTsKKyAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihTdWJSZXNv
dXJjZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihTdWJGcmFtZURv
bWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhSZWRpcmVjdGVkRnJvbURv
bWFpbiYmLCBSZWRpcmVjdGVkVG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKFJlZ2lzdHJhYmxlRG9tYWlu
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhl
cmVkKFJlZ2lzdHJhYmxlRG9tYWluJiYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5E
YXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdUZXN0KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oY29u
c3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
VG8oY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdEZyb20oY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBSZWRpcmVjdGVk
RnJvbURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRp
cmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQg
c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25z
dCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oU3ViRnJhbWVEb21haW4mJiwg
VG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihTdWJSZXNvdXJjZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFN1YlJlc291cmNlRG9tYWluJiYsIFJlZGly
ZWN0ZWRUb0RvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oU3ViUmVzb3VyY2VEb21haW4mJiwgUmVk
aXJlY3RlZEZyb21Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhUb3BGcmFtZURvbWFpbiYmLCBSZWRpcmVj
dGVkVG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNl
dFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFRvcEZyYW1lRG9tYWluJiYsIFJlZGlyZWN0ZWRG
cm9tRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJv
b2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVn
TW9kZShSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CkBAIC0yMzcsNyArMjM3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc3VtZSgpOwogICAgIAogICAgIGJvb2wgaXNF
cGhlbWVyYWwoKSBjb25zdCB7IHJldHVybiBtX2lzRXBoZW1lcmFsID09IFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXM7IH07Ci0gICAgdm9pZCBpbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVuc2ln
bmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZh
bGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFJlZ2lzdHJhYmxlRG9tYWluJiYsIHVuc2lnbmVkIG51bWJl
ck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcm
LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpJc0VwaGVtZXJhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDAxOTBkODQ2
ZGJkOTVlMDczN2FlZTVjMzI1OGFmMzVhOTc5Y2U3MzYuLjEyMGVjNDcxZDM3Yjk2MWMzMzRjMDQ4
OTc5ZTVjZjIzNTc1OGVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MDcs
MTAgKzQwNywxMCBAQCBib29sIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRlUXVvdGFCYXNl
ZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVz
YWdlRm9yVGVzdGluZyhDbGllbnRPcmlnaW4mJiBvcmlnaW4pCiB7CiAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpCi0g
ICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkucmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9u
VXNhZ2VGb3JUZXN0aW5nKG9yaWdpbik7CisgICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCkucmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKFdURk1vdmUob3JpZ2lu
KSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTEwMDAsNyArMTAwMCw3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzRm9y
SW5kZXhlZERCKGNvbnN0CiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNjZXNzKCk7CiAK
ICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQotICAgICAgICAg
ICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0
aHMobV9jb25uZWN0aW9uLCBmaWxlUGF0aHMpOworICAgICAgICAgICAgc2Vzc2lvbi0+c3RvcmFn
ZU1hbmFnZXIoKS5yZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMobV9jb25uZWN0aW9uLCBX
VEZNb3ZlKGZpbGVQYXRocykpOwogCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
ZmlsZVBhdGhzKSk7CiAgICAgfSk7CkBAIC0xMDM1LDExICsxMDM1LDExIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NG
b3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ1VzZXJJbnRlcmFj
dGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikKIHsKICAgICBpZiAoYXV0byogbmV0d29y
a1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ1VzZXJJbnRl
cmFjdGlvbihkb21haW4sIFtdIHsgfSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oV1RGTW92ZShkb21haW4pLCBbXSB7IH0pOwogICAgIH0K
IH0KIApAQCAtMTA1OCwxMSArMTA1OCwxMSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyYwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
ZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpIHsKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmhhc1N0b3JhZ2VB
Y2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUo
dG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHN0b3JhZ2VTZXNzaW9uKCktPmhhc0Nvb2tpZXMoc3ViRnJhbWVEb21haW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKQEAgLTEwNzMsMTEgKzEwNzMsMTEgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3UKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2Vi
UGFnZUlELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBTdG9yYWdlQWNj
ZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NSZXN1bHQgcmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJh
YmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFN0b3JhZ2VBY2Nlc3NTY29w
ZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1Jlc3VsdCByZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5y
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZyYW1l
SUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFp
biksIGZyYW1lSUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjBkNTY3NzhhNjRmMzc0ZjBhZTk0YWQ2YjA5
NTk5ODQ1ZGYwYzM3Yi4uMjM5ZDdlYWMxZGE2ODQxY2I1ZDdmZmMxMDcxMGRhMTQ1ZTBkMDY5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjU4LDcgKzI1OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYsIFN0cmluZyBjYWNoZVBhcnRpdGlvbiwg
V2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNyZWF0ZVNvY2tldENo
YW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgYm9vbCBoYWRNYWluRnJhbWVNYWluUmVz
b3VyY2VQcml2YXRlUmVsYXllZCk7Ci0gICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVz
YWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICB2b2lkIHVw
ZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmKTsKIAogICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbigp
OwogICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKTsKQEAgLTMxMCwx
MCArMzEwLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BS
RVZFTlRJT04pCiAgICAgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGxv
Z1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZvaWQgbG9n
VXNlckludGVyYWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYpOwogICAgIHZvaWQgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsK
KyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURv
bWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURv
bWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsK
ICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVu
ZXJEb21haW4pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggN2U0YzU5M2VhODNiMWVhOTBkNzhjNjA4Yjc2ZDlkNDEw
ODI5MTk0Mi4uMDFhMDM5ODNjNjI1ZTk1Yzk2NzMyZTIzNjhhMjMwZDZiMGZlOWYzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUz
NCwxMSArNTM0LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCBzZXNzCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJl
Z2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZChkb21haW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlz
R3JhbmRmYXRoZXJlZChXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwog
ICAgIH0gZWxzZSB7CkBAIC01NDcsMTEgKzU0NywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
c0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNQcmV2YWxlbnRSZXNvdXJjZShkb21haW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2UoV1RGTW92ZShkb21haW4pLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UgewpAQCAtNTYwLDExICs1NjAsMTEgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHIKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzVmVy
eVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVudFJlc291
cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZShXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgIH0gZWxz
ZSB7CkBAIC01ODAsMTEgKzU4MCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBG
b3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZAogICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEdyYW5kZmF0
aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBi
b29sIGlzR3JhbmRmYXRoZXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNldEdyYW5kZmF0aGVyZWQoZG9tYWluLCBpc0dyYW5kZmF0aGVyZWQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnNldEdyYW5kZmF0aGVyZWQoV1RGTW92ZShkb21haW4pLCBpc0dyYW5kZmF0aGVyZWQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtNTkzLDExICs1OTMsMTEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmwKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFByZXZhbGVu
dFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2UoV1RGTW92ZShk
b21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKQEAgLTYwNiwxMSArNjA2
LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0CiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShkb21h
aW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdURk1vdmUoZG9t
YWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC02MTksMTEgKzYxOSwx
MSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9k
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFZlcnlQcmV2YWxl
bnRSZXNvdXJjZShXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVs
c2UgewpAQCAtNjMyLDExICs2MzIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VmVyeVBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmUKICAgICB9
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5jbGVhclByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9IGVsc2UgewpAQCAtNzU0LDExICs3NTQsMTEgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9u
SUQgc2Vzc2kKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWlu
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWluKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWluKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZy
YW1lRG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC03NjcsMTEg
Kzc2NywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVE
b21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjbwogICAgIH0KIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgUmVnaXN0cmFibGVEb21h
aW4mJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGRvbWFpblJl
ZGlyZWN0ZWRGcm9tLCBkb21haW5SZWRpcmVjdGVkVG8sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUmVnaXN0ZXJlZEFz
UmVkaXJlY3RpbmdUbyhXVEZNb3ZlKGRvbWFpblJlZGlyZWN0ZWRGcm9tKSwgV1RGTW92ZShkb21h
aW5SZWRpcmVjdGVkVG8pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UgewpA
QCAtNzgwLDExICs3ODAsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNS
ZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QKICAgICB9CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoc3ViRnJhbWVEb21haW4sIHRv
cEZyYW1lRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoV1RGTW92
ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKICAgICB9IGVsc2UgewpAQCAtNzkzLDExICs3OTMsMTEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYm
IHN1YnJlc291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKHN1YnJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFp
biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFdURk1vdmUoc3Vi
cmVzb3VyY2VEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0gZWxzZSB7CkBAIC04MDYsMTEgKzgwNiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHN1YnJlc291
cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RUbyhzdWJyZXNvdXJjZURvbWFpbiwgZG9tYWluUmVkaXJlY3RlZFRvLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV1RGTW92ZShzdWJyZXNvdXJj
ZURvbWFpbiksIFdURk1vdmUoZG9tYWluUmVkaXJlY3RlZFRvKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgIH0gZWxzZSB7CkBAIC04MTksMTEgKzgxOSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjbwogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW5SZWRpcmVjdGVkRnJvbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHN1YnJl
c291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3VyY2VEb21haW4sIGRvbWFpblJlZGlyZWN0
ZWRGcm9tLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShXVEZNb3Zl
KHN1YnJlc291cmNlRG9tYWluKSwgV1RGTW92ZShkb21haW5SZWRpcmVjdGVkRnJvbSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtODMyLDExICs4MzIsMTEgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdp
c3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYm
IHN1YnJlc291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihzdWJyZXNvdXJjZURvbWFpbiwgdG9wRnJhbWVEb21h
aW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihXVEZNb3ZlKHN1YnJl
c291cmNlRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOwogICAgIH0gZWxzZSB7CkBAIC04NDUsMTEgKzg0NSwxMSBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjbwogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWlu
LCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RUbyh0b3BGcmFtZURvbWFpbiwgZG9tYWluUmVkaXJlY3RlZFRvLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0VG8oV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIFdURk1vdmUoZG9t
YWluUmVkaXJlY3RlZFRvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC04
NTgsMTEgKzg1OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdAogICAgIH0KIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20odG9wRnJhbWVEb21h
aW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgV1RGTW92ZShkb21haW5SZWRpcmVjdGVk
RnJvbSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtODcyLDExICs4NzIs
MTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb24KIH0KICAgICAKICAgICAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbiwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRM
YXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9t
YWluLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBz
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXRMYXN0U2Vlbihkb21haW4sIHNlY29uZHMsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldExh
c3RTZWVuKFdURk1vdmUoZG9tYWluKSwgc2Vjb25kcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAg
IH0gZWxzZSB7CkBAIC04OTgsMTEgKzg5OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb21h
aW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBpbnQgZG9tYQog
ICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluMSwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRV
c2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBp
c0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1
bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluMSwgUmVnaXN0cmFibGVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQg
ZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGRvbWFpbiwgdG9wRnJhbWVEb21h
aW4xLCB0b3BGcmFtZURvbWFpbjIsIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVy
eVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5tZXJnZVN0YXRpc3RpY0Zv
clRlc3RpbmcoV1RGTW92ZShkb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluMSksIFdURk1v
dmUodG9wRnJhbWVEb21haW4yKSwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5
UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
IGVsc2UgewpAQCAtOTExLDExICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bWVyZ2VT
dGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmUKICAg
ICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9t
YWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlcklu
dGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJv
b2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhkb21haW4sIG51bWJlck9m
T3BlcmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pLCBudW1iZXJPZk9wZXJhdGluZ0Rh
eXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2Ug
ewpAQCAtOTM0LDIwICs5MzQsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0QWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGUKICAgICB9CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1lTmF2aWdhdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lLCBTZWNv
bmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50aWFsbHlJ
bml0aWF0ZWRCeVVzZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFtZU5hdmlnYXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHRhcmdldERvbWFp
biwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4m
JiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSwgU2Vjb25k
cyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCBib29sIHdhc1BvdGVudGlhbGx5SW5p
dGlhdGVkQnlVc2VyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPmxvZ0ZyYW1lTmF2aWdhdGlvbih0YXJnZXREb21haW4sIHRvcEZyYW1l
RG9tYWluLCBzb3VyY2VEb21haW4sIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBkZWxheUFmdGVy
TWFpbkZyYW1lRG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcik7Cisg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dGcmFtZU5hdmlnYXRpb24oV1RG
TW92ZSh0YXJnZXREb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgV1RGTW92ZShzb3Vy
Y2VEb21haW4pLCBpc1JlZGlyZWN0LCBpc01haW5GcmFtZSwgZGVsYXlBZnRlck1haW5GcmFtZURv
Y3VtZW50TG9hZCwgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpOwogICAgIH0gZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rp
b24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oV1RGTW92ZShkb21haW4pLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKQEAgLTk1NiwxMSArOTU2LDExIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpo
YWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFkVXNlckludGVyYWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aGFzSGFkVXNl
ckludGVyYWN0aW9uKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aGFzSGFkVXNlckludGVyYWN0aW9uKFdURk1v
dmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfSBlbHNlIHsKQEAgLTk2
OSwxMSArOTY5LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmhhZFVzZXJJbnRlcmFjdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAgICAgfQogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjppc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlbGF0
aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgc3ViRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcERvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1Jl
bGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShzdWJEb21haW4sIHRvcERvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoV1RGTW92ZShzdWJEb21haW4pLCBX
VEZNb3ZlKHRvcERvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgIH0gZWxzZSB7
CkBAIC05ODIsMTEgKzk4MiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlbGF0aW9uc2hp
cE9ubHlJbkRhdGFiYXNlT25jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAgfQogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFi
bGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5jbGVhclVzZXJJbnRlcmFjdGlvbihkb21haW4sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyVXNl
ckludGVyYWN0aW9uKFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0g
ZWxzZSB7CkBAIC0xMTQzLDcgKzExNDMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNlcwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1p
dENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRh
VHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5z
ZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBmcm9tRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvRG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jv
c3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2Zl
ciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAgIEFTU0VSVCghbmF2aWdhdGlvbkRhdGFUcmFuc2Zl
ci5pc0VtcHR5KCkpOwogCkBAIC0xMTYyLDE3ICsxMTYyLDE3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklE
IHNlc3NpCiAgICAgaWYgKG5hdmlnYXRpb25EYXRhVHJhbnNmZXIuY29udGFpbnMoQ3Jvc3NTaXRl
TmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZzo6RGVzdGluYXRpb25MaW5rRGVjb3JhdGlvbikp
IHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5sb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21h
aW4sIHRvRG9tYWluLCBbXSB7IH0pOworICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV1RGTW92ZShmcm9tRG9t
YWluKSwgV1RGTW92ZSh0b0RvbWFpbiksIFtdIHsgfSk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENyb3NzU2l0
ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgUmVnaXN0cmFibGVEb21haW4mJiBmcm9tRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRv
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihmcm9tRG9tYWluLCB0b0RvbWFpbiwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihXVEZNb3ZlKGZyb21E
b21haW4pLCBXVEZNb3ZlKHRvRG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxz
ZSB7CkBAIC0xNjc0LDE0ICsxNjc0LDE0IEBAIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoY29uc3QgSGFzCiAgICAg
cmV0dXJuIG9yaWdpbnNEZWxldGVkOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVB
bmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
UmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21h
aW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJp
Y3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlv
bnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05vdENyZWF0ZVByb2Nlc3NlczsKIAogICAg
IHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdn
cmVnYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIGV4cGxpY2l0IENhbGxiYWNr
QWdncmVnYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX2NvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7CiAgICAgICAgIH0K
QEAgLTE2ODksMjAgKzE2ODksMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVz
dHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3MKICAgICAgICAg
fkNhbGxiYWNrQWdncmVnYXRvcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhh
bmRsZXIpLCBkb21haW5zID0gV1RGTW92ZShtX2RvbWFpbnMpXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkb21haW5zKTsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFpbnMpKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1f
ZG9tYWluczsKICAgICB9OwogICAgIAotICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRv
cHRSZWYoKm5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNob3VsZE5vdGlmeVBhZ2VdIChjb25zdCBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1dpdGhEYXRhKSBtdXRhYmxlIHsKKyAgICBh
dXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKCpuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9y
KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBz
aG91bGROb3RpZnlQYWdlXSAoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zV2l0
aERhdGEpIG11dGFibGUgewogICAgICAgICBpZiAoc2hvdWxkTm90aWZ5UGFnZSkKICAgICAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Ok5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNG
aW5pc2hlZCgpLCAwKTsKICAgICAgICAgCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWlu
c1dpdGhEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoRGF0YSldICgpIG11dGFibGUg
ewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZG9tYWluc1dpdGhEYXRhKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBkb21haW5zV2l0aERhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShkb21haW5zV2l0aERhdGEpKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFpbnNXaXRoRGF0YSkpOwogICAgICAgICB9KTsKICAgICB9
KSk7CiAKQEAgLTE4MzcsNyArMTgzNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNv
b2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFiCiAgICAg
ZWxzZQogICAgICAgICB0b0RlbGV0ZUZvci5kb21haW5zVG9EZWxldGVBbGxCdXRIdHRwT25seUNv
b2tpZXNGb3IuYXBwZW5kKGRvbWFpbik7CiAKLSAgICBkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVE
YXRhRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25JRCwgY29va2llVHlwZSwgV1RGTW92ZSh0
b0RlbGV0ZUZvciksIHRydWUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNEZWxl
dGVkRm9yKSBtdXRhYmxlIHsKKyAgICBkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVn
aXN0cmFibGVEb21haW5zKHNlc3Npb25JRCwgY29va2llVHlwZSwgV1RGTW92ZSh0b0RlbGV0ZUZv
ciksIHRydWUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zRGVsZXRlZEZvcikgbXV0YWJs
ZSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShkb21haW5zRGVsZXRlZEZvcik7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELAogICAgICAgICBpZiAoc2hvdWxkTm90aWZ5UGFnZSkKICAgICAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6Ok5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCksIDApOwogCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWluc1dpdGhEYXRhID0g
Y3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoRGF0YSldICgpIG11dGFibGUgeworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGRvbWFpbnNXaXRoRGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KGRvbWFpbnNXaXRoRGF0YSkpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoZG9tYWluc1dpdGhEYXRhKSk7CiAgICAgICAgIH0pOwogICAgIH0pKTsK
QEAgLTIyMTIsMTAgKzIyMTIsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTdG9yYWdl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkSW5jcmVh
c2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRJbmNyZWFz
ZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ2xpZW50T3JpZ2luJiYgb3JpZ2luLCBR
dW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbmV3UXVvdGEpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRpZElu
Y3JlYXNlUXVvdGEob3JpZ2luLCBpZGVudGlmaWVyLCBuZXdRdW90YSk7CisgICAgICAgIHNlc3Np
b24tPnN0b3JhZ2VNYW5hZ2VyKCkuZGlkSW5jcmVhc2VRdW90YShXVEZNb3ZlKG9yaWdpbiksIGlk
ZW50aWZpZXIsIG5ld1F1b3RhKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xk
TmFtZSwgY29uc3QgVVJMJiBuZXdOYW1lLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRh
VHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTIyMjgsNyArMjIyOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vi
c2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkK
LSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5tb3ZlRGF0YShkYXRhVHlwZXMsIG9s
ZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKKyAgICAgICAgc2Vzc2lvbi0+
c3RvcmFnZU1hbmFnZXIoKS5tb3ZlRGF0YShkYXRhVHlwZXMsIFdURk1vdmUob2xkT3JpZ2luKSwg
V1RGTW92ZShuZXdPcmlnaW4pLCBbYWdncmVnYXRvcl0geyB9KTsKIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCAwMGJlNzFkZDMzOWMwYjg5NTRhMzM4OTE3NjMzMTllMjVjYjdkYTZiLi40
MmNlMDhiZjM1MGNmY2JhM2I1YTc1MjI5MzI2OWFlNzc4Yjk1MTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMDEsMzEgKzIwMSwzMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzJiYpOwogCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJ
T04pCi0gICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAg
dm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRl
QW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRl
T3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKTsK
KyAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJh
YmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjbGVh
clVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJz
aXRlRGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29v
a2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluLCBib29sIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJh
YmxlRG9tYWluPiYgZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBp
c1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc0dyYW5kZmF0aGVy
ZWQoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Np
b25JRCwgUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgUmVn
aXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCwgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVkaXJl
Y3RlZEZyb21Eb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRl
cihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaXNSZWdp
c3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJSZXNvdXJj
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7Ci0gICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBB
TDo6U2Vzc2lvbklELCBSZWRpcmVjdGVkRnJvbURvbWFpbiYmLCBSZWRpcmVjdGVkVG9Eb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQsIFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQg
aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklELCBTdWJSZXNvdXJj
ZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKKyAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJh
YmxlRG9tYWluJiYsIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2V0TWF4U3RhdGlzdGljc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IG1heGltdW1FbnRyeUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHBydW5lVGFyZ2V0Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCBpc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBoYWRV
c2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNSZWxhdGlvbnNoaXBPbmx5
SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCBoYXNMb2NhbFN0b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7Ci0gICAgdm9p
ZCBsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IE5hdmlnYXRlZFRvRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwg
Ym9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWlu
RnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpOwot
ICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBsb2dGcmFt
ZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQsIE5hdmlnYXRlZFRvRG9tYWluJiYsIFRvcEZyYW1l
RG9tYWluJiYsIE5hdmlnYXRlZEZyb21Eb21haW4mJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlz
TWFpbkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wg
d2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpOworICAgIHZvaWQgbG9nVXNlckludGVyYWN0
aW9uKFBBTDo6U2Vzc2lvbklELCBUb3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlm
aWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTIzNSwxMCArMjM1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRp
c3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCwg
U2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldExhc3RT
ZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNl
c3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIGRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShQQUw6OlNlc3Np
b25JRCwgaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4xLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
LCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2
YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3Bl
cmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiB0b3BG
cmFtZURvbWFpbjEsIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4yLCBTZWNvbmRzIGxh
c3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlcklu
dGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBp
c1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmLCB1bnNpZ25lZCBudW1iZXJP
Zk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5E
YXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkKFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
c3QoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0yNDcsMTYgKzI0NywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBib29sIGRlYnVnTW9kZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmZCk7CiAgICAgdm9pZCBpc1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFcGhlbWVyYWwoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVE
YXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJSZXNvdXJj
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YlJlc291cmNlRG9tYWlu
JiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lv
bklELCBTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
KFBBTDo6U2Vzc2lvbklELCBTdWJSZXNvdXJjZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklELCBTdWJSZXNvdXJjZURvbWFpbiYmLCBSZWRpcmVj
dGVkVG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNl
dFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBTdWJSZXNvdXJj
ZURvbWFpbiYmLCBSZWRpcmVjdGVkRnJvbURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNl
dFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklELCBUb3BGcmFtZURvbWFpbiYmLCBSZWRpcmVjdGVk
VG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBUb3BGcmFtZURvbWFpbiYm
LCBSZWRpcmVjdGVkRnJvbURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAg
ICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlv
bkRhdGFUcmFuc2Zlcjo6RmxhZz4sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJv
bURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRh
VHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZnJvbURvbWFpbiwg
UmVnaXN0cmFibGVEb21haW4mJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExp
bmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4m
JiBmcm9tRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvRG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVj
b3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJikgY29uc3Q7CiAgICAgdm9pZCBjbG9zZUlUUERhdGFiYXNlKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOworICAgIHZv
aWQgZGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gbmV3UXVvdGEpOwogICAgIHZvaWQgcmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cAppbmRleCA4YTVkNTg4NmEyZTMyNGEyYjE4YmUyNjNmNmNjMTQ0NGU3YjY3ZTA2Li40ZDA5YzNi
YjQyOWM0YzBmMzQ0OGM5OTZkZWE5OTFkYzRmODJmNjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIHZv
aWQgTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wg
ZW5hYmxlKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1Z01vZGUodHJ1ZSwgW10geyB9KTsKICAgICAvLyBUaGlzIHNob3VsZCBh
bHdheXMgYmUgZm9yd2FyZGVkIHNpbmNlIGRlYnVnIG1vZGUgbWF5IGJlIGVuYWJsZWQgYXQgcnVu
dGltZS4KICAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJl
c291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQ
cmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSwgW10geyB9KTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShSZWdpc3RyYWJsZURvbWFp
biB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIH0sIFtd
IHsgfSk7CiAgICAgZm9yd2FyZFJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpOwogfQog
CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6bG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdAogICAgIG1fbmV0d29y
a1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWVGcm9tV2ViUHJvY2VzcyhtZXNz
YWdlLCBkZXNjcmlwdGlvbiwgdmFsdWUsIHNpZ25pZmljYW50RmlndXJlcywgc2hvdWxkU2FtcGxl
KSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Npb246OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0
YVR5cGVzLCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZv
ciYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFJl
Z2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYgZG9tYWlu
cywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChh
dXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAg
IGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucy5kb21haW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJp
Y3RGb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
aW5kZXggZjNlMDJkZTlhMjUzOWZjMjNmNzE0ZjEwMGJlMTBmNzVlZjcxOWMwMy4uZmZmODdlODRl
MDY2ODkzMGU2MTFiYzM1YzI0Zjc4ZjMyMjU0ODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogICAgIGJv
b2wgaXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgbm90
aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpOwotICAgIHZvaWQgZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURh
dGFGb3ImJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOworICAgIHZvaWQg
ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0
V2Vic2l0ZURhdGFGb3ImJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2
b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIGxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcApp
bmRleCAwOTQyNzk2ODc3YWIzOTViMzk5OGY0YTg4MzljNWE4M2M5M2VjMDk3Li4yYTgyYTExNWEx
YjliYWQ1OGJhODY4ZTU1ZTU3N2NmOWY1NzNkMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBA
IC02NjcsMTIgKzY2NywxMiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpbwogICAgIHN0b3JlKCku
Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLXZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoKTsKIAotICAgIHN0b3JlKCkuY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIHN0b3JlKCkuY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxl
RG9tYWluKFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJFeHBpcmVkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlci5oCmluZGV4IDExNzgyZDIzNDBlNTI1NWY2NjVjMjFjNzA5NjM3NzUxZmYxYmY5
NDQuLjY1MjhjYjAzMDc0MjY0MWU2Y2NjYTdkYTA5ODg2Mzk3NDQ4MTRmZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZVVuYXR0cmli
dXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3QgQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyJikgZmluYWw7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CisgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxl
RG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBt
aWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkg
ZmluYWw7CiAgICAgdm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCkgZmluYWw7CiAgICAg
dm9pZCBmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlckludGVyZmFjZS5oCmluZGV4IDE0NzlhZjNkYThmMWVkNTJhZWRkYTg0MTdhNzk1OTQxOTg3
NDRmYmYuLjA0NjBlNDI3M2IwY2IzN2E5YTdmYWQ5MTUzYjQ2YzQ4MWZkY2MwZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVx
dWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21h
aW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERlYnVnTW9kZUlzRW5hYmxlZChib29sKSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAKaW5kZXggM2NmMmFmYzE0YTZjYzE4NmNk
NjQxZTUyZGEwYjYyZTM0Y2UyNzk2Ni4uYjEzNGFiM2ZhYzY1MzY5MmQwYjc1ODYwY2U1MGI5Njlm
OWJlNmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgdm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKICAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6
Q2xlYXI+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBNYW5hZ2VyUHJv
eHk6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdl
VHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbj4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGRvbWFpbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgKaW5kZXggZDRhMjc5YWI5
ZTEyMjI4ZGVlMDcwNWI4ZmQ4MmUyZjhlNTM5YTNjOC4uNDQyNWJlZmE4YmRkMmYxNzZhMzE4OTAz
YzcxMGNjOTk5YjQ2MjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OwogICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZp
cnN0UGFydHlVUkwsIGNvbnN0IEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciYpIGZpbmFsOwog
ICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2
b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgbWlncmF0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFs
OwogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmNwcAppbmRleCBiYjQ0Y2RmMThhYTgzODY5M2M0MmM4MzBkMWMwODJhZDVlYmFkNTQ4Li45
NmZjM2VhYjM3MmMxOGNkZTVkMTc4Y2VmODY2YjNmOTMxNzdhMDFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5j
cHAKQEAgLTk0LDkgKzk0LDkgQEAgdm9pZCBTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAKLXZv
aWQgU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiYgc291cmNlU2l0ZSwgY29uc3Qg
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiYgZGVzdGluYXRpb25TaXRlLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIm
IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6SXNSdW5uaW5nTGF5b3V0VGVzdCBpc1J1
bm5pbmdUZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+
JiYsIERlYnVnSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU3RvcmU6OmF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlJiYgc291cmNlU2l0ZSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiYgZGVzdGluYXRpb25TaXRlLCBjb25z
dCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6SXNSdW5uaW5nTGF5b3V0VGVzdCBpc1J1bm5pbmdUZXN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+JiYsIERlYnVnSW5mbyYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHNvdXJjZVNpdGUgPSBzb3VyY2VTaXRlLmlzb2xhdGVkQ29weSgpLCBkZXN0aW5h
dGlvblNpdGUgPSBkZXN0aW5hdGlvblNpdGUuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllciA9IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllci5pc29sYXRlZENvcHko
KSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSksIGlzUnVubmluZ1Rlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgc291cmNlU2l0ZSA9IFdURk1vdmUoc291cmNlU2l0ZSkuaXNvbGF0
ZWRDb3B5KCksIGRlc3RpbmF0aW9uU2l0ZSA9IFdURk1vdmUoZGVzdGluYXRpb25TaXRlKS5pc29s
YXRlZENvcHkoKSwgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RG
TW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgaXNSdW5uaW5nVGVzdCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghbV9kYXRhYmFzZSkgewogICAgICAgICAgICAgcmV0dXJuIHBvc3RUYXNrUmVwbHkoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgeyB9KTsK
QEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFN0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbQogCiAgICAgICAgIGF1
dG8gW3NlY29uZHMsIGRlYnVnSW5mb10gPSBtX2RhdGFiYXNlLT5hdHRyaWJ1dGVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIGFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllciwgV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgaXNSdW5uaW5n
VGVzdCk7CiAKLSAgICAgICAgcG9zdFRhc2tSZXBseShbc2Vjb25kcyA9IFdURk1vdmUoc2Vjb25k
cyksIGRlYnVnSW5mbyA9IGRlYnVnSW5mby5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcG9z
dFRhc2tSZXBseShbc2Vjb25kcyA9IFdURk1vdmUoc2Vjb25kcyksIGRlYnVnSW5mbyA9IFdURk1v
dmUoZGVidWdJbmZvKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc2Vjb25kcyksIFdURk1vdmUoZGVidWdJbmZvKSk7CiAgICAgICAgIH0p
OwogICAgIH0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU3RvcmU6OnByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyCiAg
ICAgICAgIFN0cmluZyByZXN1bHQ7CiAgICAgICAgIGlmIChtX2RhdGFiYXNlKQogICAgICAgICAg
ICAgcmVzdWx0ID0gbV9kYXRhYmFzZS0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0Zv
clRlc3RpbmcoKTsKLSAgICAgICAgcG9zdFRhc2tSZXBseShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgICAgICBwb3N0VGFza1JlcGx5KFtyZXN1bHQgPSBXVEZNb3ZlKHJl
c3VsdCkuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihy
ZXN1bHQpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE1Myw5ICsxNTMsOSBAQCB2b2lkIFN0
b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSAogICAgIH0pOwogfQogCi12b2lkIFN0b3JlOjpjbGVhclByaXZhdGVD
bGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJl
Z2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcG9zdFRh
c2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkb21haW4gPSBkb21haW4u
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgZG9tYWluID0gV1RGTW92ZShkb21haW4pLmlzb2xhdGVkQ29weSgpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKG1fZGF0YWJhc2UpCiAgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVh
clByaXZhdGVDbGlja01lYXN1cmVtZW50KGRvbWFpbik7CiAgICAgICAgIHBvc3RUYXNrUmVwbHko
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU3Rv
cmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKIAogdm9pZCBTdG9yZTo6
Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBh
dHRyaWJ1dGlvblRvQ2xlYXIsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCiB7Ci0gICAg
cG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBhdHRyaWJ1dGlv
blRvQ2xlYXIgPSBhdHRyaWJ1dGlvblRvQ2xlYXIuaXNvbGF0ZWRDb3B5KCksIGF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnRdKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBhdHRyaWJ1dGlvblRvQ2xlYXIgPSBXVEZNb3ZlKGF0dHJp
YnV0aW9uVG9DbGVhcikuaXNvbGF0ZWRDb3B5KCksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnRd
KCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2RhdGFiYXNlKQogICAgICAgICAgICAgbV9kYXRh
YmFzZS0+Y2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShhdHRyaWJ1dGlvblRvQ2xlYXIpLCBh
dHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgKaW5kZXggN2Fj
NWMxYmZmYjdiMjM3Y2FjZjhmZmYwNzExMjMzYjBkYzRiMWIyYi4uM2E0ZWNjNjZiYzdlN2M4Njdi
YjU2Y2I5OWQ1NWE2YjdjOWM5ZTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NEaWRSZXN1bWUoKTsKIAogICAgIHZvaWQg
aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiwgV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGF0dHJpYnV0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpT
b3VyY2VTaXRlJiYsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYmLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXImLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6SXNSdW5uaW5nTGF5b3V0
VGVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBE
ZWJ1Z0luZm8mJik+JiYpOworICAgIHZvaWQgYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUmJiwgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiYs
IGNvbnN0IEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciYsIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+JiYsIERlYnVnSW5mbyYmKT4mJik7CiAKICAgICB2
b2lkIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CkBAIC02Miw3
ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJik+JiYpOwogICAgIHZvaWQgY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoKTsKICAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjbGVhclByaXZh
dGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFy
U2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmli
dXRpb25Ub0NsZWFyLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludCk7CiAKICAgICB2b2lkIGNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXgg
ODZhNWVkZTRiMzY4OGRiMjYzNjM0MWYyZGRkY2FkZjJlMWI4NzM1ZC4uNWJjMTNlYzM2ZjVkMmE5
NmZjNjFlNzAyMmMxYzhhMWU1Yzc5MWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaApAQCAtNTcsNyArNTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8T3JpZ2luRGV0YWlscz4g
ZGVjb2RlKERlY29kZXImKTsKIAotICAgICAgICBPcmlnaW5EZXRhaWxzIGlzb2xhdGVkQ29weSgp
IGNvbnN0IHsgcmV0dXJuIHsgb3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgY3JlYXRp
b25UaW1lLCBtb2RpZmljYXRpb25UaW1lIH07IH0KKyAgICAgICAgT3JpZ2luRGV0YWlscyBpc29s
YXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgb3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENv
cHkoKSwgY3JlYXRpb25UaW1lLCBtb2RpZmljYXRpb25UaW1lIH07IH0KKyAgICAgICAgT3JpZ2lu
RGV0YWlscyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUob3JpZ2luSWRlbnRp
ZmllcikuaXNvbGF0ZWRDb3B5KCksIGNyZWF0aW9uVGltZSwgbW9kaWZpY2F0aW9uVGltZSB9OyB9
CiAgICAgfTsKICAgICBWZWN0b3I8T3JpZ2luRGV0YWlscz4gb3JpZ2luRGV0YWlsc0Nyb3NzVGhy
ZWFkQ29weSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjMWI5ODZjZjlmNjYxMjQxZjEw
M2E3ODA2YzgzNjZkZThiYzQzNjNmLi44ZjQxZWY5ODMwODdiMTViYTQ1ZmE0YjIzZTUzNDk1YTg4
YzYxMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTEwMCw4ICsxMDAsOCBAQCBIYXNoU2V0
PFNlY3VyaXR5T3JpZ2luRGF0YT4gU3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3Jp
Z2luc0Nyb3NzVGhyZWFkQwogCiAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdp
bnM7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKLSAgICAgICAgICAgIG9y
aWdpbnMuYWRkKGNyb3NzVGhyZWFkQ29weShvcmlnaW4pKTsKKyAgICAgICAgZm9yIChhdXRvJiYg
b3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAgICAgICAg
IG9yaWdpbnMuYWRkKGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9yaWdpbikpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gb3JpZ2luczsKQEAgLTEzMSwxOCArMTMxLDE4IEBAIEhhc2hTZXQ8U2VjdXJp
dHlPcmlnaW5EYXRhPiBTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luc0Nyb3Nz
VGhyZWFkQ29wCiAKICAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKICAg
ICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIpIHsKLSAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkpCi0gICAgICAg
IG9yaWdpbnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSk7CisgICAgZm9yIChhdXRvJiYgb3Jp
Z2luIDogbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKSkKKyAgICAgICAg
b3JpZ2lucy5hZGQoV1RGTW92ZShvcmlnaW4pLmlzb2xhdGVkQ29weSgpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGxvY2FsU3RvcmFnZU5hbWVTcGFjZSA6IG1fbG9j
YWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBv
cmlnaW4gOiBsb2NhbFN0b3JhZ2VOYW1lU3BhY2UtPmVwaGVtZXJhbE9yaWdpbnMoKSkKLSAgICAg
ICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICAg
ICAgZm9yIChhdXRvJiYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFtZVNwYWNlLT5lcGhlbWVyYWxP
cmlnaW5zKCkpCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoV1RGTW92ZShvcmlnaW4pLmlz
b2xhdGVkQ29weSgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoYXV0byYgdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2VzLnZhbHVlcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogdHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCi0gICAgICAgICAgICBvcmlnaW5zLmFkZChv
cmlnaW4uaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBmb3IgKGF1dG8mJiBvcmlnaW4gOiB0cmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdp
bnMuYWRkKFdURk1vdmUob3JpZ2luKS5pc29sYXRlZENvcHkoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG9yaWdpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggNWY2YzA0MTg2YjM0NjZhYjI3YThm
ZGFhNDE2ZTQ2YzhmOWZlYjhkOC4uMmQ4MzU5MDAxMjAzMDUyZjE2NjMzOTk4ZTQ0MGMzYjVmNmE2
ZDkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNDQwLDcgKzQ0MCw3IEBAIENhY2hlKiBFbmdp
bmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE5ldHdv
cmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5lOjp3cml0ZUZpbGUoU3RyaW5nJiYgZmls
ZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIXNob3VsZFBlcnNp
c3QoKSkgewogICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwpAQCAtNDQ4LDEzICs0NDgs
MTMgQEAgdm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3
b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3IKICAgICB9CiAKICAgICBtX3BlbmRpbmdXcml0
ZUNhbGxiYWNrcy5hZGQoKyttX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0gICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IG1fcGVuZGluZ0NhbGxiYWNrc0NvdW50ZXIsIGRhdGEg
PSBXVEZNb3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11
dGFibGUgeworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBtX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBkYXRh
ID0gV1RGTW92ZShkYXRhKSwgZmlsZW5hbWUgPSBXVEZNb3ZlKGZpbGVuYW1lKS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKIAogICAgICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVT
eXN0ZW06OnBhcmVudFBhdGgoZmlsZW5hbWUpOwogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCiAgICAgICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoZGlyZWN0b3J5UGF0aCk7CiAKLSAgICAgICAgYXV0byBjaGFubmVsID0gSU9D
aGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSwgV29ya1F1ZXVl
OjpRT1M6OkRlZmF1bHQpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4o
V1RGTW92ZShmaWxlbmFtZSksIElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlLCBXb3JrUXVldWU6OlFP
Uzo6RGVmYXVsdCk7CiAgICAgICAgIGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIFdvcmtRdWV1ZTo6
bWFpbigpLCBbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaWRlbnRpZmllcl0o
aW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQg
RW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpE
YXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5lOjpyZWFkRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE5ldHdv
cmtDYWNoZTo6RGF0YSYsIGludCBlcnJvcik+JiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6cmVh
ZEZpbGUoU3RyaW5nJiYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgTmV0
d29ya0NhY2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIXNo
b3VsZFBlcnNpc3QoKSkgewogICAgICAgICBjYWxsYmFjayhEYXRhIHsgfSwgMCk7CkBAIC00ODAs
OCArNDgwLDggQEAgdm9pZCBFbmdpbmU6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgTmV0d28KICAgICB9CiAKICAgICBtX3BlbmRp
bmdSZWFkQ2FsbGJhY2tzLmFkZCgrK21fcGVuZGluZ0NhbGxiYWNrc0NvdW50ZXIsIFdURk1vdmUo
Y2FsbGJhY2spKTsKLSAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gbV9wZW5kaW5nQ2FsbGJhY2tzQ291bnRlciwg
ZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
YXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6
OlJlYWQpOworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBtX3BlbmRpbmdDYWxsYmFja3NDb3VudGVyLCBmaWxl
bmFtZSA9IFdURk1vdmUoZmlsZW5hbWUpLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAg
ICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oV1RGTW92ZShmaWxlbmFtZSksIElP
Q2hhbm5lbDo6VHlwZTo6UmVhZCk7CiAgICAgICAgIGlmICghY2hhbm5lbC0+aXNPcGVuZWQoKSkg
ewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpLCBpZGVudGlmaWVyXSgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCkBAIC01MDYsMjQgKzUwNiwyNCBAQCB2b2lkIEVuZ2luZTo6cmVh
ZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBOZXR3bwogICAgIH0pOwogfQogCi12b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQordm9pZCBFbmdpbmU6OnJlbW92ZUZpbGUoU3RyaW5nJiYgZmlsZW5hbWUp
CiB7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
aW9RdWV1ZS0+ZGlzcGF0Y2goW2ZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7CisgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBXVEZNb3ZlKGZp
bGVuYW1lKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGZpbGVuYW1lKTsKICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OndyaXRlU2l6ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2luZTo6d3JpdGVTaXplRmlsZShTdHJpbmcm
JiBwYXRoLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlm
ICghc2hvdWxkUGVyc2lzdCgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsK
IAotICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBz
aXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBXVEZNb3ZlKHBhdGgpLmlz
b2xhdGVkQ29weSgpLCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU2l6
ZUZpbGVMb2NrIH07CiAgICAgICAgIGF1dG8gZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogCkBAIC01ODYsNyAr
NTg2LDcgQEAgdm9pZCBFbmdpbmU6OmdldERpcmVjdG9yaWVzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb20KICAgICAgICAgZm9yIChhdXRvJiBmaWxl
TmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCkpIHsKICAgICAgICAgICAgIGF1
dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwg
ZmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVUeXBlKGZpbGVQYXRo
KSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGZv
bGRlclBhdGhzLmFwcGVuZChmaWxlUGF0aC5pc29sYXRlZENvcHkoKSk7CisgICAgICAgICAgICAg
ICAgZm9sZGVyUGF0aHMuYXBwZW5kKFdURk1vdmUoZmlsZVBhdGgpLmlzb2xhdGVkQ29weSgpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZm9sZGVyUGF0
aHMgPSBXVEZNb3ZlKGZvbGRlclBhdGhzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIEVu
Z2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZvbGRlclBhdAogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJh
Y2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGZv
ciAoYXV0byYgZm9sZGVyUGF0aCA6IGZvbGRlclBhdGhzKSB7Ci0gICAgICAgIENhY2hlczo6cmV0
cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luLCBjYWxsYmFja0FnZ3JlZ2F0b3Is
IGZvbGRlclBhdGhdIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4mJiBmb2xk
ZXJPcmlnaW4pIG11dGFibGUgeworICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURp
cmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIG9yaWdpbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBmb2xkZXJQYXRoID0gZm9s
ZGVyUGF0aF0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9y
aWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIWZvbGRlck9yaWdpbikKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoZm9sZGVyT3JpZ2luLT50b3BPcmlnaW4g
IT0gb3JpZ2luICYmIGZvbGRlck9yaWdpbi0+Y2xpZW50T3JpZ2luICE9IG9yaWdpbikKQEAgLTcy
MSwxNiArNzIxLDE2IEBAIHZvaWQgRW5naW5lOjpjbGVhckNhY2hlc0Zvck9yaWdpbkZyb21EaXJl
Y3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZm9sZGVyUGF0CiAKICAgICAgICAgICAgIC8v
IElmIGNhY2hlIHNhbHQgaXMgaW5pdGlhbGl6ZWQgYW5kIHRoZSBwYXRocyBkbyBub3QgbWF0Y2gs
IHNvbWUgY2FjaGUgZmlsZXMgaGF2ZSBwcm9iYWJseSBiZSByZW1vdmVkIG9yIHBhcnRpYWxseSBj
b3JydXB0ZWQuCiAgICAgICAgICAgICBBU1NFUlQoIW1fc2FsdCB8fCBmb2xkZXJQYXRoID09IGNh
Y2hlc1Jvb3RQYXRoKCpmb2xkZXJPcmlnaW4pKTsKLSAgICAgICAgICAgIGRlbGV0ZU5vbkVtcHR5
RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGZvbGRlclBhdGgsIFtjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CisgICAgICAgICAgICBkZWxl
dGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChXVEZNb3ZlKGZvbGRlclBhdGgp
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0p
OwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQgRW5naW5lOjpkZWxldGVOb25FbXB0eURp
cmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRW5naW5lOjpkZWxldGVO
b25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChTdHJpbmcmJiBwYXRoLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRo
Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGggPSBXVEZN
b3ZlKHBhdGgpLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xv
YmFsU2l6ZUZpbGVMb2NrIH07CiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KHBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCBmZTNjMWY5MzBkYWUzOTk4Y2QxYzA0
YzM0ZGJkZGM1MzU1NWE0NzAyLi41OWU3NmJhZTQ3MTdmNDEzM2I5ZWI5OTg2MmVkM2JhYzk5MDFi
MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTg5LDEwICs4OSwxMCBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVybiAhIW1faW9RdWV1ZTt9CiAKLSAgICB2
b2lkIHdyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEm
JiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKLSAgICB2
b2lkIHJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJik7Ci0gICAgdm9pZCBy
ZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOwotICAgIHZvaWQgd3JpdGVTaXplRmls
ZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgd3JpdGVGaWxlKFN0cmluZyYmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6
OkRhdGEmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsK
KyAgICB2b2lkIHJlYWRGaWxlKFN0cmluZyYmIGZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYsIGludCBlcnJvcik+JiYpOworICAgIHZvaWQg
cmVtb3ZlRmlsZShTdHJpbmcmJiBmaWxlbmFtZSk7CisgICAgdm9pZCB3cml0ZVNpemVGaWxlKFN0
cmluZyYmLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZWFkU2l6ZUZpbGUoY29uc3QgU3RyaW5n
Jik7CiAKICAgICBjb25zdCBTdHJpbmcmIHJvb3RQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9yb290
UGF0aDsgfQpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckFsbENh
Y2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVh
ckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW5G
cm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tn
cm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQo
U3RyaW5nJiYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQg
Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogICAgIFN0cmlu
ZyByZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCBkYTlj
YjhhNWRjYzBlZDdmOWY0YzJlM2QyZjI3Njg5NGEwMWVkMTc0Li5iNzVjNzg3NGY4NWRhYmM5YzE2
NzJmZTQwMDY3OGQ1OTZkNzI1M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lv
bklELmg+CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVVVJRC5oPgpAQCAtMTI4LDM1ICsxMjksMjMgQEAgdm9pZCBDYWNoZTo6Y2xlYXJNZW1v
cnlSZXByZXNlbnRhdGlvbigpCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVbmluaXRpYWxpemVkOwog
fQogCi1zdGF0aWMgUmVjb3JkSW5mb3JtYXRpb24gaXNvbGF0ZWRDb3B5KGNvbnN0IFJlY29yZElu
Zm9ybWF0aW9uJiBpbmZvcm1hdGlvbikKK1JlY29yZEluZm9ybWF0aW9uIFJlY29yZEluZm9ybWF0
aW9uOjppc29sYXRlZENvcHkoKSAmJgogewotICAgIGF1dG8gcmVzdWx0ID0gUmVjb3JkSW5mb3Jt
YXRpb24geyBpbmZvcm1hdGlvbi5rZXksIGluZm9ybWF0aW9uLmluc2VydGlvblRpbWUsIGluZm9y
bWF0aW9uLmlkZW50aWZpZXIsIGluZm9ybWF0aW9uLnVwZGF0ZVJlc3BvbnNlQ291bnRlciwgaW5m
b3JtYXRpb24uc2l6ZSwgaW5mb3JtYXRpb24udXJsLmlzb2xhdGVkQ29weSgpLCBpbmZvcm1hdGlv
bi5oYXNWYXJ5U3RhciwgeyB9IH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFyeUhl
YWRlcnM7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBrZXlWYWx1ZSA6IGluZm9ybWF0aW9uLnZhcnlI
ZWFkZXJzKQotICAgICAgICB2YXJ5SGVhZGVycy5zZXQoa2V5VmFsdWUua2V5Lmlzb2xhdGVkQ29w
eSgpLCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7Ci0gICAgcmVzdWx0LnZhcnlIZWFk
ZXJzID0gV1RGTW92ZSh2YXJ5SGVhZGVycyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4geyBrZXksIGluc2VydGlvblRpbWUsIGlkZW50aWZpZXIsIHVwZGF0ZVJlc3BvbnNlQ291bnRl
ciwgc2l6ZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBoYXNWYXJ5U3RhciwgY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUodmFyeUhlYWRlcnMpKSB9OwogfQogCiBzdHJ1Y3QgVHJhdmVyc2Fs
UmVzdWx0IHsKICAgICB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXI7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4+IHJlY29yZHM7CiAgICAgVmVjdG9yPEtleT4g
ZmFpbGVkUmVjb3JkczsKKworICAgIFRyYXZlcnNhbFJlc3VsdCBpc29sYXRlZENvcHkoKSAmJjsK
IH07CiAKLXN0YXRpYyBUcmF2ZXJzYWxSZXN1bHQgaXNvbGF0ZWRDb3B5KFRyYXZlcnNhbFJlc3Vs
dCYmIHJlc3VsdCkKK1RyYXZlcnNhbFJlc3VsdCBUcmF2ZXJzYWxSZXN1bHQ6Omlzb2xhdGVkQ29w
eSgpICYmCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4+
IGlzb2xhdGVkUmVjb3JkczsKLSAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDogcmVzdWx0LnJlY29y
ZHMpIHsKLSAgICAgICAgYXV0byYgcmVjb3JkVmVjdG9yID0ga2V5VmFsdWUudmFsdWU7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgcmVjb3JkVmVjdG9yLnNpemUoKTsgY3B0
cisrKQotICAgICAgICAgICAgcmVjb3JkVmVjdG9yW2NwdHJdID0gaXNvbGF0ZWRDb3B5KHJlY29y
ZFZlY3RvcltjcHRyXSk7Ci0KLSAgICAgICAgaXNvbGF0ZWRSZWNvcmRzLnNldChrZXlWYWx1ZS5r
ZXkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUocmVjb3JkVmVjdG9yKSk7Ci0gICAgfQotCi0gICAg
Ly8gTm8gbmVlZCB0byBpc29sYXRlIGtleXMgc2luY2UgdGhleSBhcmUgaXNvbGF0ZWQgdGhyb3Vn
aCB0aGUgY29weSBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBUcmF2ZXJzYWxSZXN1bHQgeyByZXN1
bHQuY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKGlzb2xhdGVkUmVjb3JkcyksIFdURk1vdmUocmVz
dWx0LmZhaWxlZFJlY29yZHMpIH07CisgICAgLy8gTm8gbmVlZCB0byBpc29sYXRlIGtleXMgc2lu
Y2UgdGhleSBhcmUgaXNvbGF0ZWQgdGhyb3VnaCB0aGUgY29weSBjb25zdHJ1Y3Rvci4KKyAgICBy
ZXR1cm4geyBjYWNoZUlkZW50aWZpZXIsIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlY29yZHMp
KSwgV1RGTW92ZShmYWlsZWRSZWNvcmRzKSB9OwogfQogCiB2b2lkIENhY2hlOjpvcGVuKENvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtMTczLDcgKzE2Miw3IEBAIHZvaWQgQ2FjaGU6
Om9wZW4oQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgVHJhdmVyc2FsUmVzdWx0
IHRyYXZlcnNhbFJlc3VsdCB7IG1faWRlbnRpZmllciwgeyB9LCB7IH0gfTsKICAgICBtX2NhY2hl
cy5yZWFkUmVjb3Jkc0xpc3QoKnRoaXMsIFtjYWNoZXMgPSBSZWYgeyBtX2NhY2hlcyB9LCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0cmF2ZXJzYWxSZXN1bHQgPSBXVEZNb3ZlKHRyYXZl
cnNhbFJlc3VsdCldKGNvbnN0IGF1dG8qIHN0b3JhZ2VSZWNvcmQsIGNvbnN0IGF1dG8mKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCFzdG9yYWdlUmVjb3JkKSB7Ci0gICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NhY2hlcyA9IFdURk1vdmUoY2FjaGVzKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgdHJhdmVyc2FsUmVzdWx0ID0gaXNvbGF0ZWRDb3B5KFdURk1vdmUo
dHJhdmVyc2FsUmVzdWx0KSkgXSgpIG11dGFibGUgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjYWNoZXMgPSBXVEZNb3ZlKGNhY2hlcyksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHRyYXZlcnNhbFJlc3VsdCA9IFdURk1vdmUodHJhdmVyc2FsUmVzdWx0KS5p
c29sYXRlZENvcHkoKSBdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBr
ZXkgOiB0cmF2ZXJzYWxSZXN1bHQuZmFpbGVkUmVjb3JkcykKICAgICAgICAgICAgICAgICAgICAg
Y2FjaGVzLT5yZW1vdmVDYWNoZUVudHJ5KGtleSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaApp
bmRleCBiMjBkY2Y3YmM3MGNhNmMzZmIxZGI0OTE0NWZkZGU1NjI1OTc3MjdjLi40MDE5NzdhZDEy
OGIyYzg2YzA3Nzg5ZDA2M2M4Mjg3NjMyNTY1ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5o
CkBAIC01Miw2ICs1Miw4IEBAIHN0cnVjdCBSZWNvcmRJbmZvcm1hdGlvbiB7CiAgICAgVVJMIHVy
bDsKICAgICBib29sIGhhc1ZhcnlTdGFyIHsgZmFsc2UgfTsKICAgICBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiB2YXJ5SGVhZGVyczsKKworICAgIFJlY29yZEluZm9ybWF0aW9uIGlzb2xhdGVkQ29w
eSgpICYmOwogfTsKIAogY2xhc3MgQXN5bmNocm9ub3VzUHV0VGFza0NvdW50ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggZDc1YzU4NGQzZjBhMGVkZDBhZTI3NTNiMmVjMjA2
ZmY4NGIzMGYyZi4uNzdhZDAwYmJhZWE1MmRlYjczMTRmMDc4OTE0OWM0OGVlNDg3MWEwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIENhY2hl
czo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwg
V29ya1F1ZXVlJiBxdQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
YXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6
OlJlYWQpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oV1RGTW92ZShm
aWxlbmFtZSksIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7CiAgICAgICAgIGNoYW5uZWwtPnJlYWQo
MCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgV29ya1F1ZXVlOjptYWluKCks
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBE
YXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmIChlcnJvcikgewpAQCAtMjU4LDcgKzI1OCw4
IEBAIHZvaWQgQ2FjaGVzOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgaWYgKG1fZW5naW5lKQogICAgICAgICBtX2VuZ2luZS0+cmVtb3Zl
RmlsZShjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0aCkpOwogICAgIGlmIChtX3N0b3JhZ2Up
IHsKLSAgICAgICAgbV9zdG9yYWdlLT5jbGVhcihTdHJpbmcgeyB9LCAtV2FsbFRpbWU6OmluZmlu
aXR5KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgU3RyaW5n
IGFueVR5cGU7CisgICAgICAgIG1fc3RvcmFnZS0+Y2xlYXIoV1RGTW92ZShhbnlUeXBlKSwgLVdh
bGxUaW1lOjppbmZpbml0eSgpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOwogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKQEAgLTQ1MSw3ICs0NTIsNyBAQCB2b2lkIENhY2hlczo6cmVhZENhY2hl
c0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJv
cgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9lbmdpbmUtPnJlYWRGaWxlKGZpbGVu
YW1lLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgbV9lbmdpbmUtPnJlYWRGaWxlKFdURk1vdmUoZmlsZW5hbWUpLCBbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHRoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0
IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9lbmdpbmUp
IHsKICAgICAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4geyB9KTsKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcAppbmRleCBmMjEwYjA5ZmJkMWUyMGViZmMyMTZmMjE5YTI3NjM1ZDg3MTg0
MjVkLi4zY2NlNjNjNzRhMGUyZjU4NTlkZTA5Njg3M2E4MDc5OWExMDllMTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBA
IC02NjEsNyArNjYxLDcgQEAgdm9pZCBDYWNoZTo6Y2xlYXIoV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIExPRyhOZXR3b3Jr
Q2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGNsZWFyaW5nIGNhY2hlIik7CiAKICAgICBTdHJpbmcg
YW55VHlwZTsKLSAgICBtX3N0b3JhZ2UtPmNsZWFyKGFueVR5cGUsIG1vZGlmaWVkU2luY2UsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3N0b3JhZ2UtPmNsZWFyKFdURk1vdmUo
YW55VHlwZSksIG1vZGlmaWVkU2luY2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAog
ICAgIGRlbGV0ZUR1bXBGaWxlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaAppbmRleCBiYjU3MjVj
OTliZTIyYjY3YTZkNDdmNmM4OWVhOTMyMTk1ZmU2Yzg2Li4zNWM5NTBmODNkNDZhY2NkMjkzZDJl
NGNkMzdlODQ1NjFkNTcwMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKQEAgLTQ1LDcgKzQ1LDcg
QEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBJT0NoYW5uZWwgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8SU9DaGFubmVsPiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBU
eXBlIHsgUmVhZCwgV3JpdGUsIENyZWF0ZSB9OwotICAgIHN0YXRpYyBSZWY8SU9DaGFubmVsPiBv
cGVuKGNvbnN0IFN0cmluZyYgZmlsZSwgVHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFdvcmtRdWV1
ZTo6UU9TPiBxb3MgPSB7IH0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSU9DaGFubmVsKGZpbGUu
aXNvbGF0ZWRDb3B5KCksIHR5cGUsIHFvcykpOyB9CisgICAgc3RhdGljIFJlZjxJT0NoYW5uZWw+
IG9wZW4oU3RyaW5nJiYgZmlsZSwgVHlwZSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFdvcmtRdWV1ZTo6
UU9TPiBxb3MgPSB7IH0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSU9DaGFubmVsKFdURk1vdmUo
ZmlsZSkuaXNvbGF0ZWRDb3B5KCksIHR5cGUsIHFvcykpOyB9CiAKICAgICAvLyBVc2luZyBudWxs
cHRyIGFzIHF1ZXVlIHN1Ym1pdHMgdGhlIHJlc3VsdCB0byB0aGUgbWFpbiBxdWV1ZS4KICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGFkZCBXb3JrUXVldWU6Om1haW4oKSBpbnN0ZWFkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKaW5kZXggZmZiYmVkY2I1OGRkMDI4N2NiOGRjMGEyOGEzMGEyYmUxMzMyMTFj
Yy4uYjFlNmZmM2MwNzhiZTg3MWQ5NTEwZmEzNzZjNDcwMGUzM2MxOWZhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuY3BwCkBAIC03MjQsOSArNzI0LDkgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVGaWxlcyhj
b25zdCBLZXkmIGtleSkKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShr
ZXkpKTsKIH0KIAotdm9pZCBTdG9yYWdlOjp1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZShjb25z
dCBTdHJpbmcmIHBhdGgpCit2b2lkIFN0b3JhZ2U6OnVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1l
KFN0cmluZyYmIHBhdGgpCiB7Ci0gICAgc2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRj
aChbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBzZXJpYWxCYWNrZ3JvdW5kSU9R
dWV1ZSgpLmRpc3BhdGNoKFtwYXRoID0gV1RGTW92ZShwYXRoKS5pc29sYXRlZENvcHkoKV0gewog
ICAgICAgICB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZUlmTmVlZGVkKHBhdGgpOwogICAgIH0p
OwogfQpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hSZWFkT3BlcmF0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxSZWFkT3BlcmF0aW9uPiByZWFkT3BlcmF0aW9uCiAKICAgICAg
ICAgcmVhZE9wZXJhdGlvbi50aW1pbmdzLnJlY29yZElPU3RhcnRUaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7CiAKLSAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKHJlY29y
ZFBhdGgsIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9IElP
Q2hhbm5lbDo6b3BlbihXVEZNb3ZlKHJlY29yZFBhdGgpLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQp
OwogICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCksIGlvUXVldWUoKSwgW3RoaXMsICZyZWFkT3BlcmF0aW9uXShjb25zdCBEYXRhJiBmaWxl
RGF0YSwgaW50IGVycm9yKSB7CiAgICAgICAgICAgICByZWFkT3BlcmF0aW9uLnRpbWluZ3MucmVj
b3JkSU9FbmRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgICAgICAgICBpZiAoIWVy
cm9yKQpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJh
dGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAKICAgICAg
ICAgYXV0byByZWNvcmREYXRhID0gZW5jb2RlUmVjb3JkKHdyaXRlT3BlcmF0aW9uLnJlY29yZCwg
YmxvYik7CiAKLSAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKHJlY29yZFBh
dGgsIElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlKTsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9D
aGFubmVsOjpvcGVuKFdURk1vdmUocmVjb3JkUGF0aCksIElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRl
KTsKICAgICAgICAgc2l6ZV90IHJlY29yZFNpemUgPSByZWNvcmREYXRhLnNpemUoKTsKICAgICAg
ICAgY2hhbm5lbC0+d3JpdGUoMCwgcmVjb3JkRGF0YSwgV29ya1F1ZXVlOjptYWluKCksIFt0aGlz
LCAmd3JpdGVPcGVyYXRpb24sIHJlY29yZFNpemVdKGludCBlcnJvcikgewogICAgICAgICAgICAg
Ly8gT24gZXJyb3IgdGhlIGVudHJ5IHN0aWxsIHN0YXlzIGluIHRoZSBjb250ZW50cyBmaWx0ZXIg
dW50aWwgbmV4dCBzeW5jaHJvbml6YXRpb24uCkBAIC0xMDExLDcgKzEwMTEsNyBAQCB2b2lkIFN0
b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxh
Zz4gZmxhZ3MsIFRyYXZlcgogICAgICAgICAgICAgTG9ja2VyIGxvY2sgeyB0cmF2ZXJzZU9wZXJh
dGlvbi5hY3RpdmVMb2NrIH07CiAgICAgICAgICAgICArK3RyYXZlcnNlT3BlcmF0aW9uLmFjdGl2
ZUNvdW50OwogCi0gICAgICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4ocmVj
b3JkUGF0aCwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsKKyAgICAgICAgICAgIGF1dG8gY2hhbm5l
bCA9IElPQ2hhbm5lbDo6b3BlbihXVEZNb3ZlKHJlY29yZFBhdGgpLCBJT0NoYW5uZWw6OlR5cGU6
OlJlYWQpOwogICAgICAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMsICZ0cmF2ZXJzZU9wZXJh
dGlvbiwgd29ydGgsIGJvZHlTaGFyZUNvdW50XShEYXRhJiBmaWxlRGF0YSwgaW50KSB7CiAgICAg
ICAgICAgICAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURhdGE7CiAgICAgICAgICAgICAgICAgRGF0
YSBoZWFkZXJEYXRhOwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgdm9pZCBTdG9yYWdlOjpzZXRDYXBh
Y2l0eShzaXplX3QgY2FwYWNpdHkpCiAgICAgc2hyaW5rSWZOZWVkZWQoKTsKIH0KIAotdm9pZCBT
dG9yYWdlOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VU
aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFN0b3JhZ2U6OmNsZWFyKFN0cmluZyYmIHR5cGUsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwg
IihOZXR3b3JrUHJvY2VzcykgY2xlYXJpbmcgY2FjaGUiKTsKQEAgLTEwOTIsNyArMTA5Miw3IEBA
IHZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBXYWxsVGltZSBtb2RpZmll
ZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhCiAgICAgICAgIG1fYmxvYkZpbHRlci0+Y2xlYXIoKTsK
ICAgICBtX2FwcHJveGltYXRlUmVjb3Jkc1NpemUgPSAwOwogCi0gICAgaW9RdWV1ZSgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbW9kaWZpZWRTaW5jZVRp
bWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHR5cGUg
PSB0eXBlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICBpb1F1ZXVlKCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBtb2RpZmllZFNpbmNlVGlt
ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdHlwZSA9
IFdURk1vdmUodHlwZSkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBhdXRv
IHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkoKTsKICAgICAgICAg
dHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGlt
ZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9y
eVBhdGgpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuaAppbmRleCA1MWViZWJhMGU2YmM4NmI2MjkxMjQyZGFiMDMwNTc5ZjI5NDgzMTkzLi4y
NmI4NGMyZWYwZjRiNzY4NzUwMmQ4OWM4NTQ2NjFlODZlNjFhODAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXkm
KTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBWZWN0b3I8S2V5PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIFdhbGxUaW1l
IG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgY2xlYXIoU3RyaW5nJiYgdHlwZSwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBzdHJ1Y3QgUmVjb3JkSW5mbyB7CiAgICAg
ICAgIHNpemVfdCBib2R5U2l6ZTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIERh
dGEgZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYsIHN0ZDo6b3B0aW9uYWw8QmxvYlN0b3JhZ2U6
OkJsb2I+KTsKICAgICB2b2lkIHJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYsIGNvbnN0IERhdGEm
KTsKIAotICAgIHZvaWQgdXBkYXRlRmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBw
YXRoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKFN0cmluZyYmIHBhdGgp
OwogICAgIHZvaWQgcmVtb3ZlRnJvbVBlbmRpbmdXcml0ZU9wZXJhdGlvbnMoY29uc3QgS2V5Jik7
CiAKICAgICBDb25jdXJyZW50V29ya1F1ZXVlJiBpb1F1ZXVlKCkgeyByZXR1cm4gbV9pb1F1ZXVl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKaW5kZXgg
OGFmNGM2NDY0MzZiOTZlMTRlODdiM2NlMmI2MTFkYjA0Mjg3OTA1Zi4uZmQ5NzdlYmE2MWViNGNl
Y2I1YzYwMTBhODM2ZjhjNzgxMTMwNDRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50LmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSURCU3RvcmFnZUNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRh
CiAgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRp
ZEl0ZXJhdGVDdXJzb3I+KHJlc3VsdERhdGEpOwogfQogCi12b2lkIElEQlN0b3JhZ2VDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJD
b3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mIGRhdGFiYXNlcykKK3ZvaWQg
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmIGRhdGFi
YXNlcykKIHsKICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobV9jb25uZWN0aW9uLCBNZXNzYWdl
czo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMocmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyksIDApOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9y
YWdlQ29ubmVjdGlvblRvQ2xpZW50LmgKaW5kZXggNTBiYTAxYjAyMTIwZjIxZGI2MTM5MWYzYTg3
NDRkMjJiNWZmNzBlNC4uNjRkMjc3M2I5ZTE3N2ZmOTQ1OTdlMjVjNDYxNDAwZTI0ODQwM2E5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3Jh
Z2VDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZGlkT3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJikgZmluYWw7CiAgICAgdm9pZCBkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IFdl
YkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNl
TmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mKSBmaW5hbDsK
KyAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4mJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tl
ZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsKICAgICB2
b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKICAg
ICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDQyZjFhNjMwYmRmNTg3NTgyMTFlZTk4OWU0ZGNh
MDM4NjYzNjhlOWEuLjI5ZDlmOTg4ZmZmOGJhYWRkMjVmNDkxMTEwZjEzMzE2YjdkNmExNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0zMTcsMTEgKzMxNywxMSBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdlRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgYwogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG5ld1F1b3RhKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3Jl
YXNlUXVvdGEoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVx
dWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVv
dGEpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jv
c3NUaHJlYWRDb3B5KG9yaWdpbiksIGlkZW50aWZpZXIsIG5ld1F1b3RhXSgpIG11dGFibGUgewor
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUob3JpZ2luKSksIGlkZW50aWZpZXIs
IG5ld1F1b3RhXSgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0byBtYW5hZ2VyID0gbV9sb2Nh
bE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkKICAgICAgICAgICAgIG1hbmFnZXIt
PnF1b3RhTWFuYWdlcigpLmRpZEluY3JlYXNlUXVvdGEoaWRlbnRpZmllciwgbmV3UXVvdGEpOwog
ICAgIH0pOwpAQCAtNjE3LDEyICs2MTcsMTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXQKICAg
ICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiB0YXJnZXQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBl
cywgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgc291cmNlLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VS
VCghbV9jbG9zZWQpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgc291cmNlID0gY3Jvc3NUaHJlYWRDb3B5KHNvdXJj
ZSksIHRhcmdldCA9IGNyb3NzVGhyZWFkQ29weSh0YXJnZXQpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIHNvdXJj
ZSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNvdXJjZSkpLCB0YXJnZXQgPSBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZSh0YXJnZXQpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4geyBzb3VyY2UsIHNvdXJjZSB9OwogICAgICAgICBhdXRvIHRh
cmdldE9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IHRhcmdldCwgdGFyZ2V0IH07CiAg
ICAgICAgIApAQCAtNjg2LDExICs2ODYsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXQKICAg
ICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlZ2lzdGVyVGVtcG9yYXJ5
QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlUGF0aHMpCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVnaXN0ZXJU
ZW1wb3JhcnlCbG9iRmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgVmVjdG9y
PFN0cmluZz4mJiBmaWxlUGF0aHMpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpLCBmaWxlUGF0aHMgPSBj
cm9zc1RocmVhZENvcHkoZmlsZVBhdGhzKV0geworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlv
bi51bmlxdWVJRCgpLCBmaWxlUGF0aHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShmaWxlUGF0
aHMpKV0gewogICAgICAgICBhdXRvJiB0ZW1wb3JhcnlCbG9iUGF0aHMgPSBtX3RlbXBvcmFyeUJs
b2JQYXRoc0J5Q29ubmVjdGlvbi5lbnN1cmUoY29ubmVjdGlvbklELCBbXSB7CiAgICAgICAgICAg
ICByZXR1cm4gSGFzaFNldDxTdHJpbmc+IHsgfTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwpAQCAtNzIyLDExICs3MjIsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0
UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb20KICAgICB9KTsK
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRP
blVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZv
clRlc3RpbmcoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4p
XSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUob3JpZ2lu
KSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2lu
U3RvcmFnZU1hbmFnZXJzLmdldChvcmlnaW4pKQogICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFN
YW5hZ2VyKCkucmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMmY5MjY1ZDNmMGU3YzFkNjlhMTdjODRj
NjI5MGZhNDZlMGMwMmI4NC4uYmIwOGMxY2VhZmI0MzJjYmUzOWNhY2QxNGRmNjdhODQ2NjYyNmU3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtODAsMjAgKzgwLDIwIEBAIHB1YmxpYzoK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25J
RDsgfQogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3Rpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSk7CisgICAgdm9pZCBkaWRJbmNy
ZWFzZVF1b3RhKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBRdW90YUluY3JlYXNlUmVxdWVzdElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIGZl
dGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5PiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBk
ZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRp
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhRm9y
UmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBtb3Zl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdGFy
Z2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbW92ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNv
dXJjZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdGFyZ2V0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAgICAgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJu
aW5nKCk7CiAgICAgdm9pZCBzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCByZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIHJlZ2lzdGVyVGVtcG9y
YXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24mLCBWZWN0b3I8U3RyaW5nPiYmKTsKICAg
ICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlc2V0
UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBy
ZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJik7CisgICAgdm9pZCByZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRl
c3RpbmcoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtT
dG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUxvY2FsU3RvcmFnZVBhdGgs
IGNvbnN0IFN0cmluZyYgY3VzdG9tSURCU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9t
Q2FjaGVTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCB1aW50NjRfdCBk
ZWZhdWx0VGhpcmRQYXJ0eU9yaWdpblF1b3RhLCBib29sIHNob3VsZFVzZUN1c3RvbVBhdGhzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTdHJpbmcuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTdHJpbmcuaAppbmRleCA5OWQxYTNlM2QzNjllNWUwYjkx
MzI5ZjgyOTQ2MzJiYzk2MDQzNzg5Li5iMjdlNzY4NGRmMmM5ODJhMTg0ZTA3YTllZmQxZjNhNGRh
OWQ2MDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU3RyaW5nLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVN0cmluZy5oCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8U3RyaW5nPiBjcmVhdGUoV1RGOjpTdHJpbmcm
JiBzdHJpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmcoc3Ry
aW5nLmlzTnVsbCgpID8gV1RGOjpTdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkgOiBzdHJpbmcu
aXNvbGF0ZWRDb3B5KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nKHN0
cmluZy5pc051bGwoKSA/IFdURjo6U3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpIDogV1RGTW92
ZShzdHJpbmcpLmlzb2xhdGVkQ29weSgpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxTdHJp
bmc+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCmluZGV4IGY5YjJmZTA0MDlkYzQz
MGIxZDNkM2FlYjAwZTc2YjAwYjNmMDU2YjkuLjk0ZmQwNTM1NWExYmRmOWQ5MzFlZmQ4NDI1MmM4
ZDc1OTJkZTkyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBXZWJzaXRlRGF0YTo6ZmlsdGVyKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHVuZmls
dAogICAgIHJldHVybiBmaWx0ZXJlZDsKIH0KIAotV2Vic2l0ZURhdGEgV2Vic2l0ZURhdGE6Omlz
b2xhdGVkQ29weSgpIGNvbnN0CitXZWJzaXRlRGF0YSBXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5
KCkgY29uc3QgJgogewogICAgIHJldHVybiBXZWJzaXRlRGF0YSB7CiAgICAgICAgIGNyb3NzVGhy
ZWFkQ29weShlbnRyaWVzKSwKQEAgLTE1OSwxMyArMTU5LDI2IEBAIFdlYnNpdGVEYXRhIFdlYnNp
dGVEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIH07CiB9CiAKLWF1dG8gV2Vic2l0ZURh
dGE6OkVudHJ5Ojppc29sYXRlZENvcHkoKSBjb25zdCAtPiBFbnRyeQorV2Vic2l0ZURhdGEgV2Vi
c2l0ZURhdGE6Omlzb2xhdGVkQ29weSgpICYmCiB7Ci0gICAgcmV0dXJuIEVudHJ5IHsKLSAgICAg
ICAgY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksCi0gICAgICAgIHR5cGUsCi0gICAgICAgIHNpemUs
CisgICAgcmV0dXJuIFdlYnNpdGVEYXRhIHsKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUoZW50cmllcykpLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShob3N0TmFtZXNX
aXRoQ29va2llcykpLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShob3N0TmFtZXNX
aXRoSFNUU0NhY2hlKSksCisjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJ
T04pCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluc1dp
dGhSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSksCisjZW5kaWYKICAgICB9OwogfQogCithdXRvIFdl
YnNpdGVEYXRhOjpFbnRyeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJiAtPiBFbnRyeQoreworICAg
IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCB0eXBlLCBzaXplIH07Cit9CisKK2F1
dG8gV2Vic2l0ZURhdGE6OkVudHJ5Ojppc29sYXRlZENvcHkoKSAmJiAtPiBFbnRyeQoreworICAg
IHJldHVybiB7IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9yaWdpbikpLCB0eXBlLCBzaXplIH07
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5oCmluZGV4IGJiMjBiMjUxOTIzZjRmZWI5ZDc3YWFkNGZiMmNjNzFmOTQwYWM0OTEuLmZkOWRj
Mzk2NThiYTAxZjdkYjEyYTFmYzlkMzUwMDRmMmVjNzBlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaApAQCAtNDgsMTMgKzQ4LDE1IEBAIHN0
cnVjdCBXZWJzaXRlRGF0YSB7CiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZSB0eXBlOwogICAgICAg
ICB1aW50NjRfdCBzaXplOwogCi0gICAgICAgIEVudHJ5IGlzb2xhdGVkQ29weSgpIGNvbnN0Owor
ICAgICAgICBFbnRyeSBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgICAgICBFbnRyeSBpc29s
YXRlZENvcHkoKSAmJjsKIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25z
dDsKICAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZURhdGE6OkVudHJ5PiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CiAgICAgfTsKIAotICAgIFdlYnNpdGVEYXRhIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OworICAgIFdlYnNpdGVEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAg
V2Vic2l0ZURhdGEgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICBWZWN0b3I8RW50cnk+IGVudHJp
ZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhDb29raWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKaW5kZXggNjVjYTRjMGMxNGY2MWE4YzMyYTk0YzQ0NGJmNDEzNjczYTVhZTBhZC4uYzBhNjRm
ZWZiZDJmNDVjMTJhZDljYmUyYzc4ODNiMjUxOWQ4OGI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC00
MTYsNyArNDE2LDcgQEAgc3RhdGljIEV4cGVjdGVkPE1hcHBlZERhdGEsIHN0ZDo6ZXJyb3JfY29k
ZT4gY29tcGlsZWRUb0ZpbGUoV1RGOjpTdHJpbmcmJiBqc29uLAogICAgIHJldHVybiB7eyBXVEZN
b3ZlKG1ldGFEYXRhKSwgV1RGTW92ZShtYXBwZWREYXRhKSB9fTsKIH0KIAotc3RhdGljIFJlZjxB
UEk6OkNvbnRlbnRSdWxlTGlzdD4gY3JlYXRlRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLCBNYXBwZWREYXRhJiYgZGF0YSkKK3N0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVs
ZUxpc3Q+IGNyZWF0ZUV4dGVuc2lvbihXVEY6OlN0cmluZyYmIGlkZW50aWZpZXIsIE1hcHBlZERh
dGEmJiBkYXRhKQogewogICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gZGF0YS5kYXRhLnRyeUNyZWF0
ZVNoYXJlZE1lbW9yeSgpOwogCkBAIC00MzEsNyArNDMxLDcgQEAgc3RhdGljIFJlZjxBUEk6OkNv
bnRlbnRSdWxlTGlzdD4gY3JlYXRlRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLAogICAgIGNvbnN0IHNpemVfdCBmcmFtZVVSTEZpbHRlcnNPZmZzZXQgPSB0b3BVUkxGaWx0
ZXJzT2Zmc2V0ICsgZGF0YS5tZXRhRGF0YS50b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwogCiAg
ICAgYXV0byBjb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEgPSBXZWJLaXQ6OldlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0RGF0YSgKLSAgICAgICAgV1RGOjpTdHJpbmcoaWRlbnRpZmllciksCisg
ICAgICAgIFdURk1vdmUoaWRlbnRpZmllciksCiAgICAgICAgIHNoYXJlZE1lbW9yeS5yZWxlYXNl
Tm9uTnVsbCgpLAogICAgICAgICBhY3Rpb25zT2Zmc2V0LAogICAgICAgICBkYXRhLm1ldGFEYXRh
LmFjdGlvbnNTaXplLApAQCAtNDcxLDEwICs0NzEsMTAgQEAgc3RhdGljIFdURjo6U3RyaW5nIGdl
dENvbnRlbnRSdWxlTGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKGNvbnN0IE1hcHBlZERhdGEmIG1h
cHAKICAgICByZXR1cm4gV1RGOjpTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+
KG1hcHBlZERhdGEuZGF0YS5kYXRhKCkgKyBzdGFydCksIGxlbmd0aCAvIHNpemVvZihVQ2hhcikp
OwogfQogCi12b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3Qo
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3Qo
V1RGOjpTdHJpbmcmJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxB
UEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9yZWFkUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IGlkZW50
aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29w
eSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgp
LCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgZmFsc2UpOwog
ICAgICAgICBhdXRvIGxlZ2FjeVBhdGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVu
dGlmaWVyLCB0cnVlKTsKICAgICAgICAgaWYgKGZpbGVFeGlzdHMobGVnYWN5UGF0aCkpIHsKQEAg
LTUwMiw4ICs1MDIsOCBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50
UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgICAgIAogICAgICAg
ICBpZiAoY29udGVudFJ1bGVMaXN0LT5tZXRhRGF0YS52ZXJzaW9uICE9IENvbnRlbnRSdWxlTGlz
dFN0b3JlOjpDdXJyZW50Q29udGVudFJ1bGVMaXN0RmlsZVZlcnNpb24pIHsKICAgICAgICAgICAg
IGlmIChhdXRvIHNvdXJjZUZyb21PbGRWZXJzaW9uID0gZ2V0Q29udGVudFJ1bGVMaXN0U291cmNl
RnJvbU1hcHBlZEZpbGUoKmNvbnRlbnRSdWxlTGlzdCk7ICFzb3VyY2VGcm9tT2xkVmVyc2lvbi5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBzb3VyY2VGcm9tT2xkVmVyc2lv
biA9IHNvdXJjZUZyb21PbGRWZXJzaW9uLmlzb2xhdGVkQ29weSgpLCBpZGVudGlmaWVyID0gaWRl
bnRpZmllci5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmNvbXBpbGVDb250ZW50UnVsZUxpc3QoaWRlbnRpZmllciwgV1RGTW92ZShzb3VyY2VG
cm9tT2xkVmVyc2lvbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBzb3VyY2VGcm9tT2xkVmVyc2lvbiA9IFdURk1vdmUoc291cmNlRnJvbU9s
ZFZlcnNpb24pLmlzb2xhdGVkQ29weSgpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVy
KS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmNvbXBpbGVDb250ZW50UnVsZUxpc3QoV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShzb3Vy
Y2VGcm9tT2xkVmVyc2lvbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01
MTMsOCArNTEzLDggQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6bG9va3VwQ29udGVudFJ1
bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gaWRl
bnRpZmllci5pc29sYXRlZENvcHkoKSwgY29udGVudFJ1bGVMaXN0ID0gV1RGTW92ZSgqY29udGVu
dFJ1bGVMaXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVFeHRl
bnNpb24oaWRlbnRpZmllciwgV1RGTW92ZShjb250ZW50UnVsZUxpc3QpKSwgeyB9KTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5
KCksIGNvbnRlbnRSdWxlTGlzdCA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlRXh0ZW5zaW9uKFdURk1vdmUoaWRlbnRp
ZmllciksIFdURk1vdmUoY29udGVudFJ1bGVMaXN0KSksIHsgfSk7CiAgICAgICAgIH0pOwogICAg
IH0pOwogfQpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6Omdl
dEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5kCiAgICAg
fSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50UnVsZUxp
c3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVy
cm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6
OmNvbXBpbGVDb250ZW50UnVsZUxpc3QoV1RGOjpTdHJpbmcmJiBpZGVudGlmaWVyLCBXVEY6OlN0
cmluZyYmIGpzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1
bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CkBAIC01NTIs
NyArNTUyLDcgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxl
TGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKICAgICBpZiAoIXBhcnNlZFJ1bGVz
Lmhhc192YWx1ZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwg
cGFyc2VkUnVsZXMuZXJyb3IoKSk7CiAgICAgCi0gICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIu
aXNvbGF0ZWRDb3B5KCksIGpzb24gPSBqc29uLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlcyA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHBhcnNlZFJ1bGVzKS52YWx1ZSgpKSwgc3RvcmVQYXRo
ID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIG1fY29tcGlsZVF1ZXVlLT5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVu
dGlmaWVyLmlzb2xhdGVkQ29weSgpLCBqc29uID0gV1RGTW92ZShqc29uKS5pc29sYXRlZENvcHko
KSwgcGFyc2VkUnVsZXMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXJzZWRSdWxlcykudmFs
dWUoKSksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgZmFs
c2UpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gY29tcGlsZWRUb0ZpbGUoV1RGTW92ZShqc29u
KSwgV1RGTW92ZShwYXJzZWRSdWxlcyksIHBhdGgpOwpAQCAtNTY0LDE2ICs1NjQsMTYgQEAgdm9p
ZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6
OlN0cmluZyYgaWRlbnRpZmllciwKICAgICAgICAgfQogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50
aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpLCBkYXRhID0gV1RGTW92ZShyZXN1bHQudmFsdWUo
KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgewotICAgICAgICAgICAgYXV0byBjb250ZW50UnVsZUxpc3QgPSBjcmVhdGVFeHRlbnNp
b24oaWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRS
dWxlTGlzdCA9IGNyZWF0ZUV4dGVuc2lvbihXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGRh
dGEpKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRlbnRSdWxlTGlzdC5wdHIo
KSwgeyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0
U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChX
VEY6OlN0cmluZyYmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjplcnJv
cl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBtX3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBh
dGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3JlbW92ZVF1ZXVlLT5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5p
c29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjb21wbGV0ZSA9IFtwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oc3RkOjplcnJvcl9jb2RlIGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGVycm9yID0gV1RGTW92ZShlcnJvcildICgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKQEAgLTYwNywxMiArNjA3LDEyIEBAIHZvaWQg
Q29udGVudFJ1bGVMaXN0U3RvcmU6OmludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uKGNv
bnN0IFdURjo6U3RyaW5nJiBpCiAgICAgY2xvc2VGaWxlKGZpbGUpOwogfQogCi12b2lkIENvbnRl
bnRSdWxlTGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3QgV1RGOjpTdHJp
bmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpTdHJpbmcpPiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRSdWxl
TGlzdFNvdXJjZShXVEY6OlN0cmluZyYmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV1RGOjpTdHJpbmcpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBz
dG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBj
b21wbGV0ZSA9IFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oV1RGOjpTdHJpbmcgc291
cmNlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNvdXJjZSA9IHNvdXJjZS5pc29sYXRlZENvcHko
KV0gKCkgbXV0YWJsZSB7CisgICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcikuaXNvbGF0
ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShXVEY6
OlN0cmluZyYmIHNvdXJjZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzb3VyY2UgPSBXVEZNb3Zl
KHNvdXJjZSkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHNvdXJjZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmgKaW5kZXggZjg0NjYwNmJjZTM1YzZmNzJlZTJlZjQxODhlMGIwMzg3ZWUxNTY5OC4uY2U1
ZGM0MDJjYTg2Nzg5NzhkNTczMDRiZDA3ZGI0ZWRmMTJmZTlmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTYz
LDE1ICs2MywxNSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29udGVudFJ1bGVMaXN0U3RvcmUo
Y29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCk7CiAgICAgdmlydHVhbCB+Q29udGVudFJ1bGVM
aXN0U3RvcmUoKTsKIAotICAgIHZvaWQgY29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6
OlN0cmluZyYgaWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsK
LSAgICB2b2lkIGxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+
LCBzdGQ6OmVycm9yX2NvZGUpPik7Ci0gICAgdm9pZCByZW1vdmVDb250ZW50UnVsZUxpc3QoY29u
c3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpl
cnJvcl9jb2RlKT4pOworICAgIHZvaWQgY29tcGlsZUNvbnRlbnRSdWxlTGlzdChXVEY6OlN0cmlu
ZyYmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPik7CisgICAg
dm9pZCBsb29rdXBDb250ZW50UnVsZUxpc3QoV1RGOjpTdHJpbmcmJiBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJy
b3JfY29kZSk+KTsKKyAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChXVEY6OlN0cmluZyYm
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjplcnJvcl9jb2RlKT4pOwog
ICAgIHZvaWQgZ2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0SWRlbnRpZmllcnMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4pPik7CiAKICAgICAvLyBGb3Ig
dGVzdGluZyBvbmx5LgogICAgIHZvaWQgc3luY2hyb25vdXNSZW1vdmVBbGxDb250ZW50UnVsZUxp
c3RzKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBX
VEY6OlN0cmluZyYgaWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRDb250ZW50UnVsZUxpc3RTb3Vy
Y2UoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V1RGOjpTdHJpbmcpPik7CisgICAgdm9pZCBnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoV1RGOjpT
dHJpbmcmJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6U3RyaW5nKT4p
OwogCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIGRlZmF1bHRTdG9yZVBhdGgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50
RmlsdGVyU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VXNlckNvbnRlbnRGaWx0ZXJTdG9yZS5jcHAKaW5kZXggNzJiZTkxMjFhYWE3NjI0YzQ5Y2MyYmI2
MTlkZmM2YmJhZWY4NDljMC4uZWY1ZmEzMzdlZThlOTA4ZGI0YjBlYWMxY2ZjZmMxYjJhNjBlZDE0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNl
ckNvbnRlbnRGaWx0ZXJTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZS5jcHAKQEAgLTE4Nyw3ICsxODcsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRVc2VyQ29udGVudEZpbHRlclN0b3JlU2F2ZUJ5dGVzKEdSZWZQ
dHI8R1Rhc2s+JiYgdGFzaywgU3RyaW5nJgogICAgIH0KIAogICAgIGF1dG8qIHN0b3JlID0gV0VC
S0lUX1VTRVJfQ09OVEVOVF9GSUxURVJfU1RPUkUoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRh
c2suZ2V0KCkpKTsKLSAgICBzdG9yZS0+cHJpdi0+c3RvcmUtPmNvbXBpbGVDb250ZW50UnVsZUxp
c3QoaWRlbnRpZmllciwgU3RyaW5nOjpmcm9tVVRGOChzb3VyY2VEYXRhLCBzb3VyY2VTaXplKSwg
W3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNvbnRl
bnRSdWxlTGlzdCwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7CisgICAgc3RvcmUtPnByaXYtPnN0
b3JlLT5jb21waWxlQ29udGVudFJ1bGVMaXN0KFdURk1vdmUoaWRlbnRpZmllciksIFN0cmluZzo6
ZnJvbVVURjgoc291cmNlRGF0YSwgc291cmNlU2l6ZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0o
UmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0PiBjb250ZW50UnVsZUxpc3QsIHN0ZDo6ZXJyb3Jf
Y29kZSBlcnJvcikgewogICAgICAgICBpZiAoZ190YXNrX3JldHVybl9lcnJvcl9pZl9jYW5jZWxs
ZWQodGFzay5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAppbmRleCBmNjI0MzZk
NzM4NWQ2ZWFkYTE4NTQ5MjRlODRhYTE4NTViZmI1YWFkLi40YjIxZTk4OWYyNzlhZTY3MzRkOWQz
MjYwMWRlMzY2ZGIwMGFmN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC0yNTgsMTAgKzI1OCwxMCBAQCB2b2lkIERl
dmljZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREZXZpY2VJZEhhc2hTYWx0T3JpZ2lucyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpkZWxldGVI
YXNoU2FsdEZyb21EaXNrKGNvbnN0IEhhc2hTYWx0Rm9yT3JpZ2luJiBoYXNoU2FsdEZvck9yaWdp
bikKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGRldmljZUlkSGFzaFNhbHQgPSBoYXNoU2FsdEZvck9yaWdpbi5kZXZpY2VJZEhh
c2hTYWx0Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGV2aWNlSWRIYXNoU2FsdCA9
IGhhc2hTYWx0Rm9yT3JpZ2luLmRldmljZUlkSGFzaFNhbHQudXRmOCgpXSgpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICBTdHJpbmcgZmls
ZUZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2VEaXJlY3RvcnksIGRldmljZUlkSGFzaFNhbHQudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIFN0cmluZyBmaWxlRnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVjdG9yeSwgZGV2aWNl
SWRIYXNoU2FsdC5kYXRhKCkpOwogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVG
dWxsUGF0aCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaAppbmRleCA3MmNmYTdiNDA3OTE1MjQ4N2MxZTQ4YWI2Nzk5
NzU4ZjllMDY5ODhlLi5jY2FkMmE4ODhiOTkxZGEwMzBlNjBlZGIzNWMyNDEwMzNhZTVkZDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmgKQEAgLTUxLDE5ICs1MSwxNSBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBIYXNoU2FsdEZvck9y
aWdpbiB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgICAg
ICBIYXNoU2FsdEZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBkb2N1bWVu
dE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgcGFyZW50T3JpZ2luLCBTdHJp
bmcmJiBkZXZpY2VJZEhhc2hTYWx0KQorICAgICAgICBIYXNoU2FsdEZvck9yaWdpbihXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBkb2N1bWVudE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgcGFyZW50T3JpZ2luLCBTdHJpbmcmJiBkZXZpY2VJZEhhc2hTYWx0LCBXYWxs
VGltZSBsYXN0VGltZVVzZWQgPSBXYWxsVGltZTo6bm93KCkpCiAgICAgICAgICAgICA6IGRvY3Vt
ZW50T3JpZ2luKFdURk1vdmUoZG9jdW1lbnRPcmlnaW4pKQogICAgICAgICAgICAgLCBwYXJlbnRP
cmlnaW4oV1RGTW92ZShwYXJlbnRPcmlnaW4pKQogICAgICAgICAgICAgLCBkZXZpY2VJZEhhc2hT
YWx0KFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpCi0gICAgICAgICAgICAsIGxhc3RUaW1lVXNl
ZChXYWxsVGltZTo6bm93KCkpCi0gICAgICAgIHsgfTsKKyAgICAgICAgICAgICwgbGFzdFRpbWVV
c2VkKGxhc3RUaW1lVXNlZCkKKyAgICAgICAgeyB9CiAKLSAgICAgICAgSGFzaFNhbHRGb3JPcmln
aW4gaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBpc29s
YXRlZENvcHkgPSBIYXNoU2FsdEZvck9yaWdpbihkb2N1bWVudE9yaWdpbi5pc29sYXRlZENvcHko
KSwgcGFyZW50T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBkZXZpY2VJZEhhc2hTYWx0Lmlzb2xhdGVk
Q29weSgpKTsKLSAgICAgICAgICAgIGlzb2xhdGVkQ29weS5sYXN0VGltZVVzZWQgPSBsYXN0VGlt
ZVVzZWQ7Ci0gICAgICAgICAgICByZXR1cm4gaXNvbGF0ZWRDb3B5OwotICAgICAgICB9OworICAg
ICAgICBIYXNoU2FsdEZvck9yaWdpbiBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsg
ZG9jdW1lbnRPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIHBhcmVudE9yaWdpbi5pc29sYXRlZENvcHko
KSwgZGV2aWNlSWRIYXNoU2FsdC5pc29sYXRlZENvcHkoKSwgbGFzdFRpbWVVc2VkIH07IH0KKyAg
ICAgICAgSGFzaFNhbHRGb3JPcmlnaW4gaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBXVEZN
b3ZlKGRvY3VtZW50T3JpZ2luKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShwYXJlbnRPcmlnaW4p
Lmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpLmlzb2xhdGVkQ29weSgp
LCBsYXN0VGltZVVzZWQgfTsgfQogCiAgICAgICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBkb2N1bWVudE9yaWdpbjsKICAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHBh
cmVudE9yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAppbmRleCA4NWQyMmQyZGM1MmEzM2IyYmQxMGRj
NDJmZDExNzY4OGM2YjBiMzMxLi4xZGJjMzFhYTdiODIzMzU4MmE1ZTJiMzNjYmExN2ZhZTZjMzY0
NjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVJlY29yZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgU3RyaW5nIFdlYnNp
dGVEYXRhUmVjb3JkOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKCkKICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIH0KIAotV2Vic2l0ZURhdGFSZWNvcmQgV2Vic2l0ZURhdGFSZWNvcmQ6
Omlzb2xhdGVkQ29weSgpIGNvbnN0CitXZWJzaXRlRGF0YVJlY29yZCBXZWJzaXRlRGF0YVJlY29y
ZDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiBXZWJzaXRlRGF0YVJlY29y
ZCB7CiAgICAgICAgIGNyb3NzVGhyZWFkQ29weShkaXNwbGF5TmFtZSksCkBAIC0xNzMsNCArMTcz
LDIwIEBAIFdlYnNpdGVEYXRhUmVjb3JkIFdlYnNpdGVEYXRhUmVjb3JkOjppc29sYXRlZENvcHko
KSBjb25zdAogICAgIH07CiB9CiAKK1dlYnNpdGVEYXRhUmVjb3JkIFdlYnNpdGVEYXRhUmVjb3Jk
Ojppc29sYXRlZENvcHkoKSAmJgoreworICAgIHJldHVybiBXZWJzaXRlRGF0YVJlY29yZCB7Cisg
ICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRpc3BsYXlOYW1lKSksCisgICAgICAgIHR5
cGVzLAorICAgICAgICBzaXplLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShvcmln
aW5zKSksCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNvb2tpZUhvc3ROYW1lcykp
LAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShIU1RTQ2FjaGVIb3N0TmFtZXMpKSwK
KyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoYWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3RO
YW1lcykpLAorI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQorICAg
ICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVnaXN0
cmFibGVEb21haW5zKSksCisjZW5kaWYKKyAgICB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAppbmRl
eCAxMWNhOGU4MDAyNmJhODUyOTdkZTMxZTNmZDAxMjFjYjFmY2Q1ZTQ2Li5kNjg1NmY0NGRjN2Rl
YmRkZjU5YTRmMDhkYWEyNzYxNzg0ZGM2ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKQEAgLTU4LDcgKzU4
LDggQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICAgICBib29sIG1hdGNoZXMoY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbigpOwogCi0gICAgV2Vic2l0ZURhdGFSZWNvcmQgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CisgICAgV2Vic2l0ZURhdGFSZWNvcmQgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
JjsKKyAgICBXZWJzaXRlRGF0YVJlY29yZCBpc29sYXRlZENvcHkoKSAmJjsKIAogICAgIFN0cmlu
ZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwCmluZGV4IDQ2NDcyZDcxNDhmMjNmNTdlNzNlYTc3NzE5YTExZjY0NGJk
MTdjNWIuLjY2MDM3NTc1NmRkN2JmNDVjZmFhMzAwNmM2N2RmZGVjMzBlNmMxODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRAog
ICAgIH0pOwogfQogCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdT
Y3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRh
dGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YXRpb25LZXksIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCit2b2lkIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiYgcmVnaXN0cmF0aW9uS2V5LCBXb3JrZXJGZXRjaFJlc3VsdCYmIHJl
c3VsdCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9u
S2V5LCByZXN1bHQgfSk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3Nh
Z2UpLCBzb3VyY2VJZGVudGlmaWVyIH0pOwogfQogCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xs
aW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2Vu
dCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5kYXRhKCksIGRhdGEsIGNvbnRyb2xsaW5n
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHVzZXJBZ2VudCB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgKaW5kZXggYjZiMmI0ZjE4YTVjNGI0YWVkZDA4ZjQxMWZhODMxODAxODU5YjUw
Ny4uYjI5MjU1OTA0MmM3NzQ2NTUyMDBiMWI1ZWY1MTAzYzg4M2NiYWI2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmgKQEAgLTcxLDkgKzcxLDkgQEAgcHJpdmF0ZToKICAgICBXZWJTV0NsaWVudENvbm5lY3Rp
b24oKTsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJ
blNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgV2ViQ29y
ZTo6V29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmLCBXZWJDb3JlOjpXb3Jr
ZXJGZXRjaFJlc3VsdCYmKSBmaW5hbDsKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBmaW5hbDsKLSAgICB2b2lkIHJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmln
aW4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5n
JiYgdXNlckFnZW50KSBmaW5hbDsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIHNjaGVkdWxlVW5yZWdpc3RlckpvYkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPGJv
b2w+JiYpPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cAppbmRleCBhZDE5M2JiMGU0ZDBmNmE0ODIzNzg4NGRlZjFkNDIyMzYxNzFlN2Q5Li4xODQyOWFm
NmQ0ZTYyZjA3OGI3N2I4NjNlOThhMWEwMmM3N2Y3ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3Jt
RGF0YT4mCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsT25NYWluUnVuTG9vcChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJsb2JVUkwgPSBibG9iVVJMLmlz
b2xhdGVkQ29weSgpXSAoKSB7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBibG9iVVJMID0gV1RGTW92ZShibG9iVVJMKS5pc29sYXRl
ZENvcHkoKV0gKCkgewogICAgICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkobV9z
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2VydmljZVdvcmtlclRocmVh
ZFByb3h5KSB7CiAgICAgICAgICAgICBkaWRGYWlsKGludGVybmFsRXJyb3IoYmxvYlVSTCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAppbmRleCA3NzQzZDUwODg1MjRiY2U1ZDdkM2YzNDkyZmM3NzE3YTg3YWExMDllLi43NjU0YmJk
NzEzZWM5N2Q3MGQ5ZGQ1YzNjZDlmMjc4OWJlOTQ5NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtNDg0LDkgKzQ4NCw5
IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lv
bnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyCiAgICAgfSk7CiB9CiAKLXZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiBkYXRhYmFzZXMpCit2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rv
cjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmIGRhdGFiYXNlcykKIHsKLSAg
ICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMgPSBjcm9zc1RocmVhZENvcHkoZGF0YWJhc2Vz
KV0oKSBtdXRhYmxlIHsKKyAgICBkaXNwYXRjaFRhc2tSZXBseShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShkYXRhYmFzZXMpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXItPmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhyZXF1ZXN0
SWRlbnRpZmllciwgV1RGTW92ZShkYXRhYmFzZXMpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaAppbmRleCBkMjA3NDFj
ODAyYWZlOWZhNjZiYTAxZjM2OWNjNDUyZWIxZTRiNjA2Li44Y2IwYTIwODZiZTNmMzUzNTc5Y2E0
MTA3MmU1YWY5Njc4MDRjYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvSW5Qcm9jZXNzSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5h
bDsKICAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgZmluYWw7
CiAgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9u
LCB1aW50NjRfdCBuZXdWZXJzaW9uKSBmaW5hbDsKLSAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNl
TmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mKSBmaW5hbDsK
KyAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4mJikgZmluYWw7CiAKICAgICB2b2lkIGNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
TW9kaWZpZWRTaW5jZShXYWxsVGltZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDE4OTdiZDYyZDQ3YmQ0MzU0M2MzMjZlNTVhZmI4
NjhmZWFmYzVlNzUuLmIyMDJiNDQ4MDc4YzNmZWE1YmM5NTUwODBhYTdlZWRlNmVjYTc4YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAt
NDkwLDcgKzQ5MCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKICAgICAgICAgbV9vcmlnaW5TZXQucmVtb3ZlKG9y
aWdpbklkKTsKICAgICB9CiAKLSAgICBtX3RocmVhZC0+ZGlzcGF0Y2goW3RoaXMsIG9yaWdpbklk
ID0gb3JpZ2luSWQuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICBtX3RocmVhZC0+ZGlzcGF0Y2goW3Ro
aXMsIG9yaWdpbklkID0gV1RGTW92ZShvcmlnaW5JZCkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAg
ICAgc3luY0RlbGV0ZU9yaWdpbihvcmlnaW5JZCk7CiAgICAgfSk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="481615"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454056</attachid>
            <date>2022-03-07 17:25:29 -0800</date>
            <delta_ts>2022-03-07 19:15:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237568-20220307172528.patch</filename>
            <type>text/plain</type>
            <size>267791</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdkNjg1YjA3YzMxYTdi
NWVhZWY2N2JhZmY0YzEwYzNhOTJlNmMxOS4uY2NhMjE1ZjkzOWY1ZWYwNmMxYjEzY2I3ZDQzY2Fi
MzFhZDIyYzNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIyLTAzLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgZnVydGhlciB0
aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpbWl6ZSBmdXJ0aGVyIHRoZSBwYXNzaW5nIG9m
IGRhdGEgYWNyb3NzIHRocmVhZHMgYnkgbGV2ZXJhZ2luZyBtb3JlIGJyb2FkbHkgdGhlIG9wdGlt
aXplZAorICAgICAgICB2ZXJzaW9ucyBvZiBpc29sYXRlZENvcHkoKSBvbiByLXZhbHVlIHJlZmVy
ZW5jZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldFBhcmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01GaWxlU3lzdGVtOjpnZXRFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlSGFuZGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0
RGlyZWN0b3J5SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGVOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Om1vdmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnRE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleEtleTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkluZGV4S2V5Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFuYWdlcjo6
ZmlsZVN5c3RlbUFjY2Vzc0dldERpcmVjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9zdG9yYWdl
L1dvcmtlclN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclN0
b3JhZ2VDb25uZWN0aW9uOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3Nvcik6CisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRj
aEFsZ29yaXRobU9wZXJhdGlvbik6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAg
ICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgICog
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENv
bm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudHM6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50czo6
bWF0Y2hBbGwpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZp
bmlzaGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9X
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2No
ZWR1bGVVbnJlZ2lzdGVySm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vi
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9u
RGF0YWJhc2U6OmRvUHVzaENoYW5nZXMpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxlKToKKwogMjAyMi0wMy0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIHRoZSBw
YXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjQyZWQxODkyZmYwZjBl
NjYwN2E2OWExM2M1N2UxNjFhYjQyZGI3MS4uOWUzZDdjOTNhZmY2M2I0MjhjMjQ4MTU0YjU4MDFh
NTgzYmVhZjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTYgQEAKKzIwMjItMDMtMDcgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBmdXJ0aGVyIHRo
ZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE9wdGltaXplIGZ1cnRoZXIgdGhlIHBhc3Npbmcgb2Yg
ZGF0YSBhY3Jvc3MgdGhyZWFkcyBieSBsZXZlcmFnaW5nIG1vcmUgYnJvYWRseSB0aGUgb3B0aW1p
emVkCisgICAgICAgIHZlcnNpb25zIG9mIGlzb2xhdGVkQ29weSgpIG9uIHItdmFsdWUgcmVmZXJl
bmNlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcik6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29r
aWVCbG9ja2luZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92
ZURhdGFSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVz
dGluZ0V2ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZp
Z2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojpsb2dVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlcklu
dGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RTZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVsYXRp
b25zaGlwT25seUluRGF0YWJhc2VPbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omlz
UmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVudFJlc291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldEdyYW5kZmF0aGVyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0VmVyeVByZXZh
bGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldExhc3RTZWVuKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmhhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2Zlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNv
b2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lz
dHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGVs
ZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OmNsZWFyRm9y
UmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9y
ZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9y
UmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclNl
bnRBdHRyaWJ1dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlsczo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zQ3Jvc3NUaHJlYWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFn
ZU9yaWdpbnNDcm9zc1RocmVhZENvcHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjp3cml0ZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6cmVtb3ZlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp3
cml0ZVNpemVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Omdl
dERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhy
ZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6UmVjb3JkSW5mb3JtYXRpb246
Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6VHJhdmVyc2Fs
UmVzdWx0Ojppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjppc29sYXRlZENvcHkp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6Q2FjaGVzOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2Fj
aGVzOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0No
YW5uZWwuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6Om9wZW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnVwZGF0ZUZpbGVNb2Rp
ZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpk
aXNwYXRjaFJlYWRPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZElu
Y3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1v
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3Rl
clRlbXBvcmFyeUJsb2JGaWxlUGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVN0cmluZy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6OkVudHJ5Ojppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6RW50cnk6Omlzb2xhdGVkQ29w
eSk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmNyZWF0ZUV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3Jl
Ojpsb29rdXBDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxl
TGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuY3BwOgorICAgICAgICAod2Vi
a2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZVNhdmVCeXRlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OmRlbGV0ZUhhc2hTYWx0RnJvbURpc2spOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW46Okhhc2hTYWx0Rm9yT3JpZ2luKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3Jp
Z2luOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKToKKwogMjAyMi0wMy0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIHRoZSBw
YXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggODMx
ZTE0MmM0ODJmMzU5OGY4MTZlOTUxZjFkNmFiMzI0MGM0NGU1MS4uNDhjMjQwNWU3OTEzNTE0NTY5
NGNjZjRiZDU1ZGY3YzRmMzUzNWM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMi0wMy0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE9wdGltaXplIGZ1cnRoZXIgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTY4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3B0aW1pemUg
ZnVydGhlciB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0aHJlYWRzIGJ5IGxldmVyYWdpbmcg
bW9yZSBicm9hZGx5IHRoZSBvcHRpbWl6ZWQKKyAgICAgICAgdmVyc2lvbnMgb2YgaXNvbGF0ZWRD
b3B5KCkgb24gci12YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAqIFN0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4pOgorCiAyMDIyLTAzLTA3ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgdGhlIHBh
c3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDk4MmU1YjU4MzdmNWM1ZTUy
ODA3OTE1Y2E3YmJiNjZjYTEzOTY3ZDguLmI3MDBkODQ0NGIyMGViZDcwZTllNTM0MTRlMTc2NTli
MWZhNDVlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9E
T01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3Rl
bURpcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNvbnRleHQg
fSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnVsbFBh
dGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGNy
b3NzVGhyZWFkQ29weShkaXJlY3RvcnlWaXJ0dWFsUGF0aCldKCkgbXV0YWJsZSB7CisgICAgbV93
b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4
dCA9IFJlZiB7IGNvbnRleHQgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShmdWxsUGF0aCkp
LCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRpcmVjdG9y
eVZpcnR1YWxQYXRoKSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4g
PSBsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKGZ1bGxQYXRoKTsKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHQg
PSBXVEZNb3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJlbiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGxpc3Rl
ZENoaWxkcmVuKSksIGRpcmVjdG9yeVZpcnR1YWxQYXRoID0gZGlyZWN0b3J5VmlydHVhbFBhdGgu
aXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih0b0ZpbGVTeXN0ZW1FbnRyaWVzKGNvbnRleHQsIHByb3RlY3RlZFRoaXMsIFdURk1vdmUobGlz
dGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCkpOwpAQCAtMjcwLDkgKzI3MCw5IEBA
IHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEZpbGVTeXN0ZW1FbnRyeSYKICAgICBhdXRvIHZpcnR1YWxQYXRoID0gcmVzb2x2ZVJl
bGF0aXZlVmlydHVhbFBhdGgoZW50cnkudmlydHVhbFBhdGgoKSwgIi4uIik7CiAgICAgQVNTRVJU
KHZpcnR1YWxQYXRoWzBdID09ICcvJyk7CiAgICAgYXV0byBmdWxsUGF0aCA9IGV2YWx1YXRlUGF0
aCh2aXJ0dWFsUGF0aCk7Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgZnVsbFBhdGggPSBj
cm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2
aXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0ID0gUmVmIHsgY29udGV4dCB9LCBmdWxsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSksIHZpcnR1YWxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUodmlydHVhbFBhdGgpKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHZhbGlk
YXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdU
Rk1vdmUodmlydHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFj
ayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNv
bnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHZhbGlkYXRlZFZpcnR1YWxQYXRoKSksIGNvbXBsZXRpb25DYWxsYmFj
ayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlv
bigpKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTMxMSw5ICszMTEsOSBAQCB2b2lkIERPTUZpbGVT
eXN0ZW06OmdldEVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0
ZW1EaXJlY3RvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNv
bnRleHQgfSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCByZXNvbHZlZFZp
cnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHJlc29sdmVkVmlydHVhbFBhdGgpLCBjb21wbGV0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7Cisg
ICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y29udGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShmdWxsUGF0aCkpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdU
Rk1vdmUocmVzb2x2ZWRWaXJ0dWFsUGF0aCkpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZW50cnlUeXBl
ID0gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGZ1bGxQYXRoKTsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHQgPSBXVEZNb3ZlKGNvbnRleHQpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRD
b3B5KHJlc29sdmVkVmlydHVhbFBhdGgpLCBlbnRyeVR5cGUsIGNvbXBsZXRpb25DYWxsYmFjayA9
IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHQgPSBXVEZNb3ZlKGNvbnRleHQpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUocmVzb2x2ZWRWaXJ0dWFsUGF0aCkpLCBlbnRyeVR5cGUsIGNvbXBsZXRpb25D
YWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmICghZW50cnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxi
YWNrKEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJDYW5ub3QgZmluZCBlbnRyeSBhdCBnaXZl
biBwYXRoIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzNyw5ICszMzcsOSBA
QCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgRmlsZVN5c3RlbUZpbGVFbnRyeQogewogICAgIGF1dG8gdmlydHVhbFBhdGggPSBmaWxl
RW50cnkudmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRoKHZp
cnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2Z1bGxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVh
bFBhdGgpLCBjb250ZXh0ID0gUmVmIHsgY29udGV4dCB9LCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUt
PmRpc3BhdGNoKFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSks
IHZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmlydHVhbFBhdGgpKSwgY29u
dGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21w
bGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHZhbGlkYXRlZFZpcnR1
YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdURk1vdmUodmly
dHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmFsaWRh
dGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmFsaWRhdGVkVmlydHVhbFBhdGgpLCBj
b250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShj
b21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSksIHZhbGlkYXRl
ZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmFsaWRhdGVkVmlydHVhbFBh
dGgpKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICh2
YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggMmZkYmM4YzkzMDVhMzc1NWE2ZDI1NjFjOGIzMzdjZWRi
MDRiOGYxNS4uZTVkYzFhZWE3OWNjMjkzMmNhY2ZiNjVkMTgwNGRmZWM4ZmIyOTBlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAg
LTEwMiw4ICsxMDIsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
aXNTYW1lRW50cnkoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaQogICAgIG1fc2FtZUVudHJ5
Q2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
UmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5U
aHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBvdGhlcklkZW50aWZpZXJdKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwg
d29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUo
W2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChh
dXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi0+ZGlkSXNTYW1lRW50cnkoY2FsbGJhY2tJZGVudGlmaWVyLCBX
VEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7CkBAIC0xMjgsOCArMTI4LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmdldEZpbGVIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIKICAgICBt
X2dldEhhbmRsZUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtl
clRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9u
ID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgbmFtZSA9IG5hbWUuaXNvbGF0
ZWRDb3B5KCksIGNyZWF0ZUlmTmVjZXNzYXJ5XSgpIG11dGFibGUgewotICAgICAgICBhdXRvIG1h
aW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdU
Rk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAg
d29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZp
ZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFi
bGUgeworICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZp
ZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zv
ck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUocmVzdWx0KSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8gY29ubmVjdGlvbiA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24tPmRpZEdldEhhbmRsZShjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAg
ICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKQEAgLTE0OCw4ICsx
NDgsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RGlyZWN0
b3J5SGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudAogICAgIG1fZ2V0SGFuZGxlQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxP
bk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9z
Y29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLCBpZGVudGlmaWVyLCBuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwgY3JlYXRlSWZO
ZWNlc3NhcnldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
bWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
V1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVu
dGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+ZGlkR2V0SGFuZGxlKGNh
bGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtl
clJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeShGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpCiAgICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIs
IFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRl
bnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRo
cmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBuYW1l
ID0gbmFtZS5pc29sYXRlZENvcHkoKSwgZGVsZXRlUmVjdXJzaXZlbHldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29y
a2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2Nh
bGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRv
JiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVs
dE1vZGUoKSk7CkBAIC0xOTQsOCArMTk0LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OnJlc29sdmUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnQKICAg
ICBtX3Jlc29sdmVDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3Jr
ZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlv
biA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXIsIG90aGVySWRlbnRpZmllcl0o
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJ
ZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVz
dWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHko
cmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFk
Q2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdv
cmtlclRocmVhZCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJl
c3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5kaWRSZXNvbHZlKGNhbGxiYWNrSWRlbnRp
ZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOwpAQCAtMjIwLDggKzIyMCw4IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
CiAgICAgbV9zdHJpbmdDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3
b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVj
dGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29y
a2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2Nh
bGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRv
JiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVTdHJpbmdDYWxsYmFjayhjYWxsYmFja0lkZW50aWZp
ZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKQEAgLTI1OCwxMCArMjU4LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUkK
ICAgICBtX2dldEFjY2Vzc0hhbmRsQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRp
Zmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVh
ZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyXSgpIG11dGFi
bGUgewotICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZp
ZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11
dGFibGUgewotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0LmV4Y2VwdGlvbigpKTsKLSAg
ICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJh
Y2tJZGVudGlmaWVyLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0
YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRp
Zmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBp
ZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5m
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVj
dGlvbi0+ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShjYWxsYmFja0lkZW50aWZpZXIsIFdURk1v
dmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKQEAgLTI4MCw4ICsyNzgsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZAogICAgIG1fdm9p
ZENhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAK
ICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9
IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWlu
VGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllcl0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVu
dGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVz
dWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFkQ2Fs
bGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtl
clRocmVhZCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3Vs
dCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQogICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb21wbGV0ZVZvaWRDYWxsYmFjayhjYWxsYmFj
a0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5M
b29wOjpkZWZhdWx0TW9kZSgpKTsKQEAgLTMyNSw4ICszMjMsOCBAQCB2b2lkIFdvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlTmFtZXMoRmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZQogICAgIG1fZ2V0SGFuZGxlTmFtZXNDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRp
ZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJh
Y2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBt
YWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXJd
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNr
SWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5
KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVh
ZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3
b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCBy
ZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkK
ICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+ZGlkR2V0SGFuZGxlTmFtZXMoY2FsbGJh
Y2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSk7CkBAIC0zNTEsOCArMzQ5LDggQEAgdm9pZCBXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGUKICAgICBtX2dldEhhbmRsZUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVy
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lk
ZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5U
aHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgbmFt
ZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRo
cmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92
ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwg
cmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwg
d29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9k
ZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShy
ZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+
ZGlkR2V0SGFuZGxlKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAg
ICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMzcxLDggKzM2OSw4
IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKEZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpCiAgICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxs
YmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhy
ZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBp
ZGVudGlmaWVyLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG5hbWUgPSBjcm9zc1RocmVhZENvcHko
bmV3TmFtZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
bWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
V1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVu
dGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2Fs
bGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAg
fSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0
aW9uVG9DbGllbnREZWxlZ2F0ZS5oCmluZGV4IDk4NDViZmY3YzVhY2IyZjk4NTE2ZTYzMmU0YzZj
ZDUxZWRiMjE3OGUuLmFjZWVkZTM3MWJlZjYyYzlhMGUyN2U0YmM4OWNmYjIxNDUzNTY5ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25u
ZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VGcm9tU2VydmVyKFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQkVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBu
ZXdWZXJzaW9uKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1l
c0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IFZlY3RvcjxJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYs
IFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JbmRleEtleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSW5kZXhLZXkuY3BwCmluZGV4IGI1ODc1ZGNiZWU3NmM3MTE5MGE3MDFhMTVi
MWE5MDM1NzVjODQwNjcuLmRiNGU5NzAzNzg2OWFhOWE4NDA2MDE2ZDM5YjE0OWVmMjgyM2FmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRl
eEtleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
ZGV4S2V5LmNwcApAQCAtMzcsMTEgKzM3LDE2IEBAIEluZGV4S2V5OjpJbmRleEtleShWZWN0b3I8
SURCS2V5RGF0YT4mJiBrZXlzKQogICAgIG1fa2V5cy5zd2FwKGtleXMpOwogfQogCi1JbmRleEtl
eSBJbmRleEtleTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0luZGV4S2V5IEluZGV4S2V5Ojppc29s
YXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KG1fa2V5
cykgfTsKIH0KIAorSW5kZXhLZXkgSW5kZXhLZXk6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAg
cmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9rZXlzKSkgfTsKK30KKwogSURCS2V5
RGF0YSBJbmRleEtleTo6YXNPbmVLZXkoKSBjb25zdAogewogICAgIGlmIChtX2tleXMuaXNFbXB0
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0luZGV4S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5k
ZXhLZXkuaAppbmRleCA3OGNjNTJlMDgxMzkzMmIyYThjZTI5Y2ZlOTU5NzA2NjRjZTI0YTZjLi5i
YzkwYmQxYjVhOWRmYTNlZGEyMTg4YWFhZTJkOTg5OGQxMmY4MmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaApAQCAtMzYsNyAr
MzYsOCBAQCBwdWJsaWM6CiAgICAgSW5kZXhLZXkoKTsKICAgICBJbmRleEtleShWZWN0b3I8SURC
S2V5RGF0YT4mJik7CiAKLSAgICBJbmRleEtleSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBJ
bmRleEtleSBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIEluZGV4S2V5IGlzb2xhdGVkQ29w
eSgpICYmOwogCiAgICAgSURCS2V5RGF0YSBhc09uZUtleSgpIGNvbnN0OwogICAgIFZlY3RvcjxJ
REJLZXlEYXRhPiBtdWx0aUVudHJ5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3ODA0YTgwMjdkNDA2OTIzYTM0
YzM5ZWFjY2VjNjkzY2QxMDYxMTZjLi5jZDQ2NjMwZGI3MGMwYmI4ZTgwOWM3NGI5ODc5OTVmNDli
NzM1ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpmaWxl
U3lzdGVtQWNjZXNzR2V0RGlyZWN0b3J5KERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhYwog
ICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoY29ubmVjdGlvbkluZm9PckV4Y2VwdGlvbi5y
ZWxlYXNlRXhjZXB0aW9uKCkpOwogCiAgICAgYXV0byBjb25uZWN0aW9uSW5mbyA9IGNvbm5lY3Rp
b25JbmZvT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgY29ubmVjdGlvbklu
Zm8uY29ubmVjdGlvbi5maWxlU3lzdGVtR2V0RGlyZWN0b3J5KGNvbm5lY3Rpb25JbmZvLm9yaWdp
biwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB3ZWFrTmF2aWdhdG9yID0gbV9uYXZpZ2F0
b3JdKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9uSW5mby5jb25uZWN0aW9u
LmZpbGVTeXN0ZW1HZXREaXJlY3RvcnkoY29ubmVjdGlvbkluZm8ub3JpZ2luLCBbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIHdlYWtOYXZpZ2F0b3IgPSBtX25hdmlnYXRvcl0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9Xb3JrZXJTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvV29ya2Vy
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGE4MjIwMWU5MmFhOTJjZWIyYTM3NDhiOTM1MjIz
NDBjMjFjOWJhZjQuLmQ1ZGNjYzM0Y2QzMTEwYjhlYjU3YWNmZjdkY2Y0NDcxNmMzMmRjMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9Xb3JrZXJTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1dvcmtlclN0
b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtOTQsOCArOTQsOCBAQCB2b2lkIFdvcmtlclN0b3JhZ2VD
b25uZWN0aW9uOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luLAogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJU
aHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbWFpblRocmVhZENvbm5lY3Rpb24g
PSB3b3JrZXJUaHJlYWQtPndvcmtlckxvYWRlclByb3h5KCkuc3RvcmFnZUNvbm5lY3Rpb24oKTsK
LSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3
b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShb
Y2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0gKGF1
dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBb
Y2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCld
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3RvcmFnZUNv
bm5lY3Rpb24oKS5kaWRHZXREaXJlY3RvcnkoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJl
c3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAg
ICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDhhNTEzMGRiOTcwZmJmNjJjMTg0
NTIwOWE0MDNhMmE0OTIxZTQyNTUuLmFjMDUwNWQ1NDk2NDIzZmM1ZmRlZTY2MzBlYjdmOTUzODAy
MTMzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKFN0
cmluZyYmIG5hbWUsIFJlZjwKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJBIHByb2Nlc3NvciB3YXMg
YWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07CiAKLSAgICB0aHJlYWQoKS5t
ZXNzYWdpbmdQcm94eSgpLnBvc3RUYXNrVG9BdWRpb1dvcmtsZXQoW25hbWUgPSBXVEZNb3ZlKG5h
bWUpLmlzb2xhdGVkQ29weSgpLCBwYXJhbWV0ZXJEZXNjcmlwdG9ycyA9IGNyb3NzVGhyZWFkQ29w
eShwYXJhbWV0ZXJEZXNjcmlwdG9ycyldKEF1ZGlvV29ya2xldCYgd29ya2xldCkgbXV0YWJsZSB7
CisgICAgdGhyZWFkKCkubWVzc2FnaW5nUHJveHkoKS5wb3N0VGFza1RvQXVkaW9Xb3JrbGV0KFtu
YW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgcGFyYW1ldGVyRGVzY3JpcHRvcnMg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXJhbWV0ZXJEZXNjcmlwdG9ycykpXShBdWRpb1dv
cmtsZXQmIHdvcmtsZXQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoYXV0byogYXVkaW9Db250ZXh0ID0gd29ya2xldC5hdWRpb0NvbnRleHQo
KSkKICAgICAgICAgICAgIGF1ZGlvQ29udGV4dC0+YWRkQXVkaW9QYXJhbURlc2NyaXB0b3JzKG5h
bWUsIFdURk1vdmUocGFyYW1ldGVyRGVzY3JpcHRvcnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobS5jcHAKaW5kZXggZmY5ODY0NjYzOGNmYzI2YjVkNTVjYzZlMTVlNTFl
MDk3ZTY5NmNhYS4uY2EzYjk3YmZmNWE5Mzc0MDYyOGQxMzg5NTJlODQwOWZlNGE2NTQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKQEAgLTk4LDcgKzk4LDcg
QEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24oV29ya1F1ZXVlJiB3b3Jr
UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICB3b3JrUXVldWUuZGlzcGF0Y2goCiAgICAg
ICAgIFtvcGVyYXRpb24gPSBXVEZNb3ZlKG9wZXJhdGlvbiksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
IGNvbnRleHRJZGVudGlmaWVyID0gY29udGV4dC5pZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbigpOwotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW3Jlc3VsdCA9
IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShhdXRvJikgbXV0
YWJsZSB7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNv
bnRleHRJZGVudGlmaWVyLCBbcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbk9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAppbmRleCAxYTE5YjBl
ZTlhMmE0NTJiZjU3NzQwYTJhYmZkYmRkYmMyMzM4YWU0Li5jZGM2MTY5ODVhZjcwOTI5YzVkYTg2
MTI0Zjg4YTE2ZTFkYWU3YjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uT3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApAQCAtMjA5LDYg
KzIwOSwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6RXhjZXB0aQogICAgICAgICAgICAgcmV0dXJuIGNy
b3NzVGhyZWFkQ29weShzb3VyY2UuZXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4gY3Jvc3NU
aHJlYWRDb3B5KHNvdXJjZS5yZXR1cm5WYWx1ZSgpKTsKICAgICB9CisgICAgc3RhdGljIFR5cGUg
Y29weShUeXBlJiYgc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVhc2VF
eGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB9CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiA+
IHsKQEAgLTIxOSw2ICsyMjUsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6RXhjZXB0aW9uT3I8dm9pZD4KICAgICAgICAg
ICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLmV4Y2VwdGlvbigpKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29weShUeXBlJiYgc291cmNlKQor
ICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJl
dHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggMTJkZGVmZWQ0ZjYwZTc0YzE2MWM2
MDkxNTIyNGRlZThiNGU2NmY2Ny4uNjJkMWIzNDhlNDlkN2E2MmM5ZDUwYTI3YWE2NzljMTU2MDI3
MGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Jsb2JVUkxD
b250YWluc051bGxPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHVybC5zdHJpbmco
KS5zdWJzdHJpbmcoc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4IC0gMSkgPT0gIm51
bGwiOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBQb2xpY3lDb250YWluZXImIHBvbGljeUNvbnRh
aW5lciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgUG9s
aWN5Q29udGFpbmVyJiYgcG9saWN5Q29udGFpbmVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwpCiB7CiAgICAgLy8gSWYgdGhlIGJsb2IgVVJMIGNvbnRhaW5zIG51bGwgb3JpZ2lu
LCBhcyBpbiB0aGUgY29udGV4dCB3aXRoIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgZmlsZSBV
UkwsIHNhdmUgdGhlIG1hcHBpbmcgYmV0d2VlbiB1cmwgYW5kIG9yaWdpbiBzbyB0aGF0IHRoZSBv
cmlnaW4gY2FuIGJlIHJldHJpdmVkIHdoZW4gZG9pbmcgc2VjdXJpdHkgb3JpZ2luIGNoZWNrLgog
ICAgIGlmIChvcmlnaW4gJiYgaXNCbG9iVVJMQ29udGFpbnNOdWxsT3JpZ2luKHVybCkpCkBAIC0x
MTAsNyArMTEwLDcgQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgUG9saWMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwg
c3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBwb2xpY3lDb250YWluZXIgPSBjcm9zc1Ro
cmVhZENvcHkocG9saWN5Q29udGFpbmVyKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBwb2xp
Y3lDb250YWluZXIgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwb2xpY3lDb250YWluZXIpKV0g
ewogICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwsIHBv
bGljeUNvbnRhaW5lcik7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IGQ5NDNkZjEwZTgwYzQ5MjNhZTk4MGIyMjZk
Y2ZhODZhM2VhMjk5ZTEuLjBmNmI1OGYzNThlMWUyNmJjNGE5ODdmMjJkZWMzOGYxZDNlZTk1ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFBvbGljeUNvbnRhaW5lciYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qLCBQb2xpY3lDb250
YWluZXImJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxl
LmgKaW5kZXggZjIzNmI0Mjg2YWQyNzljOTM0NDYyODFkMmNiNzcwYTk5MDMxOTViMi4uZTA1YTcz
ZjQwODBhMTAxOTFiN2VmYzNlZTg2MmUwY2U1NWI0NmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVIYW5kbGUuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKCkgY29uc3Q7CiAKKyAgICBGaWxlSGFuZGxlIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIFdURk1vdmUoKnRoaXMpOyB9CisKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fcGF0aDsKICAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGYxNmQ3OWVl
OTc4OWNmNmZmZThjMDg1NjA1ZDNmYTFiYzJjMTk2OTYuLmI0Y2VkM2I2MDNiNDliYzY4MDAwYmM2
YTE0NGUzMzM0OGQxMzM3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0xMDksMTMgKzEwOSwxMyBAQCB2b2lk
IFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZgogICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZShyZWdpc3RyYXRpb25EYXRhLmtleSk7CiB9CiAKLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpz
dGFydFNjcmlwdEZldGNoRm9yU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK3ZvaWQgU1dDbGllbnRDb25u
ZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyIGpvYklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmJiByZWdpc3Ry
YXRpb25LZXksIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCiB7CiAgICAgYm9vbCBp
c1Bvc3RlZCA9IHBvc3RUYXNrRm9ySm9iKGpvYklkZW50aWZpZXIsIElzSm9iQ29tcGxldGU6Ok5v
LCBbY2FjaGVQb2xpY3ldIChhdXRvJiBqb2IpIHsKICAgICAgICAgam9iLnN0YXJ0U2NyaXB0RmV0
Y2goY2FjaGVQb2xpY3kpOwogICAgIH0pOwogICAgIGlmICghaXNQb3N0ZWQpCi0gICAgICAgIGZp
bmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
LCBqb2JJZGVudGlmaWVyIH0sIHJlZ2lzdHJhdGlvbktleSwgd29ya2VyRmV0Y2hFcnJvcihSZXNv
dXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCBtYWtlU3RyaW5n
KCJGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBzZXJ2aWNlIHdvcmtlciB3aXRoIHNjb3BlICIs
IHJlZ2lzdHJhdGlvbktleS5zY29wZSgpLnN0cmluZygpKSB9KSk7CisgICAgICAgIGZpbmlzaEZl
dGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBqb2JJ
ZGVudGlmaWVyIH0sIFdURk1vdmUocmVnaXN0cmF0aW9uS2V5KSwgd29ya2VyRmV0Y2hFcnJvcihS
ZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCBtYWtlU3Ry
aW5nKCJGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBzZXJ2aWNlIHdvcmtlciB3aXRoIHNjb3Bl
ICIsIHJlZ2lzdHJhdGlvbktleS5zY29wZSgpLnN0cmluZygpKSB9KSk7CiB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDZkYjJiOTBjYjNjYWE5MmE4OWJkNWJhNGFhY2U1YzliNWFjNmIzODIuLmY5NTQwNGI3NGI2
ZDQ4MmRlN2U2OGEwNWVhNTMyZTFiODg2OGY0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTgxLDEwICs4MSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtYXlI
YXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5nJiYgdXNlckFn
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3Qg
V29ya2VyRmV0Y2hSZXN1bHQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaEZldGNoaW5n
U2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmLCBXb3JrZXJGZXRjaFJlc3VsdCYmKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soKTsgfQogICAgIHZp
cnR1YWwgdm9pZCB3aGVuU2VydmljZVdvcmtlcklzVGVybWluYXRlZEZvclRlc3RpbmcoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykg
eyBjYWxsYmFjaygpOyB9CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBqb2JSZWplY3RlZEluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVu
dGlmaWVyLCBjb25zdCBFeGNlcHRpb25EYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihT
ZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnRTY3JpcHRGZXRjaEZvclNlcnZlcihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291cmNlLCBTdHJp
bmcmJiBzb3VyY2VPcmlnaW4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0
cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKaW5k
ZXggMzg0ZGM3MTQ3MmJiNjAxMWQ2Y2RlMDMxYWE4ZTgyYzVhMjJjMWQzZS4uM2M1ZDQ3OGU5MDk4
MzJhMzhmYjBlODllNzdlMzMzNjRjZjgyODdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC01OCw3ICs1
OCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
bWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpZCA9IGlkLmlzb2xhdGVkQ29w
eSgpXSAoKSB7CiAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKICAgICAgICAgY29ubmVjdGlvbi0+ZmluZENsaWVudEJ5
VmlzaWJsZUlkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGlkLCBbcHJvbWlzZVBv
aW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoYXV0byYmIGNsaWVudERhdGEpIHsKLSAg
ICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIGRhdGEgPSBj
cm9zc1RocmVhZENvcHkoY2xpZW50RGF0YSldIChhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIGRhdGEgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShjbGllbnREYXRhKSldIChhdXRvJiBjb250ZXh0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gY29udGV4dC5jbGllbnRz
KCkubV9wZW5kaW5nUHJvbWlzZXMudGFrZShwcm9taXNlUG9pbnRlcikpCiAgICAgICAgICAgICAg
ICAgICAgIGRpZEZpbmlzaEdldFJlcXVlc3QoY29udGV4dCwgKnByb21pc2UsIFdURk1vdmUoZGF0
YSkpOwogICAgICAgICAgICAgfSk7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNsaWVudHM6Om1hdGNoQWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IENsaWVuCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBvcHRpb25zXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjb25uZWN0
aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOwogICAgICAg
ICBjb25uZWN0aW9uLT5tYXRjaEFsbChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgb3B0aW9ucywg
W3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8mJiBjbGllbnRz
RGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21p
c2VQb2ludGVyLCBjbGllbnRzRGF0YSA9IGNyb3NzVGhyZWFkQ29weShjbGllbnRzRGF0YSldIChh
dXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
W3Byb21pc2VQb2ludGVyLCBjbGllbnRzRGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNs
aWVudHNEYXRhKSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8gcHJvbWlzZSA9IHNjb3BlLmNsaWVudHMoKS5tX3BlbmRpbmdQcm9taXNlcy50YWtlKHBy
b21pc2VQb2ludGVyKSkKICAgICAgICAgICAgICAgICAgICAgbWF0Y2hBbGxDb21wbGV0ZWQoc2Nv
cGUsICpwcm9taXNlLCBXVEZNb3ZlKGNsaWVudHNEYXRhKSk7CiAgICAgICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcAppbmRleCA0MWYzNGM2MWQwMDlkNWRlNWZhMjBkNzk0YjAyMTRjZWJkZTUy
ZDQzLi4xMGZmN2U0MmYwYjExYTQ5YTUzZTllYmFkNGViYmNkYTFkYjZmOGE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwCkBAIC00OTEsMTMgKzQ5MSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iLCBGZXRjaAog
ICAgIGpvYi5mZXRjaFNjcmlwdFdpdGhDb250ZXh0KCpjb250ZXh0LCBjYWNoZVBvbGljeSk7CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0
KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNoUmVz
dWx0KQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3Jp
cHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0
KQogewogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0coImpvYkZpbmlzaGVkTG9hZGluZ1Nj
cmlwdDogU3VjY2Vzc2Z1bHkgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJSIgUFJJ
dTY0LCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCi0gICAgZW5zdXJlU1dDbGllbnRD
b25uZWN0aW9uKCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihqb2IuZGF0YSgpLmlkZW50
aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwgZmV0Y2hSZXN1bHQpOworICAg
IGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
am9iLmRhdGEoKS5pZGVudGlmaWVyKCksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgeyBq
b2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpIH0sIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKIH0K
IAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNl
cnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEV4Y2VwdGlv
biYmIGV4Y2VwdGlvbikKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25z
dAogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Om5vdGlmeUZhaWxlZEZldGNoaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNl
cnZlcihqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXko
KSwgd29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3IgfSkpOworICAgIGVuc3Vy
ZVNXQ2xpZW50Q29ubmVjdGlvbigpLmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoam9iLmRh
dGEoKS5pZGVudGlmaWVyKCksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgeyBqb2IuZGF0
YSgpLnJlZ2lzdHJhdGlvbktleSgpIH0sIHdvcmtlckZldGNoRXJyb3IoUmVzb3VyY2VFcnJvciB7
IGVycm9yIH0pKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXN0cm95Sm9i
KFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhZjIxNzNlOGQ1ZTI0
OTFlNTZlMjNkNDUzNTlkYjAzZWY5OWU1MzQuLmFiMmIyMzc3NTI0YTM5ODYzNmFmZTA0MGQ4ZDFl
ZDgwMzE2N2QzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZCkgZmluYWw7CiAgICAgdm9pZCBqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChT
ZXJ2aWNlV29ya2VySm9iJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgZmluYWw7CiAgICAg
dm9pZCBzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImLCBGZXRjaE9wdGlv
bnM6OkNhY2hlKSBmaW5hbDsKLSAgICB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2
aWNlV29ya2VySm9iJiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKKyAgICB2b2lk
IGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgV29ya2VyRmV0Y2hS
ZXN1bHQmJikgZmluYWw7CiAgICAgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgRXhjZXB0aW9uJiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5kZXggMDQ1OTMzYzYyNDMwMjI4ZjUz
YTU5MWIxZGYwNzBjMWRjYjI0YTZkYS4uMjMxNDk0MTg4MTlhNWUxMjlmMDRiODZiYTg0MzNmNzQz
YzdkOWQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYkNsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgam9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2Im
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgam9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25S
ZXN1bHQoU2VydmljZVdvcmtlckpvYiYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2VySm9i
JiwgRmV0Y2hPcHRpb25zOjpDYWNoZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBqb2JGaW5pc2hl
ZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2Vydmlj
ZVdvcmtlckpvYiYsIFdvcmtlckZldGNoUmVzdWx0JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VF
cnJvciYsIEV4Y2VwdGlvbiYmKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4
IDIxZjhkNjhlNDAzZDIzYmVmODdkZDhmNjFkMTdmM2I2Zjk5OGYzYWIuLmJlMmYzZWYxY2UwZWFh
YjgyNzI4YTFjMTg0ZmYxMjVhYzQ1MjU3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0x
NzksMTEgKzE3OSwxMSBAQCBib29sIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF5SGF2ZVNl
cnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlYwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcj4mIGlkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKLSAgICBj
YWxsT25NYWluVGhyZWFkKFt0b3BPcmlnaW4gPSB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGRh
dGEgPSBjcm9zc1RocmVhZENvcHkoZGF0YSksIGlkZW50aWZpZXIsIHVzZXJBZ2VudCA9IGNyb3Nz
VGhyZWFkQ29weSh1c2VyQWdlbnQpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdG9wT3JpZ2lu
ID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBkYXRhID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUoZGF0YSkpLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZSh1c2VyQWdlbnQpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNl
cnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24o
KTsKLSAgICAgICAgY29ubmVjdGlvbi5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQodG9wT3Jp
Z2luLCBkYXRhLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQpOworICAgICAgICBjb25uZWN0aW9uLnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudCh0b3BPcmlnaW4sIFdURk1vdmUoZGF0YSksIGlkZW50
aWZpZXIsIFdURk1vdmUodXNlckFnZW50KSk7CiAgICAgfSk7CiB9CiAKQEAgLTE5MiwxMSArMTky
LDExIEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1Njcmlw
dEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgV29ya2VyU1dDbGll
bnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmJiByZWdpc3RyYXRpb25LZXksIFdvcmtlckZldGNoUmVzdWx0JiYgcmVz
dWx0KQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2pvYkRhdGFJZGVudGlmaWVyLCByZWdpc3Ry
YXRpb25LZXkgPSBjcm9zc1RocmVhZENvcHkocmVnaXN0cmF0aW9uS2V5KSwgcmVzdWx0ID0gY3Jv
c3NUaHJlYWRDb3B5KHJlc3VsdCldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
am9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHJlZ2lzdHJhdGlvbktleSkpLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShy
ZXN1bHQpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKLSAg
ICAgICAgY29ubmVjdGlvbi5maW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGpvYkRhdGFJZGVu
dGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHJlc3VsdCk7CisgICAgICAgIGNvbm5lY3Rpb24uZmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihqb2JEYXRhSWRlbnRpZmllciwgV1RGTW92ZShyZWdp
c3RyYXRpb25LZXkpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIH0pOwogfQogCkBAIC0yMTYsNyAr
MjE2LDcgQEAgdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlVW5yZWdpc3Rl
ckpvYkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3QKICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aHJlYWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGNvbnRleHRJZGVudGlmaWVyXSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBjb25uZWN0
aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9uLnNjaGVkdWxlVW5yZWdpc3RlckpvYkluU2Vy
dmVyKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnRleHRJZGVudGlmaWVyLCBbdGhyZWFkID0g
V1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgewotICAg
ICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRp
ZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkp
XShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9uKCku
bV91bnJlZ2lzdGVyUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVl
c3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBhcHBsaWNhdGlvblNlcnZlcktl
eV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQ
cm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKICAgICAgICAg
Y29ubmVjdGlvbi5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGFwcGxpY2F0aW9uU2VydmVyS2V5LCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0
SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgewotICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJl
YWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9uKCkubV9zdWJzY3JpYmVUb1B1c2hTZXJ2aWNl
UmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1
bHRNb2RlKCkpOwpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0CiAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBzdWJzY3JpcHRpb25JZGVudGlmaWVyXSgpIG11dGFi
bGUgewogICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpz
aW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9u
LnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHN1YnNj
cmlwdGlvbklkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVu
dGlmaWVyXShhdXRvJiYgcmVzdWx0KSB7Ci0gICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENv
cHkocmVzdWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgdGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX3Vuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNl
UmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1
bHRNb2RlKCkpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVuCiAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyXSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBjb25u
ZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9uLmdldFB1c2hTdWJzY3JpcHRpb24ocmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElk
ZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIHsKLSAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFk
Q29weShyZXN1bHQpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICB0aHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oc2NvcGUpLnN3Q2xpZW50Q29ubmVjdGlvbigpLm1fZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVl
c3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSQogICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlv
biA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5l
Y3Rpb24oKTsKICAgICAgICAgY29ubmVjdGlvbi5nZXRQdXNoUGVybWlzc2lvblN0YXRlKHJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVu
dGlmaWVyXShhdXRvJiYgcmVzdWx0KSB7Ci0gICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENv
cHkocmVzdWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgdGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxs
YmFja3MudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDM5YmU5NTM5NWJjNzA4MTQwZjE3N2YxNGE1
ZTM4YmI2ZDg1ZTJkMGMuLjQ3NzlkZmYzMTYwZWNkNmMwMjhmN2YzNTdjZDEzYmMyOWYzMTFiZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyJiBzb3VyY2UpIGZpbmFsOwogICAgIFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOworICAgIHZv
aWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5nJiYgdXNlckFnZW50KSBm
aW5hbDsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jikg
ZmluYWw7CisgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
JiwgV29ya2VyRmV0Y2hSZXN1bHQmJikgZmluYWw7CiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2Vy
dmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBzY2hlZHVs
ZUpvYihTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgc2NoZWR1bGVVbnJlZ2lzdGVySm9iSW5TZXJ2ZXIo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJPckNsaWVu
dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCBlNjI4ZWYwZWE0NzBm
YTI2ZTY1YWUzNDk2ZWZmZmJkMWUxNzY0NTk3Li5kNDdlN2I4MDVjNjJkMzRkMmQ4MmQ1ZmRmN2Q3
N2Q0NWY4ZDc3YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtNDg0LDEzICs0
ODQsMTMgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBW
ZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgaWYgKCFtYWluU2NyaXB0
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBIYXNoTWFwPFVSTCwgU2NyaXB0
QnVmZmVyPiBpbXBvcnRlZFNjcmlwdHM7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRhdGEu
c2NyaXB0UmVzb3VyY2VNYXApIHsKLSAgICAgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBz
Y3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgcGFpci5rZXksIHBhaXIu
dmFsdWUuc2NyaXB0KTsKKyAgICAgICAgZm9yIChhdXRvJiBbc2NyaXB0VVJMLCBzY3JpcHRdIDog
ZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlw
dCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBzY3JpcHRVUkws
IHNjcmlwdC5zY3JpcHQpOwogICAgICAgICAgICAgQVNTRVJUKGltcG9ydGVkU2NyaXB0KTsKICAg
ICAgICAgICAgIGlmIChpbXBvcnRlZFNjcmlwdCkKLSAgICAgICAgICAgICAgICBpbXBvcnRlZFNj
cmlwdHMuYWRkKGNyb3NzVGhyZWFkQ29weShwYWlyLmtleSksIGNyb3NzVGhyZWFkQ29weShpbXBv
cnRlZFNjcmlwdCkpOworICAgICAgICAgICAgICAgIGltcG9ydGVkU2NyaXB0cy5hZGQoY3Jvc3NU
aHJlYWRDb3B5KHNjcmlwdFVSTCksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGltcG9ydGVkU2Ny
aXB0KSkpOwogICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRhdGEu
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQgPSBjcm9zc1RocmVhZENvcHkobWFp
blNjcmlwdCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZGF0YS5zZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgbWFpblNjcmlwdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1haW5T
Y3JpcHQpKSwgaW1wb3J0ZWRTY3JpcHRzID0gV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKG1fc3RvcmUpCiAgICAgICAgICAgICAgICAgbV9zdG9y
ZS0+ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdU
Rk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7CiAgICAgICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAppbmRleCA3NDU2YmU0MzY3ZDJkMzZiZTE0
MDNkMzY0NTNiZTBhZWM2N2NiNDhjLi5iNDVhOTlmN2U1ZGNkYjE2OTRiY2VkY2RjYzdkYmMyYjFj
ZDJiMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcApAQCAtODQsNyArODQsNyBA
QCB2b2lkIFdvcmtsZXQ6OmFkZE1vZHVsZShjb25zdCBTdHJpbmcmIG1vZHVsZVVSTFN0cmluZywg
V29ya2xldE9wdGlvbnMmJiBvcHRpb25zLAogICAgIGZvciAoYXV0byYgcHJveHkgOiBtX3Byb3hp
ZXMpIHsKICAgICAgICAgcHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3Bl
KFtwZW5kaW5nVGFza3MgPSBwZW5kaW5nVGFza3MuY29weVJlZigpLCBtb2R1bGVVUkwgPSBtb2R1
bGVVUkwuaXNvbGF0ZWRDb3B5KCksIGNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscywg
cGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgZG93bmNhc3Q8V29y
a2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS5mZXRjaEFuZEludm9rZVNjcmlwdChtb2R1bGVVUkws
IGNyZWRlbnRpYWxzLCBbcGVuZGluZ1Rhc2tzID0gV1RGTW92ZShwZW5kaW5nVGFza3MpLCBwZW5k
aW5nQWN0aXZpdHkgPSBXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSldKHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbcGVuZGluZ1Rhc2tzID0gV1RGTW92ZShwZW5kaW5nVGFza3MpLCBleGNlcHRpb24g
PSBjcm9zc1RocmVhZENvcHkoZXhjZXB0aW9uKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShw
ZW5kaW5nQWN0aXZpdHkpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3BlbmRpbmdUYXNrcyA9IFdURk1vdmUocGVuZGluZ1Rhc2tzKSwgZXhjZXB0aW9uID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZXhjZXB0aW9uKSksIHBlbmRpbmdBY3Rpdml0eSA9IFdU
Rk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrcy0+YWJv
cnQoV1RGTW92ZSgqZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmlu
ZGV4IGE1NTI5NWYzMDU1MGRmMjc0MDRiY2U0Mjk5ZDJmZTM3OWIwZTQ5ZTQuLjUxNmEyZjUwMmNj
OTBjY2NlMTM2YjQzMmYyODhhMGYzNGMwNTlmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTE3Nyw3ICsxMTc3LDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBUb3BGcmFtZURvbWFpbiYKICAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3Rz
KHNjb3BlZFN0YXRlbWVudCwgZG9tYWluSUQoc3ViRnJhbWVEb21haW4pLCB0b3BGcmFtZURvbWFp
bik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTExOTIsNyArMTE5Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQ29va2llQWNjZXNzOjpCYXNlZE9uQ29va2llUG9saWN5OgotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBz
dWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBzdWJG
cmFtZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgc3RvcmUtPmhhc0Nvb2tpZXMoc3ViRnJhbWVEb21haW4sIFtzdG9yZSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNw
YXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVz
dWx0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKQEAgLTEyMDUsNyArMTIwNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAg
ICAgICAgIGJyZWFrOwogICAgIH07CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0
b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCBmcmFtZUlELCBwYWdlSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwgc3ViRnJhbWVEb21haW4gPSBXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBzdG9y
ZS0+Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoc3ViRnJhbWVEb21haW4sIHRv
cEZyYW1lRG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgW3N0b3JlLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0gKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTEz
NDMsNyArMTM0Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tCiAgICAgICAgIHNldFVzZXJJ
bnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdHJ1ZSwgV2FsbFRpbWU6Om5vdygpKTsKICAgICB9
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N1YkZyYW1lRG9tYWluID0gc3ViRnJh
bWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4u
aXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0s
IHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4g
PSBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4g
PSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIHN0b3JlLT5jYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4s
IGZyYW1lSUQsIHBhZ2VJRCwgc2NvcGUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBzdG9yZV0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0
Y2goW3dhc0dyYW50ZWQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdh
c0dyYW50ZWQpOwpAQCAtMTY2NCw3ICsxNjY0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4K
ICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmR1
bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoKSkgewpA
QCAtMjAzNiw3ICsyMDM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKIAogICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSBlbnN1cmVQcmV2
YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tB
bmREZWxldGVDb29raWVzRm9yLCB7IH0sIHsgfSwgeyB9IH07Ci0gICAgdXBkYXRlQ29va2llQmxv
Y2tpbmdGb3JEb21haW5zKGRvbWFpbnNUb0Jsb2NrLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OworICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnNUb0Js
b2NrKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5k
ZXIoY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKQpAQCAtMjE3NSw3ICsyMTc1
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29v
a2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXIKICAgICBpZiAoZGVidWdMb2dnaW5nRW5hYmxl
ZCgpICYmICghZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSB8fCAh
ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkpKQogICAgICAgICBkZWJ1
Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoIkFwcGx5aW5nIGNyb3NzLXNpdGUgdHJhY2tpbmcgcmVzdHJp
Y3Rpb25zIiwgZG9tYWluc1RvQmxvY2spOwogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzdG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwg
ZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHN0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29w
eShXVEZNb3ZlKGRvbWFpbnNUb0Jsb2NrKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBzdG9yZS0+Y2FsbFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoZG9tYWluc1RvQmxvY2ss
IFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdG9yZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHN0
b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA2OTAx
ODZmMjE0NjA5YzI5MDgyMmIxNWI3Y2NmNmFkOTY0OTY3MjE5Li44MTFiYmY5NzBlYWM2ZmE3MGRh
YTA5NzJiNTY5ZDVlOWY4MmYxOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVkaXJlY3RlZEZyb21Eb21h
aW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CisgICAgdm9pZCBkdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJikgZmluYWw7
CiAgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50
UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKQEAgLTkwLDcgKzkw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0
IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3REb21haW4mKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Y29uc3QgUmVkaXJlY3REb21haW4mKSBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBo
YXNTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNTZm
NjdiZjA4OGRjNjAwMjIzZjhiZmEzMGZkZjc4NDhlMGJlZWQyOS4uYzhiZWRjMmI1MjEyNzJmNjUw
NzAyOWRlYzNiMTFhZGUzYTNkMzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4m
LCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQg
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CisgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJikgZmluYWw7CiAg
ICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVz
b3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRl
cihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwogICAgIENvb2tpZUFjY2VzcyBjb29r
aWVBY2Nlc3MoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFt
ZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWlu
JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggMjAxZDFhZmRmNzMyZTJiY2YwZjU4ZGEzMTAwMjQwOGJiN2FhYWE2
YS4uMzU0MTQ1ODM4OTA2YjU4MTMyYTllMjBjZWExZGM2Nzk0NmM3YmUxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3NSw5ICsxNzUsOSBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmCiAKICAgICBzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCh0
cnVlKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBtX3N0
b3JlIH0sIGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciA9IGNyb3NzVGhy
ZWFkQ29weShkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
ID0gbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1ZXVlXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgc3RvcmUt
PmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShk
b21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpLCBzaG91bGROb3RpZnlQYWdl
c1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgd29ya1F1
ZXVlXShjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1dpdGhEZWxldGVk
V2Vic2l0ZURhdGEpIG11dGFibGUgewotICAgICAgICAgICAgd29ya1F1ZXVlLT5kaXNwYXRjaChb
ZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dp
dGhEZWxldGVkV2Vic2l0ZURhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSAoKSBtdXRhYmxlIHsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgbV9zdG9yZSB9LCBk
b21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHN0b3Jl
LT5kZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCksIFdURk1vdmUo
ZG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKSwgc2hvdWxkTm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtR
dWV1ZV0oSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zV2l0aERlbGV0ZWRXZWJz
aXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21h
aW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFp
bnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldICgpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjM1LDcgKzIzNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFuZGZh
dGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsCiAKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQgPSBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCwgd29ya1F1ZXVlID0gbV93b3JrUXVldWUsIHN0b3JlID0gUmVmIHsgbV9zdG9yZSB9
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgc3RvcmUtPnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJz
aXRlRGF0YShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBl
cygpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd29y
a1F1ZXVlXSAoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zV2l0aFdlYnNpdGVE
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtRdWV1ZS0+ZGlzcGF0Y2goW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGRvbWFpbnNXaXRoV2Vic2l0ZURhdGEgPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1dpdGhXZWJzaXRlRGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldICgpIG11dGFibGUgeworICAgICAgICAgICAgd29ya1F1ZXVlLT5kaXNwYXRjaChbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZG9tYWluc1dpdGhXZWJzaXRlRGF0YSA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNXaXRoV2Vic2l0ZURhdGEpKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykgewogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zOTYsMTEgKzM5NiwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoYm9vbCB2YWx1ZSkKICAgICAgICAg
bV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2Nr
aW5nRm9yRG9tYWlucyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYg
ZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVCbG9j
a2luZ0ZvckRvbWFpbnMoUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImJiBkb21h
aW5zVG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBtX3N0b3JlIH0sIGRvbWFpbnNUb0Jsb2Nr
ID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtzdG9yZSA9IFJlZiB7IG1fc3RvcmUgfSwgZG9tYWluc1RvQmxvY2sgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9CbG9jaykpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgc3Rv
cmUtPmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGRv
bWFpbnNUb0Jsb2NrLCBbc3RvcmUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1
ZXVlKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
QEAgLTQzOCwxMSArNDM4LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoKQogICAgIG1fYXBwQm91bmREb21haW5zLmNs
ZWFyKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dUZXN0aW5n
RXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpsb2dUZXN0aW5nRXZlbnQoU3RyaW5nJiYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0g
UmVmIHsgbV9zdG9yZSB9LCBldmVudCA9IGV2ZW50Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IFJlZiB7IG1fc3RvcmUgfSwgZXZlbnQgPSBX
VEZNb3ZlKGV2ZW50KS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBzdG9yZS0+bG9nVGVzdGlu
Z0V2ZW50KGV2ZW50KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAppbmRleCBiYzdhZTg4Zjc1ODIzNjQ2ZDRmYTJiYzE5NDI2NzI2NDMxODhjYjQ1
Li41ZjIzYzdkNGMzYjhkOTFkM2NkYzE4ZGQxMmJlOGUwYjI0OWEwZmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpID0gMDsKLSAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoUmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwpAQCAt
MTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWdpc3RlcmVkQXNS
ZWRpcmVjdGluZ1RvKGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJlY3Rl
ZFRvRG9tYWluJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXZh
bGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgPSAwOwpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dFRvKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3REb21haW4mKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3REb21haW4mKSA9IDA7CiAKLSAgICB2b2lkIGxvZ1Rl
c3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChTdHJp
bmcmJik7CiAKICAgICB2b2lkIHNldE1heFN0YXRpc3RpY3NFbnRyaWVzKHNpemVfdCBtYXhpbXVt
RW50cnlDb3VudCk7CiAgICAgdm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5l
VGFyZ2V0Q291bnQpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFw
cEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICNlbmRpZgogICAg
IHZpcnR1YWwgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcihjb25zdCBU
b3BGcmFtZURvbWFpbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBlODc2ZWMz
Nzc3MWZmNDAwY2FhODM0Y2VmYWU5NTYyNTRjYzNmZDkzLi4yZDViMDI3N2IyOWUxMDZmOWNmZDZk
YWQyYWNlMzk1YWI4NzExOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wg
dmFsCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGUoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0g
ZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBX
VEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3Rp
Y3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRQcmV2YWxlbnRSZXNv
dXJjZUZvckRlYnVnTW9kZShkb21haW4pOwogICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTM0NCwxNSArMzQ0LDE1IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0
b3I8UmVzb3VyCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoc3ViRnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgcmV0dXJuIGhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoc3ViRnJhbWVEb21haW4sIHRv
cEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgcmV0dXJuIGhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFt
ZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9
IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
cG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0gV1RGTW92ZShzdWJGcmFtZURvbWFpbiku
aXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbiku
aXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3N0YXRp
c3RpY3NTdG9yZSkgewogICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIG1fc3RhdGlzdGljc1N0b3JlLT5oYXNTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0
b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGhhc1N0
b3JhZ2VBY2Nlc3MpIG11dGFibGUgewogICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaGFzU3RvcmFnZUFjY2Vz
c10oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihoYXNTdG9y
YWdlQWNjZXNzKTsKICAgICAgICAgICAgIH0pOwpAQCAtNDA4LDE3ICs0MDgsMTcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyKGNvbnN0IFIKICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgU3RvcmFnZUFj
Y2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNj
ZXNzUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1
YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAo
c3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246Ok5vLCBzY29wZSwgdG9wRnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3BlLCBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKSwgV1RGTW92ZShzdWJGcmFtZURvbWFpbikgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCiAgICAgaWYgKGlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybiByZXF1ZXN0
U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZy
YW1lSUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybiByZXF1ZXN0U3RvcmFnZUFjY2Vzc0VwaGVtZXJh
bChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1l
SUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAKICAgICBhdXRvIHN0YXR1c0hhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0
ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCks
IGZyYW1lSUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTdG9yYWdlQWNjZXNzU3RhdHVzIHN0
YXR1cykgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CkBAIC00MzIsNyArNDMy
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkKIAogICAgICAgICAgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJh
bWVJRCwgd2ViUGFnZUlELCBzY29wZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAodXNlckRpZEdyYW50QWNjZXNzKQotICAgICAgICAgICAgICAgICAgICBn
cmFudFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlE
LCB3ZWJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBzY29wZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgICAgICBncmFudFN0b3Jh
Z2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4p
LCBmcmFtZUlELCB3ZWJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBz
Y29wZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBzY29wZSwgdG9w
RnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogICAgICAgICAgICAgfTsKQEAgLTQ0NSw3
ICs0NDUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haQogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xh
dGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgp
LCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNjb3BlLCBzdGF0dXNIYW5kbGVyID0gV1RGTW92ZShzdGF0
dXNIYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21h
aW4gPSBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21h
aW4gPSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgd2Vi
UGFnZUlELCBzY29wZSwgc3RhdHVzSGFuZGxlciA9IFdURk1vdmUoc3RhdHVzSGFuZGxlcildKCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKICAgICAgICAgICAg
IHBvc3RUYXNrUmVwbHkoW3N0YXR1c0hhbmRsZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIHN0YXR1c0hhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0
YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CkBAIC01MDQsMTkgKzUwNCwxOSBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckVwaGVtZXJhbChSZQogICAgIH0KIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omdy
YW50U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdp
c3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0
V2FzU2hvd24sIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJh
bWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4g
PSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRX
YXNTaG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0g
V1RGTW92ZShzdWJGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0g
V1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwg
cHJvbXB0V2FzU2hvd24sIHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3Jl
KSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1l
RG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCBwcm9tcHRXYXNTaG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwb3N0
VGFza1JlcGx5KFtzdWJGcmFtZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLmlzb2xh
dGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVEb21haW4pLmlzb2xh
dGVkQ29weSgpLCBwcm9tcHRXYXNTaG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8sIHByb21wdFdhc1No
b3duLCBzY29wZSwgdG9wRnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBtX3N0YXRp
c3RpY3NTdG9yZS0+Z3JhbnRTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBX
VEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwg
c2NvcGUsIFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0
b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBwcm9tcHRXYXNT
aG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWRBY2Nlc3MpIG11dGFibGUgewot
ICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFp
bi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgd2FzR3JhbnRlZEFjY2VzcywgcHJvbXB0V2FzU2hvd24sIHNjb3BlLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgcG9zdFRhc2tSZXBseShbc3ViRnJhbWVEb21haW4gPSBXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgd2FzR3JhbnRlZEFjY2VzcywgcHJvbXB0V2FzU2hvd24s
IHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgd2FzR3JhbnRl
ZEFjY2VzcywgcHJvbXB0V2FzU2hvd24sIHNjb3BlLCB0b3BGcmFtZURvbWFpbiwgc3ViRnJhbWVE
b21haW4gfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC03MTgsMjUgKzcxOCwy
NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFz
a3MoKQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1l
LCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50
aWFsbHlJbml0aWF0ZWRCeVVzZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgdGFyZ2V0RG9tYWluLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHNv
dXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRl
bGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0
ZWRCeVVzZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RU
YXNrKFt0aGlzLCB0YXJnZXREb21haW4gPSB0YXJnZXREb21haW4uaXNvbGF0ZWRDb3B5KCksIHRv
cEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHNvdXJjZURvbWFp
biA9IHNvdXJjZURvbWFpbi5pc29sYXRlZENvcHkoKSwgaXNSZWRpcmVjdCwgaXNNYWluRnJhbWUs
IGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVk
QnlVc2VyXSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHRhcmdldERvbWFpbiA9IFdURk1vdmUodGFy
Z2V0RG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZy
YW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgc291cmNlRG9tYWluID0gV1RGTW92ZShzb3VyY2VE
b21haW4pLmlzb2xhdGVkQ29weSgpLCBpc1JlZGlyZWN0LCBpc01haW5GcmFtZSwgZGVsYXlBZnRl
ck1haW5GcmFtZURvY3VtZW50TG9hZCwgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXJdIHsK
ICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNz
U3RvcmUtPmxvZ0ZyYW1lTmF2aWdhdGlvbih0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBz
b3VyY2VEb21haW4sIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBkZWxheUFmdGVyTWFpbkZyYW1l
RG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcik7CiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAvLyBVc2VyIGludGVyYWN0aW9ucyBuZWVkIHRv
IGJlIGxvZ2dlZCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHRvIHN1cHBvcnQgdGhlIFN0b3JhZ2Ug
QWNjZXNzIEFQSS4KICAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuIGxvZ1Vz
ZXJJbnRlcmFjdGlvbkVwaGVtZXJhbChkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgcmV0dXJuIGxvZ1VzZXJJbnRlcmFjdGlvbkVwaGVtZXJhbChXVEZNb3ZlKGRv
bWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlz
LCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMs
IGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byBpbm5lckNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwb3N0VGFza1JlcGx5
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfTsKQEAgLTc1NiwyNiArNzU2
LDI2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJh
Y3Rpb25FcGhlbWVyYWwoY29uc3QgUmVnaXN0cmFiCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0Nyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUmVnaXN0cmFibGVEb21h
aW4mJiBmcm9tRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoZnJvbURvbWFpbiAhPSB0b0RvbWFpbik7CiAgICAg
Ci0gICAgcG9zdFRhc2soW3RoaXMsIGZyb21Eb21haW4gPSBmcm9tRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCB0b0RvbWFpbiA9IHRvRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNr
KFt0aGlzLCBmcm9tRG9tYWluID0gV1RGTW92ZShmcm9tRG9tYWluKS5pc29sYXRlZENvcHkoKSwg
dG9Eb21haW4gPSBXVEZNb3ZlKHRvRG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmxv
Z0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJvbURvbWFpbiwgdG9Eb21haW4pOwog
ICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoaXNFcGhlbWVyYWwoKSkK
ICAgICAgICAgcmV0dXJuIGNsZWFyVXNlckludGVyYWN0aW9uRXBoZW1lcmFsKGRvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9
IGRvbWFpbi5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0g
V1RGTW92ZShkb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIGlubmVyQ29t
cGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9OwpAQCAtNzk1LDE0ICs3OTUsMTQgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9uRXBo
ZW1lcmFsKGNvbnN0IFJlZ2lzdHIKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoaXNFcGhlbWVyYWwoKSkKICAg
ICAgICAgcmV0dXJuIGhhc0hhZFVzZXJJbnRlcmFjdGlvbkVwaGVtZXJhbChkb21haW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBk
b21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdU
Rk1vdmUoZG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24gPSBtX3N0YXRpc3RpY3NTdG9yZSA/IG1fc3RhdGlzdGljc1N0b3JlLT5oYXNIYWRV
c2VySW50ZXJhY3Rpb24oZG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZykgOiBmYWxz
ZTsKICAgICAgICAgcG9zdFRhc2tSZXBseShbaGFkVXNlckludGVyYWN0aW9uLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFkVXNlckludGVyYWN0aW9uKTsKQEAgLTgxNywyMiAr
ODE3LDIyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2Vy
SW50ZXJhY3Rpb25FcGhlbWVyYWwoY29uc3QgUmVnaXN0CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
bV9kb21haW5zV2l0aEVwaGVtZXJhbFVzZXJJbnRlcmFjdGlvbi5jb250YWlucyhkb21haW4pKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RTZWVuKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RTZWVuKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
LCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIHBv
c3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIHNlY29uZHMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29sYXRlZENv
cHkoKSwgc2Vjb25kcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAg
ICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldExhc3RTZWVuKGRvbWFpbiwgc2Vjb25kcyk7CiAg
ICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0p
OwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0
aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbjEsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
LCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVk
LCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJl
Y29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNG
b3JUZXN0aW5nKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluMSwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbjIsIFNl
Y29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50
LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21h
aW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluMSA9IHRvcEZyYW1lRG9tYWluMS5pc29s
YXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4yID0gdG9wRnJhbWVEb21haW4yLmlzb2xhdGVkQ29w
eSgpLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFS
ZWNvcmRzUmVtb3ZlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gV1RGTW92ZShk
b21haW4pLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbjEgPSBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluMSkuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluMiA9IFdURk1vdmUodG9wRnJh
bWVEb21haW4yKS5pc29sYXRlZENvcHkoKSwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwg
aXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0
YXRpc3RpY3NTdG9yZSkgewogICAgICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdGF0
aXN0aWMoZG9tYWluKTsKICAgICAgICAgICAgIHN0YXRpc3RpYy5sYXN0U2VlbiA9IFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhsYXN0U2Vlbi5zZWNvbmRzKCkpOwpAQCAtODU5LDExICs4NTksMTEg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZUQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWxhdGlvbnNo
aXBPbmx5SW5EYXRhYmFzZU9uY2UoUmVnaXN0cmFibGVEb21haW4mJiBzdWJEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgdG9wRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBwb3N0VGFzayhbdGhpcywgc3ViRG9tYWluID0gc3ViRG9tYWluLmlzb2xhdGVkQ29weSgp
LCB0b3BEb21haW4gPSB0b3BEb21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2so
W3RoaXMsIHN1YkRvbWFpbiA9IFdURk1vdmUoc3ViRG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9w
RG9tYWluID0gV1RGTW92ZSh0b3BEb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIW1fc3RhdGlzdGljc1N0b3JlIHx8ICFpczxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODc3LDQ3ICs4NzcsNDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVsYXRpb25zaGlwT25seUlu
RGF0YWJhc2VPbmNlKGNvbnN0IFJlZ2kKICAgICB9KTsKIH0KICAgICAKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFs
ZW50UmVzb3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENv
cHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gV1RGTW92ZShkb21haW4pLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAg
ICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWluKTsKICAg
ICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShSZWdpc3RyYWJsZURvbWFp
biYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhp
cywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlz
LCBkb21haW4gPSBXVEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoZG9tYWluKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAgICAgCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBwb3N0VGFzayhbdGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byBpbm5lckNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFN0cmluZyYgcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Jlc3VsdCA9IHJlc3VsdC5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwor
ICAgICAgICBhdXRvIGlubmVyQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Jlc3VsdCA9IFdURk1vdmUocmVzdWx0KS5pc29s
YXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH07CiAgICAgICAgIGlmICghbV9z
dGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIGlubmVyQ29tcGxldGlvbkhhbmRsZXIoZW1w
dHlTdHJpbmcoKSk7CisgICAgICAgICAgICBpbm5lckNvbXBsZXRpb25IYW5kbGVyKFN0cmluZyB7
IGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUtPmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdURk1vdmUo
aW5uZXJDb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFs
ZW50UmVzb3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtOTI2LDcgKzkyNiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0g
ZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBX
VEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgaXNQcmV2YWxl
bnRSZXNvdXJjZSA9IG1fc3RhdGlzdGljc1N0b3JlID8gbV9zdGF0aXN0aWNzU3RvcmUtPmlzUHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluKSA6IGZhbHNlOwogICAgICAgICBwb3N0VGFza1JlcGx5KFtp
c1ByZXZhbGVudFJlc291cmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQ
cmV2YWxlbnRSZXNvdXJjZSk7CkBAIC05MzQsMTEgKzkzNCwxMSBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbgogICAgIH0pOwogfQogICAgIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBXVEZNb3ZlKGRvbWFpbiku
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2Ug
PSBtX3N0YXRpc3RpY3NTdG9yZSA/IG1fc3RhdGlzdGljc1N0b3JlLT5pc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZShkb21haW4pIDogZmFsc2U7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2lzVmVyeVBy
ZXZhbGVudFJlc291cmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNWZXJ5
UHJldmFsZW50UmVzb3VyY2UpOwpAQCAtOTQ2LDExICs5NDYsMTEgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lz
dHJhYmxlRG8KICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoUmVnaXN0cmFibGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHN1YnJlc291cmNlRG9tYWluID0gc3VicmVzb3VyY2VE
b21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNv
bGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHN1YnJlc291cmNlRG9tYWluID0g
V1RGTW92ZShzdWJyZXNvdXJjZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWlu
ID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyID0gbV9zdGF0aXN0aWNzU3RvcmUgPyBt
X3N0YXRpc3RpY3NTdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKHN1YnJlc291
cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbikKICAgICAgICAgICAgIDogZmFsc2U7CiAgICAgICAg
IHBvc3RUYXNrUmVwbHkoW2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlciwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTk1
OSwxMSArOTU5LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29uc3QgUmVnaXN0CiAgICAgfSk7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVyZWRBc1N1YkZyYW1l
VW5kZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFp
biA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZy
YW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFt
ZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFt
ZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciA9IG1fc3RhdGlzdGljc1N0b3Jl
ID8gbV9zdGF0aXN0aWNzU3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4pCiAgICAgICAgICAgICA6IGZhbHNlOwogICAgICAgICBw
b3N0VGFza1JlcGx5KFtpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC05NzIsMTEg
Kzk3MiwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWdpc3Rl
cmVkQXNTdWJGcmFtZVVuZGVyKGNvbnN0IFJlZ2lzdHJhYgogICAgIH0pOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1Rv
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjppc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUmVnaXN0cmFibGVEb21haW4m
JiBkb21haW5SZWRpcmVjdGVkRnJvbSwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVj
dGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlz
LCBkb21haW5SZWRpcmVjdGVkRnJvbSA9IGRvbWFpblJlZGlyZWN0ZWRGcm9tLmlzb2xhdGVkQ29w
eSgpLCBkb21haW5SZWRpcmVjdGVkVG8gPSBkb21haW5SZWRpcmVjdGVkVG8uaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpblJlZGlyZWN0ZWRGcm9tID0gV1RGTW92
ZShkb21haW5SZWRpcmVjdGVkRnJvbSkuaXNvbGF0ZWRDb3B5KCksIGRvbWFpblJlZGlyZWN0ZWRU
byA9IFdURk1vdmUoZG9tYWluUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8gPSBtX3N0YXRpc3RpY3NTdG9yZSA/
IG1fc3RhdGlzdGljc1N0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oZG9tYWluUmVk
aXJlY3RlZEZyb20sIGRvbWFpblJlZGlyZWN0ZWRUbykKICAgICAgICAgICAgIDogZmFsc2U7CiAg
ICAgICAgIHBvc3RUYXNrUmVwbHkoW2lzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAg
LTk4NSwzMyArOTg1LDMzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpp
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVnaXN0cmFiCiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclByZXZhbGVudFJlc291
cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9t
YWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21h
aW4gPSBXVEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0
YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclByZXZh
bGVudFJlc291cmNlKGRvbWFpbik7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRo
ZXJlZChSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xh
dGVkQ29weSgpLCB2YWx1ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gV1RGTW92
ZShkb21haW4pLmlzb2xhdGVkQ29weSgpLCB2YWx1ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlz
dGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldEdyYW5kZmF0aGVy
ZWQoZG9tYWluLCB2YWx1ZSk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogICAgIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAg
ICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgZG9tYWluID0gV1RGTW92ZShkb21haW4pLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgewogICAgICAgICBib29sIGlzR3JhbmRGYXRoZXJlZCA9IG1fc3RhdGlzdGljc1N0b3JlID8g
bV9zdGF0aXN0aWNzU3RvcmUtPmlzR3JhbmRmYXRoZXJlZChkb21haW4pCiAgICAgICAgICAgICA6
IGZhbHNlOwogICAgICAgICBwb3N0VGFza1JlcGx5KFtpc0dyYW5kRmF0aGVyZWQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC0x
MDIwLDY2ICsxMDIwLDY2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpp
c0dyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvCiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oUmVnaXN0cmFibGVEb21haW4m
JiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN1YkZyYW1lRG9tYWluID0g
c3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVE
b21haW4uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN1YkZyYW1lRG9t
YWluID0gV1RGTW92ZShzdWJGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9t
YWluID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGlj
c1N0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oc3ViRnJhbWVEb21haW4sIHRv
cEZyYW1lRG9tYWluKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVn
aXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgCi0gICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHN1YnJlc291cmNlRG9tYWluID0gc3VicmVzb3VyY2VEb21haW4u
aXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN1YnJlc291cmNlRG9tYWluID0gV1RGTW92
ZShzdWJyZXNvdXJjZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gV1RG
TW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5z
ZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oc3VicmVzb3VyY2VEb21haW4sIHRvcEZy
YW1lRG9tYWluKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJl
Y3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3VicmVzb3VyY2VEb21haW4sIFJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgc3VicmVzb3VyY2VEb21haW4gPSBzdWJyZXNvdXJjZURvbWFpbi5p
c29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZFRvID0gZG9tYWluUmVkaXJlY3RlZFRvLmlz
b2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdWJyZXNvdXJjZURvbWFpbiA9
IFdURk1vdmUoc3VicmVzb3VyY2VEb21haW4pLmlzb2xhdGVkQ29weSgpLCBkb21haW5SZWRpcmVj
dGVkVG8gPSBXVEZNb3ZlKGRvbWFpblJlZGlyZWN0ZWRUbykuaXNvbGF0ZWRDb3B5KCldKCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3Rh
dGlzdGljc1N0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oc3VicmVzb3VyY2VE
b21haW4sIGRvbWFpblJlZGlyZWN0ZWRUbyk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShSZWdpc3RyYWJsZURvbWFpbiYmIHN1YnJl
c291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc3VicmVzb3VyY2VEb21h
aW4gPSBzdWJyZXNvdXJjZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZEZy
b20gPSBkb21haW5SZWRpcmVjdGVkRnJvbS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAg
ICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgc3VicmVzb3VyY2VEb21haW4gPSBXVEZNb3ZlKHN1YnJlc291cmNlRG9tYWluKS5p
c29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZEZyb20gPSBXVEZNb3ZlKGRvbWFpblJlZGly
ZWN0ZWRGcm9tKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3Rh
dGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RGcm9tKHN1YnJlc291cmNlRG9tYWluLCBkb21haW5SZWRpcmVjdGVk
RnJvbSk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhSZWdp
c3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
blJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgcG9zdFRh
c2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGRvbWFpblJl
ZGlyZWN0ZWRUbyA9IGRvbWFpblJlZGlyZWN0ZWRUby5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxl
IHsKKyAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKS5p
c29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZFRvID0gV1RGTW92ZShkb21haW5SZWRpcmVj
dGVkVG8pLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zdGF0aXN0
aWNzU3RvcmUpCiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+c2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKHRvcEZyYW1lRG9tYWluLCBkb21haW5SZWRpcmVjdGVkVG8pOwogICAgICAg
ICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RGcm9tKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVj
dGVkRnJvbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgcG9zdFRhc2soW3Ro
aXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRvcEZy
YW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGRvbWFpblJlZGlyZWN0
ZWRGcm9tID0gZG9tYWluUmVkaXJlY3RlZEZyb20uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CisgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIHRvcEZyYW1lRG9tYWluID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNv
bGF0ZWRDb3B5KCksIGRvbWFpblJlZGlyZWN0ZWRGcm9tID0gV1RGTW92ZShkb21haW5SZWRpcmVj
dGVkRnJvbSkuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRp
c3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZURvbWFpbiwgZG9tYWluUmVkaXJlY3RlZEZyb20pOwog
ICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTEz
NjksNyArMTM2OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdp
c3RyYWJsZURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWCiAgICAgfSk7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVBbmRSZXN0cmljdFdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRh
dGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFG
b3ImJiBkb21haW5zVG9EZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yLCBib29sIHNob3Vs
ZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgUmVnaXN0cmFi
bGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zVG9EZWxl
dGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKQEAg
LTE0MzEsMTEgKzE0MzEsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlc3VtZSgpCiAgICAgc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCktPnJlc3VtZSgpOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3Rp
Y0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgdW5zaWduZWQgbnVt
YmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBp
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5n
RGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVk
Q29weSgpLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwg
aXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29sYXRlZENvcHko
KSwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+
aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pLCBudW1iZXJP
Zk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpOwogICAgICAgICBwb3N0VGFza1Jl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBjNWNkOWYxNGRmYTI2NzY2ZGUzMTEwMmNkYzQy
NDFjZmE2OTFhNDY2Li5jYWE0OThhM2I5YTUzYzIxM2ViZjc1MTNiMWFlODA0NTE1OTJjOTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xNDgs
NDMgKzE0OCw0MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJj
ZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFN0b3JhZ2VB
Y2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c3VsdCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYs
IFRvcEZyYW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgU3RvcmFnZUFjY2Vzc1Nj
b3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4m
Jik7CiAKLSAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJv
b2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZy
YW1lRG9jdW1lbnRMb2FkLCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKTsKLSAg
ICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0Rv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJ
bnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oTmF2aWdhdGVkVG9Eb21haW4mJiwg
VG9wRnJhbWVEb21haW4mJiwgTmF2aWdhdGVkRnJvbURvbWFpbiYmLCBib29sIGlzUmVkaXJlY3Qs
IGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9h
ZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcik7CisgICAgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oVG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oTmF2aWdhdGVk
RnJvbURvbWFpbiYmLCBOYXZpZ2F0ZWRUb0RvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oVG9wRnJhbWVEb21haW4mJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21h
aW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7
CisgICAgdm9pZCBkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAg
IHZvaWQgcmVnaXN0cmFibGVEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNXaXRo
V2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5
UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYm
KT4mJik7CiAgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW5T
dG9yYWdlU2Vzc2lvbihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgU3RvcmFnZUFjY2Vzc1Njb3BlKTsKLSAgICB2b2lkIGhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oUmVnaXN0cmFibGVE
b21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIGJvb2wgaGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUsICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJik7Ci0g
ICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRl
c3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9w
RnJhbWVEb21haW4xLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4yLCBTZWNv
bmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwg
Ym9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGlzUmVsYXRpb25zaGlwT25seUluRGF0
YWJhc2VPbmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0VmVyeVByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7Ci0gICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
Ci0gICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaXNSZWdpc3Rl
cmVkQXNTdWJyZXNvdXJjZVVuZGVyKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAg
dm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVkaXJlY3RlZEZyb21Eb21h
aW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0R3Jh
bmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSwgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKKyAgICB2b2lkIHNldExhc3RTZWVu
KFJlZ2lzdHJhYmxlRG9tYWluJiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUmVnaXN0cmFibGVEb21haW4m
JiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbjEsIFRvcEZyYW1lRG9tYWluJiYgdG9w
RnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
U2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Ym9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNv
cmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGlzUmVs
YXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRG9tYWlu
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShSZWdpc3RyYWJsZURvbWFp
biYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVyeVByZXZh
bGVudFJlc291cmNlKFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKFJl
Z2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoU3ViUmVzb3VyY2VEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZy
YW1lVW5kZXIoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oUmVkaXJlY3RlZEZyb21Eb21haW4mJiwgUmVkaXJlY3RlZFRvRG9tYWluJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJj
ZShSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0R3JhbmRmYXRoZXJlZChSZWdpc3RyYWJsZURvbWFpbiYmLCBib29sLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFJlZ2lzdHJh
YmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5nVGVzdChib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWluKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWluKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgUmVk
aXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFN1YlJlc291cmNlRG9tYWlu
JiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oU3Vi
UmVzb3VyY2VEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhTdWJSZXNv
dXJjZURvbWFpbiYmLCBSZWRpcmVjdGVkVG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFN1YlJl
c291cmNlRG9tYWluJiYsIFJlZGlyZWN0ZWRGcm9tRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oVG9wRnJh
bWVEb21haW4mJiwgUmVkaXJlY3RlZFRvRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShUb3BGcmFtZURv
bWFpbiYmLCBSZWRpcmVjdGVkRnJvbURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZUZv
ckRvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwNCw3ICsyMDQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UHJldmFs
ZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NT
Y29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXN1bWUoKTsK
ICAgICAKICAgICBib29sIGlzRXBoZW1lcmFsKCkgY29uc3QgeyByZXR1cm4gbV9pc0VwaGVtZXJh
bCA9PSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzOyB9
OwotICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhSZWdpc3RyYWJsZURvbWFp
biYmLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlcklu
dGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJv
b2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNz
aW9uJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCAwMTkwZDg0NmRiZDk1ZTA3MzdhZWU1YzMyNThhZjM1YTk3OWNlNzM2Li4xMjBl
YzQ3MWQzN2I5NjFjMzM0YzA0ODk3OWU1Y2YyMzU3NThlZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtNDA3LDEwICs0MDcsMTAgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRl
UXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoQ2xpZW50T3JpZ2luJiYgb3JpZ2luKQog
ewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKCkpKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLnJlc2V0
UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhvcmlnaW4pOworICAgICAgICBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpLnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVz
dGluZyhXVEZNb3ZlKG9yaWdpbikpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0xMDAwLDcg
KzEwMDAsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2Jz
VG9UZW1wb3JhcnlGaWxlc0ZvckluZGV4ZWREQihjb25zdAogICAgICAgICAgICAgZmlsZS0+cmV2
b2tlRmlsZUFjY2VzcygpOwogCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nl
c3Npb24oKSkKLSAgICAgICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkucmVnaXN0ZXJU
ZW1wb3JhcnlCbG9iRmlsZVBhdGhzKG1fY29ubmVjdGlvbiwgZmlsZVBhdGhzKTsKKyAgICAgICAg
ICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkucmVnaXN0ZXJUZW1wb3JhcnlCbG9iRmlsZVBh
dGhzKG1fY29ubmVjdGlvbiwgV1RGTW92ZShmaWxlUGF0aHMpKTsKIAogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGZpbGVQYXRocykpOwogICAgIH0pOwpAQCAtMTAzNSwxMSArMTAz
NSwxMSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5y
ZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBbXSB7IH0pOworICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nVXNlckludGVyYWN0aW9uKFdURk1vdmUoZG9tYWlu
KSwgW10geyB9KTsKICAgICB9CiB9CiAKQEAgLTEwNTgsMTEgKzEwNTgsMTEgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQo
VmVjdG9yPFJlc291cmMKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3Ry
YWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5oYXNTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwg
ZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJh
bWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbigpLT5oYXNDb29raWVzKHN1YkZyYW1l
RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMDczLDExICsxMDczLDEx
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3Mo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1CiAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0IHJlc3VsdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgcmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lv
bigpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29y
a1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRv
cEZyYW1lRG9tYWluLCBmcmFtZUlELCB3ZWJQYWdlSUQsIHdlYlBhZ2VQcm94eUlELCBzY29wZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdU
Rk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCB3ZWJQYWdlSUQsIHdlYlBhZ2VQcm94eUlE
LCBzY29wZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDYwZDU2Nzc4
YTY0ZjM3NGYwYWU5NGFkNmIwOTU5OTg0NWRmMGMzN2IuLjIzOWQ3ZWFjMWRhNjg0MWNiNWQ3ZmZj
MTA3MTBkYTE0NWUwZDA2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTI1OCw3ICsy
NTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlU29ja2V0U3RyZWFtKFVSTCYmLCBTdHJp
bmcgY2FjaGVQYXJ0aXRpb24sIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIpOwogCiAgICAg
dm9pZCBjcmVhdGVTb2NrZXRDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXIsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGJvb2wg
aGFkTWFpbkZyYW1lTWFpblJlc291cmNlUHJpdmF0ZVJlbGF5ZWQpOwotICAgIHZvaWQgdXBkYXRl
UXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJik7CisgICAgdm9pZCB1cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJik7CiAKICAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtl
clNlcnZlckNvbm5lY3Rpb24oKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25u
ZWN0aW9uKCk7CkBAIC0zMTAsMTAgKzMxMCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShJTlRF
TExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwogCi0gICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKTsKKyAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmKTsK
ICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdl
QWNjZXNzUmVzdWx0KT4mJik7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxl
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdl
QWNjZXNzUmVzdWx0KT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdlNGM1OTNlYTgzYjFl
YTkwZDc4YzYwOGI3NmQ5ZDQxMDgyOTE5NDIuLjAxYTAzOTgzYzYyNWU5NWM5NjczMmUyMzY4YTIz
MGQ2YjBmZTlmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC01MzQsMTEgKzUzNCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQgc2Vz
cwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omlz
R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc0dyYW5kZmF0aGVyZWQo
ZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5pc0dyYW5kZmF0aGVyZWQoV1RGTW92ZShkb21haW4pLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UgewpAQCAtNTQ3LDExICs1NDcsMTEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omlz
UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFs
ZW50UmVzb3VyY2UoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1ByZXZhbGVudFJlc291cmNlKFdURk1vdmUo
ZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfSBlbHNlIHsKQEAgLTU2MCwx
MSArNTYwLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyCiAgICAgfQogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjppc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
c1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPmlzVmVyeVByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoV1RGTW92ZShkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKICAgICB9IGVsc2UgewpAQCAtNTgwLDExICs1ODAsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdGQKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJs
ZURvbWFpbiYmIGRvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmVkKGRvbWFpbiwg
aXNHcmFuZGZhdGhlcmVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRHcmFuZGZhdGhlcmVkKFdURk1vdmUoZG9tYWlu
KSwgaXNHcmFuZGZhdGhlcmVkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKQEAg
LTU5MywxMSArNTkzLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEdyYW5kZmF0aGVyZWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsCiAgICAgfQogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVE
b21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFByZXZhbGVu
dFJlc291cmNlKFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxz
ZSB7CkBAIC02MDYsMTEgKzYwNiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdAogICAgIH0K
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3Vy
Y2VGb3JEZWJ1Z01vZGUoZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZShXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2Ug
ewpAQCAtNjE5LDExICs2MTksMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50
UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIH0KIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoZG9tYWluLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoV1RGTW92ZShkb21haW4pLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKQEAgLTYzMiwxMSArNjMyLDExIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclByZXZh
bGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJQcmV2YWxlbnRSZXNv
dXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoV1RGTW92ZShkb21h
aW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKQEAgLTc1NCwxMSArNzU0LDEx
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
IGVsc2UgewpAQCAtNzY3LDExICs3NjcsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY28KICAg
ICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdU
byhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW5SZWRpcmVjdGVkRnJvbSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0
ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluUmVkaXJlY3RlZEZy
b20sIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUmVnaXN0ZXJlZEFzUmVk
aXJlY3RpbmdUbyhkb21haW5SZWRpcmVjdGVkRnJvbSwgZG9tYWluUmVkaXJlY3RlZFRvLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV1RGTW92ZShkb21haW5SZWRpcmVjdGVk
RnJvbSksIFdURk1vdmUoZG9tYWluUmVkaXJlY3RlZFRvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CiAgICAgfSBlbHNlIHsKQEAgLTc4MCwxMSArNzgwLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0CiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVy
KHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9t
YWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgfSBlbHNlIHsKQEAgLTc5MywxMSAr
NzkzLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3VicmVzb3VyY2VEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihzdWJyZXNvdXJjZURv
bWFpbiwgdG9wRnJhbWVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbihXVEZNb3ZlKHN1YnJlc291cmNlRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFp
biksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtODA2LDExICs4MDYsMTEg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlu
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJyZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFi
bGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5S
ZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oc3VicmVzb3VyY2VEb21haW4sIGRv
bWFpblJlZGlyZWN0ZWRUbywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KFdURk1vdmUoc3VicmVzb3VyY2VEb21haW4pLCBXVEZNb3ZlKGRvbWFpblJlZGlyZWN0ZWRUbyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtODE5LDExICs4MTksMTEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY28KICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0
cmFibGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiBkb21h
aW5SZWRpcmVjdGVkRnJvbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKHN1YnJlc291cmNlRG9t
YWluLCBkb21haW5SZWRpcmVjdGVkRnJvbSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdEZyb20oV1RGTW92ZShzdWJyZXNvdXJjZURvbWFpbiksIFdURk1vdmUoZG9tYWluUmVk
aXJlY3RlZEZyb20pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKQEAgLTgzMiwx
MSArODMyLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICB9CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJyZXNvdXJjZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBz
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoc3VicmVzb3VyY2VE
b21haW4sIHRvcEZyYW1lRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNl
VW5kZXIoV1RGTW92ZShzdWJyZXNvdXJjZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4p
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UgewpAQCAtODQ1LDExICs4NDUs
MTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY28KICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVjdGVk
VG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8odG9wRnJhbWVEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRU
bywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdURk1vdmUodG9wRnJhbWVE
b21haW4pLCBXVEZNb3ZlKGRvbWFpblJlZGlyZWN0ZWRUbyksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9IGVsc2UgewpAQCAtODU4LDExICs4NTgsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJl
Y3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKHRvcEZyYW1lRG9tYWluLCBkb21haW5SZWRpcmVjdGVkRnJvbSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIFdURk1v
dmUoZG9tYWluUmVkaXJlY3RlZEZyb20pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNl
IHsKQEAgLTg3MiwxMSArODcyLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiB9CiAgICAg
CiAgICAgCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIFNlY29uZHMgc2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgU2Vjb25kcyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0TGFzdFNlZW4oZG9tYWluLCBzZWNv
bmRzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5zZXRMYXN0U2VlbihXVEZNb3ZlKGRvbWFpbiksIHNlY29uZHMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtODk4LDExICs4OTgsMTEgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgaW50IGRvbWEKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Om1lcmdl
U3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbjEsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMg
bGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29s
IGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFp
bjEsIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVu
LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQ
cmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPm1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhk
b21haW4sIHRvcEZyYW1lRG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFkVXNl
ckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQs
IGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZSh0b3BG
cmFtZURvbWFpbjEpLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluMiksIGxhc3RTZWVuLCBoYWRVc2Vy
SW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwg
aXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKQEAgLTkxMSwxMSArOTExLDExIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjppbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5
c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5zZXJ0
RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFz
c2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoZG9tYWluLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlv
biwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MtPmluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFdURk1vdmUoZG9tYWluKSwg
bnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiAgICAgfSBlbHNlIHsKQEAgLTkzNCwyMCArOTM0LDIwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dGcmFtZU5hdmln
YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVjdCwgYm9v
bCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCBi
b29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVE
b21haW4mJiB0YXJnZXREb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4s
IFJlZ2lzdHJhYmxlRG9tYWluJiYgc291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3QsIGJvb2wg
aXNNYWluRnJhbWUsIFNlY29uZHMgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZCwgYm9v
bCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0g
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dGcmFtZU5hdmlnYXRpb24odGFy
Z2V0RG9tYWluLCB0b3BGcmFtZURvbWFpbiwgc291cmNlRG9tYWluLCBpc1JlZGlyZWN0LCBpc01h
aW5GcmFtZSwgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZCwgd2FzUG90ZW50aWFsbHlJ
bml0aWF0ZWRCeVVzZXIpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9n
RnJhbWVOYXZpZ2F0aW9uKFdURk1vdmUodGFyZ2V0RG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURv
bWFpbiksIFdURk1vdmUoc291cmNlRG9tYWluKSwgaXNSZWRpcmVjdCwgaXNNYWluRnJhbWUsIGRl
bGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlV
c2VyKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ1Vz
ZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+bG9nVXNlckludGVyYWN0aW9uKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nVXNlckludGVyYWN0aW9u
KFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC05
NTYsMTEgKzk1NiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYQogICAgIH0KIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhh
ZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihkb21haW4sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwog
ICAgIH0gZWxzZSB7CkBAIC05NjksMTEgKzk2OSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpo
YWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWxhdGlvbnNoaXBPbmx5SW5E
YXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgc3ViRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkRvbWFpbiwgUmVnaXN0cmFibGVE
b21haW4mJiB0b3BEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2Uoc3ViRG9tYWlu
LCB0b3BEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFdU
Rk1vdmUoc3ViRG9tYWluKSwgV1RGTW92ZSh0b3BEb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKICAgICB9IGVsc2UgewpAQCAtOTgyLDExICs5ODIsMTEgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oZG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5jbGVhclVzZXJJbnRlcmFjdGlvbihXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6
OlNlc3Npb25JRCBzZXMKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJDb3JlOjpDcm9z
c1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVy
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1Np
dGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJh
YmxlRG9tYWluJiYgZnJvbURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b0RvbWFpbiwgT3B0
aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5h
dmlnYXRpb25EYXRhVHJhbnNmZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsKICAgICBBU1NFUlQoIW5h
dmlnYXRpb25EYXRhVHJhbnNmZXIuaXNFbXB0eSgpKTsKIApAQCAtMTE2MiwxNyArMTE2MiwxNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFu
c2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgIGlmIChuYXZpZ2F0aW9uRGF0YVRyYW5zZmVy
LmNvbnRhaW5zKENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc6OkRlc3RpbmF0
aW9uTGlua0RlY29yYXRpb24pKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihmcm9tRG9tYWluLCB0b0RvbWFpbiwgW10geyB9KTsKKyAgICAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uKFdURk1vdmUoZnJvbURvbWFpbiksIFdURk1vdmUodG9Eb21haW4pLCBbXSB7IH0pOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZnJvbURvbWFpbiwgUmVn
aXN0cmFibGVEb21haW4mJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJv
bURvbWFpbiwgdG9Eb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb24oV1RGTW92ZShmcm9tRG9tYWluKSwgV1RGTW92ZSh0b0RvbWFpbiksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtMTY3NCwxNCArMTY3NCwxNCBAQCBzdGF0aWMgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21h
aW5zKGNvbnN0IEhhcwogICAgIHJldHVybiBvcmlnaW5zRGVsZXRlZDsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHdlYnNpdGVEYXRhVHlwZXMsIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdl
YnNpdGVEYXRhRm9yJiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgUmVnaXN0cmFibGVEb21h
aW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3Vs
ZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6RG9Ob3RDcmVh
dGVQcm9jZXNzZXM7CiAKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewotICAgICAgICBl
eHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICBleHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAg
ICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAg
ICAgICAgewogICAgICAgICB9CkBAIC0xNjg5LDIwICsxNjg5LDIwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzCiAgICAgICAgIH5DYWxsYmFja0FnZ3JlZ2F0b3IoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWlucyA9IFdURk1vdmUobV9kb21haW5zKV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZG9tYWlucyk7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5zKSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiBtX2NvbXBsZXRp
b25IYW5kbGVyOworICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+JiYpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnM7CiAgICAgfTsKICAgICAKLSAgICBhdXRvIGNhbGxi
YWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKCpuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFt0aGlzLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzaG91bGROb3Rp
ZnlQYWdlXSAoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNXaXRoRGF0
YSkgbXV0YWJsZSB7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZigqbmV3
IENhbGxiYWNrQWdncmVnYXRvcihbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgc2hvdWxkTm90aWZ5UGFnZV0gKEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiYgZG9tYWluc1dpdGhEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHNob3VsZE5v
dGlmeVBhZ2UpCiAgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOb3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9y
UmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKSwgMCk7CiAgICAgICAgIAotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGRvbWFpbnNXaXRoRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0
aERhdGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRvbWFp
bnNXaXRoRGF0YSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWluc1dpdGhEYXRhID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZG9tYWluc1dpdGhEYXRhKSldICgpIG11dGFibGUgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkb21haW5zV2l0aERhdGEpKTsK
ICAgICAgICAgfSk7CiAgICAgfSkpOwogCkBAIC0xODM3LDcgKzE4MzcsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFJlZ2lzdHJhYgogICAgIGVsc2UKICAgICAgICAgdG9EZWxldGVGb3IuZG9tYWluc1RvRGVs
ZXRlQWxsQnV0SHR0cE9ubHlDb29raWVzRm9yLmFwcGVuZChkb21haW4pOwogCi0gICAgZGVsZXRl
QW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhzZXNzaW9uSUQsIGNv
b2tpZVR5cGUsIFdURk1vdmUodG9EZWxldGVGb3IpLCB0cnVlLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiBkb21haW5zRGVsZXRlZEZvcikgbXV0YWJsZSB7CisgICAgZGVsZXRlQW5kUmVzdHJp
Y3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhzZXNzaW9uSUQsIGNvb2tpZVR5cGUs
IFdURk1vdmUodG9EZWxldGVGb3IpLCB0cnVlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlu
c0RlbGV0ZWRGb3IpIG11dGFibGUgewogICAgICAgICBVTlVTRURfUEFSQU0oZG9tYWluc0RlbGV0
ZWRGb3IpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwpAQCAtMTg4MCw3
ICsxODgwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICAgICAgaWYgKHNob3VsZE5v
dGlmeVBhZ2UpCiAgICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdp
c3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpLCAwKTsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGRvbWFpbnNXaXRoRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aERhdGEpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW5zV2l0aERhdGEgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zV2l0aERhdGEpKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFpbnNXaXRoRGF0YSkpOwogICAg
ICAgICB9KTsKICAgICB9KSk7CkBAIC0yMjEyLDEwICsyMjEyLDEwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyU3RvcmFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENsaWVu
dE9yaWdpbiYmIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQogewogICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgc2Vzc2lvbi0+c3Rv
cmFnZU1hbmFnZXIoKS5kaWRJbmNyZWFzZVF1b3RhKG9yaWdpbiwgaWRlbnRpZmllciwgbmV3UXVv
dGEpOworICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLmRpZEluY3JlYXNlUXVvdGEo
V1RGTW92ZShvcmlnaW4pLCBpZGVudGlmaWVyLCBuZXdRdW90YSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIG9sZE5hbWUsIGNvbnN0IFVSTCYgbmV3TmFtZSwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC0yMjI4LDcgKzIyMjgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpyZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkubW92
ZURhdGEoZGF0YVR5cGVzLCBvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7
CisgICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkubW92ZURhdGEoZGF0YVR5cGVzLCBX
VEZNb3ZlKG9sZE9yaWdpbiksIFdURk1vdmUobmV3T3JpZ2luKSwgW2FnZ3JlZ2F0b3JdIHsgfSk7
CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMDBiZTcxZGQzMzljMGI4OTU0YTMzODkx
NzYzMzE5ZTI1Y2I3ZGE2Yi4uNDJjZTA4YmYzNTBjZmNiYTNiNWE3NTIyOTMyNjlhZTc3OGI5NTE3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtMjAxLDMxICsyMDEsMzEgQEAgcHVibGljOgogICAgIHZvaWQgYWRkV2Vic2l0ZURhdGFTdG9y
ZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIAogI2lmIEVOQUJMRShJTlRFTExJR0VO
VF9UUkFDS0lOR19QUkVWRU5USU9OKQotICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURv
bWFpbnMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmLCBib29sIHNob3Vs
ZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKT4mJik7CisgICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6
U2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIFJlZ2lz
dHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBk
ZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVEb21haW5zVG9E
ZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsK
ICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBSZWdpc3Ry
YWJsZURvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CiAgICAgdm9pZCB1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
LSAgICB2b2lkIGlzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgaXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGlzUHJldmFsZW50
UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFM
OjpTZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGlzR3JhbmRmYXRo
ZXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGlzUmVnaXN0ZXJl
ZEFzUmVkaXJlY3RpbmdUbyhQQUw6OlNlc3Npb25JRCwgUmVkaXJlY3RlZEZyb21Eb21haW4mJiwg
UmVkaXJlY3RlZFRvRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBBTDo6U2Vzc2lvbklELCBTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6OlNl
c3Npb25JRCwgU3ViUmVzb3VyY2VEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKFBBTDo6
U2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE1heFN0YXRpc3RpY3NFbnRy
aWVzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgUmVnaXN0
cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNl
dFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBSZWdpc3RyYWJs
ZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVy
eVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVzRG93
blRvKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwcnVuZVRhcmdldENvdW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgaGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwotICAgIHZvaWQgaXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b3BEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworICAgIHZvaWQgaGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBSZWdpc3Ry
YWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IGlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFBBTDo6U2Vzc2lvbklELCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHN1YkRvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaGFzTG9jYWxTdG9yYWdl
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9t
YWlucyk+JiYpOwotICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2
aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSwgU2Vj
b25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCBib29sIHdhc1BvdGVudGlhbGx5
SW5pdGlhdGVkQnlVc2VyKTsKLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKFBBTDo6U2Vzc2lvbklELCBOYXZpZ2F0ZWRU
b0RvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiYsIGJvb2wg
aXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1l
RG9jdW1lbnRMb2FkLCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKTsKKyAgICB2
b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgVG9wRnJhbWVEb21haW4mJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMzUsMTAgKzIzNSwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1Rp
bWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIFNlY29uZHMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkb21haW5JREV4aXN0c0lu
RGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQsIGludCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
IHRvcEZyYW1lRG9tYWluMSwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMiwg
U2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxl
bnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlz
dGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1
bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0
aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQ
cmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBtZXJnZVN0
YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4xLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29u
ZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wg
aXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1Jl
bW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBpbnNlcnRFeHBp
cmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4m
JiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29s
IGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBTZWNv
bmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldElzUnVubmluZ1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjQ3LDE2ICsyNDcsMTYgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwg
Ym9vbCBkZWJ1Z01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJmQpOwogICAgIHZvaWQg
aXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRXBoZW1lcmFsKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKICAgICB2b2lkIHNldFNob3VsZENsYXNz
aWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBib29s
IHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3Qg
UmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFN1YmZyYW1lVW5kZXJUb3BGcmFt
ZURvbWFpbihQQUw6OlNlc3Npb25JRCwgU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCwgU3ViUmVzb3VyY2VEb21haW4mJiwg
VG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwgU3ViUmVzb3Vy
Y2VEb21haW4mJiwgUmVkaXJlY3RlZFRvRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNl
c3Npb25JRCwgU3ViUmVzb3VyY2VEb21haW4mJiwgUmVkaXJlY3RlZEZyb21Eb21haW4mJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50
ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJl
ZGlyZWN0ZWRGcm9tRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwgVG9wRnJhbWVE
b21haW4mJiwgUmVkaXJlY3RlZFRvRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25J
RCwgVG9wRnJhbWVEb21haW4mJiwgUmVkaXJlY3RlZEZyb21Eb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hv
dWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFU
cmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6
OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0Rv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRpZENvbW1pdENy
b3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBSZWdpc3RyYWJsZURv
bWFpbiYmIGZyb21Eb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9Eb21haW4sIE9wdGlvblNl
dDxXZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgc2V0
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IFJlZ2lzdHJhYmxlRG9tYWluJiYgZnJvbURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b0Rv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NT
aXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgY2xvc2VJVFBEYXRhYmFz
ZShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTI5MSw3
ICsyOTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhclN0b3JhZ2UoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBkaWRJ
bmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IG5ld1F1b3RhKTsKKyAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQsIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIHJlbmFtZU9yaWdpbklu
V2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggOGE1ZDU4ODZhMmUzMjRhMmIxOGJlMjYzZjZjYzE0
NDRlN2I2N2UwNi4uNGQwOWMzYmI0MjljNGMwZjM0NDhjOTk2ZGVhOTkxZGM0ZjgyZjY4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAg
LTI2MCw3ICsyNjAsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZSkKICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKHRydWUsIFtdIHsgfSk7CiAg
ICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIGJlIGZvcndhcmRlZCBzaW5jZSBkZWJ1ZyBtb2RlIG1h
eSBiZSBlbmFibGVkIGF0IHJ1bnRpbWUuCiAgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUobV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UsIFtdIHsgfSk7CisgICAgICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoUmVnaXN0cmFibGVEb21haW4geyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSB9LCBbXSB7IH0pOwogICAgIGZvcndhcmRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2V0dGluZ3MoKTsKIH0KIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b246OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
RnJvbVdlYlByb2Nlc3MobWVzc2FnZSwgZGVzY3JpcHRpb24sIHZhbHVlLCBzaWduaWZpY2FudEZp
Z3VyZXMsIHNob3VsZFNhbXBsZSksIDApOwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpkZWxl
dGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJl
c3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmRlbGV0ZUFuZFJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJz
aXRlRGF0YUZvciYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSkgewogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMuZG9tYWluc1Rv
RW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGYzZTAyZGU5YTI1MzlmYzIzZjcxNGYxMDBiZTEwZjc1
ZWY3MTljMDMuLmZmZjg3ZTg0ZTA2Njg5MzBlNjExYmMzNWMyNGY3OGYzMjI1NDg3ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTEyMyw3
ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChib29sKTsKICAgICBib29sIGlzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBj
b25zdDsKICAgICB2b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKTsK
LSAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFp
bnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRl
T3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9tYWlu
c1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiYmKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4m
Jik7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIHZhbHVlLCB1bnNp
Z25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgYm9v
bCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHAKaW5kZXggMDk0Mjc5Njg3N2FiMzk1YjM5OThmNGE4ODM5YzVhODNj
OTNlYzA5Ny4uMmE4MmExMTVhMWI5YmFkNThiYTg2OGU1NWU1NzdjZjlmNTczZDE0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmNwcApAQCAtNjY3LDEyICs2NjcsMTIgQEAgdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW8KICAgICBzdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlcjo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJGb3JSZWdpc3RyYWJsZURv
bWFpbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICBzdG9yZSgpLmNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmNsZWFyRXhwaXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaAppbmRleCAxMTc4MmQyMzQwZTUyNTVmNjY1
YzIxYzcwOTYzNzc1MWZmMWJmOTQ0Li42NTI4Y2IwMzA3NDI2NDFlNmNjY2E3ZGEwOTg4NjM5NzQ0
ODE0ZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIGhhbmRsZUF0dHJpYnV0aW9u
KEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGlyZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHlVUkwsIGNvbnN0IEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciYpIGZpbmFsOwogICAgIHZv
aWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGNs
ZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJs
ZURvbWFpbihSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOwogICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2Fj
eVN0b3JhZ2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFsOwogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVk
KGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaAppbmRleCAxNDc5YWYzZGE4ZjFlZDUy
YWVkZGE4NDE3YTc5NTk0MTk4NzQ0ZmJmLi4wNDYwZTQyNzNiMGNiMzdhOWE3ZmFkOTE1M2I0NmM0
ODFmZGNjMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVVuYXR0cmlidXRlZChQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0
YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3QgQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9t
YWluKFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVn
YWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z01vZGVJ
c0VuYWJsZWQoYm9vbCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IDNjZjJhZmMxNGE2Y2MxODZjZDY0MWU1MmRhMGI2MmUzNGNlMjc5NjYuLmIxMzRhYjNmYWM2NTM2
OTJkMGI3NTg2MGNlNTBiOTY5ZjliZTZhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHku
Y3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgTWFuYWdlclByb3h5OjpjbGVhcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgc2VuZE1lc3NhZ2VXaXRo
UmVwbHk8TWVzc2FnZVR5cGU6OkNsZWFyPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKLXZvaWQgTWFuYWdlclByb3h5OjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWFuYWdlclByb3h5OjpjbGVhckZvclJlZ2lz
dHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2VuZE1lc3Nh
Z2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4+KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94
eS5oCmluZGV4IGQ0YTI3OWFiOWUxMjIyOGRlZTA3MDViOGZkODJlMmY4ZTUzOWEzYzguLjQ0MjVi
ZWZhOGJkZDJmMTc2YTMxODkwM2M3MTBjYzk5OWI0NjIyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVVbmF0dHJp
YnV0ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIGhhbmRsZUF0dHJpYnV0aW9uKFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERv
bWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXImKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgZmluYWw7Ci0gICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2
b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UeXBlKSBmaW5hbDsKICAgICB2b2lkIHNldERlYnVnTW9kZUlzRW5hYmxlZChib29s
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKaW5kZXggYmI0NGNkZjE4YWE4Mzg2OTNjNDJjODMw
ZDFjMDgyYWQ1ZWJhZDU0OC4uOTZmYzNlYWIzNzJjMThjZGU1ZDE3OGNlZjg2NmIzZjkzMTc3YTAx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmUuY3BwCkBAIC05NCw5ICs5NCw5IEBAIHZvaWQgU3RvcmU6Om1hcmtB
bGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3Rpbmco
KQogICAgIH0pOwogfQogCi12b2lkIFN0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYm
IHNvdXJjZVNpdGUsIGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYmIGRlc3RpbmF0aW9uU2l0ZSwgY29uc3QgQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyJiBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OklzUnVu
bmluZ0xheW91dFRlc3QgaXNSdW5uaW5nVGVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNl
Y29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1Z0luZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFN0b3JlOjphdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYmIHNvdXJjZVNpdGUsIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYmIGRl
c3RpbmF0aW9uU2l0ZSwgY29uc3QgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyJiBhcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OklzUnVubmluZ0xheW91dFRlc3QgaXNSdW5uaW5nVGVz
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1
Z0luZm8mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcG9zdFRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzb3VyY2VTaXRlID0gc291cmNlU2l0ZS5pc29s
YXRlZENvcHkoKSwgZGVzdGluYXRpb25TaXRlID0gZGVzdGluYXRpb25TaXRlLmlzb2xhdGVkQ29w
eSgpLCBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZNb3ZlKGF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBpc1J1bm5pbmdUZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNvdXJjZVNpdGUgPSBXVEZNb3Zl
KHNvdXJjZVNpdGUpLmlzb2xhdGVkQ29weSgpLCBkZXN0aW5hdGlvblNpdGUgPSBXVEZNb3ZlKGRl
c3RpbmF0aW9uU2l0ZSkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
ciA9IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSA9IFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGlzUnVubmlu
Z1Rlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgewogICAgICAgICBpZiAoIW1fZGF0YWJhc2UpIHsKICAgICAgICAgICAgIHJldHVy
biBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQsIHsgfSk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTdG9yZTo6YXR0cmli
dXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW0KIAogICAgICAgICBhdXRvIFtzZWNvbmRzLCBkZWJ1Z0luZm9dID0gbV9kYXRhYmFzZS0+
YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRpb25T
aXRlLCBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIsIFdURk1vdmUoYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSksIGlzUnVubmluZ1Rlc3QpOwogCi0gICAgICAgIHBvc3RUYXNrUmVwbHkoW3NlY29u
ZHMgPSBXVEZNb3ZlKHNlY29uZHMpLCBkZWJ1Z0luZm8gPSBkZWJ1Z0luZm8uaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgICAgIHBvc3RUYXNrUmVwbHkoW3NlY29uZHMgPSBXVEZNb3ZlKHNlY29uZHMp
LCBkZWJ1Z0luZm8gPSBXVEZNb3ZlKGRlYnVnSW5mbykuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlY29uZHMpLCBXVEZNb3ZlKGRlYnVn
SW5mbykpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFN0
b3JlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cgogICAgICAgICBTdHJpbmcgcmVzdWx0OwogICAgICAgICBpZiAobV9k
YXRhYmFzZSkKICAgICAgICAgICAgIHJlc3VsdCA9IG1fZGF0YWJhc2UtPnByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKCk7Ci0gICAgICAgIHBvc3RUYXNrUmVwbHkoW3Jl
c3VsdCA9IHJlc3VsdC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcG9zdFRhc2tSZXBseShb
cmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xNTMs
OSArMTUzLDkgQEAgdm9pZCBTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkgKICAgICB9KTsKIH0KIAotdm9pZCBT
dG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU3RvcmU6OmNsZWFyUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRvbWFpbiA9IFdURk1vdmUoZG9tYWlu
KS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2RhdGFiYXNlKQogICAgICAgICAg
ICAgbV9kYXRhYmFzZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChkb21haW4pOwogICAg
ICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTE3Miw3
ICsxNzIsNyBAQCB2b2lkIFN0b3JlOjpjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCgpCiAKIHZvaWQgU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb25Ub0NsZWFyLCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9y
dEVuZHBvaW50KQogewotICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgYXR0cmlidXRpb25Ub0NsZWFyID0gYXR0cmlidXRpb25Ub0NsZWFyLmlzb2xhdGVk
Q29weSgpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50XSgpIG11dGFibGUgeworICAgIHBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYXR0cmlidXRpb25Ub0Ns
ZWFyID0gV1RGTW92ZShhdHRyaWJ1dGlvblRvQ2xlYXIpLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50XSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9kYXRhYmFzZSkK
ICAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNsZWFyU2VudEF0dHJpYnV0aW9uKFdURk1vdmUoYXR0
cmlidXRpb25Ub0NsZWFyKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yZS5oCmluZGV4IDdhYzVjMWJmZmI3YjIzN2NhY2Y4ZmZmMDcxMTIzM2IwZGM0YjFiMmIu
LjNhNGVjYzY2YmM3ZTdjODY3YmI1NmNiOTlkNTVhNmI3YzljOWU4NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5o
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBwcm9jZXNzRGlkUmVz
dW1lKCk7CiAKICAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBhdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSYmLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmJiwgY29uc3QgQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OklzUnVubmluZ0xheW91dFRlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRz
VW50aWxTZW5kRGF0YT4mJiwgRGVidWdJbmZvJiYpPiYmKTsKKyAgICB2b2lkIGF0dHJpYnV0ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpT
b3VyY2VTaXRlJiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uU2l0ZSYmLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImLCBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYm
LCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6SXNSdW5uaW5nTGF5b3V0VGVzdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1Z0lu
Zm8mJik+JiYpOwogCiAgICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0OwogICAgIHZv
aWQgbWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9y
VGVzdGluZygpOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhbGxBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYpPiYmKTsKICAgICB2b2lkIGNsZWFy
RXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCk7CiAgICAgdm9pZCBjbGVhclByaXZhdGVD
bGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBj
bGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWlu
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uVG9DbGVhciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwogCiAgICAgdm9pZCBjbG9zZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5oCmluZGV4IDg2YTVlZGU0YjM2ODhkYjI2MzYzNDFmMmRkZGNhZGYyZTFiODcz
NWQuLjViYzEzZWMzNmY1ZDJhOTZmYzYxZTcwMjJjMWM4YTFlNWM3OTFhNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTU3LDcgKzU3LDggQEAgcHVibGlj
OgogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE9yaWdpbkRldGFpbHM+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICAgICAgT3JpZ2luRGV0
YWlscyBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IG9yaWdpbklkZW50aWZpZXIuaXNv
bGF0ZWRDb3B5KCksIGNyZWF0aW9uVGltZSwgbW9kaWZpY2F0aW9uVGltZSB9OyB9CisgICAgICAg
IE9yaWdpbkRldGFpbHMgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJiB7IHJldHVybiB7IG9yaWdpbklk
ZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNyZWF0aW9uVGltZSwgbW9kaWZpY2F0aW9uVGltZSB9
OyB9CisgICAgICAgIE9yaWdpbkRldGFpbHMgaXNvbGF0ZWRDb3B5KCkgJiYgeyByZXR1cm4geyBX
VEZNb3ZlKG9yaWdpbklkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpLCBjcmVhdGlvblRpbWUsIG1v
ZGlmaWNhdGlvblRpbWUgfTsgfQogICAgIH07CiAgICAgVmVjdG9yPE9yaWdpbkRldGFpbHM+IG9y
aWdpbkRldGFpbHNDcm9zc1RocmVhZENvcHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXgg
YzFiOTg2Y2Y5ZjY2MTI0MWYxMDNhNzgwNmM4MzY2ZGU4YmM0MzYzZi4uOGY0MWVmOTgzMDg3YjE1
YmE0NWZhNGIyM2U1MzQ5NWE4OGM2MTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xMDAs
OCArMTAwLDggQEAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IFN0b3JhZ2VNYW5hZ2VyOjpn
ZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnNDcm9zc1RocmVhZEMKIAogICAgIEhhc2hTZXQ8U2VjdXJp
dHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewotICAg
ICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5z
KCkpCi0gICAgICAgICAgICBvcmlnaW5zLmFkZChjcm9zc1RocmVhZENvcHkob3JpZ2luKSk7Cisg
ICAgICAgIGZvciAoYXV0byYmIG9yaWdpbiA6IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5vcmln
aW5zKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChjcm9zc1RocmVhZENvcHkoV1RGTW92ZShv
cmlnaW4pKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9yaWdpbnM7CkBAIC0xMzEsMTggKzEzMSwx
OCBAQCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gU3RvcmFnZU1hbmFnZXI6OmdldExvY2Fs
U3RvcmFnZU9yaWdpbnNDcm9zc1RocmVhZENvcAogCiAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdp
bkRhdGE+IG9yaWdpbnM7CiAgICAgaWYgKG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKSB7
Ci0gICAgZm9yIChhdXRvJiBvcmlnaW4gOiBtX2xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci0+
b3JpZ2lucygpKQotICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIGZvciAoYXV0byYmIG9yaWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5v
cmlnaW5zKCkpCisgICAgICAgIG9yaWdpbnMuYWRkKFdURk1vdmUob3JpZ2luKS5pc29sYXRlZENv
cHkoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBsb2NhbFN0b3Jh
Z2VOYW1lU3BhY2UgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMudmFsdWVzKCkpIHsKLSAgICAg
ICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogbG9jYWxTdG9yYWdlTmFtZVNwYWNlLT5lcGhlbWVy
YWxPcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVk
Q29weSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYmIG9yaWdpbiA6IGxvY2FsU3RvcmFnZU5h
bWVTcGFjZS0+ZXBoZW1lcmFsT3JpZ2lucygpKQorICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRk
KFdURk1vdmUob3JpZ2luKS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSA6IG1fdHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIG9y
aWdpbiA6IHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+b3JpZ2lucygpKQotICAgICAg
ICAgICAgb3JpZ2lucy5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgZm9yIChh
dXRvJiYgb3JpZ2luIDogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkp
CisgICAgICAgICAgICBvcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdpbikuaXNvbGF0ZWRDb3B5KCkp
OwogICAgIH0KIAogICAgIHJldHVybiBvcmlnaW5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDVm
NmMwNDE4NmIzNDY2YWIyN2E4ZmRhYTQxNmU0NmM4ZjlmZWI4ZDguLjJkODM1OTAwMTIwMzA1MmYx
NjYzMzk5OGU0NDBjM2I1ZjZhNmQ5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTQ0MCw3ICs0
NDAsNyBAQCBDYWNoZSogRW5naW5lOjpjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEVuZ2luZTo6d3Jp
dGVGaWxlKFN0cmluZyYmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0
KTsKQEAgLTQ0OCwxMyArNDQ4LDEzIEBAIHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgfQog
CiAgICAgbV9wZW5kaW5nV3JpdGVDYWxsYmFja3MuYWRkKCsrbV9wZW5kaW5nQ2FsbGJhY2tzQ291
bnRlciwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBtX3BlbmRpbmdDYWxs
YmFja3NDb3VudGVyLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gbV9wZW5kaW5nQ2Fs
bGJhY2tzQ291bnRlciwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGZpbGVuYW1lID0gV1RGTW92ZShm
aWxlbmFtZSkuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAKICAgICAgICAgU3RyaW5nIGRp
cmVjdG9yeVBhdGggPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGZpbGVuYW1lKTsKICAgICAgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQogICAgICAgICAgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeVBhdGgpOwogCi0gICAgICAg
IGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBl
OjpDcmVhdGUsIFdvcmtRdWV1ZTo6UU9TOjpEZWZhdWx0KTsKKyAgICAgICAgYXV0byBjaGFubmVs
ID0gSU9DaGFubmVsOjpvcGVuKFdURk1vdmUoZmlsZW5hbWUpLCBJT0NoYW5uZWw6OlR5cGU6OkNy
ZWF0ZSwgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQpOwogICAgICAgICBjaGFubmVsLT53cml0ZSgw
LCBkYXRhLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTQ3
Miw3ICs0NzIsNyBAQCB2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcgogICAgIH0pOwogfQogCi12b2lk
IEVuZ2luZTo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmIGNhbGxiYWNr
KQordm9pZCBFbmdpbmU6OnJlYWRGaWxlKFN0cmluZyYmIGZpbGVuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYsIGludCBlcnJvcik+JiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKICAgICAgICAgY2FsbGJhY2soRGF0
YSB7IH0sIDApOwpAQCAtNDgwLDggKzQ4MCw4IEBAIHZvaWQgRW5naW5lOjpyZWFkRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE5ldHdvCiAg
ICAgfQogCiAgICAgbV9wZW5kaW5nUmVhZENhbGxiYWNrcy5hZGQoKyttX3BlbmRpbmdDYWxsYmFj
a3NDb3VudGVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IG1fcGVuZGlu
Z0NhbGxiYWNrc0NvdW50ZXIsIGZpbGVuYW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFt
ZSwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gbV9wZW5kaW5nQ2Fs
bGJhY2tzQ291bnRlciwgZmlsZW5hbWUgPSBXVEZNb3ZlKGZpbGVuYW1lKS5pc29sYXRlZENvcHko
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKFdU
Rk1vdmUoZmlsZW5hbWUpLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOwogICAgICAgICBpZiAoIWNo
YW5uZWwtPmlzT3BlbmVkKCkpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaWRlbnRpZmllcl0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNTA2LDI0ICs1MDYsMjQg
QEAgdm9pZCBFbmdpbmU6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgTmV0d28KICAgICB9KTsKIH0KIAotdm9pZCBFbmdpbmU6OnJl
bW92ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3ZvaWQgRW5naW5lOjpyZW1vdmVGaWxl
KFN0cmluZyYmIGZpbGVuYW1lKQogewogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1l
Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2Zp
bGVuYW1lID0gV1RGTW92ZShmaWxlbmFtZSkuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgRW5naW5l
Ojp3cml0ZVNpemVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3Qgc2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBFbmdpbmU6Ondy
aXRlU2l6ZUZpbGUoU3RyaW5nJiYgcGF0aCwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkKICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gcGF0
aC5pc29sYXRlZENvcHkoKSwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRo
ID0gV1RGTW92ZShwYXRoKS5pc29sYXRlZENvcHkoKSwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OwogICAgICAgICBhdXRvIGZpbGVIYW5kbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Oldy
aXRlKTsKIApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgRW5naW5lOjpnZXREaXJlY3RvcmllcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgY29tCiAgICAg
ICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgp
KSB7CiAgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlVHlwZShmaWxlUGF0aCkgPT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkK
LSAgICAgICAgICAgICAgICBmb2xkZXJQYXRocy5hcHBlbmQoZmlsZVBhdGguaXNvbGF0ZWRDb3B5
KCkpOworICAgICAgICAgICAgICAgIGZvbGRlclBhdGhzLmFwcGVuZChXVEZNb3ZlKGZpbGVQYXRo
KS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2ZvbGRlclBhdGhzID0gV1RGTW92ZShmb2xkZXJQYXRocyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC03MTMs
NyArNzEzLDcgQEAgdm9pZCBFbmdpbmU6OmNsZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVjdG9y
aWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmb2xkZXJQYXQKIHsKICAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBmb2xkZXJQYXRocykgewot
ICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAq
bV9pb1F1ZXVlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiwg
Y2FsbGJhY2tBZ2dyZWdhdG9yLCBmb2xkZXJQYXRoXSAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpD
bGllbnRPcmlnaW4+JiYgZm9sZGVyT3JpZ2luKSBtdXRhYmxlIHsKKyAgICAgICAgQ2FjaGVzOjpy
ZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoZm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4sIGNhbGxiYWNrQWdncmVnYXRv
ciwgZm9sZGVyUGF0aCA9IGZvbGRlclBhdGhdIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVu
dE9yaWdpbj4mJiBmb2xkZXJPcmlnaW4pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFmb2xk
ZXJPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKGZvbGRl
ck9yaWdpbi0+dG9wT3JpZ2luICE9IG9yaWdpbiAmJiBmb2xkZXJPcmlnaW4tPmNsaWVudE9yaWdp
biAhPSBvcmlnaW4pCkBAIC03MjEsMTYgKzcyMSwxNiBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNo
ZXNGb3JPcmlnaW5Gcm9tRGlyZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZvbGRlclBh
dAogCiAgICAgICAgICAgICAvLyBJZiBjYWNoZSBzYWx0IGlzIGluaXRpYWxpemVkIGFuZCB0aGUg
cGF0aHMgZG8gbm90IG1hdGNoLCBzb21lIGNhY2hlIGZpbGVzIGhhdmUgcHJvYmFibHkgYmUgcmVt
b3ZlZCBvciBwYXJ0aWFsbHkgY29ycnVwdGVkLgogICAgICAgICAgICAgQVNTRVJUKCFtX3NhbHQg
fHwgZm9sZGVyUGF0aCA9PSBjYWNoZXNSb290UGF0aCgqZm9sZGVyT3JpZ2luKSk7Ci0gICAgICAg
ICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChmb2xkZXJQYXRo
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0p
OworICAgICAgICAgICAgZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQo
V1RGTW92ZShmb2xkZXJQYXRoKSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJh
Y2tBZ2dyZWdhdG9yKV0geyB9KTsKICAgICAgICAgfSk7CiAgICAgfQogfQogCi12b2lkIEVuZ2lu
ZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5n
JiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIEVuZ2luZTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoU3Ry
aW5nJiYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBtX2lvUXVldWUtPmRp
c3BhdGNoKFtwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX2lvUXVldWUtPmRp
c3BhdGNoKFtwYXRoID0gV1RGTW92ZShwYXRoKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IGdsb2JhbFNpemVGaWxlTG9jayB9OwogICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShwYXRoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKaW5kZXggZmUz
YzFmOTMwZGFlMzk5OGNkMWMwNGMzNGRiZGRjNTM1NTVhNDcwMi4uNTllNzZiYWU0NzE3ZjQxMzNi
OWViOTk4NjJlZDNiYWM5OTAxYjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCkBAIC04OSwxMCArODksMTAg
QEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRQZXJzaXN0KCkgY29uc3QgeyByZXR1cm4gISFt
X2lvUXVldWU7fQogCi0gICAgdm9pZCB3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
TmV0d29ya0NhY2hlOjpEYXRhJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9u
Q2FsbGJhY2smJik7Ci0gICAgdm9pZCByZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYsIGludCBlcnJv
cik+JiYpOwotICAgIHZvaWQgcmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKTsKLSAg
ICB2b2lkIHdyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHdyaXRlRmlsZShTdHJpbmcmJiBmaWxl
bmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21w
bGV0aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCByZWFkRmlsZShTdHJpbmcmJiBmaWxlbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBpbnQgZXJy
b3IpPiYmKTsKKyAgICB2b2lkIHJlbW92ZUZpbGUoU3RyaW5nJiYgZmlsZW5hbWUpOworICAgIHZv
aWQgd3JpdGVTaXplRmlsZShTdHJpbmcmJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcmVhZFNp
emVGaWxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgY29uc3QgU3RyaW5nJiByb290UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcm9vdFBhdGg7IH0KQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXJBbGxDYWNoZXNGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgY2xlYXJDYWNoZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNs
ZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpc2soY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRlbGV0ZU5vbkVt
cHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5
T25CYWNrZ3JvdW5kVGhyZWFkKFN0cmluZyYmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxs
YmFjayYmKTsKICAgICBTdHJpbmcgcmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKaW5kZXggZGE5Y2I4YTVkY2MwZWQ3ZjlmNGMyZTNkMmYyNzY4OTRhMDFlZDE3NC4u
Yjc1Yzc4NzRmODVkYWJjOWMxNjcyZmU0MDA2NzhkNTk2ZDcyNTNmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQ
YXJzZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmg+CiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGll
ci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KQEAgLTEyOCwzNSArMTI5LDIzIEBAIHZv
aWQgQ2FjaGU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKQogICAgIG1fc3RhdGUgPSBTdGF0
ZTo6VW5pbml0aWFsaXplZDsKIH0KIAotc3RhdGljIFJlY29yZEluZm9ybWF0aW9uIGlzb2xhdGVk
Q29weShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24pCitSZWNvcmRJbmZvcm1h
dGlvbiBSZWNvcmRJbmZvcm1hdGlvbjo6aXNvbGF0ZWRDb3B5KCkgJiYKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IFJlY29yZEluZm9ybWF0aW9uIHsgaW5mb3JtYXRpb24ua2V5LCBpbmZvcm1hdGlvbi5p
bnNlcnRpb25UaW1lLCBpbmZvcm1hdGlvbi5pZGVudGlmaWVyLCBpbmZvcm1hdGlvbi51cGRhdGVS
ZXNwb25zZUNvdW50ZXIsIGluZm9ybWF0aW9uLnNpemUsIGluZm9ybWF0aW9uLnVybC5pc29sYXRl
ZENvcHkoKSwgaW5mb3JtYXRpb24uaGFzVmFyeVN0YXIsIHsgfSB9OwotICAgIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IHZhcnlIZWFkZXJzOwotICAgIGZvciAoY29uc3QgYXV0byYga2V5VmFsdWUg
OiBpbmZvcm1hdGlvbi52YXJ5SGVhZGVycykKLSAgICAgICAgdmFyeUhlYWRlcnMuc2V0KGtleVZh
bHVlLmtleS5pc29sYXRlZENvcHkoKSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwot
ICAgIHJlc3VsdC52YXJ5SGVhZGVycyA9IFdURk1vdmUodmFyeUhlYWRlcnMpOwotICAgIHJldHVy
biByZXN1bHQ7CisgICAgcmV0dXJuIHsga2V5LCBpbnNlcnRpb25UaW1lLCBpZGVudGlmaWVyLCB1
cGRhdGVSZXNwb25zZUNvdW50ZXIsIHNpemUsIFdURk1vdmUodXJsKS5pc29sYXRlZENvcHkoKSwg
aGFzVmFyeVN0YXIsIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHZhcnlIZWFkZXJzKSkgfTsKIH0K
IAogc3RydWN0IFRyYXZlcnNhbFJlc3VsdCB7CiAgICAgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVjb3JkSW5mb3JtYXRpb24+PiByZWNvcmRz
OwogICAgIFZlY3RvcjxLZXk+IGZhaWxlZFJlY29yZHM7CisKKyAgICBUcmF2ZXJzYWxSZXN1bHQg
aXNvbGF0ZWRDb3B5KCkgJiY7CiB9OwogCi1zdGF0aWMgVHJhdmVyc2FsUmVzdWx0IGlzb2xhdGVk
Q29weShUcmF2ZXJzYWxSZXN1bHQmJiByZXN1bHQpCitUcmF2ZXJzYWxSZXN1bHQgVHJhdmVyc2Fs
UmVzdWx0Ojppc29sYXRlZENvcHkoKSAmJgogewotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8
UmVjb3JkSW5mb3JtYXRpb24+PiBpc29sYXRlZFJlY29yZHM7Ci0gICAgZm9yIChhdXRvJiBrZXlW
YWx1ZSA6IHJlc3VsdC5yZWNvcmRzKSB7Ci0gICAgICAgIGF1dG8mIHJlY29yZFZlY3RvciA9IGtl
eVZhbHVlLnZhbHVlOwotICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IHJlY29y
ZFZlY3Rvci5zaXplKCk7IGNwdHIrKykKLSAgICAgICAgICAgIHJlY29yZFZlY3RvcltjcHRyXSA9
IGlzb2xhdGVkQ29weShyZWNvcmRWZWN0b3JbY3B0cl0pOwotCi0gICAgICAgIGlzb2xhdGVkUmVj
b3Jkcy5zZXQoa2V5VmFsdWUua2V5Lmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHJlY29yZFZlY3Rv
cikpOwotICAgIH0KLQotICAgIC8vIE5vIG5lZWQgdG8gaXNvbGF0ZSBrZXlzIHNpbmNlIHRoZXkg
YXJlIGlzb2xhdGVkIHRocm91Z2ggdGhlIGNvcHkgY29uc3RydWN0b3IKLSAgICByZXR1cm4gVHJh
dmVyc2FsUmVzdWx0IHsgcmVzdWx0LmNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShpc29sYXRlZFJl
Y29yZHMpLCBXVEZNb3ZlKHJlc3VsdC5mYWlsZWRSZWNvcmRzKSB9OworICAgIC8vIE5vIG5lZWQg
dG8gaXNvbGF0ZSBrZXlzIHNpbmNlIHRoZXkgYXJlIGlzb2xhdGVkIHRocm91Z2ggdGhlIGNvcHkg
Y29uc3RydWN0b3IuCisgICAgcmV0dXJuIHsgY2FjaGVJZGVudGlmaWVyLCBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShyZWNvcmRzKSksIFdURk1vdmUoZmFpbGVkUmVjb3JkcykgfTsKIH0KIAogdm9p
ZCBDYWNoZTo6b3BlbihDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTE3Myw3ICsx
NjIsNyBAQCB2b2lkIENhY2hlOjpvcGVuKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQog
ICAgIFRyYXZlcnNhbFJlc3VsdCB0cmF2ZXJzYWxSZXN1bHQgeyBtX2lkZW50aWZpZXIsIHsgfSwg
eyB9IH07CiAgICAgbV9jYWNoZXMucmVhZFJlY29yZHNMaXN0KCp0aGlzLCBbY2FjaGVzID0gUmVm
IHsgbV9jYWNoZXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdHJhdmVyc2FsUmVz
dWx0ID0gV1RGTW92ZSh0cmF2ZXJzYWxSZXN1bHQpXShjb25zdCBhdXRvKiBzdG9yYWdlUmVjb3Jk
LCBjb25zdCBhdXRvJikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghc3RvcmFnZVJlY29yZCkgewot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWNoZXMgPSBXVEZNb3ZlKGNh
Y2hlcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRyYXZlcnNhbFJlc3VsdCA9IGlz
b2xhdGVkQ29weShXVEZNb3ZlKHRyYXZlcnNhbFJlc3VsdCkpIF0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FjaGVzID0gV1RGTW92ZShjYWNoZXMp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0cmF2ZXJzYWxSZXN1bHQgPSBXVEZNb3Zl
KHRyYXZlcnNhbFJlc3VsdCkuaXNvbGF0ZWRDb3B5KCkgXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIGZvciAoYXV0byYga2V5IDogdHJhdmVyc2FsUmVzdWx0LmZhaWxlZFJlY29yZHMpCiAg
ICAgICAgICAgICAgICAgICAgIGNhY2hlcy0+cmVtb3ZlQ2FjaGVFbnRyeShrZXkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmgKaW5kZXggYjIwZGNmN2JjNzBjYTZjM2ZiMWRiNDkxNDVmZGRlNTYy
NTk3NzI3Yy4uNDAxOTc3YWQxMjhiMmM4NmMwNzc4OWQwNjNjODI4NzYzMjU2NWQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuaApAQCAtNTIsNiArNTIsOCBAQCBzdHJ1Y3QgUmVjb3JkSW5mb3Jt
YXRpb24gewogICAgIFVSTCB1cmw7CiAgICAgYm9vbCBoYXNWYXJ5U3RhciB7IGZhbHNlIH07CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFyeUhlYWRlcnM7CisKKyAgICBSZWNvcmRJbmZv
cm1hdGlvbiBpc29sYXRlZENvcHkoKSAmJjsKIH07CiAKIGNsYXNzIEFzeW5jaHJvbm91c1B1dFRh
c2tDb3VudGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IGQ3NWM1ODRkM2Yw
YTBlZGQwYWUyNzUzYjJlYzIwNmZmODRiMzBmMmYuLjc3YWQwMGJiYWVhNTJkZWI3MzE0ZjA3ODkx
NDljNDhlZTQ4NzFhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXUKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFt
ZSwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFu
bmVsOjpvcGVuKFdURk1vdmUoZmlsZW5hbWUpLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOwogICAg
ICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCks
IFdvcmtRdWV1ZTo6bWFpbigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoZXJyb3Ip
IHsKQEAgLTI1OCw3ICsyNTgsOCBAQCB2b2lkIENhY2hlczo6Y2xlYXIoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIGlmIChtX2VuZ2luZSkKICAgICAg
ICAgbV9lbmdpbmUtPnJlbW92ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpKTsK
ICAgICBpZiAobV9zdG9yYWdlKSB7Ci0gICAgICAgIG1fc3RvcmFnZS0+Y2xlYXIoU3RyaW5nIHsg
fSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgICAgIFN0cmluZyBhbnlUeXBlOworICAgICAgICBtX3N0b3JhZ2UtPmNsZWFyKFdU
Rk1vdmUoYW55VHlwZSksIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oKTsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC00NTEsNyArNDUyLDcgQEAgdm9p
ZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8
VmVjdG9yPENhY2hlPiwgRXJyb3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZW5n
aW5lLT5yZWFkRmlsZShmaWxlbmFtZSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQg
ZXJyb3IpIG11dGFibGUgeworICAgIG1fZW5naW5lLT5yZWFkRmlsZShXVEZNb3ZlKGZpbGVuYW1l
KSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewogICAg
ICAgICBpZiAoIW1fZW5naW5lKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+
IHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggZjIxMGIwOWZiZDFlMjBlYmZj
MjE2ZjIxOWEyNzYzNWQ4NzE4NDI1ZC4uM2NjZTYzYzc0YTBlMmY1ODU5ZGUwOTY4NzNhODA3OTlh
MTA5ZTE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcApAQCAtNjYxLDcgKzY2MSw3IEBAIHZvaWQgQ2FjaGU6OmNsZWFyKFdh
bGxUaW1lIG1vZGlmaWVkU2luY2UsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBjbGVhcmluZyBjYWNo
ZSIpOwogCiAgICAgU3RyaW5nIGFueVR5cGU7Ci0gICAgbV9zdG9yYWdlLT5jbGVhcihhbnlUeXBl
LCBtb2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9zdG9y
YWdlLT5jbGVhcihXVEZNb3ZlKGFueVR5cGUpLCBtb2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAKICAgICBkZWxldGVEdW1wRmlsZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsLmgKaW5kZXggYmI1NzI1Yzk5YmUyMmI2N2E2ZDQ3ZjZjODllYTkzMjE5NWZlNmM4Ni4uMzVj
OTUwZjgzZDQ2YWNjZDI5M2QyZTRjZDM3ZTg0NTYxZDU3MDE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5l
bC5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgSU9D
aGFubmVsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElPQ2hhbm5lbD4gewogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFJlYWQsIFdyaXRlLCBDcmVhdGUgfTsKLSAgICBzdGF0
aWMgUmVmPElPQ2hhbm5lbD4gb3Blbihjb25zdCBTdHJpbmcmIGZpbGUsIFR5cGUgdHlwZSwgc3Rk
OjpvcHRpb25hbDxXb3JrUXVldWU6OlFPUz4gcW9zID0geyB9KSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IElPQ2hhbm5lbChmaWxlLmlzb2xhdGVkQ29weSgpLCB0eXBlLCBxb3MpKTsgfQorICAgIHN0
YXRpYyBSZWY8SU9DaGFubmVsPiBvcGVuKFN0cmluZyYmIGZpbGUsIFR5cGUgdHlwZSwgc3RkOjpv
cHRpb25hbDxXb3JrUXVldWU6OlFPUz4gcW9zID0geyB9KSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IElPQ2hhbm5lbChXVEZNb3ZlKGZpbGUpLmlzb2xhdGVkQ29weSgpLCB0eXBlLCBxb3MpKTsgfQog
CiAgICAgLy8gVXNpbmcgbnVsbHB0ciBhcyBxdWV1ZSBzdWJtaXRzIHRoZSByZXN1bHQgdG8gdGhl
IG1haW4gcXVldWUuCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgV29ya1F1ZXVlOjptYWlu
KCkgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGZmYmJlZGNiNThkZDAyODdjYjhk
YzBhMjhhMzBhMmJlMTMzMjExY2MuLmIxZTZmZjNjMDc4YmU4NzFkOTUxMGZhMzc2YzQ3MDBlMzNj
MTlmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzI0LDkgKzcyNCw5IEBAIHZvaWQgU3Rv
cmFnZTo6ZGVsZXRlRmlsZXMoY29uc3QgS2V5JiBrZXkpCiAgICAgbV9ibG9iU3RvcmFnZS5yZW1v
dmUoYmxvYlBhdGhGb3JLZXkoa2V5KSk7CiB9CiAKLXZvaWQgU3RvcmFnZTo6dXBkYXRlRmlsZU1v
ZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQordm9pZCBTdG9yYWdlOjp1cGRhdGVG
aWxlTW9kaWZpY2F0aW9uVGltZShTdHJpbmcmJiBwYXRoKQogewotICAgIHNlcmlhbEJhY2tncm91
bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpXSB7CisgICAg
c2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbcGF0aCA9IFdURk1vdmUocGF0aCku
aXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgdXBkYXRlRmlsZU1vZGlmaWNhdGlvblRpbWVJZk5l
ZWRlZChwYXRoKTsKICAgICB9KTsKIH0KQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFN0b3JhZ2U6
OmRpc3BhdGNoUmVhZE9wZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4gcmVh
ZE9wZXJhdGlvbgogCiAgICAgICAgIHJlYWRPcGVyYXRpb24udGltaW5ncy5yZWNvcmRJT1N0YXJ0
VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCi0gICAgICAgIGF1dG8gY2hhbm5lbCA9IElP
Q2hhbm5lbDo6b3BlbihyZWNvcmRQYXRoLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOworICAgICAg
ICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oV1RGTW92ZShyZWNvcmRQYXRoKSwgSU9D
aGFubmVsOjpUeXBlOjpSZWFkKTsKICAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBpb1F1ZXVlKCksIFt0aGlzLCAmcmVhZE9wZXJhdGlv
bl0oY29uc3QgRGF0YSYgZmlsZURhdGEsIGludCBlcnJvcikgewogICAgICAgICAgICAgcmVhZE9w
ZXJhdGlvbi50aW1pbmdzLnJlY29yZElPRW5kVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwog
ICAgICAgICAgICAgaWYgKCFlcnJvcikKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIFN0b3JhZ2U6
OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3
cml0ZU9wZXJhdAogCiAgICAgICAgIGF1dG8gcmVjb3JkRGF0YSA9IGVuY29kZVJlY29yZCh3cml0
ZU9wZXJhdGlvbi5yZWNvcmQsIGJsb2IpOwogCi0gICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hh
bm5lbDo6b3BlbihyZWNvcmRQYXRoLCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSk7CisgICAgICAg
IGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihXVEZNb3ZlKHJlY29yZFBhdGgpLCBJT0No
YW5uZWw6OlR5cGU6OkNyZWF0ZSk7CiAgICAgICAgIHNpemVfdCByZWNvcmRTaXplID0gcmVjb3Jk
RGF0YS5zaXplKCk7CiAgICAgICAgIGNoYW5uZWwtPndyaXRlKDAsIHJlY29yZERhdGEsIFdvcmtR
dWV1ZTo6bWFpbigpLCBbdGhpcywgJndyaXRlT3BlcmF0aW9uLCByZWNvcmRTaXplXShpbnQgZXJy
b3IpIHsKICAgICAgICAgICAgIC8vIE9uIGVycm9yIHRoZSBlbnRyeSBzdGlsbCBzdGF5cyBpbiB0
aGUgY29udGVudHMgZmlsdGVyIHVudGlsIG5leHQgc3luY2hyb25pemF0aW9uLgpAQCAtMTAxMSw3
ICsxMDExLDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICAgICAgICAgIExvY2tlciBs
b2NrIHsgdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlTG9jayB9OwogICAgICAgICAgICAgKyt0cmF2
ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIAotICAgICAgICAgICAgYXV0byBjaGFubmVsID0g
SU9DaGFubmVsOjpvcGVuKHJlY29yZFBhdGgsIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7CisgICAg
ICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oV1RGTW92ZShyZWNvcmRQYXRo
KSwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsKICAgICAgICAgICAgIGNoYW5uZWwtPnJlYWQoMCwg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgV29ya1F1ZXVlOjptYWluKCksIFt0
aGlzLCAmdHJhdmVyc2VPcGVyYXRpb24sIHdvcnRoLCBib2R5U2hhcmVDb3VudF0oRGF0YSYgZmls
ZURhdGEsIGludCkgewogICAgICAgICAgICAgICAgIFJlY29yZE1ldGFEYXRhIG1ldGFEYXRhOwog
ICAgICAgICAgICAgICAgIERhdGEgaGVhZGVyRGF0YTsKQEAgLTEwODEsNyArMTA4MSw3IEBAIHZv
aWQgU3RvcmFnZTo6c2V0Q2FwYWNpdHkoc2l6ZV90IGNhcGFjaXR5KQogICAgIHNocmlua0lmTmVl
ZGVkKCk7CiB9CiAKLXZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBXYWxs
VGltZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBTdG9yYWdlOjpjbGVhcihTdHJpbmcmJiB0eXBlLCBXYWxsVGlt
ZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTE9HKE5l
dHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGNsZWFyaW5nIGNhY2hlIik7CkBA
IC0xMDkyLDcgKzEwOTIsNyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlw
ZSwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUsIENvbXBsZXRpb25IYQogICAgICAgICBtX2Js
b2JGaWx0ZXItPmNsZWFyKCk7CiAgICAgbV9hcHByb3hpbWF0ZVJlY29yZHNTaXplID0gMDsKIAot
ICAgIGlvUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIG1vZGlmaWVkU2luY2VUaW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCB0eXBlID0gdHlwZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7Cisg
ICAgaW9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIHR5cGUgPSBXVEZNb3ZlKHR5cGUpLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byByZWNvcmRzUGF0aCA9IHRoaXMtPnJlY29yZHNQYXRoSXNvbGF0
ZWRDb3B5KCk7CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoLCB0eXBl
LCBbbW9kaWZpZWRTaW5jZVRpbWVdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3Ry
aW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7CiAgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgs
IGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKaW5kZXggNTFlYmViYTBlNmJjODZiNjI5MTI0MmRh
YjAzMDU3OWYyOTQ4MzE5My4uMjZiODRjMmVmMGY0Yjc2ODc1MDJkODljODU0NjYxZTg2ZTYxYTgw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZW1vdmUoY29uc3QgS2V5Jik7CiAgICAgdm9pZCByZW1vdmUoY29uc3QgVmVjdG9yPEtleT4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY2xlYXIoY29uc3QgU3Ry
aW5nJiB0eXBlLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNsZWFyKFN0cmluZyYmIHR5cGUsIFdhbGxUaW1lIG1vZGlm
aWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgc3RydWN0
IFJlY29yZEluZm8gewogICAgICAgICBzaXplX3QgYm9keVNpemU7CkBAIC0xNDcsNyArMTQ3LDcg
QEAgcHJpdmF0ZToKICAgICBEYXRhIGVuY29kZVJlY29yZChjb25zdCBSZWNvcmQmLCBzdGQ6Om9w
dGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPik7CiAgICAgdm9pZCByZWFkUmVjb3JkKFJlYWRPcGVy
YXRpb24mLCBjb25zdCBEYXRhJik7CiAKLSAgICB2b2lkIHVwZGF0ZUZpbGVNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgdm9pZCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9u
VGltZShTdHJpbmcmJiBwYXRoKTsKICAgICB2b2lkIHJlbW92ZUZyb21QZW5kaW5nV3JpdGVPcGVy
YXRpb25zKGNvbnN0IEtleSYpOwogCiAgICAgQ29uY3VycmVudFdvcmtRdWV1ZSYgaW9RdWV1ZSgp
IHsgcmV0dXJuIG1faW9RdWV1ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9u
VG9DbGllbnQuY3BwCmluZGV4IDhhZjRjNjQ2NDM2Yjk2ZTE0ZTg3YjNjZTJiNjExZGIwNDI4Nzkw
NWYuLmZkOTc3ZWJhNjFlYjRjZWNiNWM2MDEwYTgzNmY4Yzc4MTEzMDQ0ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlv
blRvQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
SURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lk
IElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YQogICAgIGRpZEdldFJlc3VsdDxNZXNzYWdlczo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpEaWRJdGVyYXRlQ3Vyc29yPihyZXN1bHREYXRhKTsKIH0KIAotdm9p
ZCBJREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5k
VmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+
JiBkYXRhYmFzZXMpCit2b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFs
bERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1l
QW5kVmVyc2lvbj4mJiBkYXRhYmFzZXMpCiB7CiAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKG1f
Y29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6RGlkR2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhYmFzZXMpLCAw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9J
REJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4IDUwYmEwMWIw
MjEyMGYyMWRiNjEzOTFmM2E4NzQ0ZDIyYjVmZjcwZTQuLjY0ZDI3NzNiOWUxNzdmZjk0NTk3ZTI1
YzQ2MTQwMGUyNDg0MDNhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQu
aApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNv
bnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKICAgICB2b2lkIGRpZE9wZW5DdXJz
b3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZGlkSXRl
cmF0ZUN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgVmVjdG9yPFdlYkNv
cmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5
T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVy
c2lvbikgZmluYWw7CiAgICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVk
VmVyc2lvbikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZUZyb21TZXJ2ZXIoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJF
cnJvciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA0MmYxYTYzMGJk
ZjU4NzU4MjExZWU5ODllNGRjYTAzODY2MzY4ZTlhLi4yOWQ5Zjk4OGZmZjhiYWFkZDI1ZjQ5MTEx
MGYxMzMxNmI3ZDZhMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMzE3LDEx
ICszMTcsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFnZUZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGMKICAgICB9KTsKIH0KIAotdm9pZCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpkaWRJbmNyZWFzZVF1b3RhKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IG5ld1F1b3RhKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBpZGVudGlmaWVyLCBuZXdR
dW90YV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9y
aWdpbikpLCBpZGVudGlmaWVyLCBuZXdRdW90YV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1
dG8gbWFuYWdlciA9IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuZ2V0KG9yaWdpbikpCiAg
ICAgICAgICAgICBtYW5hZ2VyLT5xdW90YU1hbmFnZXIoKS5kaWRJbmNyZWFzZVF1b3RhKGlkZW50
aWZpZXIsIG5ld1F1b3RhKTsKICAgICB9KTsKQEAgLTYxNywxMiArNjE3LDEyIEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlv
blNldDxXZWJzaXRlRGF0CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
Ojptb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6bW92ZURhdGEoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gdHlwZXMsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNvdXJj
ZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBBU1NFUlQoIW1fY2xvc2VkKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdHlwZXMsIHNvdXJjZSA9IGNy
b3NzVGhyZWFkQ29weShzb3VyY2UpLCB0YXJnZXQgPSBjcm9zc1RocmVhZENvcHkodGFyZ2V0KSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHR5cGVzLCBzb3VyY2UgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzb3VyY2UpKSwg
dGFyZ2V0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodGFyZ2V0KSksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1
dG8gc291cmNlT3JpZ2luID0gV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgc291cmNlLCBzb3VyY2Ug
fTsKICAgICAgICAgYXV0byB0YXJnZXRPcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB0
YXJnZXQsIHRhcmdldCB9OwogICAgICAgICAKQEAgLTY4NiwxMSArNjg2LDExIEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpyZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKQordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgZmlsZVBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KGZpbGVQYXRocyldIHsKKyAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbm5l
Y3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgZmlsZVBhdGhzID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUoZmlsZVBhdGhzKSldIHsKICAgICAgICAgYXV0byYgdGVtcG9yYXJ5QmxvYlBh
dGhzID0gbV90ZW1wb3JhcnlCbG9iUGF0aHNCeUNvbm5lY3Rpb24uZW5zdXJlKGNvbm5lY3Rpb25J
RCwgW10gewogICAgICAgICAgICAgcmV0dXJuIEhhc2hTZXQ8U3RyaW5nPiB7IH07CiAgICAgICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKQEAgLTcyMiwxMSArNzIyLDExIEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tCiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZXNl
dFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4pCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6cmVzZXRRdW90YVVw
ZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
bikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvcmlnaW4gPSBjcm9z
c1RocmVhZENvcHkob3JpZ2luKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiA9IGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKG9yaWdpbikpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0byBtYW5h
Z2VyID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2luKSkKICAgICAgICAg
ICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigpLnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdl
Rm9yVGVzdGluZygpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IDJmOTI2
NWQzZjBlN2MxZDY5YTE3Yzg0YzYyOTBmYTQ2ZTBjMDJiODQuLmJiMDhjMWNlYWZiNDMyY2JlMzlj
YWNkMTRkZjY3YTg0NjY2MjZlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTgwLDIw
ICs4MCwyMCBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbGVh
clN0b3JhZ2VGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBkaWRJbmNyZWFzZVF1b3RhKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
OworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgUXVv
dGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdR
dW90YSk7CiAgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhOjpFbnRyeT4mJik+JiYpOwog
ICAgIHZvaWQgZGVsZXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZGVsZXRlRGF0YU1vZGlmaWVkU2luY2UoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4sIFdhbGxUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgZGVsZXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik+
JiYpOwotICAgIHZvaWQgbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIG1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBzb3VyY2UsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRh
cmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN1c3BlbmQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc3VtZSgpOwogICAgIHZvaWQg
aGFuZGxlTG93TWVtb3J5V2FybmluZygpOwogICAgIHZvaWQgc3luY0xvY2FsU3RvcmFnZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgcmVnaXN0ZXJUZW1wb3JhcnlCbG9i
RmlsZVBhdGhzKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAg
dm9pZCByZWdpc3RlclRlbXBvcmFyeUJsb2JGaWxlUGF0aHMoSVBDOjpDb25uZWN0aW9uJiwgVmVj
dG9yPFN0cmluZz4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCByZXNldFF1b3RhRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgcmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5n
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIHZvaWQgcmVzZXRRdW90YVVwZGF0
ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0aW5nKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKIAogcHJp
dmF0ZToKICAgICBOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21Mb2NhbFN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUNhY2hlU3RvcmFnZVBhdGgsIHVpbnQ2NF90IGRlZmF1bHRPcmln
aW5RdW90YSwgdWludDY0X3QgZGVmYXVsdFRoaXJkUGFydHlPcmlnaW5RdW90YSwgYm9vbCBzaG91
bGRVc2VDdXN0b21QYXRocyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJU3RyaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU3RyaW5nLmgKaW5kZXgg
OTlkMWEzZTNkMzY5ZTVlMGI5MTMyOWY4Mjk0NjMyYmM5NjA0Mzc4OS4uYjI3ZTc2ODRkZjJjOTgy
YTE4NGUwN2E5ZWZkMWYzYTRkYTlkNjA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSVN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTdHJp
bmcuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFN0cmluZz4g
Y3JlYXRlKFdURjo6U3RyaW5nJiYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3RyaW5nKHN0cmluZy5pc051bGwoKSA/IFdURjo6U3RyaW5nKFN0cmluZ0ltcGw6
OmVtcHR5KCkpIDogc3RyaW5nLmlzb2xhdGVkQ29weSgpKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0cmluZyhzdHJpbmcuaXNOdWxsKCkgPyBXVEY6OlN0cmluZyhTdHJpbmdJbXBs
OjplbXB0eSgpKSA6IFdURk1vdmUoc3RyaW5nKS5pc29sYXRlZENvcHkoKSkpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBSZWY8U3RyaW5nPiBjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApp
bmRleCBmOWIyZmUwNDA5ZGM0MzBiMWQzZDNhZWIwMGU3NmIwMGIzZjA1NmI5Li45NGZkMDUzNTVh
MWJkZjlkOTMxZWZkODQyNTJjOGQ3NTkyZGU5MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gV2Vic2l0ZURhdGE6OmZpbHRlcihPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB1bmZpbHQKICAgICByZXR1cm4gZmlsdGVyZWQ7CiB9CiAKLVdlYnNpdGVE
YXRhIFdlYnNpdGVEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAorV2Vic2l0ZURhdGEgV2Vic2l0
ZURhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4gV2Vic2l0ZURhdGEg
ewogICAgICAgICBjcm9zc1RocmVhZENvcHkoZW50cmllcyksCkBAIC0xNTksMTMgKzE1OSwyNiBA
QCBXZWJzaXRlRGF0YSBXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICB9Owog
fQogCi1hdXRvIFdlYnNpdGVEYXRhOjpFbnRyeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gRW50
cnkKK1dlYnNpdGVEYXRhIFdlYnNpdGVEYXRhOjppc29sYXRlZENvcHkoKSAmJgogewotICAgIHJl
dHVybiBFbnRyeSB7Ci0gICAgICAgIGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLAotICAgICAgICB0
eXBlLAotICAgICAgICBzaXplLAorICAgIHJldHVybiBXZWJzaXRlRGF0YSB7CisgICAgICAgIGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKGVudHJpZXMpKSwKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUoaG9zdE5hbWVzV2l0aENvb2tpZXMpKSwKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUoaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSkpLAorI2lmIEVOQUJMRShJTlRFTExJR0VO
VF9UUkFDS0lOR19QUkVWRU5USU9OKQorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbnNXaXRoUmVzb3VyY2VMb2FkU3RhdGlzdGljcykpLAorI2VuZGlmCiAg
ICAgfTsKIH0KIAorYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6Omlzb2xhdGVkQ29weSgpIGNvbnN0
ICYgLT4gRW50cnkKK3sKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwgdHlw
ZSwgc2l6ZSB9OworfQorCithdXRvIFdlYnNpdGVEYXRhOjpFbnRyeTo6aXNvbGF0ZWRDb3B5KCkg
JiYgLT4gRW50cnkKK3sKKyAgICByZXR1cm4geyBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShvcmln
aW4pKSwgdHlwZSwgc2l6ZSB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGEuaAppbmRleCBiYjIwYjI1MTkyM2Y0ZmViOWQ3N2FhZDRmYjJj
YzcxZjk0MGFjNDkxLi5mZDlkYzM5NjU4YmEwMWY3ZGIxMmExZmM5ZDM1MDA0ZjJlYzcwZTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKQEAg
LTQ4LDEzICs0OCwxNSBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgICAgICBXZWJzaXRlRGF0
YVR5cGUgdHlwZTsKICAgICAgICAgdWludDY0X3Qgc2l6ZTsKIAotICAgICAgICBFbnRyeSBpc29s
YXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgRW50cnkgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsK
KyAgICAgICAgRW50cnkgaXNvbGF0ZWRDb3B5KCkgJiY7CiAKICAgICAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVEYXRhOjpFbnRyeT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogICAgIH07CiAKLSAgICBXZWJz
aXRlRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXZWJzaXRlRGF0YSBpc29sYXRlZENv
cHkoKSBjb25zdCAmOworICAgIFdlYnNpdGVEYXRhIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAg
VmVjdG9yPEVudHJ5PiBlbnRyaWVzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNXaXRo
Q29va2llczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDY1Y2E0YzBjMTRmNjFhOGMzMmE5NGM0NDRiZjQx
MzY3M2E1YWUwYWQuLmMwYTY0ZmVmYmQyZjQ1YzEyYWQ5Y2JlMmM3ODgzYjI1MTlkODhiNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcApAQCAtNDE2LDcgKzQxNiw3IEBAIHN0YXRpYyBFeHBlY3RlZDxNYXBwZWRE
YXRhLCBzdGQ6OmVycm9yX2NvZGU+IGNvbXBpbGVkVG9GaWxlKFdURjo6U3RyaW5nJiYganNvbiwK
ICAgICByZXR1cm4ge3sgV1RGTW92ZShtZXRhRGF0YSksIFdURk1vdmUobWFwcGVkRGF0YSkgfX07
CiB9CiAKLXN0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNyZWF0ZUV4dGVuc2lvbihj
b25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgTWFwcGVkRGF0YSYmIGRhdGEpCitzdGF0aWMg
UmVmPEFQSTo6Q29udGVudFJ1bGVMaXN0PiBjcmVhdGVFeHRlbnNpb24oV1RGOjpTdHJpbmcmJiBp
ZGVudGlmaWVyLCBNYXBwZWREYXRhJiYgZGF0YSkKIHsKICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9
IGRhdGEuZGF0YS50cnlDcmVhdGVTaGFyZWRNZW1vcnkoKTsKIApAQCAtNDMxLDcgKzQzMSw3IEBA
IHN0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNyZWF0ZUV4dGVuc2lvbihjb25zdCBX
VEY6OlN0cmluZyYgaWRlbnRpZmllciwKICAgICBjb25zdCBzaXplX3QgZnJhbWVVUkxGaWx0ZXJz
T2Zmc2V0ID0gdG9wVVJMRmlsdGVyc09mZnNldCArIGRhdGEubWV0YURhdGEudG9wVVJMRmlsdGVy
c0J5dGVjb2RlU2l6ZTsKIAogICAgIGF1dG8gY29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhID0g
V2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEoCi0gICAgICAgIFdURjo6U3Ry
aW5nKGlkZW50aWZpZXIpLAorICAgICAgICBXVEZNb3ZlKGlkZW50aWZpZXIpLAogICAgICAgICBz
aGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSwKICAgICAgICAgYWN0aW9uc09mZnNldCwKICAg
ICAgICAgZGF0YS5tZXRhRGF0YS5hY3Rpb25zU2l6ZSwKQEAgLTQ3MSwxMCArNDcxLDEwIEBAIHN0
YXRpYyBXVEY6OlN0cmluZyBnZXRDb250ZW50UnVsZUxpc3RTb3VyY2VGcm9tTWFwcGVkRmlsZShj
b25zdCBNYXBwZWREYXRhJiBtYXBwCiAgICAgcmV0dXJuIFdURjo6U3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUNoYXIqPihtYXBwZWREYXRhLmRhdGEuZGF0YSgpICsgc3RhcnQpLCBsZW5n
dGggLyBzaXplb2YoVUNoYXIpKTsKIH0KIAotdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6bG9v
a3VwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3Jf
Y29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6bG9v
a3VwQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0
b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlm
aWVyKS5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlk
ZW50aWZpZXIsIGZhbHNlKTsKICAgICAgICAgYXV0byBsZWdhY3lQYXRoID0gY29uc3RydWN0ZWRQ
YXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgdHJ1ZSk7CiAgICAgICAgIGlmIChmaWxlRXhpc3Rz
KGxlZ2FjeVBhdGgpKSB7CkBAIC01MDIsOCArNTAyLDggQEAgdm9pZCBDb250ZW50UnVsZUxpc3RT
dG9yZTo6bG9va3VwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVy
LAogICAgICAgICAKICAgICAgICAgaWYgKGNvbnRlbnRSdWxlTGlzdC0+bWV0YURhdGEudmVyc2lv
biAhPSBDb250ZW50UnVsZUxpc3RTdG9yZTo6Q3VycmVudENvbnRlbnRSdWxlTGlzdEZpbGVWZXJz
aW9uKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBzb3VyY2VGcm9tT2xkVmVyc2lvbiA9IGdldENv
bnRlbnRSdWxlTGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKCpjb250ZW50UnVsZUxpc3QpOyAhc291
cmNlRnJvbU9sZFZlcnNpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
c291cmNlRnJvbU9sZFZlcnNpb24gPSBzb3VyY2VGcm9tT2xkVmVyc2lvbi5pc29sYXRlZENvcHko
KSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jb21waWxlQ29udGVudFJ1bGVMaXN0KGlkZW50aWZp
ZXIsIFdURk1vdmUoc291cmNlRnJvbU9sZFZlcnNpb24pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgc291cmNlRnJvbU9sZFZlcnNpb24gPSBX
VEZNb3ZlKHNvdXJjZUZyb21PbGRWZXJzaW9uKS5pc29sYXRlZENvcHkoKSwgaWRlbnRpZmllciA9
IFdURk1vdmUoaWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5jb21waWxlQ29udGVudFJ1bGVMaXN0KFdURk1vdmUoaWRlbnRp
ZmllciksIFdURk1vdmUoc291cmNlRnJvbU9sZFZlcnNpb24pLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQpAQCAtNTEzLDggKzUxMyw4IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3Rv
cmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRSdWxlTGlz
dCA9IFdURk1vdmUoKmNvbnRlbnRSdWxlTGlzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY3JlYXRlRXh0ZW5zaW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29udGVudFJ1bGVM
aXN0KSksIHsgfSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50
aWZpZXIpLmlzb2xhdGVkQ29weSgpLCBjb250ZW50UnVsZUxpc3QgPSBXVEZNb3ZlKCpjb250ZW50
UnVsZUxpc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZUV4dGVu
c2lvbihXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbnRlbnRSdWxlTGlzdCkpLCB7IH0p
OwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIENvbnRl
bnRSdWxlTGlzdFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhD
b21wbGV0aW9uSGFuZAogICAgIH0pOwogfQogCi12b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpj
b21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXVEY6
OlN0cmluZyYmIGpzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVu
dFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYg
aWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQXRvbVN0cmlu
Zzo6aW5pdCgpOwpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6
OmNvbXBpbGVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsCiAg
ICAgaWYgKCFwYXJzZWRSdWxlcy5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIsIHBhcnNlZFJ1bGVzLmVycm9yKCkpOwogICAgIAotICAgIG1fY29t
cGlsZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50
aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBqc29uID0ganNvbi5pc29sYXRlZENv
cHkoKSwgcGFyc2VkUnVsZXMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXJzZWRSdWxlcyku
dmFsdWUoKSksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAg
ICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNvbiA9IFdURk1vdmUo
anNvbikuaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUocGFyc2VkUnVsZXMpLnZhbHVlKCkpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBh
dGgsIGlkZW50aWZpZXIsIGZhbHNlKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbXBpbGVk
VG9GaWxlKFdURk1vdmUoanNvbiksIFdURk1vdmUocGFyc2VkUnVsZXMpLCBwYXRoKTsKQEAgLTU2
NCwxNiArNTY0LDE2IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmNvbXBpbGVDb250ZW50
UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgICAgIH0KIAogICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKSwgZGF0YSA9IFdU
Rk1vdmUocmVzdWx0LnZhbHVlKCkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8gY29udGVudFJ1bGVM
aXN0ID0gY3JlYXRlRXh0ZW5zaW9uKGlkZW50aWZpZXIsIFdURk1vdmUoZGF0YSkpOworICAgICAg
ICAgICAgYXV0byBjb250ZW50UnVsZUxpc3QgPSBjcmVhdGVFeHRlbnNpb24oV1RGTW92ZShpZGVu
dGlmaWVyKSwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
b250ZW50UnVsZUxpc3QucHRyKCksIHsgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12
b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RG
OjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjplcnJvcl9j
b2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1v
dmVDb250ZW50UnVsZUxpc3QoV1RGOjpTdHJpbmcmJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9yZW1vdmVRdWV1ZS0+ZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29s
YXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgbV9yZW1vdmVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKS5pc29sYXRlZENvcHkoKSwgc3RvcmVQ
YXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY29tcGxl
dGUgPSBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKHN0ZDo6ZXJyb3JfY29kZSBlcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlcnJvcik7CkBAIC02MDcs
MTIgKzYwNywxMiBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjppbnZhbGlkYXRlQ29udGVu
dFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaQogICAgIGNsb3NlRmlsZShmaWxl
KTsKIH0KIAotdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291
cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENvbnRlbnRSdWxlTGlzdFN0
b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoV1RGOjpTdHJpbmcmJiBpZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmll
ci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8gY29tcGxldGUgPSBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFdURjo6U3RyaW5nIHNvdXJjZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzb3VyY2UgPSBz
b3VyY2UuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgIG1fcmVhZFF1ZXVlLT5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBXVEZNb3Zl
KGlkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29s
YXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb21wbGV0ZSA9IFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oV1RGOjpTdHJpbmcmJiBzb3VyY2UpIG11dGFibGUgeworICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgc291cmNlID0gV1RGTW92ZShzb3VyY2UpLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzb3VyY2UpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IGY4NDY2MDZiY2UzNWM2ZjcyZWUyZWY0MTg4
ZTBiMDM4N2VlMTU2OTguLmNlNWRjNDAyY2E4Njc4OTc4ZDU3MzA0YmQwN2RiNGVkZjEyZmU5ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5oCkBAIC02MywxNSArNjMsMTUgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IENv
bnRlbnRSdWxlTGlzdFN0b3JlKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgpOwogICAgIHZp
cnR1YWwgfkNvbnRlbnRSdWxlTGlzdFN0b3JlKCk7CiAKLSAgICB2b2lkIGNvbXBpbGVDb250ZW50
UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNv
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBz
dGQ6OmVycm9yX2NvZGUpPik7Ci0gICAgdm9pZCBsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQ
STo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4pOwotICAgIHZvaWQgcmVtb3Zl
Q29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6ZXJyb3JfY29kZSk+KTsKKyAgICB2b2lkIGNvbXBpbGVDb250ZW50
UnVsZUxpc3QoV1RGOjpTdHJpbmcmJiBpZGVudGlmaWVyLCBXVEY6OlN0cmluZyYmIGpzb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjpl
cnJvcl9jb2RlKT4pOworICAgIHZvaWQgbG9va3VwQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5n
JiYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50
UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2NvZGUpPik7CisgICAgdm9pZCByZW1vdmVDb250ZW50UnVs
ZUxpc3QoV1RGOjpTdHJpbmcmJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6ZXJyb3JfY29kZSk+KTsKICAgICB2b2lkIGdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElk
ZW50aWZpZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+
KT4pOwogCiAgICAgLy8gRm9yIHRlc3Rpbmcgb25seS4KICAgICB2b2lkIHN5bmNocm9ub3VzUmVt
b3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRSdWxl
TGlzdFZlcnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpOwotICAgIHZvaWQgZ2V0
Q29udGVudFJ1bGVMaXN0U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6U3RyaW5nKT4pOworICAgIHZvaWQgZ2V0Q29udGVudFJ1
bGVMaXN0U291cmNlKFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXVEY6OlN0cmluZyk+KTsKIAogcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBkZWZhdWx0
U3RvcmVQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuY3BwCmluZGV4IDcyYmU5
MTIxYWFhNzYyNGM0OWNjMmJiNjE5ZGZjNmJiYWVmODQ5YzAuLmVmNWZhMzM3ZWU4ZTkwOGRiNGIw
ZWFjMWNmY2ZjMWIyYTYwZWQxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuY3Bw
CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0VXNlckNvbnRlbnRGaWx0ZXJT
dG9yZVNhdmVCeXRlcyhHUmVmUHRyPEdUYXNrPiYmIHRhc2ssIFN0cmluZyYKICAgICB9CiAKICAg
ICBhdXRvKiBzdG9yZSA9IFdFQktJVF9VU0VSX0NPTlRFTlRfRklMVEVSX1NUT1JFKGdfdGFza19n
ZXRfc291cmNlX29iamVjdCh0YXNrLmdldCgpKSk7Ci0gICAgc3RvcmUtPnByaXYtPnN0b3JlLT5j
b21waWxlQ29udGVudFJ1bGVMaXN0KGlkZW50aWZpZXIsIFN0cmluZzo6ZnJvbVVURjgoc291cmNl
RGF0YSwgc291cmNlU2l6ZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oUmVmUHRyPEFQSTo6Q29u
dGVudFJ1bGVMaXN0PiBjb250ZW50UnVsZUxpc3QsIHN0ZDo6ZXJyb3JfY29kZSBlcnJvcikgewor
ICAgIHN0b3JlLT5wcml2LT5zdG9yZS0+Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChXVEZNb3ZlKGlk
ZW50aWZpZXIpLCBTdHJpbmc6OmZyb21VVEY4KHNvdXJjZURhdGEsIHNvdXJjZVNpemUpLCBbdGFz
ayA9IFdURk1vdmUodGFzayldKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4gY29udGVudFJ1
bGVMaXN0LCBzdGQ6OmVycm9yX2NvZGUgZXJyb3IpIHsKICAgICAgICAgaWYgKGdfdGFza19yZXR1
cm5fZXJyb3JfaWZfY2FuY2VsbGVkKHRhc2suZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHAKaW5kZXggZjYyNDM2ZDczODVkNmVhZGExODU0OTI0ZTg0YWExODU1YmZiNWFhZC4uNGIy
MWU5ODlmMjc5YWU2NzM0ZDlkMzI2MDFkZTM2NmRiMDBhZjdiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMjU4LDEw
ICsyNTgsMTAgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGV2aWNlSWRIYXNo
U2FsdE9yaWdpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZTo6ZGVsZXRlSGFzaFNhbHRGcm9tRGlzayhjb25zdCBIYXNoU2FsdEZvck9yaWdp
biYgaGFzaFNhbHRGb3JPcmlnaW4pCiB7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkZXZpY2VJZEhhc2hTYWx0ID0gaGFzaFNhbHRG
b3JPcmlnaW4uZGV2aWNlSWRIYXNoU2FsdC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGRldmljZUlkSGFzaFNhbHQgPSBoYXNoU2FsdEZvck9yaWdpbi5kZXZpY2VJZEhhc2hTYWx0LnV0
ZjgoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICAgICAgU3RyaW5nIGZpbGVGdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5LCBkZXZpY2VJZEhh
c2hTYWx0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBTdHJpbmcgZmlsZUZ1bGxQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2VEaXJlY3RvcnksIGRldmljZUlkSGFzaFNhbHQuZGF0YSgpKTsKICAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShmaWxlRnVsbFBhdGgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmgKaW5kZXggNzJjZmE3YjQw
NzkxNTI0ODdjMWU0OGFiNjc5OTc1OGY5ZTA2OTg4ZS4uY2NhZDJhODg4Yjk5MWRhMDMwZTYwZWRi
MzVjMjQxMDMzYWU1ZGQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5oCkBAIC01MSwxOSArNTEsMTUgQEAgcHJpdmF0ZToKICAgICBz
dHJ1Y3QgSGFzaFNhbHRGb3JPcmlnaW4gewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAKLSAgICAgICAgSGFzaFNhbHRGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgZG9jdW1lbnRPcmlnaW4sIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IHBhcmVudE9yaWdpbiwgU3RyaW5nJiYgZGV2aWNlSWRIYXNoU2FsdCkKKyAgICAgICAgSGFzaFNh
bHRGb3JPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZG9jdW1lbnRPcmlnaW4s
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHBhcmVudE9yaWdpbiwgU3RyaW5nJiYgZGV2
aWNlSWRIYXNoU2FsdCwgV2FsbFRpbWUgbGFzdFRpbWVVc2VkID0gV2FsbFRpbWU6Om5vdygpKQog
ICAgICAgICAgICAgOiBkb2N1bWVudE9yaWdpbihXVEZNb3ZlKGRvY3VtZW50T3JpZ2luKSkKICAg
ICAgICAgICAgICwgcGFyZW50T3JpZ2luKFdURk1vdmUocGFyZW50T3JpZ2luKSkKICAgICAgICAg
ICAgICwgZGV2aWNlSWRIYXNoU2FsdChXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKQotICAgICAg
ICAgICAgLCBsYXN0VGltZVVzZWQoV2FsbFRpbWU6Om5vdygpKQotICAgICAgICB7IH07CisgICAg
ICAgICAgICAsIGxhc3RUaW1lVXNlZChsYXN0VGltZVVzZWQpCisgICAgICAgIHsgfQogCi0gICAg
ICAgIEhhc2hTYWx0Rm9yT3JpZ2luIGlzb2xhdGVkQ29weSgpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGF1dG8gaXNvbGF0ZWRDb3B5ID0gSGFzaFNhbHRGb3JPcmlnaW4oZG9jdW1lbnRP
cmlnaW4uaXNvbGF0ZWRDb3B5KCksIHBhcmVudE9yaWdpbi5pc29sYXRlZENvcHkoKSwgZGV2aWNl
SWRIYXNoU2FsdC5pc29sYXRlZENvcHkoKSk7Ci0gICAgICAgICAgICBpc29sYXRlZENvcHkubGFz
dFRpbWVVc2VkID0gbGFzdFRpbWVVc2VkOwotICAgICAgICAgICAgcmV0dXJuIGlzb2xhdGVkQ29w
eTsKLSAgICAgICAgfTsKKyAgICAgICAgSGFzaFNhbHRGb3JPcmlnaW4gaXNvbGF0ZWRDb3B5KCkg
Y29uc3QgJiB7IHJldHVybiB7IGRvY3VtZW50T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBwYXJlbnRP
cmlnaW4uaXNvbGF0ZWRDb3B5KCksIGRldmljZUlkSGFzaFNhbHQuaXNvbGF0ZWRDb3B5KCksIGxh
c3RUaW1lVXNlZCB9OyB9CisgICAgICAgIEhhc2hTYWx0Rm9yT3JpZ2luIGlzb2xhdGVkQ29weSgp
ICYmIHsgcmV0dXJuIHsgV1RGTW92ZShkb2N1bWVudE9yaWdpbikuaXNvbGF0ZWRDb3B5KCksIFdU
Rk1vdmUocGFyZW50T3JpZ2luKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hT
YWx0KS5pc29sYXRlZENvcHkoKSwgbGFzdFRpbWVVc2VkIH07IH0KIAogICAgICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZG9jdW1lbnRPcmlnaW47CiAgICAgICAgIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBwYXJlbnRPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKaW5kZXggODVk
MjJkMmRjNTJhMzNiMmJkMTBkYzQyZmQxMTc2ODhjNmIwYjMzMS4uMWRiYzMxYWE3YjgyMzM1ODJh
NWUyYjMzY2JhMTdmYWU2YzM2NDY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcApAQCAtMTU3LDcgKzE1
Nyw3IEBAIFN0cmluZyBXZWJzaXRlRGF0YVJlY29yZDo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbigpCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLVdlYnNpdGVEYXRhUmVjb3Jk
IFdlYnNpdGVEYXRhUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25zdAorV2Vic2l0ZURhdGFSZWNv
cmQgV2Vic2l0ZURhdGFSZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1
cm4gV2Vic2l0ZURhdGFSZWNvcmQgewogICAgICAgICBjcm9zc1RocmVhZENvcHkoZGlzcGxheU5h
bWUpLApAQCAtMTczLDQgKzE3MywyMCBAQCBXZWJzaXRlRGF0YVJlY29yZCBXZWJzaXRlRGF0YVJl
Y29yZDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICB9OwogfQogCitXZWJzaXRlRGF0YVJlY29y
ZCBXZWJzaXRlRGF0YVJlY29yZDo6aXNvbGF0ZWRDb3B5KCkgJiYKK3sKKyAgICByZXR1cm4gV2Vi
c2l0ZURhdGFSZWNvcmQgeworICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkaXNwbGF5
TmFtZSkpLAorICAgICAgICB0eXBlcywKKyAgICAgICAgc2l6ZSwKKyAgICAgICAgY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUob3JpZ2lucykpLAorICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShjb29raWVIb3N0TmFtZXMpKSwKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoSFNU
U0NhY2hlSG9zdE5hbWVzKSksCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFsdGVy
bmF0aXZlU2VydmljZXNIb3N0TmFtZXMpKSwKKyNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJ
TkdfUFJFVkVOVElPTikKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzb3VyY2VM
b2FkU3RhdGlzdGljc1JlZ2lzdHJhYmxlRG9tYWlucykpLAorI2VuZGlmCisgICAgfTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhUmVjb3JkLmgKaW5kZXggMTFjYThlODAwMjZiYTg1Mjk3ZGUzMWUzZmQwMTIxY2IxZmNk
NWU0Ni4uZDY4NTZmNDRkYzdkZWJkZGY1OWE0ZjA4ZGFhMjc2MTc4NGRjNmVhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJl
Y29yZC5oCkBAIC01OCw3ICs1OCw4IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAgICAg
Ym9vbCBtYXRjaGVzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAg
ICAgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oKTsKIAotICAgIFdlYnNpdGVE
YXRhUmVjb3JkIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdlYnNpdGVEYXRhUmVjb3JkIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICY7CisgICAgV2Vic2l0ZURhdGFSZWNvcmQgaXNvbGF0ZWRDb3B5
KCkgJiY7CiAKICAgICBTdHJpbmcgZGlzcGxheU5hbWU7CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gdHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCA0NjQ3MmQ3MTQ4ZjIzZjU3
ZTczZWE3NzcxOWExMWY2NDRiZDE3YzViLi42NjAzNzU3NTZkZDdiZjQ1Y2ZhYTMwMDZjNjdkZmRl
YzMwZTZjMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYkQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgcmVz
dWx0KQordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5T
ZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmIHJlZ2lzdHJhdGlvbktleSwgV29y
a2VyRmV0Y2hSZXN1bHQmJiByZXN1bHQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyIHsgam9iRGF0YUlkZW50
aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgcmVzdWx0IH0pOwogfQpAQCAtMTEwLDcgKzExMCw3IEBA
IHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBkCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciB9KTsKIH0KIAotdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBT
ZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YSYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9y
aWdpbiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIGRhdGEs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBTdHJpbmcmJiB1c2VyQWdlbnQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyB0b3BPcmlnaW4uZGF0YSgp
LCBkYXRhLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCB1
c2VyQWdlbnQgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IGI2YjJiNGYxOGE1YzRiNGFlZGQw
OGY0MTFmYTgzMTgwMTg1OWI1MDcuLmIyOTI1NTkwNDJjNzc0NjU1MjAwYjFiNWVmNTEwM2M4ODNj
YmFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC03MSw5ICs3MSw5IEBAIHByaXZhdGU6CiAgICAg
V2ViU1dDbGllbnRDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIo
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKSBmaW5hbDsKLSAgICB2b2lkIGZp
bmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JikgZmluYWw7CisgICAgdm9p
ZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmJiwgV2ViQ29yZTo6V29ya2VyRmV0Y2hSZXN1bHQmJikgZmluYWw7CiAgICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYs
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSkg
ZmluYWw7Ci0gICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudERhdGEmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsK
KyAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYm
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyPiYsIFN0cmluZyYmIHVzZXJBZ2VudCkgZmluYWw7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzY2hlZHVsZVVucmVnaXN0ZXJKb2JJblNlcnZlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpFeGNlcHRpb25Pcjxib29sPiYmKT4mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggYWQxOTNiYjBlNGQwZjZhNDgyMzc4ODRkZWYxZDQy
MjM2MTcxZTdkOS4uMTg0MjlhZjZkNGU2MmYwNzhiNzdiODYzZTk4YTFhMDJjNzdmN2VmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0
YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y2FsbE9uTWFpblJ1bkxvb3AoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBi
bG9iVVJMID0gYmxvYlVSTC5pc29sYXRlZENvcHkoKV0gKCkgeworICAgIGNhbGxPbk1haW5SdW5M
b29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYmxvYlVSTCA9IFdURk1v
dmUoYmxvYlVSTCkuaXNvbGF0ZWRDb3B5KCldICgpIHsKICAgICAgICAgYXV0byogc2VydmljZVdv
cmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdv
cmtlclRocmVhZFByb3h5KG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgICAgICBpZiAo
IXNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSkgewogICAgICAgICAgICAgZGlkRmFpbChpbnRlcm5h
bEVycm9yKGJsb2JVUkwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0lu
UHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggNzc0M2Q1MDg4NTI0YmNlNWQ3ZDNmMzQ5MmZjNzcx
N2E4N2FhMTA5ZS4uNzY1NGJiZDcxM2VjOTdkNzBkOWRkNWMzY2Q5ZjI3ODliZTk0OTcxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHAKQEAgLTQ4NCw5ICs0ODQsOSBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cgogICAgIH0pOwog
fQogCi12b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZl
cnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYg
ZGF0YWJhc2VzKQordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFt
ZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4m
JiBkYXRhYmFzZXMpCiB7Ci0gICAgZGlzcGF0Y2hUYXNrUmVwbHkoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllciwgZGF0YWJhc2VzID0gY3Jvc3NU
aHJlYWRDb3B5KGRhdGFiYXNlcyldKCkgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hUYXNrUmVwbHko
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCByZXF1ZXN0SWRlbnRpZmllciwg
ZGF0YWJhc2VzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZGF0YWJhc2VzKSldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVz
QW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoZGF0YWJhc2VzKSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNz
SURCU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2Vy
dmVyLmgKaW5kZXggZDIwNzQxYzgwMmFmZTlmYTY2YmEwMWYzNjljYzQ1MmViMWU0YjYwNi4uOGNi
MGEyMDg2YmUzZjM1MzU3OWNhNDEwNzJlNWFmOTY3ODA0Y2JmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuaApAQCAtMTEzLDcgKzExMyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OklEQkVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZUZyb21TZXJ2ZXIoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpJREJFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQo
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24+JikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVy
c2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgVmVjdG9yPFdlYkNv
cmU6OklEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBjbG9z
ZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2UoV2FsbFRpbWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCAxODk3YmQ2MmQ0
N2JkNDM1NDNjMzI2ZTU1YWZiODY4ZmVhZmM1ZTc1Li5iMjAyYjQ0ODA3OGMzZmVhNWJjOTU1MDgw
YWE3ZWVkZTZlY2E3OGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5jcHAKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpk
ZWxldGVPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAgICAgICAgIG1f
b3JpZ2luU2V0LnJlbW92ZShvcmlnaW5JZCk7CiAgICAgfQogCi0gICAgbV90aHJlYWQtPmRpc3Bh
dGNoKFt0aGlzLCBvcmlnaW5JZCA9IG9yaWdpbklkLmlzb2xhdGVkQ29weSgpXSB7CisgICAgbV90
aHJlYWQtPmRpc3BhdGNoKFt0aGlzLCBvcmlnaW5JZCA9IFdURk1vdmUob3JpZ2luSWQpLmlzb2xh
dGVkQ29weSgpXSB7CiAgICAgICAgIHN5bmNEZWxldGVPcmlnaW4ob3JpZ2luSWQpOwogICAgIH0p
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454061</attachid>
            <date>2022-03-07 19:15:34 -0800</date>
            <delta_ts>2022-03-08 12:06:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237568-20220307191533.patch</filename>
            <type>text/plain</type>
            <size>266382</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdkNjg1YjA3YzMxYTdi
NWVhZWY2N2JhZmY0YzEwYzNhOTJlNmMxOS4uY2NhMjE1ZjkzOWY1ZWYwNmMxYjEzY2I3ZDQzY2Fi
MzFhZDIyYzNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIyLTAzLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgZnVydGhlciB0
aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpbWl6ZSBmdXJ0aGVyIHRoZSBwYXNzaW5nIG9m
IGRhdGEgYWNyb3NzIHRocmVhZHMgYnkgbGV2ZXJhZ2luZyBtb3JlIGJyb2FkbHkgdGhlIG9wdGlt
aXplZAorICAgICAgICB2ZXJzaW9ucyBvZiBpc29sYXRlZENvcHkoKSBvbiByLXZhbHVlIHJlZmVy
ZW5jZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmdldFBhcmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01GaWxlU3lzdGVtOjpnZXRFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW1hY2Nlc3MvV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6aXNTYW1lRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlSGFuZGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0
RGlyZWN0b3J5SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbjo6cmVtb3ZlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NI
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0
aW9uOjpjbG9zZVN5bmNBY2Nlc3NIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpnZXRIYW5kbGVOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246Om1vdmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnRE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRleEtleTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkluZGV4S2V5Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFuYWdlcjo6
ZmlsZVN5c3RlbUFjY2Vzc0dldERpcmVjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9zdG9yYWdl
L1dvcmtlclN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclN0
b3JhZ2VDb25uZWN0aW9uOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3Nvcik6CisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRj
aEFsZ29yaXRobU9wZXJhdGlvbik6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAg
ICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgICog
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENv
bm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudHM6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50czo6
bWF0Y2hBbGwpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZp
bmlzaGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9X
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2No
ZWR1bGVVbnJlZ2lzdGVySm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoU3Vi
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9u
RGF0YWJhc2U6OmRvUHVzaENoYW5nZXMpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldDo6YWRkTW9kdWxlKToKKwogMjAyMi0wMy0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIHRoZSBw
YXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjQyZWQxODkyZmYwZjBl
NjYwN2E2OWExM2M1N2UxNjFhYjQyZGI3MS4uOWUzZDdjOTNhZmY2M2I0MjhjMjQ4MTU0YjU4MDFh
NTgzYmVhZjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTYgQEAKKzIwMjItMDMtMDcgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBmdXJ0aGVyIHRo
ZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE9wdGltaXplIGZ1cnRoZXIgdGhlIHBhc3Npbmcgb2Yg
ZGF0YSBhY3Jvc3MgdGhyZWFkcyBieSBsZXZlcmFnaW5nIG1vcmUgYnJvYWRseSB0aGUgb3B0aW1p
emVkCisgICAgICAgIHZlcnNpb25zIG9mIGlzb2xhdGVkQ29weSgpIG9uIHItdmFsdWUgcmVmZXJl
bmNlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjbGVhcik6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29r
aWVCbG9ja2luZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92
ZURhdGFSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlu
cyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVz
dGluZ0V2ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nRnJhbWVOYXZp
Z2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojpsb2dVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlcklu
dGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RTZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVsYXRp
b25zaGlwT25seUluRGF0YWJhc2VPbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VmVyeVByZXZhbGVudFJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpk
dW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omlz
UmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdyYW5kZmF0aGVyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxv
YnNUb1RlbXBvcmFyeUZpbGVzRm9ySW5kZXhlZERCKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291cmNlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVudFJlc291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldEdyYW5kZmF0aGVyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0VmVyeVByZXZh
bGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnNldExhc3RTZWVuKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpsb2dGcmFtZU5hdmlnYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmhhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2Zlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNv
b2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lz
dHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkaWRJbmNyZWFzZVF1b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGVs
ZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6OmNsZWFyRm9y
UmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmF0dHJp
YnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9y
ZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9y
UmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbGVhclNl
bnRBdHRyaWJ1dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlsczo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zQ3Jvc3NUaHJlYWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldExvY2FsU3RvcmFn
ZU9yaWdpbnNDcm9zc1RocmVhZENvcHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjp3cml0ZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkVuZ2luZTo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6cmVtb3ZlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjp3
cml0ZVNpemVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6Omdl
dERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNs
ZWFyQ2FjaGVzRm9yT3JpZ2luRnJvbURpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpFbmdpbmU6OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhy
ZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6UmVjb3JkSW5mb3JtYXRpb246
Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6VHJhdmVyc2Fs
UmVzdWx0Ojppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNh
Y2hlOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjppc29sYXRlZENvcHkp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6Q2FjaGVzOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2Fj
aGVzOjpyZWFkQ2FjaGVzRnJvbURpc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0No
YW5uZWwuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6Om9wZW4p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnVwZGF0ZUZpbGVNb2Rp
ZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpk
aXNwYXRjaFJlYWRPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3Rv
cmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQlN0b3JhZ2VD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xp
ZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRpZElu
Y3JlYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1v
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpyZWdpc3Rl
clRlbXBvcmFyeUJsb2JGaWxlUGF0aHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVN0cmluZy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6OkVudHJ5Ojppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YTo6RW50cnk6Omlzb2xhdGVkQ29w
eSk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OmNyZWF0ZUV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3Jl
Ojpsb29rdXBDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50UnVsZUxpc3RT
dG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxl
TGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUuY3BwOgorICAgICAgICAod2Vi
a2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZVNhdmVCeXRlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OmRlbGV0ZUhhc2hTYWx0RnJvbURpc2spOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW46Okhhc2hTYWx0Rm9yT3JpZ2luKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3Jp
Z2luOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW46Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKToKKwogMjAyMi0wMy0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIHRoZSBw
YXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggODMx
ZTE0MmM0ODJmMzU5OGY4MTZlOTUxZjFkNmFiMzI0MGM0NGU1MS4uNDhjMjQwNWU3OTEzNTE0NTY5
NGNjZjRiZDU1ZGY3YzRmMzUzNWM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMi0wMy0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIE9wdGltaXplIGZ1cnRoZXIgdGhlIHBhc3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTY4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3B0aW1pemUg
ZnVydGhlciB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0aHJlYWRzIGJ5IGxldmVyYWdpbmcg
bW9yZSBicm9hZGx5IHRoZSBvcHRpbWl6ZWQKKyAgICAgICAgdmVyc2lvbnMgb2YgaXNvbGF0ZWRD
b3B5KCkgb24gci12YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogU3RvcmFnZS9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRBbGxE
YXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAgICAgICAqIFN0b3JhZ2UvSW5Qcm9jZXNzSURC
U2VydmVyLmg6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4pOgorCiAyMDIyLTAzLTA3ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgdGhlIHBh
c3Npbmcgb2YgZGF0YSBhY3Jvc3MgdGhyZWFkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDk4MmU1YjU4MzdmNWM1ZTUy
ODA3OTE1Y2E3YmJiNjZjYTEzOTY3ZDguLmI3MDBkODQ0NGIyMGViZDcwZTllNTM0MTRlMTc2NTli
MWZhNDVlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9E
T01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3Rl
bURpcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNvbnRleHQg
fSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnVsbFBh
dGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGNy
b3NzVGhyZWFkQ29weShkaXJlY3RvcnlWaXJ0dWFsUGF0aCldKCkgbXV0YWJsZSB7CisgICAgbV93
b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4
dCA9IFJlZiB7IGNvbnRleHQgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShmdWxsUGF0aCkp
LCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRpcmVjdG9y
eVZpcnR1YWxQYXRoKSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbGlzdGVkQ2hpbGRyZW4g
PSBsaXN0RGlyZWN0b3J5V2l0aE1ldGFkYXRhKGZ1bGxQYXRoKTsKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRleHQg
PSBXVEZNb3ZlKGNvbnRleHQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBsaXN0ZWRDaGlsZHJlbiA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGxpc3Rl
ZENoaWxkcmVuKSksIGRpcmVjdG9yeVZpcnR1YWxQYXRoID0gZGlyZWN0b3J5VmlydHVhbFBhdGgu
aXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih0b0ZpbGVTeXN0ZW1FbnRyaWVzKGNvbnRleHQsIHByb3RlY3RlZFRoaXMsIFdURk1vdmUobGlz
dGVkQ2hpbGRyZW4pLCBkaXJlY3RvcnlWaXJ0dWFsUGF0aCkpOwpAQCAtMjcwLDkgKzI3MCw5IEBA
IHZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEZpbGVTeXN0ZW1FbnRyeSYKICAgICBhdXRvIHZpcnR1YWxQYXRoID0gcmVzb2x2ZVJl
bGF0aXZlVmlydHVhbFBhdGgoZW50cnkudmlydHVhbFBhdGgoKSwgIi4uIik7CiAgICAgQVNTRVJU
KHZpcnR1YWxQYXRoWzBdID09ICcvJyk7CiAgICAgYXV0byBmdWxsUGF0aCA9IGV2YWx1YXRlUGF0
aCh2aXJ0dWFsUGF0aCk7Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgZnVsbFBhdGggPSBj
cm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2
aXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBjb250ZXh0ID0gUmVmIHsgY29udGV4dCB9LCBmdWxsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSksIHZpcnR1YWxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUodmlydHVhbFBhdGgpKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RG
TW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHZhbGlk
YXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdU
Rk1vdmUodmlydHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KTsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGNvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFj
ayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNv
bnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHZhbGlkYXRlZFZpcnR1YWxQYXRoKSksIGNvbXBsZXRpb25DYWxsYmFj
ayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlv
bigpKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTMxMSw5ICszMTEsOSBAQCB2b2lkIERPTUZpbGVT
eXN0ZW06OmdldEVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVTeXN0
ZW1EaXJlY3RvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29udGV4dCA9IFJlZiB7IGNv
bnRleHQgfSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCByZXNvbHZlZFZp
cnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHJlc29sdmVkVmlydHVhbFBhdGgpLCBjb21wbGV0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7Cisg
ICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
Y29udGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShmdWxsUGF0aCkpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdU
Rk1vdmUocmVzb2x2ZWRWaXJ0dWFsUGF0aCkpLCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZW50cnlUeXBl
ID0gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGZ1bGxQYXRoKTsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHQgPSBXVEZNb3ZlKGNvbnRleHQpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRD
b3B5KHJlc29sdmVkVmlydHVhbFBhdGgpLCBlbnRyeVR5cGUsIGNvbXBsZXRpb25DYWxsYmFjayA9
IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbnRl
eHQgPSBXVEZNb3ZlKGNvbnRleHQpLCByZXNvbHZlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUocmVzb2x2ZWRWaXJ0dWFsUGF0aCkpLCBlbnRyeVR5cGUsIGNvbXBsZXRpb25D
YWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGlmICghZW50cnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxi
YWNrKEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJDYW5ub3QgZmluZCBlbnRyeSBhdCBnaXZl
biBwYXRoIl9zIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzNyw5ICszMzcsOSBA
QCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgRmlsZVN5c3RlbUZpbGVFbnRyeQogewogICAgIGF1dG8gdmlydHVhbFBhdGggPSBmaWxl
RW50cnkudmlydHVhbFBhdGgoKTsKICAgICBhdXRvIGZ1bGxQYXRoID0gZXZhbHVhdGVQYXRoKHZp
cnR1YWxQYXRoKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2Z1bGxQYXRoID0gY3Jvc3NU
aHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVh
bFBhdGgpLCBjb250ZXh0ID0gUmVmIHsgY29udGV4dCB9LCBjb21wbGV0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUt
PmRpc3BhdGNoKFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSks
IHZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmlydHVhbFBhdGgpKSwgY29u
dGV4dCA9IFJlZiB7IGNvbnRleHQgfSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21w
bGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHZhbGlkYXRlZFZpcnR1
YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVsbFBhdGgsIFdURk1vdmUodmly
dHVhbFBhdGgpLCBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6UmVndWxhcik7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmFsaWRh
dGVkVmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmFsaWRhdGVkVmlydHVhbFBhdGgpLCBj
b250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShj
b21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGZ1bGxQYXRoKSksIHZhbGlkYXRl
ZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmFsaWRhdGVkVmlydHVhbFBh
dGgpKSwgY29udGV4dCA9IFdURk1vdmUoY29udGV4dCksIGNvbXBsZXRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICh2
YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBhdGgucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbWFjY2Vzcy9Xb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9y
YWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggMmZkYmM4YzkzMDVhMzc1NWE2ZDI1NjFjOGIzMzdjZWRi
MDRiOGYxNS4uZTVkYzFhZWE3OWNjMjkzMmNhY2ZiNjVkMTgwNGRmZWM4ZmIyOTBlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtYWNjZXNzL1dvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAg
LTEwMiw4ICsxMDIsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6
aXNTYW1lRW50cnkoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaQogICAgIG1fc2FtZUVudHJ5
Q2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
UmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5U
aHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBvdGhlcklkZW50aWZpZXJdKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwg
d29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUo
W2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChh
dXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi0+ZGlkSXNTYW1lRW50cnkoY2FsbGJhY2tJZGVudGlmaWVyLCBX
VEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7CkBAIC0xMjgsOCArMTI4LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFnZUNv
bm5lY3Rpb246OmdldEZpbGVIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIKICAgICBt
X2dldEhhbmRsZUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtl
clRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9u
ID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgbmFtZSA9IG5hbWUuaXNvbGF0
ZWRDb3B5KCksIGNyZWF0ZUlmTmVjZXNzYXJ5XSgpIG11dGFibGUgewotICAgICAgICBhdXRvIG1h
aW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFdU
Rk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAg
d29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZp
ZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFi
bGUgeworICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZp
ZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zv
ck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUocmVzdWx0KSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8gY29ubmVjdGlvbiA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuZmls
ZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24tPmRpZEdldEhhbmRsZShjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAg
ICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKQEAgLTE0OCw4ICsx
NDgsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0RGlyZWN0
b3J5SGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudAogICAgIG1fZ2V0SGFuZGxlQ2FsbGJhY2tz
LmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxP
bk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9z
Y29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLCBpZGVudGlmaWVyLCBuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwgY3JlYXRlSWZO
ZWNlc3NhcnldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
bWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
V1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVu
dGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+ZGlkR2V0SGFuZGxlKGNh
bGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtl
clJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMTc0LDggKzE3NCw4IEBAIHZvaWQgV29ya2Vy
RmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVFbnRyeShGaWxlU3lzdGVtSGFuZGxl
SWRlbnRpZmllciBpCiAgICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIs
IFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRl
bnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRo
cmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyLCBuYW1l
ID0gbmFtZS5pc29sYXRlZENvcHkoKSwgZGVsZXRlUmVjdXJzaXZlbHldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29y
a2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2Nh
bGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRv
JiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVs
dE1vZGUoKSk7CkBAIC0xOTQsOCArMTk0LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3RvcmFn
ZUNvbm5lY3Rpb246OnJlc29sdmUoRmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnQKICAg
ICBtX3Jlc29sdmVDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3Jr
ZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVjdGlv
biA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXIsIG90aGVySWRlbnRpZmllcl0o
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJ
ZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVz
dWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHko
cmVzdWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFk
Q2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdv
cmtlclRocmVhZCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJl
c3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5kaWRSZXNvbHZlKGNhbGxiYWNrSWRlbnRp
ZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOwpAQCAtMjIwLDggKzIyMCw4IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0
b3JhZ2VDb25uZWN0aW9uOjpnZXRGaWxlKEZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50
CiAgICAgbV9zdHJpbmdDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3
b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBtYWluVGhyZWFkQ29ubmVj
dGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29y
a2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2Nh
bGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRv
JiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2Nh
bGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVTdHJpbmdDYWxsYmFjayhjYWxsYmFja0lkZW50aWZp
ZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKQEAgLTI1OCwxMCArMjU4LDggQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtU3Rv
cmFnZUNvbm5lY3Rpb246OmNyZWF0ZVN5bmNBY2Nlc3NIYW5kbGUoRmlsZVN5c3RlbUhhbmRsZUkK
ICAgICBtX2dldEFjY2Vzc0hhbmRsQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrSWRlbnRp
Zmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhyZWFkKCkgfSwgbWFpblRocmVh
ZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBpZGVudGlmaWVyXSgpIG11dGFi
bGUgewotICAgICAgICBhdXRvIG1haW5UaHJlYWRDYWxsYmFjayA9IFtjYWxsYmFja0lkZW50aWZp
ZXIsIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKV0oYXV0byByZXN1bHQpIG11
dGFibGUgewotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0LmV4Y2VwdGlvbigpKTsKLSAg
ICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJh
Y2tJZGVudGlmaWVyLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0
YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRp
Zmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RG
TW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBp
ZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5m
aWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVj
dGlvbi0+ZGlkQ3JlYXRlU3luY0FjY2Vzc0hhbmRsZShjYWxsYmFja0lkZW50aWZpZXIsIFdURk1v
dmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKQEAgLTI4MCw4ICsyNzgsOCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVj
dGlvbjo6Y2xvc2VTeW5jQWNjZXNzSGFuZGxlKEZpbGVTeXN0ZW1IYW5kbGVJZAogICAgIG1fdm9p
ZENhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAK
ICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lkZW50aWZpZXIsIHdvcmtlclRocmVhZCA9
IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWlu
VGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgYWNjZXNzSGFuZGxlSWRlbnRpZmllcl0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVu
dGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVz
dWx0KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFkQ2Fs
bGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtl
clRocmVhZCldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3Vs
dCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oc2NvcGUpLmZpbGVTeXN0ZW1TdG9yYWdlQ29ubmVjdGlvbigpKQogICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb21wbGV0ZVZvaWRDYWxsYmFjayhjYWxsYmFj
a0lkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5M
b29wOjpkZWZhdWx0TW9kZSgpKTsKQEAgLTMyNSw4ICszMjMsOCBAQCB2b2lkIFdvcmtlckZpbGVT
eXN0ZW1TdG9yYWdlQ29ubmVjdGlvbjo6Z2V0SGFuZGxlTmFtZXMoRmlsZVN5c3RlbUhhbmRsZUlk
ZW50aWZpZQogICAgIG1fZ2V0SGFuZGxlTmFtZXNDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRp
ZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJh
Y2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBt
YWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rpb24sIGlkZW50aWZpZXJd
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNr
SWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5
KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gbWFpblRocmVh
ZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3
b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVudGlmaWVyLCBy
ZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkK
ICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+ZGlkR2V0SGFuZGxlTmFtZXMoY2FsbGJh
Y2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSk7CkBAIC0zNTEsOCArMzQ5LDggQEAgdm9pZCBXb3JrZXJGaWxl
U3lzdGVtU3RvcmFnZUNvbm5lY3Rpb246OmdldEhhbmRsZShGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciBpZGUKICAgICBtX2dldEhhbmRsZUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVy
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFja0lk
ZW50aWZpZXIsIHdvcmtlclRocmVhZCA9IFJlZiB7IG1fc2NvcGUtPnRocmVhZCgpIH0sIG1haW5U
aHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgaWRlbnRpZmllciwgbmFt
ZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRo
cmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92
ZSh3b3JrZXJUaHJlYWQpXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwg
cmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwg
d29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9k
ZShbY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShy
ZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lz
dGVtU3RvcmFnZUNvbm5lY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+
ZGlkR2V0SGFuZGxlKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAg
ICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMzcxLDggKzM2OSw4
IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbVN0b3JhZ2VDb25uZWN0aW9uOjptb3ZlKEZpbGVTeXN0
ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpCiAgICAgbV92b2lkQ2FsbGJhY2tzLmFkZChjYWxs
YmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAogICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gUmVmIHsgbV9zY29wZS0+dGhy
ZWFkKCkgfSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBp
ZGVudGlmaWVyLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG5hbWUgPSBjcm9zc1RocmVhZENvcHko
bmV3TmFtZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZENhbGxiYWNrID0g
W2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQp
XShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxv
b3AoKS5wb3N0VGFza0Zvck1vZGUoW2NhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NU
aHJlYWRDb3B5KHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
bWFpblRocmVhZENhbGxiYWNrID0gW2NhbGxiYWNrSWRlbnRpZmllciwgd29ya2VyVGhyZWFkID0g
V1RGTW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2FsbGJhY2tJZGVu
dGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5maWxlU3lzdGVtU3RvcmFnZUNvbm5l
Y3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29tcGxldGVWb2lkQ2Fs
bGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAg
fSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0
aW9uVG9DbGllbnREZWxlZ2F0ZS5oCmluZGV4IDk4NDViZmY3YzVhY2IyZjk4NTE2ZTYzMmU0YzZj
ZDUxZWRiMjE3OGUuLmFjZWVkZTM3MWJlZjYyYzlhMGUyN2U0YmM4OWNmYjIxNDUzNTY5ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25u
ZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VGcm9tU2VydmVyKFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQkVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBu
ZXdWZXJzaW9uKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1l
c0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IFZlY3RvcjxJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYs
IFZlY3RvcjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JbmRleEtleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSW5kZXhLZXkuY3BwCmluZGV4IGI1ODc1ZGNiZWU3NmM3MTE5MGE3MDFhMTVi
MWE5MDM1NzVjODQwNjcuLmRiNGU5NzAzNzg2OWFhOWE4NDA2MDE2ZDM5YjE0OWVmMjgyM2FmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRl
eEtleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
ZGV4S2V5LmNwcApAQCAtMzcsMTEgKzM3LDE2IEBAIEluZGV4S2V5OjpJbmRleEtleShWZWN0b3I8
SURCS2V5RGF0YT4mJiBrZXlzKQogICAgIG1fa2V5cy5zd2FwKGtleXMpOwogfQogCi1JbmRleEtl
eSBJbmRleEtleTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK0luZGV4S2V5IEluZGV4S2V5Ojppc29s
YXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KG1fa2V5
cykgfTsKIH0KIAorSW5kZXhLZXkgSW5kZXhLZXk6Omlzb2xhdGVkQ29weSgpICYmCit7CisgICAg
cmV0dXJuIHsgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUobV9rZXlzKSkgfTsKK30KKwogSURCS2V5
RGF0YSBJbmRleEtleTo6YXNPbmVLZXkoKSBjb25zdAogewogICAgIGlmIChtX2tleXMuaXNFbXB0
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0luZGV4S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5k
ZXhLZXkuaAppbmRleCA3OGNjNTJlMDgxMzkzMmIyYThjZTI5Y2ZlOTU5NzA2NjRjZTI0YTZjLi5i
YzkwYmQxYjVhOWRmYTNlZGEyMTg4YWFhZTJkOTg5OGQxMmY4MmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaApAQCAtMzYsNyAr
MzYsOCBAQCBwdWJsaWM6CiAgICAgSW5kZXhLZXkoKTsKICAgICBJbmRleEtleShWZWN0b3I8SURC
S2V5RGF0YT4mJik7CiAKLSAgICBJbmRleEtleSBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBJ
bmRleEtleSBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIEluZGV4S2V5IGlzb2xhdGVkQ29w
eSgpICYmOwogCiAgICAgSURCS2V5RGF0YSBhc09uZUtleSgpIGNvbnN0OwogICAgIFZlY3RvcjxJ
REJLZXlEYXRhPiBtdWx0aUVudHJ5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3ODA0YTgwMjdkNDA2OTIzYTM0
YzM5ZWFjY2VjNjkzY2QxMDYxMTZjLi5jZDQ2NjMwZGI3MGMwYmI4ZTgwOWM3NGI5ODc5OTVmNDli
NzM1ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpmaWxl
U3lzdGVtQWNjZXNzR2V0RGlyZWN0b3J5KERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhYwog
ICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QoY29ubmVjdGlvbkluZm9PckV4Y2VwdGlvbi5y
ZWxlYXNlRXhjZXB0aW9uKCkpOwogCiAgICAgYXV0byBjb25uZWN0aW9uSW5mbyA9IGNvbm5lY3Rp
b25JbmZvT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgY29ubmVjdGlvbklu
Zm8uY29ubmVjdGlvbi5maWxlU3lzdGVtR2V0RGlyZWN0b3J5KGNvbm5lY3Rpb25JbmZvLm9yaWdp
biwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB3ZWFrTmF2aWdhdG9yID0gbV9uYXZpZ2F0
b3JdKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBjb25uZWN0aW9uSW5mby5jb25uZWN0aW9u
LmZpbGVTeXN0ZW1HZXREaXJlY3RvcnkoY29ubmVjdGlvbkluZm8ub3JpZ2luLCBbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIHdlYWtOYXZpZ2F0b3IgPSBtX25hdmlnYXRvcl0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9Xb3JrZXJTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0b3JhZ2UvV29ya2Vy
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IGE4MjIwMWU5MmFhOTJjZWIyYTM3NDhiOTM1MjIz
NDBjMjFjOWJhZjQuLmQ1ZGNjYzM0Y2QzMTEwYjhlYjU3YWNmZjdkY2Y0NDcxNmMzMmRjMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RvcmFnZS9Xb3JrZXJTdG9yYWdlQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdG9yYWdlL1dvcmtlclN0
b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtOTQsOCArOTQsOCBAQCB2b2lkIFdvcmtlclN0b3JhZ2VD
b25uZWN0aW9uOjpmaWxlU3lzdGVtR2V0RGlyZWN0b3J5KGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luLAogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJU
aHJlYWQgPSBSZWYgeyBtX3Njb3BlLT50aHJlYWQoKSB9LCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbWFpblRocmVhZENvbm5lY3Rpb24g
PSB3b3JrZXJUaHJlYWQtPndvcmtlckxvYWRlclByb3h5KCkuc3RvcmFnZUNvbm5lY3Rpb24oKTsK
LSAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBbY2FsbGJhY2tJZGVudGlmaWVyLCB3
b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gcmVzdWx0KSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShb
Y2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkocmVzdWx0KV0gKGF1
dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBtYWluVGhyZWFkQ2FsbGJhY2sgPSBb
Y2FsbGJhY2tJZGVudGlmaWVyLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCld
KGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3RvcmFnZUNv
bm5lY3Rpb24oKS5kaWRHZXREaXJlY3RvcnkoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJl
c3VsdCkpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAg
ICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDhhNTEzMGRiOTcwZmJmNjJjMTg0
NTIwOWE0MDNhMmE0OTIxZTQyNTUuLmFjMDUwNWQ1NDk2NDIzZmM1ZmRlZTY2MzBlYjdmOTUzODAy
MTMzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKFN0
cmluZyYmIG5hbWUsIFJlZjwKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJBIHByb2Nlc3NvciB3YXMg
YWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07CiAKLSAgICB0aHJlYWQoKS5t
ZXNzYWdpbmdQcm94eSgpLnBvc3RUYXNrVG9BdWRpb1dvcmtsZXQoW25hbWUgPSBXVEZNb3ZlKG5h
bWUpLmlzb2xhdGVkQ29weSgpLCBwYXJhbWV0ZXJEZXNjcmlwdG9ycyA9IGNyb3NzVGhyZWFkQ29w
eShwYXJhbWV0ZXJEZXNjcmlwdG9ycyldKEF1ZGlvV29ya2xldCYgd29ya2xldCkgbXV0YWJsZSB7
CisgICAgdGhyZWFkKCkubWVzc2FnaW5nUHJveHkoKS5wb3N0VGFza1RvQXVkaW9Xb3JrbGV0KFtu
YW1lID0gV1RGTW92ZShuYW1lKS5pc29sYXRlZENvcHkoKSwgcGFyYW1ldGVyRGVzY3JpcHRvcnMg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwYXJhbWV0ZXJEZXNjcmlwdG9ycykpXShBdWRpb1dv
cmtsZXQmIHdvcmtsZXQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoYXV0byogYXVkaW9Db250ZXh0ID0gd29ya2xldC5hdWRpb0NvbnRleHQo
KSkKICAgICAgICAgICAgIGF1ZGlvQ29udGV4dC0+YWRkQXVkaW9QYXJhbURlc2NyaXB0b3JzKG5h
bWUsIFdURk1vdmUocGFyYW1ldGVyRGVzY3JpcHRvcnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobS5jcHAKaW5kZXggZmY5ODY0NjYzOGNmYzI2YjVkNTVjYzZlMTVlNTFl
MDk3ZTY5NmNhYS4uY2EzYjk3YmZmNWE5Mzc0MDYyOGQxMzg5NTJlODQwOWZlNGE2NTQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKQEAgLTk4LDcgKzk4LDcg
QEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hBbGdvcml0aG1PcGVyYXRpb24oV29ya1F1ZXVlJiB3b3Jr
UXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICB3b3JrUXVldWUuZGlzcGF0Y2goCiAgICAg
ICAgIFtvcGVyYXRpb24gPSBXVEZNb3ZlKG9wZXJhdGlvbiksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
IGNvbnRleHRJZGVudGlmaWVyID0gY29udGV4dC5pZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbigpOwotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW3Jlc3VsdCA9
IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShhdXRvJikgbXV0
YWJsZSB7CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKGNv
bnRleHRJZGVudGlmaWVyLCBbcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2Vw
dGlvbk9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAppbmRleCAxYTE5YjBl
ZTlhMmE0NTJiZjU3NzQwYTJhYmZkYmRkYmMyMzM4YWU0Li5jZGM2MTY5ODVhZjcwOTI5YzVkYTg2
MTI0Zjg4YTE2ZTFkYWU3YjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uT3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApAQCAtMjA5LDYg
KzIwOSwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6RXhjZXB0aQogICAgICAgICAgICAgcmV0dXJuIGNy
b3NzVGhyZWFkQ29weShzb3VyY2UuZXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4gY3Jvc3NU
aHJlYWRDb3B5KHNvdXJjZS5yZXR1cm5WYWx1ZSgpKTsKICAgICB9CisgICAgc3RhdGljIFR5cGUg
Y29weShUeXBlJiYgc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVhc2VF
eGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKTsKKyAgICB9CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiA+
IHsKQEAgLTIxOSw2ICsyMjUsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6RXhjZXB0aW9uT3I8dm9pZD4KICAgICAgICAg
ICAgIHJldHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLmV4Y2VwdGlvbigpKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CisgICAgc3RhdGljIFR5cGUgY29weShUeXBlJiYgc291cmNlKQor
ICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJl
dHVybiBjcm9zc1RocmVhZENvcHkoc291cmNlLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggMTJkZGVmZWQ0ZjYwZTc0YzE2MWM2
MDkxNTIyNGRlZThiNGU2NmY2Ny4uNjJkMWIzNDhlNDlkN2E2MmM5ZDUwYTI3YWE2NzljMTU2MDI3
MGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Jsb2JVUkxD
b250YWluc051bGxPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHVybC5zdHJpbmco
KS5zdWJzdHJpbmcoc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4IC0gMSkgPT0gIm51
bGwiOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBQb2xpY3lDb250YWluZXImIHBvbGljeUNvbnRh
aW5lciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgUG9s
aWN5Q29udGFpbmVyJiYgcG9saWN5Q29udGFpbmVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwpCiB7CiAgICAgLy8gSWYgdGhlIGJsb2IgVVJMIGNvbnRhaW5zIG51bGwgb3JpZ2lu
LCBhcyBpbiB0aGUgY29udGV4dCB3aXRoIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgZmlsZSBV
UkwsIHNhdmUgdGhlIG1hcHBpbmcgYmV0d2VlbiB1cmwgYW5kIG9yaWdpbiBzbyB0aGF0IHRoZSBv
cmlnaW4gY2FuIGJlIHJldHJpdmVkIHdoZW4gZG9pbmcgc2VjdXJpdHkgb3JpZ2luIGNoZWNrLgog
ICAgIGlmIChvcmlnaW4gJiYgaXNCbG9iVVJMQ29udGFpbnNOdWxsT3JpZ2luKHVybCkpCkBAIC0x
MTAsNyArMTEwLDcgQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgUG9saWMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwg
c3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBwb2xpY3lDb250YWluZXIgPSBjcm9zc1Ro
cmVhZENvcHkocG9saWN5Q29udGFpbmVyKV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBwb2xp
Y3lDb250YWluZXIgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShwb2xpY3lDb250YWluZXIpKV0g
ewogICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwsIHBv
bGljeUNvbnRhaW5lcik7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IGQ5NDNkZjEwZTgwYzQ5MjNhZTk4MGIyMjZk
Y2ZhODZhM2VhMjk5ZTEuLjBmNmI1OGYzNThlMWUyNmJjNGE5ODdmMjJkZWMzOGYxZDNlZTk1ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50UGF0aCwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFBvbGljeUNvbnRhaW5lciYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qLCBQb2xpY3lDb250
YWluZXImJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOwogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAgICAgc3RhdGljIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxl
LmgKaW5kZXggZjIzNmI0Mjg2YWQyNzljOTM0NDYyODFkMmNiNzcwYTk5MDMxOTViMi4uZTA1YTcz
ZjQwODBhMTAxOTFiN2VmYzNlZTg2MmUwY2U1NWI0NmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVIYW5kbGUuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAKICAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKCkgY29uc3Q7CiAKKyAgICBGaWxlSGFuZGxlIGlz
b2xhdGVkQ29weSgpICYmIHsgcmV0dXJuIFdURk1vdmUoKnRoaXMpOyB9CisKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fcGF0aDsKICAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGYxNmQ3OWVl
OTc4OWNmNmZmZThjMDg1NjA1ZDNmYTFiYzJjMTk2OTYuLmI0Y2VkM2I2MDNiNDliYzY4MDAwYmM2
YTE0NGUzMzM0OGQxMzM3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0xMDksMTMgKzEwOSwxMyBAQCB2b2lk
IFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZgogICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZShyZWdpc3RyYXRpb25EYXRhLmtleSk7CiB9CiAKLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpz
dGFydFNjcmlwdEZldGNoRm9yU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK3ZvaWQgU1dDbGllbnRDb25u
ZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyIGpvYklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmJiByZWdpc3Ry
YXRpb25LZXksIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCiB7CiAgICAgYm9vbCBp
c1Bvc3RlZCA9IHBvc3RUYXNrRm9ySm9iKGpvYklkZW50aWZpZXIsIElzSm9iQ29tcGxldGU6Ok5v
LCBbY2FjaGVQb2xpY3ldIChhdXRvJiBqb2IpIHsKICAgICAgICAgam9iLnN0YXJ0U2NyaXB0RmV0
Y2goY2FjaGVQb2xpY3kpOwogICAgIH0pOwogICAgIGlmICghaXNQb3N0ZWQpCi0gICAgICAgIGZp
bmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
LCBqb2JJZGVudGlmaWVyIH0sIHJlZ2lzdHJhdGlvbktleSwgd29ya2VyRmV0Y2hFcnJvcihSZXNv
dXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCBtYWtlU3RyaW5n
KCJGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBzZXJ2aWNlIHdvcmtlciB3aXRoIHNjb3BlICIs
IHJlZ2lzdHJhdGlvbktleS5zY29wZSgpLnN0cmluZygpKSB9KSk7CisgICAgICAgIGZpbmlzaEZl
dGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBqb2JJ
ZGVudGlmaWVyIH0sIFdURk1vdmUocmVnaXN0cmF0aW9uS2V5KSwgd29ya2VyRmV0Y2hFcnJvcihS
ZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCBtYWtlU3Ry
aW5nKCJGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBzZXJ2aWNlIHdvcmtlciB3aXRoIHNjb3Bl
ICIsIHJlZ2lzdHJhdGlvbktleS5zY29wZSgpLnN0cmluZygpKSB9KSk7CiB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDZkYjJiOTBjYjNjYWE5MmE4OWJkNWJhNGFhY2U1YzliNWFjNmIzODIuLmY5NTQwNGI3NGI2
ZDQ4MmRlN2U2OGEwNWVhNTMyZTFiODg2OGY0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTgxLDEwICs4MSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtYXlI
YXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5nJiYgdXNlckFn
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3Qg
V29ya2VyRmV0Y2hSZXN1bHQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaEZldGNoaW5n
U2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmLCBXb3JrZXJGZXRjaFJlc3VsdCYmKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soKTsgfQogICAgIHZp
cnR1YWwgdm9pZCB3aGVuU2VydmljZVdvcmtlcklzVGVybWluYXRlZEZvclRlc3RpbmcoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykg
eyBjYWxsYmFjaygpOyB9CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBqb2JSZWplY3RlZEluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVu
dGlmaWVyLCBjb25zdCBFeGNlcHRpb25EYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihT
ZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnRTY3JpcHRGZXRjaEZvclNlcnZlcihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291cmNlLCBTdHJp
bmcmJiBzb3VyY2VPcmlnaW4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0
cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKaW5k
ZXggMzg0ZGM3MTQ3MmJiNjAxMWQ2Y2RlMDMxYWE4ZTgyYzVhMjJjMWQzZS4uM2M1ZDQ3OGU5MDk4
MzJhMzhmYjBlODllNzdlMzMzNjRjZjgyODdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC01OCw3ICs1
OCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
bWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpZCA9IGlkLmlzb2xhdGVkQ29w
eSgpXSAoKSB7CiAgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKICAgICAgICAgY29ubmVjdGlvbi0+ZmluZENsaWVudEJ5
VmlzaWJsZUlkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGlkLCBbcHJvbWlzZVBv
aW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoYXV0byYmIGNsaWVudERhdGEpIHsKLSAg
ICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIGRhdGEgPSBj
cm9zc1RocmVhZENvcHkoY2xpZW50RGF0YSldIChhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZVBvaW50ZXIsIGRhdGEgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShjbGllbnREYXRhKSldIChhdXRvJiBjb250ZXh0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gY29udGV4dC5jbGllbnRz
KCkubV9wZW5kaW5nUHJvbWlzZXMudGFrZShwcm9taXNlUG9pbnRlcikpCiAgICAgICAgICAgICAg
ICAgICAgIGRpZEZpbmlzaEdldFJlcXVlc3QoY29udGV4dCwgKnByb21pc2UsIFdURk1vdmUoZGF0
YSkpOwogICAgICAgICAgICAgfSk7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNsaWVudHM6Om1hdGNoQWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IENsaWVuCiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBvcHRpb25zXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBjb25uZWN0
aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOwogICAgICAg
ICBjb25uZWN0aW9uLT5tYXRjaEFsbChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgb3B0aW9ucywg
W3Byb21pc2VQb2ludGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8mJiBjbGllbnRz
RGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21p
c2VQb2ludGVyLCBjbGllbnRzRGF0YSA9IGNyb3NzVGhyZWFkQ29weShjbGllbnRzRGF0YSldIChh
dXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
W3Byb21pc2VQb2ludGVyLCBjbGllbnRzRGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNs
aWVudHNEYXRhKSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8gcHJvbWlzZSA9IHNjb3BlLmNsaWVudHMoKS5tX3BlbmRpbmdQcm9taXNlcy50YWtlKHBy
b21pc2VQb2ludGVyKSkKICAgICAgICAgICAgICAgICAgICAgbWF0Y2hBbGxDb21wbGV0ZWQoc2Nv
cGUsICpwcm9taXNlLCBXVEZNb3ZlKGNsaWVudHNEYXRhKSk7CiAgICAgICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcAppbmRleCA0MWYzNGM2MWQwMDlkNWRlNWZhMjBkNzk0YjAyMTRjZWJkZTUy
ZDQzLi4xMGZmN2U0MmYwYjExYTQ5YTUzZTllYmFkNGViYmNkYTFkYjZmOGE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwCkBAIC00OTEsMTMgKzQ5MSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iLCBGZXRjaAog
ICAgIGpvYi5mZXRjaFNjcmlwdFdpdGhDb250ZXh0KCpjb250ZXh0LCBjYWNoZVBvbGljeSk7CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0
KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIGZldGNoUmVz
dWx0KQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3Jp
cHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBXb3JrZXJGZXRjaFJlc3VsdCYmIGZldGNoUmVzdWx0
KQogewogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0coImpvYkZpbmlzaGVkTG9hZGluZ1Nj
cmlwdDogU3VjY2Vzc2Z1bHkgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJSIgUFJJ
dTY0LCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCi0gICAgZW5zdXJlU1dDbGllbnRD
b25uZWN0aW9uKCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihqb2IuZGF0YSgpLmlkZW50
aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwgZmV0Y2hSZXN1bHQpOworICAg
IGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
am9iLmRhdGEoKS5pZGVudGlmaWVyKCksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgeyBq
b2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpIH0sIFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKIH0K
IAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNl
cnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEV4Y2VwdGlv
biYmIGV4Y2VwdGlvbikKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25z
dAogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Om5vdGlmeUZhaWxlZEZldGNoaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNl
cnZlcihqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXko
KSwgd29ya2VyRmV0Y2hFcnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3IgfSkpOworICAgIGVuc3Vy
ZVNXQ2xpZW50Q29ubmVjdGlvbigpLmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoam9iLmRh
dGEoKS5pZGVudGlmaWVyKCksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgeyBqb2IuZGF0
YSgpLnJlZ2lzdHJhdGlvbktleSgpIH0sIHdvcmtlckZldGNoRXJyb3IoUmVzb3VyY2VFcnJvciB7
IGVycm9yIH0pKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXN0cm95Sm9i
KFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhZjIxNzNlOGQ1ZTI0
OTFlNTZlMjNkNDUzNTlkYjAzZWY5OWU1MzQuLmFiMmIyMzc3NTI0YTM5ODYzNmFmZTA0MGQ4ZDFl
ZDgwMzE2N2QzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZCkgZmluYWw7CiAgICAgdm9pZCBqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChT
ZXJ2aWNlV29ya2VySm9iJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgZmluYWw7CiAgICAg
dm9pZCBzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImLCBGZXRjaE9wdGlv
bnM6OkNhY2hlKSBmaW5hbDsKLSAgICB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2
aWNlV29ya2VySm9iJiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKKyAgICB2b2lk
IGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgV29ya2VyRmV0Y2hS
ZXN1bHQmJikgZmluYWw7CiAgICAgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgRXhjZXB0aW9uJiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5kZXggMDQ1OTMzYzYyNDMwMjI4ZjUz
YTU5MWIxZGYwNzBjMWRjYjI0YTZkYS4uMjMxNDk0MTg4MTlhNWUxMjlmMDRiODZiYTg0MzNmNzQz
YzdkOWQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYkNsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgam9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2Im
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgam9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25S
ZXN1bHQoU2VydmljZVdvcmtlckpvYiYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2VySm9i
JiwgRmV0Y2hPcHRpb25zOjpDYWNoZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBqb2JGaW5pc2hl
ZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2Vydmlj
ZVdvcmtlckpvYiYsIFdvcmtlckZldGNoUmVzdWx0JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VF
cnJvciYsIEV4Y2VwdGlvbiYmKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4
IDIxZjhkNjhlNDAzZDIzYmVmODdkZDhmNjFkMTdmM2I2Zjk5OGYzYWIuLmJlMmYzZWYxY2UwZWFh
YjgyNzI4YTFjMTg0ZmYxMjVhYzQ1MjU3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0x
NzksMTEgKzE3OSwxMSBAQCBib29sIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF5SGF2ZVNl
cnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlYwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcj4mIGlkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKLSAgICBj
YWxsT25NYWluVGhyZWFkKFt0b3BPcmlnaW4gPSB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGRh
dGEgPSBjcm9zc1RocmVhZENvcHkoZGF0YSksIGlkZW50aWZpZXIsIHVzZXJBZ2VudCA9IGNyb3Nz
VGhyZWFkQ29weSh1c2VyQWdlbnQpXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdG9wT3JpZ2lu
ID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBkYXRhID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUoZGF0YSkpLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZSh1c2VyQWdlbnQpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNl
cnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24o
KTsKLSAgICAgICAgY29ubmVjdGlvbi5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQodG9wT3Jp
Z2luLCBkYXRhLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQpOworICAgICAgICBjb25uZWN0aW9uLnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudCh0b3BPcmlnaW4sIFdURk1vdmUoZGF0YSksIGlkZW50
aWZpZXIsIFdURk1vdmUodXNlckFnZW50KSk7CiAgICAgfSk7CiB9CiAKQEAgLTE5MiwxMSArMTky
LDExIEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1Njcmlw
dEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgV29ya2VyU1dDbGll
bnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmJiByZWdpc3RyYXRpb25LZXksIFdvcmtlckZldGNoUmVzdWx0JiYgcmVz
dWx0KQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2pvYkRhdGFJZGVudGlmaWVyLCByZWdpc3Ry
YXRpb25LZXkgPSBjcm9zc1RocmVhZENvcHkocmVnaXN0cmF0aW9uS2V5KSwgcmVzdWx0ID0gY3Jv
c3NUaHJlYWRDb3B5KHJlc3VsdCldKCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChb
am9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHJlZ2lzdHJhdGlvbktleSkpLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShy
ZXN1bHQpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKLSAg
ICAgICAgY29ubmVjdGlvbi5maW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGpvYkRhdGFJZGVu
dGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHJlc3VsdCk7CisgICAgICAgIGNvbm5lY3Rpb24uZmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihqb2JEYXRhSWRlbnRpZmllciwgV1RGTW92ZShyZWdp
c3RyYXRpb25LZXkpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIH0pOwogfQogCkBAIC0yMTYsNyAr
MjE2LDcgQEAgdm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlVW5yZWdpc3Rl
ckpvYkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3QKICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aHJlYWQgPSBtX3RocmVhZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGNvbnRleHRJZGVudGlmaWVyXSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBjb25uZWN0
aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9uLnNjaGVkdWxlVW5yZWdpc3RlckpvYkluU2Vy
dmVyKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnRleHRJZGVudGlmaWVyLCBbdGhyZWFkID0g
V1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgewotICAg
ICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRp
ZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkp
XShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9uKCku
bV91bnJlZ2lzdGVyUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpzdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVl
c3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBhcHBsaWNhdGlvblNlcnZlcktl
eV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQ
cm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKICAgICAgICAg
Y29ubmVjdGlvbi5zdWJzY3JpYmVUb1B1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGFwcGxpY2F0aW9uU2VydmVyS2V5LCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0
SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgewotICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJl
YWRDb3B5KHJlc3VsdCldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9uKCkubV9zdWJzY3JpYmVUb1B1c2hTZXJ2aWNl
UmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1
bHRNb2RlKCkpOwpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uOjp1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0CiAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBzdWJzY3JpcHRpb25JZGVudGlmaWVyXSgpIG11dGFi
bGUgewogICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpz
aW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9u
LnVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHN1YnNj
cmlwdGlvbklkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVu
dGlmaWVyXShhdXRvJiYgcmVzdWx0KSB7Ci0gICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENv
cHkocmVzdWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgdGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX3Vuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNl
UmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1
bHRNb2RlKCkpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uOjpnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVuCiAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyXSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiBjb25u
ZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbigpOwogICAgICAgICBjb25uZWN0aW9uLmdldFB1c2hTdWJzY3JpcHRpb24ocmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElk
ZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIHsKLSAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFk
Q29weShyZXN1bHQpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICB0aHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0oYXV0byYgc2NvcGUpIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oc2NvcGUpLnN3Q2xpZW50Q29ubmVjdGlvbigpLm1fZ2V0UHVzaFN1YnNjcmlwdGlvblJlcXVl
c3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpKTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSQogICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlv
biA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5l
Y3Rpb24oKTsKICAgICAgICAgY29ubmVjdGlvbi5nZXRQdXNoUGVybWlzc2lvblN0YXRlKHJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIFt0aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVu
dGlmaWVyXShhdXRvJiYgcmVzdWx0KSB7Ci0gICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENv
cHkocmVzdWx0KV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgdGhyZWFkLT5y
dW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX2dldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxs
YmFja3MudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDM5YmU5NTM5NWJjNzA4MTQwZjE3N2YxNGE1
ZTM4YmI2ZDg1ZTJkMGMuLjQ3NzlkZmYzMTYwZWNkNmMwMjhmN2YzNTdjZDEzYmMyOWYzMTFiZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyJiBzb3VyY2UpIGZpbmFsOwogICAgIFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOworICAgIHZv
aWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiwgU3RyaW5nJiYgdXNlckFnZW50KSBm
aW5hbDsKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jikg
ZmluYWw7CisgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
JiwgV29ya2VyRmV0Y2hSZXN1bHQmJikgZmluYWw7CiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2Vy
dmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBzY2hlZHVs
ZUpvYihTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgc2NoZWR1bGVVbnJlZ2lzdGVySm9iSW5TZXJ2ZXIo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJPckNsaWVu
dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCBlNjI4ZWYwZWE0NzBm
YTI2ZTY1YWUzNDk2ZWZmZmJkMWUxNzY0NTk3Li5kNDdlN2I4MDVjNjJkMzRkMmQ4MmQ1ZmRmN2Q3
N2Q0NWY4ZDc3YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtNDg0LDEzICs0
ODQsMTMgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyhjb25zdCBW
ZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiYKICAgICAgICAgaWYgKCFtYWluU2NyaXB0
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBIYXNoTWFwPFVSTCwgU2NyaXB0
QnVmZmVyPiBpbXBvcnRlZFNjcmlwdHM7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRhdGEu
c2NyaXB0UmVzb3VyY2VNYXApIHsKLSAgICAgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBz
Y3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgcGFpci5rZXksIHBhaXIu
dmFsdWUuc2NyaXB0KTsKKyAgICAgICAgZm9yIChhdXRvJiBbc2NyaXB0VVJMLCBzY3JpcHRdIDog
ZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgeworICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlw
dCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBzY3JpcHRVUkws
IHNjcmlwdC5zY3JpcHQpOwogICAgICAgICAgICAgQVNTRVJUKGltcG9ydGVkU2NyaXB0KTsKICAg
ICAgICAgICAgIGlmIChpbXBvcnRlZFNjcmlwdCkKLSAgICAgICAgICAgICAgICBpbXBvcnRlZFNj
cmlwdHMuYWRkKGNyb3NzVGhyZWFkQ29weShwYWlyLmtleSksIGNyb3NzVGhyZWFkQ29weShpbXBv
cnRlZFNjcmlwdCkpOworICAgICAgICAgICAgICAgIGltcG9ydGVkU2NyaXB0cy5hZGQoY3Jvc3NU
aHJlYWRDb3B5KHNjcmlwdFVSTCksIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGltcG9ydGVkU2Ny
aXB0KSkpOwogICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRhdGEu
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1haW5TY3JpcHQgPSBjcm9zc1RocmVhZENvcHkobWFp
blNjcmlwdCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZGF0YS5zZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgbWFpblNjcmlwdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG1haW5T
Y3JpcHQpKSwgaW1wb3J0ZWRTY3JpcHRzID0gV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKG1fc3RvcmUpCiAgICAgICAgICAgICAgICAgbV9zdG9y
ZS0+ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdU
Rk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7CiAgICAgICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAppbmRleCA3NDU2YmU0MzY3ZDJkMzZiZTE0
MDNkMzY0NTNiZTBhZWM2N2NiNDhjLi5iNDVhOTlmN2U1ZGNkYjE2OTRiY2VkY2RjYzdkYmMyYjFj
ZDJiMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcApAQCAtODQsNyArODQsNyBA
QCB2b2lkIFdvcmtsZXQ6OmFkZE1vZHVsZShjb25zdCBTdHJpbmcmIG1vZHVsZVVSTFN0cmluZywg
V29ya2xldE9wdGlvbnMmJiBvcHRpb25zLAogICAgIGZvciAoYXV0byYgcHJveHkgOiBtX3Byb3hp
ZXMpIHsKICAgICAgICAgcHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3Bl
KFtwZW5kaW5nVGFza3MgPSBwZW5kaW5nVGFza3MuY29weVJlZigpLCBtb2R1bGVVUkwgPSBtb2R1
bGVVUkwuaXNvbGF0ZWRDb3B5KCksIGNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscywg
cGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgZG93bmNhc3Q8V29y
a2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS5mZXRjaEFuZEludm9rZVNjcmlwdChtb2R1bGVVUkws
IGNyZWRlbnRpYWxzLCBbcGVuZGluZ1Rhc2tzID0gV1RGTW92ZShwZW5kaW5nVGFza3MpLCBwZW5k
aW5nQWN0aXZpdHkgPSBXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSldKHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbcGVuZGluZ1Rhc2tzID0gV1RGTW92ZShwZW5kaW5nVGFza3MpLCBleGNlcHRpb24g
PSBjcm9zc1RocmVhZENvcHkoZXhjZXB0aW9uKSwgcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92ZShw
ZW5kaW5nQWN0aXZpdHkpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3BlbmRpbmdUYXNrcyA9IFdURk1vdmUocGVuZGluZ1Rhc2tzKSwgZXhjZXB0aW9uID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoZXhjZXB0aW9uKSksIHBlbmRpbmdBY3Rpdml0eSA9IFdU
Rk1vdmUocGVuZGluZ0FjdGl2aXR5KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrcy0+YWJv
cnQoV1RGTW92ZSgqZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmlu
ZGV4IGE1NTI5NWYzMDU1MGRmMjc0MDRiY2U0Mjk5ZDJmZTM3OWIwZTQ5ZTQuLjUxNmEyZjUwMmNj
OTBjY2NlMTM2YjQzMmYyODhhMGYzNGMwNTlmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTE3Nyw3ICsxMTc3LDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBUb3BGcmFtZURvbWFpbiYKICAgICByZXR1cm4gcmVsYXRpb25zaGlwRXhpc3Rz
KHNjb3BlZFN0YXRlbWVudCwgZG9tYWluSUQoc3ViRnJhbWVEb21haW4pLCB0b3BGcmFtZURvbWFp
bik7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTExOTIsNyArMTE5Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQ29va2llQWNjZXNzOjpCYXNlZE9uQ29va2llUG9saWN5OgotICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBz
dWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBzdWJG
cmFtZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgc3RvcmUtPmhhc0Nvb2tpZXMoc3ViRnJhbWVEb21haW4sIFtzdG9yZSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNw
YXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVz
dWx0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
cmVzdWx0KTsKQEAgLTEyMDUsNyArMTIwNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAg
ICAgICAgIGJyZWFrOwogICAgIH07CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0
b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCBmcmFtZUlELCBwYWdlSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwgc3ViRnJhbWVEb21haW4gPSBXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBzdG9y
ZS0+Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoc3ViRnJhbWVEb21haW4sIHRv
cEZyYW1lRG9tYWluLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRCwgW3N0b3JlLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3VsdF0gKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKQEAgLTEz
NDMsNyArMTM0Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tCiAgICAgICAgIHNldFVzZXJJ
bnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdHJ1ZSwgV2FsbFRpbWU6Om5vdygpKTsKICAgICB9
CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N1YkZyYW1lRG9tYWluID0gc3ViRnJh
bWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4u
aXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0s
IHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3ViRnJhbWVEb21haW4g
PSBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4g
PSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIHN0b3JlLT5jYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4s
IGZyYW1lSUQsIHBhZ2VJRCwgc2NvcGUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBzdG9yZV0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0
Y2goW3dhc0dyYW50ZWQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdh
c0dyYW50ZWQpOwpAQCAtMTY2NCw3ICsxNjY0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6c2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4K
ICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmR1
bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoKSkgewpA
QCAtMjAzNiw3ICsyMDM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXAKIAogICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSBlbnN1cmVQcmV2
YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tB
bmREZWxldGVDb29raWVzRm9yLCB7IH0sIHsgfSwgeyB9IH07Ci0gICAgdXBkYXRlQ29va2llQmxv
Y2tpbmdGb3JEb21haW5zKGRvbWFpbnNUb0Jsb2NrLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OworICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhXVEZNb3ZlKGRvbWFpbnNUb0Js
b2NrKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5k
ZXIoY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKQpAQCAtMjE3NSw3ICsyMTc1
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlQ29v
a2llQmxvY2tpbmcoQ29tcGxldGlvbkhhbmRsZXIKICAgICBpZiAoZGVidWdMb2dnaW5nRW5hYmxl
ZCgpICYmICghZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSB8fCAh
ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkpKQogICAgICAgICBkZWJ1
Z0xvZ0RvbWFpbnNJbkJhdGNoZXMoIkFwcGx5aW5nIGNyb3NzLXNpdGUgdHJhY2tpbmcgcmVzdHJp
Y3Rpb25zIiwgZG9tYWluc1RvQmxvY2spOwogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzdG9yZSA9IFJlZiB7IHN0b3JlKCkgfSwg
ZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1RvQmxvY2spLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHN0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBkb21haW5zVG9CbG9jayA9IGNyb3NzVGhyZWFkQ29w
eShXVEZNb3ZlKGRvbWFpbnNUb0Jsb2NrKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBzdG9yZS0+Y2FsbFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoZG9tYWluc1RvQmxvY2ss
IFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzdG9yZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHN0
b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA2OTAx
ODZmMjE0NjA5YzI5MDgyMmIxNWI3Y2NmNmFkOTY0OTY3MjE5Li44MTFiYmY5NzBlYWM2ZmE3MGRh
YTA5NzJiNTY5ZDVlOWY4MmYxOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVkaXJlY3RlZEZyb21Eb21h
aW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CisgICAgdm9pZCBkdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJikgZmluYWw7
CiAgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50
UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKQEAgLTkwLDcgKzkw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0
IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3REb21haW4mKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Y29uc3QgUmVkaXJlY3REb21haW4mKSBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBo
YXNTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNTZm
NjdiZjA4OGRjNjAwMjIzZjhiZmEzMGZkZjc4NDhlMGJlZWQyOS4uYzhiZWRjMmI1MjEyNzJmNjUw
NzAyOWRlYzNiMTFhZGUzYTNkMzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4m
LCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQg
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CisgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJikgZmluYWw7CiAg
ICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVz
b3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRl
cihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwogICAgIENvb2tpZUFjY2VzcyBjb29r
aWVBY2Nlc3MoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFt
ZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWlu
JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggMjAxZDFhZmRmNzMyZTJiY2YwZjU4ZGEzMTAwMjQwOGJiN2FhYWE2
YS4uMzU0MTQ1ODM4OTA2YjU4MTMyYTllMjBjZWExZGM2Nzk0NmM3YmUxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE3NSw5ICsxNzUsOSBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmCiAKICAgICBzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCh0
cnVlKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBtX3N0
b3JlIH0sIGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciA9IGNyb3NzVGhy
ZWFkQ29weShkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
ID0gbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1ZXVlXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgc3RvcmUt
PmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptb25pdG9yZWREYXRhVHlwZXMoKSwgV1RGTW92ZShk
b21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpLCBzaG91bGROb3RpZnlQYWdl
c1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgd29ya1F1
ZXVlXShjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1dpdGhEZWxldGVk
V2Vic2l0ZURhdGEpIG11dGFibGUgewotICAgICAgICAgICAgd29ya1F1ZXVlLT5kaXNwYXRjaChb
ZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1dp
dGhEZWxldGVkV2Vic2l0ZURhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSAoKSBtdXRhYmxlIHsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgbV9zdG9yZSB9LCBk
b21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgPSBjcm9zc1RocmVhZENvcHko
V1RGTW92ZShkb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IpKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZV0gKCkgbXV0YWJsZSB7CisgICAgICAgIHN0b3Jl
LT5kZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCksIFdURk1vdmUo
ZG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKSwgc2hvdWxkTm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtR
dWV1ZV0oSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zV2l0aERlbGV0ZWRXZWJz
aXRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21h
aW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFp
bnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldICgpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjM1LDcgKzIzNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFuZGZh
dGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsCiAKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQgPSBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCwgd29ya1F1ZXVlID0gbV93b3JrUXVldWUsIHN0b3JlID0gUmVmIHsgbV9zdG9yZSB9
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgc3RvcmUtPnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJz
aXRlRGF0YShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBl
cygpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCBbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgd29y
a1F1ZXVlXSAoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zV2l0aFdlYnNpdGVE
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdvcmtRdWV1ZS0+ZGlzcGF0Y2goW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGRvbWFpbnNXaXRoV2Vic2l0ZURhdGEgPSBjcm9zc1RocmVh
ZENvcHkoZG9tYWluc1dpdGhXZWJzaXRlRGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldICgpIG11dGFibGUgeworICAgICAgICAgICAgd29ya1F1ZXVlLT5kaXNwYXRjaChbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZG9tYWluc1dpdGhXZWJzaXRlRGF0YSA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNXaXRoV2Vic2l0ZURhdGEpKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykgewogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zOTYsMTEgKzM5NiwxMSBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoYm9vbCB2YWx1ZSkKICAgICAgICAg
bV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2Nr
aW5nRm9yRG9tYWlucyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYg
ZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVCbG9j
a2luZ0ZvckRvbWFpbnMoUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImJiBkb21h
aW5zVG9CbG9jaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBtX3N0b3JlIH0sIGRvbWFpbnNUb0Jsb2Nr
ID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtzdG9yZSA9IFJlZiB7IG1fc3RvcmUgfSwgZG9tYWluc1RvQmxvY2sgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zVG9CbG9jaykpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgc3Rv
cmUtPmNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGRv
bWFpbnNUb0Jsb2NrLCBbc3RvcmUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1
ZXVlKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
QEAgLTQzOCwxMSArNDM4LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoKQogICAgIG1fYXBwQm91bmREb21haW5zLmNs
ZWFyKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dUZXN0aW5n
RXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpsb2dUZXN0aW5nRXZlbnQoU3RyaW5nJiYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0g
UmVmIHsgbV9zdG9yZSB9LCBldmVudCA9IGV2ZW50Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IFJlZiB7IG1fc3RvcmUgfSwgZXZlbnQgPSBX
VEZNb3ZlKGV2ZW50KS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBzdG9yZS0+bG9nVGVzdGlu
Z0V2ZW50KGV2ZW50KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAppbmRleCBiYzdhZTg4Zjc1ODIzNjQ2ZDRmYTJiYzE5NDI2NzI2NDMxODhjYjQ1
Li41ZjIzYzdkNGMzYjhkOTFkM2NkYzE4ZGQxMmJlOGUwYjI0OWEwZmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGE+IGFnZ3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YSgpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpID0gMDsKLSAgICB2b2lkIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFpbnMoUmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQmxvY2tpbmdTdGF0ZUZvckRvbWFpbnMoY29uc3QgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwpAQCAt
MTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWdpc3RlcmVkQXNS
ZWRpcmVjdGluZ1RvKGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJlY3Rl
ZFRvRG9tYWluJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXZh
bGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgPSAwOwpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dFRvKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3REb21haW4mKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3REb21haW4mKSA9IDA7CiAKLSAgICB2b2lkIGxvZ1Rl
c3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChTdHJp
bmcmJik7CiAKICAgICB2b2lkIHNldE1heFN0YXRpc3RpY3NFbnRyaWVzKHNpemVfdCBtYXhpbXVt
RW50cnlDb3VudCk7CiAgICAgdm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5l
VGFyZ2V0Q291bnQpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFw
cEJvdW5kRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICNlbmRpZgogICAg
IHZpcnR1YWwgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcihjb25zdCBU
b3BGcmFtZURvbWFpbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBlODc2ZWMz
Nzc3MWZmNDAwY2FhODM0Y2VmYWU5NTYyNTRjYzNmZDkzLi4yZDViMDI3N2IyOWUxMDZmOWNmZDZk
YWQyYWNlMzk1YWI4NzExOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2wg
dmFsCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGUoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0g
ZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBX
VEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3Rp
Y3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRQcmV2YWxlbnRSZXNv
dXJjZUZvckRlYnVnTW9kZShkb21haW4pOwogICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTM0NCwxNSArMzQ0LDE1IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0
b3I8UmVzb3VyCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoc3ViRnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgcmV0dXJuIGhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoc3ViRnJhbWVEb21haW4sIHRv
cEZyYW1lRG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgcmV0dXJuIGhhc1N0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFt
ZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9
IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlELCBwYWdlSUQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAg
cG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0gV1RGTW92ZShzdWJGcmFtZURvbWFpbiku
aXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbiku
aXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3N0YXRp
c3RpY3NTdG9yZSkgewogICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIG1fc3RhdGlzdGljc1N0b3JlLT5oYXNTdG9yYWdlQWNjZXNzKHN1YkZyYW1lRG9tYWluLCB0
b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGhhc1N0
b3JhZ2VBY2Nlc3MpIG11dGFibGUgewogICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaGFzU3RvcmFnZUFjY2Vz
c10oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihoYXNTdG9y
YWdlQWNjZXNzKTsKICAgICAgICAgICAgIH0pOwpAQCAtNDA4LDE3ICs0MDgsMTcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyKGNvbnN0IFIKICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgU3RvcmFnZUFj
Y2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNj
ZXNzUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1
YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAo
c3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246Ok5vLCBzY29wZSwgdG9wRnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3BlLCBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKSwgV1RGTW92ZShzdWJGcmFtZURvbWFpbikgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCiAgICAgaWYgKGlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybiByZXF1ZXN0
U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbChzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZy
YW1lSUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgIHJldHVybiByZXF1ZXN0U3RvcmFnZUFjY2Vzc0VwaGVtZXJh
bChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1l
SUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAKICAgICBhdXRvIHN0YXR1c0hhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0
ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCks
IGZyYW1lSUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNjb3BlLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTdG9yYWdlQWNjZXNzU3RhdHVzIHN0
YXR1cykgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CkBAIC00MzIsNyArNDMy
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkKIAogICAgICAgICAgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJh
bWVJRCwgd2ViUGFnZUlELCBzY29wZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBpZiAodXNlckRpZEdyYW50QWNjZXNzKQotICAgICAgICAgICAgICAgICAgICBn
cmFudFN0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlE
LCB3ZWJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBzY29wZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgICAgICBncmFudFN0b3Jh
Z2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4p
LCBmcmFtZUlELCB3ZWJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBz
Y29wZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzLCBzY29wZSwgdG9w
RnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogICAgICAgICAgICAgfTsKQEAgLTQ0NSw3
ICs0NDUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haQogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xh
dGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgp
LCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNjb3BlLCBzdGF0dXNIYW5kbGVyID0gV1RGTW92ZShzdGF0
dXNIYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21h
aW4gPSBXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21h
aW4gPSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgd2Vi
UGFnZUlELCBzY29wZSwgc3RhdHVzSGFuZGxlciA9IFdURk1vdmUoc3RhdHVzSGFuZGxlcildKCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpIHsKICAgICAgICAgICAg
IHBvc3RUYXNrUmVwbHkoW3N0YXR1c0hhbmRsZXIgPSBXVEZNb3ZlKHN0YXR1c0hhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIHN0YXR1c0hhbmRsZXIoU3RvcmFnZUFjY2Vzc1N0
YXR1czo6Q2Fubm90UmVxdWVzdEFjY2Vzcyk7CkBAIC01MDQsMTkgKzUwNCwxOSBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckVwaGVtZXJhbChSZQogICAgIH0KIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omdy
YW50U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdp
c3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0
V2FzU2hvd24sIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJh
bWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4g
PSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRX
YXNTaG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWluID0g
V1RGTW92ZShzdWJGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0g
V1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwg
cHJvbXB0V2FzU2hvd24sIHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3Jl
KSB7Ci0gICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1l
RG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCBwcm9tcHRXYXNTaG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwb3N0
VGFza1JlcGx5KFtzdWJGcmFtZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLmlzb2xh
dGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVEb21haW4pLmlzb2xh
dGVkQ29weSgpLCBwcm9tcHRXYXNTaG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8sIHByb21wdFdhc1No
b3duLCBzY29wZSwgdG9wRnJhbWVEb21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBtX3N0YXRp
c3RpY3NTdG9yZS0+Z3JhbnRTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBX
VEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwg
c2NvcGUsIFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0
b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBwcm9tcHRXYXNT
aG93biwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWRBY2Nlc3MpIG11dGFibGUgewot
ICAgICAgICAgICAgcG9zdFRhc2tSZXBseShbc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFp
bi5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgd2FzR3JhbnRlZEFjY2VzcywgcHJvbXB0V2FzU2hvd24sIHNjb3BlLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgcG9zdFRhc2tSZXBseShbc3ViRnJhbWVEb21haW4gPSBXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKS5pc29sYXRlZENvcHkoKSwgd2FzR3JhbnRlZEFjY2VzcywgcHJvbXB0V2FzU2hvd24s
IHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgd2FzR3JhbnRl
ZEFjY2VzcywgcHJvbXB0V2FzU2hvd24sIHNjb3BlLCB0b3BGcmFtZURvbWFpbiwgc3ViRnJhbWVE
b21haW4gfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC03MTgsMjUgKzcxOCwy
NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFz
a3MoKQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1l
LCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50
aWFsbHlJbml0aWF0ZWRCeVVzZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgdGFyZ2V0RG9tYWluLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHNv
dXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRl
bGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0
ZWRCeVVzZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RU
YXNrKFt0aGlzLCB0YXJnZXREb21haW4gPSB0YXJnZXREb21haW4uaXNvbGF0ZWRDb3B5KCksIHRv
cEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHNvdXJjZURvbWFp
biA9IHNvdXJjZURvbWFpbi5pc29sYXRlZENvcHkoKSwgaXNSZWRpcmVjdCwgaXNNYWluRnJhbWUs
IGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVk
QnlVc2VyXSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHRhcmdldERvbWFpbiA9IFdURk1vdmUodGFy
Z2V0RG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZy
YW1lRG9tYWluKS5pc29sYXRlZENvcHkoKSwgc291cmNlRG9tYWluID0gV1RGTW92ZShzb3VyY2VE
b21haW4pLmlzb2xhdGVkQ29weSgpLCBpc1JlZGlyZWN0LCBpc01haW5GcmFtZSwgZGVsYXlBZnRl
ck1haW5GcmFtZURvY3VtZW50TG9hZCwgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXJdIHsK
ICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNz
U3RvcmUtPmxvZ0ZyYW1lTmF2aWdhdGlvbih0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBz
b3VyY2VEb21haW4sIGlzUmVkaXJlY3QsIGlzTWFpbkZyYW1lLCBkZWxheUFmdGVyTWFpbkZyYW1l
RG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcik7CiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAvLyBVc2VyIGludGVyYWN0aW9ucyBuZWVkIHRv
IGJlIGxvZ2dlZCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHRvIHN1cHBvcnQgdGhlIFN0b3JhZ2Ug
QWNjZXNzIEFQSS4KICAgICBpZiAoaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuIGxvZ1Vz
ZXJJbnRlcmFjdGlvbkVwaGVtZXJhbChkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgcmV0dXJuIGxvZ1VzZXJJbnRlcmFjdGlvbkVwaGVtZXJhbChXVEZNb3ZlKGRv
bWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlz
LCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMs
IGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byBpbm5lckNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwb3N0VGFza1JlcGx5
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfTsKQEAgLTc1NiwyNiArNzU2
LDI2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dVc2VySW50ZXJh
Y3Rpb25FcGhlbWVyYWwoY29uc3QgUmVnaXN0cmFiCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ0Nyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUmVnaXN0cmFibGVEb21h
aW4mJiBmcm9tRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoZnJvbURvbWFpbiAhPSB0b0RvbWFpbik7CiAgICAg
Ci0gICAgcG9zdFRhc2soW3RoaXMsIGZyb21Eb21haW4gPSBmcm9tRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCB0b0RvbWFpbiA9IHRvRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNr
KFt0aGlzLCBmcm9tRG9tYWluID0gV1RGTW92ZShmcm9tRG9tYWluKS5pc29sYXRlZENvcHkoKSwg
dG9Eb21haW4gPSBXVEZNb3ZlKHRvRG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmxv
Z0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJvbURvbWFpbiwgdG9Eb21haW4pOwog
ICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoaXNFcGhlbWVyYWwoKSkK
ICAgICAgICAgcmV0dXJuIGNsZWFyVXNlckludGVyYWN0aW9uRXBoZW1lcmFsKGRvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9
IGRvbWFpbi5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0g
V1RGTW92ZShkb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIGlubmVyQ29t
cGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9OwpAQCAtNzk1LDE0ICs3OTUsMTQgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlckludGVyYWN0aW9uRXBo
ZW1lcmFsKGNvbnN0IFJlZ2lzdHIKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoaXNFcGhlbWVyYWwoKSkKICAg
ICAgICAgcmV0dXJuIGhhc0hhZFVzZXJJbnRlcmFjdGlvbkVwaGVtZXJhbChkb21haW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBk
b21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdU
Rk1vdmUoZG9tYWluKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24gPSBtX3N0YXRpc3RpY3NTdG9yZSA/IG1fc3RhdGlzdGljc1N0b3JlLT5oYXNIYWRV
c2VySW50ZXJhY3Rpb24oZG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZykgOiBmYWxz
ZTsKICAgICAgICAgcG9zdFRhc2tSZXBseShbaGFkVXNlckludGVyYWN0aW9uLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFkVXNlckludGVyYWN0aW9uKTsKQEAgLTgxNywyMiAr
ODE3LDIyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2Vy
SW50ZXJhY3Rpb25FcGhlbWVyYWwoY29uc3QgUmVnaXN0CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
bV9kb21haW5zV2l0aEVwaGVtZXJhbFVzZXJJbnRlcmFjdGlvbi5jb250YWlucyhkb21haW4pKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RTZWVuKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnNldExhc3RTZWVuKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
LCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAotICAgIHBv
c3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIHNlY29uZHMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29sYXRlZENv
cHkoKSwgc2Vjb25kcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQogICAgICAg
ICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldExhc3RTZWVuKGRvbWFpbiwgc2Vjb25kcyk7CiAg
ICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0p
OwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0
aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbjEsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
LCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVk
LCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJl
Y29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNG
b3JUZXN0aW5nKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluMSwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbjIsIFNl
Y29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50
LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21h
aW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluMSA9IHRvcEZyYW1lRG9tYWluMS5pc29s
YXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4yID0gdG9wRnJhbWVEb21haW4yLmlzb2xhdGVkQ29w
eSgpLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFS
ZWNvcmRzUmVtb3ZlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gV1RGTW92ZShk
b21haW4pLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbjEgPSBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluMSkuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluMiA9IFdURk1vdmUodG9wRnJh
bWVEb21haW4yKS5pc29sYXRlZENvcHkoKSwgbGFzdFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwg
aXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0
YXRpc3RpY3NTdG9yZSkgewogICAgICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdGF0
aXN0aWMoZG9tYWluKTsKICAgICAgICAgICAgIHN0YXRpc3RpYy5sYXN0U2VlbiA9IFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhsYXN0U2Vlbi5zZWNvbmRzKCkpOwpAQCAtODU5LDExICs4NTksMTEg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZUQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVsYXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWxhdGlvbnNo
aXBPbmx5SW5EYXRhYmFzZU9uY2UoUmVnaXN0cmFibGVEb21haW4mJiBzdWJEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgdG9wRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBwb3N0VGFzayhbdGhpcywgc3ViRG9tYWluID0gc3ViRG9tYWluLmlzb2xhdGVkQ29weSgp
LCB0b3BEb21haW4gPSB0b3BEb21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2so
W3RoaXMsIHN1YkRvbWFpbiA9IFdURk1vdmUoc3ViRG9tYWluKS5pc29sYXRlZENvcHkoKSwgdG9w
RG9tYWluID0gV1RGTW92ZSh0b3BEb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIW1fc3RhdGlzdGljc1N0b3JlIHx8ICFpczxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODc3LDQ3ICs4NzcsNDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUmVsYXRpb25zaGlwT25seUlu
RGF0YWJhc2VPbmNlKGNvbnN0IFJlZ2kKICAgICB9KTsKIH0KICAgICAKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UHJldmFs
ZW50UmVzb3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENv
cHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gV1RGTW92ZShkb21haW4pLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAg
ICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2UoZG9tYWluKTsKICAg
ICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShSZWdpc3RyYWJsZURvbWFp
biYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhp
cywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlz
LCBkb21haW4gPSBXVEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoZG9tYWluKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CiAgICAgCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBwb3N0VGFzayhbdGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byBpbm5lckNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFN0cmluZyYgcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Jlc3VsdCA9IHJlc3VsdC5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwor
ICAgICAgICBhdXRvIGlubmVyQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU3RyaW5nJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW3Jlc3VsdCA9IFdURk1vdmUocmVzdWx0KS5pc29s
YXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlc3VsdCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH07CiAgICAgICAgIGlmICghbV9z
dGF0aXN0aWNzU3RvcmUpIHsKLSAgICAgICAgICAgIGlubmVyQ29tcGxldGlvbkhhbmRsZXIoZW1w
dHlTdHJpbmcoKSk7CisgICAgICAgICAgICBpbm5lckNvbXBsZXRpb25IYW5kbGVyKFN0cmluZyB7
IGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUtPmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdURk1vdmUo
aW5uZXJDb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFs
ZW50UmVzb3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtOTI2LDcgKzkyNiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0g
ZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBX
VEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgaXNQcmV2YWxl
bnRSZXNvdXJjZSA9IG1fc3RhdGlzdGljc1N0b3JlID8gbV9zdGF0aXN0aWNzU3RvcmUtPmlzUHJl
dmFsZW50UmVzb3VyY2UoZG9tYWluKSA6IGZhbHNlOwogICAgICAgICBwb3N0VGFza1JlcGx5KFtp
c1ByZXZhbGVudFJlc291cmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQ
cmV2YWxlbnRSZXNvdXJjZSk7CkBAIC05MzQsMTEgKzkzNCwxMSBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbgogICAgIH0pOwogfQogICAgIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNWZXJ5UHJldmFsZW50UmVz
b3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBXVEZNb3ZlKGRvbWFpbiku
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2Ug
PSBtX3N0YXRpc3RpY3NTdG9yZSA/IG1fc3RhdGlzdGljc1N0b3JlLT5pc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZShkb21haW4pIDogZmFsc2U7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2lzVmVyeVBy
ZXZhbGVudFJlc291cmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNWZXJ5
UHJldmFsZW50UmVzb3VyY2UpOwpAQCAtOTQ2LDExICs5NDYsMTEgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lz
dHJhYmxlRG8KICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3VicmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoUmVnaXN0cmFibGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgcG9zdFRhc2soW3RoaXMsIHN1YnJlc291cmNlRG9tYWluID0gc3VicmVzb3VyY2VE
b21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNv
bGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHN1YnJlc291cmNlRG9tYWluID0g
V1RGTW92ZShzdWJyZXNvdXJjZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWlu
ID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyID0gbV9zdGF0aXN0aWNzU3RvcmUgPyBt
X3N0YXRpc3RpY3NTdG9yZS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKHN1YnJlc291
cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbikKICAgICAgICAgICAgIDogZmFsc2U7CiAgICAgICAg
IHBvc3RUYXNrUmVwbHkoW2lzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlciwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTk1
OSwxMSArOTU5LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoY29uc3QgUmVnaXN0CiAgICAgfSk7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1JlZ2lzdGVyZWRBc1N1YkZyYW1l
VW5kZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFp
biA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZy
YW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFt
ZURvbWFpbiA9IFdURk1vdmUoc3ViRnJhbWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCB0b3BGcmFt
ZURvbWFpbiA9IFdURk1vdmUodG9wRnJhbWVEb21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlciA9IG1fc3RhdGlzdGljc1N0b3Jl
ID8gbV9zdGF0aXN0aWNzU3RvcmUtPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4pCiAgICAgICAgICAgICA6IGZhbHNlOwogICAgICAgICBw
b3N0VGFza1JlcGx5KFtpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC05NzIsMTEg
Kzk3MiwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWdpc3Rl
cmVkQXNTdWJGcmFtZVVuZGVyKGNvbnN0IFJlZ2lzdHJhYgogICAgIH0pOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1Rv
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjppc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oUmVnaXN0cmFibGVEb21haW4m
JiBkb21haW5SZWRpcmVjdGVkRnJvbSwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVj
dGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIHBvc3RUYXNrKFt0aGlz
LCBkb21haW5SZWRpcmVjdGVkRnJvbSA9IGRvbWFpblJlZGlyZWN0ZWRGcm9tLmlzb2xhdGVkQ29w
eSgpLCBkb21haW5SZWRpcmVjdGVkVG8gPSBkb21haW5SZWRpcmVjdGVkVG8uaXNvbGF0ZWRDb3B5
KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpblJlZGlyZWN0ZWRGcm9tID0gV1RGTW92
ZShkb21haW5SZWRpcmVjdGVkRnJvbSkuaXNvbGF0ZWRDb3B5KCksIGRvbWFpblJlZGlyZWN0ZWRU
byA9IFdURk1vdmUoZG9tYWluUmVkaXJlY3RlZFRvKS5pc29sYXRlZENvcHkoKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8gPSBtX3N0YXRpc3RpY3NTdG9yZSA/
IG1fc3RhdGlzdGljc1N0b3JlLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oZG9tYWluUmVk
aXJlY3RlZEZyb20sIGRvbWFpblJlZGlyZWN0ZWRUbykKICAgICAgICAgICAgIDogZmFsc2U7CiAg
ICAgICAgIHBvc3RUYXNrUmVwbHkoW2lzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAg
LTk4NSwzMyArOTg1LDMzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpp
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVnaXN0cmFiCiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclByZXZhbGVudFJlc291
cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9t
YWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBkb21h
aW4gPSBXVEZNb3ZlKGRvbWFpbikuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0
YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclByZXZh
bGVudFJlc291cmNlKGRvbWFpbik7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRo
ZXJlZChSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xh
dGVkQ29weSgpLCB2YWx1ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gV1RGTW92
ZShkb21haW4pLmlzb2xhdGVkQ29weSgpLCB2YWx1ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3RhdGlz
dGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldEdyYW5kZmF0aGVy
ZWQoZG9tYWluLCB2YWx1ZSk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogICAgIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAg
ICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgZG9tYWluID0gV1RGTW92ZShkb21haW4pLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgewogICAgICAgICBib29sIGlzR3JhbmRGYXRoZXJlZCA9IG1fc3RhdGlzdGljc1N0b3JlID8g
bV9zdGF0aXN0aWNzU3RvcmUtPmlzR3JhbmRmYXRoZXJlZChkb21haW4pCiAgICAgICAgICAgICA6
IGZhbHNlOwogICAgICAgICBwb3N0VGFza1JlcGx5KFtpc0dyYW5kRmF0aGVyZWQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC0x
MDIwLDY2ICsxMDIwLDY2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpp
c0dyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvCiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oUmVnaXN0cmFibGVEb21haW4m
JiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN1YkZyYW1lRG9tYWluID0g
c3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVE
b21haW4uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN1YkZyYW1lRG9t
YWluID0gV1RGTW92ZShzdWJGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9t
YWluID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGlj
c1N0b3JlLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oc3ViRnJhbWVEb21haW4sIHRv
cEZyYW1lRG9tYWluKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW4oUmVnaXN0cmFibGVEb21haW4mJiBzdWJyZXNvdXJjZURvbWFpbiwgUmVn
aXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgCi0gICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHN1YnJlc291cmNlRG9tYWluID0gc3VicmVzb3VyY2VEb21haW4u
aXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN1YnJlc291cmNlRG9tYWluID0gV1RGTW92
ZShzdWJyZXNvdXJjZURvbWFpbikuaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gV1RG
TW92ZSh0b3BGcmFtZURvbWFpbikuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5z
ZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oc3VicmVzb3VyY2VEb21haW4sIHRvcEZy
YW1lRG9tYWluKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJl
Y3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3VicmVzb3VyY2VEb21haW4sIFJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgc3VicmVzb3VyY2VEb21haW4gPSBzdWJyZXNvdXJjZURvbWFpbi5p
c29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZFRvID0gZG9tYWluUmVkaXJlY3RlZFRvLmlz
b2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdWJyZXNvdXJjZURvbWFpbiA9
IFdURk1vdmUoc3VicmVzb3VyY2VEb21haW4pLmlzb2xhdGVkQ29weSgpLCBkb21haW5SZWRpcmVj
dGVkVG8gPSBXVEZNb3ZlKGRvbWFpblJlZGlyZWN0ZWRUbykuaXNvbGF0ZWRDb3B5KCldKCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3Rh
dGlzdGljc1N0b3JlLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oc3VicmVzb3VyY2VE
b21haW4sIGRvbWFpblJlZGlyZWN0ZWRUbyk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluUmVkaXJlY3RlZEZyb20sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShSZWdpc3RyYWJsZURvbWFpbiYmIHN1YnJl
c291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc3VicmVzb3VyY2VEb21h
aW4gPSBzdWJyZXNvdXJjZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZEZy
b20gPSBkb21haW5SZWRpcmVjdGVkRnJvbS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAg
ICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgc3VicmVzb3VyY2VEb21haW4gPSBXVEZNb3ZlKHN1YnJlc291cmNlRG9tYWluKS5p
c29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZEZyb20gPSBXVEZNb3ZlKGRvbWFpblJlZGly
ZWN0ZWRGcm9tKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc3Rh
dGlzdGljc1N0b3JlKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RGcm9tKHN1YnJlc291cmNlRG9tYWluLCBkb21haW5SZWRpcmVjdGVk
RnJvbSk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRUbywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhSZWdp
c3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
blJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgcG9zdFRh
c2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGRvbWFpblJl
ZGlyZWN0ZWRUbyA9IGRvbWFpblJlZGlyZWN0ZWRUby5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxl
IHsKKyAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgdG9wRnJhbWVEb21haW4gPSBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKS5p
c29sYXRlZENvcHkoKSwgZG9tYWluUmVkaXJlY3RlZFRvID0gV1RGTW92ZShkb21haW5SZWRpcmVj
dGVkVG8pLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zdGF0aXN0
aWNzU3RvcmUpCiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+c2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKHRvcEZyYW1lRG9tYWluLCBkb21haW5SZWRpcmVjdGVkVG8pOwogICAgICAg
ICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRvcEZyYW1lVW5pcXVl
UmVkaXJlY3RGcm9tKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVj
dGVkRnJvbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgcG9zdFRhc2soW3Ro
aXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRvcEZy
YW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGRvbWFpblJlZGlyZWN0
ZWRGcm9tID0gZG9tYWluUmVkaXJlY3RlZEZyb20uaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CisgICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIHRvcEZyYW1lRG9tYWluID0gV1RGTW92ZSh0b3BGcmFtZURvbWFpbikuaXNv
bGF0ZWRDb3B5KCksIGRvbWFpblJlZGlyZWN0ZWRGcm9tID0gV1RGTW92ZShkb21haW5SZWRpcmVj
dGVkRnJvbSkuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRp
c3RpY3NTdG9yZSkKICAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0RnJvbSh0b3BGcmFtZURvbWFpbiwgZG9tYWluUmVkaXJlY3RlZEZyb20pOwog
ICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTEz
NjksNyArMTM2OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdp
c3RyYWJsZURvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWCiAgICAgfSk7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVBbmRSZXN0cmljdFdlYnNp
dGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRh
dGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFG
b3ImJiBkb21haW5zVG9EZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yLCBib29sIHNob3Vs
ZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgUmVnaXN0cmFi
bGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zVG9EZWxl
dGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKQEAg
LTE0MzEsMTEgKzE0MzEsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlc3VtZSgpCiAgICAgc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCktPnJlc3VtZSgpOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3Rp
Y0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgdW5zaWduZWQgbnVt
YmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBp
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5n
RGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVk
Q29weSgpLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwg
aXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IFdURk1vdmUoZG9tYWluKS5pc29sYXRlZENvcHko
KSwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+
aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pLCBudW1iZXJP
Zk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpOwogICAgICAgICBwb3N0VGFza1Jl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBjNWNkOWYxNGRmYTI2NzY2ZGUzMTEwMmNkYzQy
NDFjZmE2OTFhNDY2Li5jYWE0OThhM2I5YTUzYzIxM2ViZjc1MTNiMWFlODA0NTE1OTJjOTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0xNDgs
NDMgKzE0OCw0MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJj
ZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFN0b3JhZ2VB
Y2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c3VsdCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYs
IFRvcEZyYW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgU3RvcmFnZUFjY2Vzc1Nj
b3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4m
Jik7CiAKLSAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJv
b2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZy
YW1lRG9jdW1lbnRMb2FkLCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKTsKLSAg
ICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBsb2dDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uKGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0Rv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJ
bnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oTmF2aWdhdGVkVG9Eb21haW4mJiwg
VG9wRnJhbWVEb21haW4mJiwgTmF2aWdhdGVkRnJvbURvbWFpbiYmLCBib29sIGlzUmVkaXJlY3Qs
IGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9h
ZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcik7CisgICAgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oVG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oTmF2aWdhdGVk
RnJvbURvbWFpbiYmLCBOYXZpZ2F0ZWRUb0RvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oVG9wRnJhbWVEb21haW4mJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21h
aW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7
CisgICAgdm9pZCBkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21h
aW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAg
IHZvaWQgcmVnaXN0cmFibGVEb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNXaXRo
V2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5
UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYm
KT4mJik7CiAgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW5T
dG9yYWdlU2Vzc2lvbihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgU3RvcmFnZUFjY2Vzc1Njb3BlKTsKLSAgICB2b2lkIGhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oUmVnaXN0cmFibGVE
b21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIGJvb2wgaGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUsICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJik7Ci0g
ICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRl
c3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9w
RnJhbWVEb21haW4xLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4yLCBTZWNv
bmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwg
Ym9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGlzUmVsYXRpb25zaGlwT25seUluRGF0
YWJhc2VPbmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0VmVyeVByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7Ci0gICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
Ci0gICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaXNSZWdpc3Rl
cmVkQXNTdWJyZXNvdXJjZVVuZGVyKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lk
IGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAg
dm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgUmVkaXJlY3RlZEZyb21Eb21h
aW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKLSAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0R3Jh
bmRmYXRoZXJlZChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NTY29wZSwgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKKyAgICB2b2lkIHNldExhc3RTZWVu
KFJlZ2lzdHJhYmxlRG9tYWluJiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUmVnaXN0cmFibGVEb21haW4m
JiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbjEsIFRvcEZyYW1lRG9tYWluJiYgdG9w
RnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
U2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Ym9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNv
cmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGlzUmVs
YXRpb25zaGlwT25seUluRGF0YWJhc2VPbmNlKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRG9tYWlu
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShSZWdpc3RyYWJsZURvbWFp
biYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VmVyeVByZXZh
bGVudFJlc291cmNlKFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKFJl
Z2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXIoU3ViUmVzb3VyY2VEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZy
YW1lVW5kZXIoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oUmVkaXJlY3RlZEZyb21Eb21haW4mJiwgUmVkaXJlY3RlZFRvRG9tYWluJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJj
ZShSZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0R3JhbmRmYXRoZXJlZChSZWdpc3RyYWJsZURvbWFpbiYmLCBib29sLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKFJlZ2lzdHJh
YmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5nVGVzdChib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWluKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWluKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgUmVk
aXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFN1YlJlc291cmNlRG9tYWlu
JiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oU3Vi
UmVzb3VyY2VEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhTdWJSZXNv
dXJjZURvbWFpbiYmLCBSZWRpcmVjdGVkVG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFN1YlJl
c291cmNlRG9tYWluJiYsIFJlZGlyZWN0ZWRGcm9tRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oVG9wRnJh
bWVEb21haW4mJiwgUmVkaXJlY3RlZFRvRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShUb3BGcmFtZURv
bWFpbiYmLCBSZWRpcmVjdGVkRnJvbURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZUZv
ckRvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwNCw3ICsyMDQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZShib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UHJldmFs
ZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NT
Y29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXN1bWUoKTsK
ICAgICAKICAgICBib29sIGlzRXBoZW1lcmFsKCkgY29uc3QgeyByZXR1cm4gbV9pc0VwaGVtZXJh
bCA9PSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzOyB9
OwotICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhSZWdpc3RyYWJsZURvbWFp
biYmLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlcklu
dGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJv
b2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNz
aW9uJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCAwMTkwZDg0NmRiZDk1ZTA3MzdhZWU1YzMyNThhZjM1YTk3OWNlNzM2Li43N2E1
ZjRmMGRjMjQwZWRkOTkxMTU1NjQxNWMxYTU2OTk3MzE5ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtNDA3LDEwICs0MDcsMTAgQEAgYm9vbCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dXBkYXRl
UXVvdGFCYXNlZE9uU3BhY2VVc2FnZUZvclRlc3RpbmcoQ2xpZW50T3JpZ2luJiYgb3JpZ2luKQog
ewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKCkpKQotICAgICAgICBzZXNzaW9uLT5zdG9yYWdlTWFuYWdlcigpLnJlc2V0
UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhvcmlnaW4pOworICAgICAgICBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpLnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVz
dGluZyhXVEZNb3ZlKG9yaWdpbikpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0xMDM1LDEx
ICsxMDM1LDExIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0
b3JhZ2VBY2Nlc3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIKICAgICAgICAgc3RvcmFnZVNlc3Np
b24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rpb24oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmxvZ1VzZXJJbnRlcmFjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbikK
IHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbigp
KSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPmxvZ1VzZXJJbnRlcmFjdGlvbihkb21haW4sIFtdIHsgfSk7CisgICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oV1RGTW92ZShk
b21haW4pLCBbXSB7IH0pOwogICAgIH0KIH0KIApAQCAtMTA1OCwxMSArMTA1OCwxMSBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBk
YXRlZChWZWN0b3I8UmVzb3VyYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oKSkg
ewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNz
aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKLSAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPmhhc1N0b3JhZ2VBY2Nlc3Moc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9t
YWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uKCktPmhhc0Nvb2tpZXMoc3Vi
RnJhbWVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTEwNzMsMTEgKzEw
NzMsMTEgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3UKICAgICBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgcmVzdWx0KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFN0b3JhZ2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCByZXN1bHQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtT
ZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBu
ZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhzdWJGcmFtZURvbWFp
biwgdG9wRnJhbWVEb21haW4sIGZyYW1lSUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVByb3h5SUQsIHNj
b3BlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWlu
KSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHdlYlBhZ2VJRCwgd2ViUGFnZVBy
b3h5SUQsIHNjb3BlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNjBk
NTY3NzhhNjRmMzc0ZjBhZTk0YWQ2YjA5NTk5ODQ1ZGYwYzM3Yi4uMjM5ZDdlYWMxZGE2ODQxY2I1
ZDdmZmMxMDcxMGRhMTQ1ZTBkMDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMjU4
LDcgKzI1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVTb2NrZXRTdHJlYW0oVVJMJiYs
IFN0cmluZyBjYWNoZVBhcnRpdGlvbiwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcik7CiAK
ICAgICB2b2lkIGNyZWF0ZVNvY2tldENoYW5uZWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmll
ciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
Ym9vbCBoYWRNYWluRnJhbWVNYWluUmVzb3VyY2VQcml2YXRlUmVsYXllZCk7Ci0gICAgdm9pZCB1
cGRhdGVRdW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mKTsKKyAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0
aW5nKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKIAogICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVk
V29ya2VyU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNoYXJlZFdvcmtl
ckNvbm5lY3Rpb24oKTsKQEAgLTMxMCwxMCArMzEwLDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiAgICAgdm9pZCByZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAKLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpOworICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWlu
JiYpOwogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0
cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVxdWVzdFN0
b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggN2U0YzU5M2Vh
ODNiMWVhOTBkNzhjNjA4Yjc2ZDlkNDEwODI5MTk0Mi4uMDFhMDM5ODNjNjI1ZTk1Yzk2NzMyZTIz
NjhhMjMwZDZiMGZlOWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUzNCwxMSArNTM0LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25J
RCBzZXNzCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6aXNHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzR3JhbmRmYXRoZXJlZChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRo
ZXJlZChkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPmlzR3JhbmRmYXRoZXJlZChXVEZNb3ZlKGRvbWFpbiksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgIH0gZWxzZSB7CkBAIC01NDcsMTEgKzU0NywxMSBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6aXNQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1ByZXZhbGVudFJlc291
cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNQ
cmV2YWxlbnRSZXNvdXJjZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUHJldmFsZW50UmVzb3VyY2UoV1RG
TW92ZShkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UgewpAQCAt
NTYwLDExICs1NjAsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNQcmV2YWxlbnRSZXNvdXJj
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHIKICAgICB9CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OmlzVmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVn
aXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoZG9tYWluLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXVEZNb3ZlKGRvbWFpbiksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogICAgIH0gZWxzZSB7CkBAIC01ODAsMTEgKzU4MCwxMSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
LSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEdyYW5kZmF0aGVyZWQoZG9t
YWluLCBpc0dyYW5kZmF0aGVyZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldEdyYW5kZmF0aGVyZWQoV1RGTW92ZShk
b21haW4pLCBpc0dyYW5kZmF0aGVyZWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2Ug
ewpAQCAtNTkzLDExICs1OTMsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0R3JhbmRmYXRo
ZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmwKICAgICB9CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNldFByZXZhbGVudFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UHJl
dmFsZW50UmVzb3VyY2UoV1RGTW92ZShkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAg
fSBlbHNlIHsKQEAgLTYwNiwxMSArNjA2LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0CiAg
ICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFByZXZhbGVudFJlc291cmNl
Rm9yRGVidWdNb2RlKFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0g
ZWxzZSB7CkBAIC02MTksMTEgKzYxOSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRQcmV2
YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAgICAg
fQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShkb21haW4s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShXVEZNb3ZlKGRvbWFpbiksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtNjMyLDExICs2MzIsMTEgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclByZXZhbGVudFJlc291cmNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5jbGVhclByZXZhbGVu
dFJlc291cmNlKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShXVEZNb3Zl
KGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtNzU0LDExICs3
NTQsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2kKICAgICB9CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJmcmFt
ZVVuZGVyVG9wRnJhbWVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0
U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFp
biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFdURk1vdmUoc3ViRnJh
bWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0gZWxzZSB7CkBAIC03NjcsMTEgKzc2NywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
bwogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRpcmVj
dGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVk
aXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVj
dGVkRnJvbSwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5SZWRpcmVjdGVkVG8sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNSZWdpc3RlcmVk
QXNSZWRpcmVjdGluZ1RvKGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBkb21haW5SZWRpcmVjdGVkVG8s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhXVEZNb3ZlKGRvbWFpblJlZGly
ZWN0ZWRGcm9tKSwgV1RGTW92ZShkb21haW5SZWRpcmVjdGVkVG8pLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKICAgICB9IGVsc2UgewpAQCAtNzgwLDExICs3ODAsMTEgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmlzUmVnaXN0ZXJl
ZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0g
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1l
VW5kZXIoc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXIoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJh
bWVEb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICB9IGVsc2UgewpAQCAtNzkz
LDExICs3OTMsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJGcmFt
ZVVuZGVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJyZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHN1YnJlc291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKHN1YnJlc291
cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWluKFdURk1vdmUoc3VicmVzb3VyY2VEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1l
RG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC04MDYsMTEgKzgw
NiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdp
c3RyYWJsZURvbWFpbiYmIHN1YnJlc291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpblJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhzdWJyZXNvdXJjZURvbWFp
biwgZG9tYWluUmVkaXJlY3RlZFRvLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG8oV1RGTW92ZShzdWJyZXNvdXJjZURvbWFpbiksIFdURk1vdmUoZG9tYWluUmVkaXJlY3Rl
ZFRvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC04MTksMTEgKzgxOSwx
MSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjbwogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3VicmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5SZWRpcmVjdGVkRnJvbSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHN1YnJlc291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oc3VicmVzb3Vy
Y2VEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0RnJvbShXVEZNb3ZlKHN1YnJlc291cmNlRG9tYWluKSwgV1RGTW92ZShkb21h
aW5SZWRpcmVjdGVkRnJvbSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAt
ODMyLDExICs4MzIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgIH0KIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YnJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHN1YnJlc291cmNlRG9tYWluLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihzdWJyZXNv
dXJjZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmlzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcihXVEZNb3ZlKHN1YnJlc291cmNlRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURv
bWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgIH0gZWxzZSB7CkBAIC04NDUsMTEg
Kzg0NSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNl
VW5kZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjbwogICAgIH0KIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluUmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb3BG
cmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGly
ZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewog
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyh0b3BGcmFtZURvbWFpbiwgZG9tYWluUmVkaXJl
Y3RlZFRvLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV1RGTW92ZSh0b3BG
cmFtZURvbWFpbiksIFdURk1vdmUoZG9tYWluUmVkaXJlY3RlZFRvKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0gZWxzZSB7CkBAIC04NTgsMTEgKzg1OCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5S
ZWRpcmVjdGVkRnJvbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdEZyb20odG9wRnJhbWVEb21haW4sIGRvbWFpblJlZGlyZWN0ZWRGcm9tLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwg
V1RGTW92ZShkb21haW5SZWRpcmVjdGVkRnJvbSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
IGVsc2UgewpAQCAtODcyLDExICs4NzIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb24KIH0K
ICAgICAKICAgICAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldExhc3RTZWVuKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgU2Vjb25kcyBz
ZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vz
c2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
Ci0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRMYXN0U2Vlbihkb21haW4s
IHNlY29uZHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnNldExhc3RTZWVuKFdURk1vdmUoZG9tYWluKSwgc2Vjb25kcywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC04OTgsMTEgKzg5OCwxMSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBpbnQgZG9tYQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluMSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluMiwgU2Vj
b25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQs
IGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluMSwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbjIsIFNlY29uZHMgbGFz
dFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlz
VmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQot
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bWVyZ2VTdGF0aXN0aWNGb3JUZXN0
aW5nKGRvbWFpbiwgdG9wRnJhbWVEb21haW4xLCB0b3BGcmFtZURvbWFpbjIsIGxhc3RTZWVuLCBo
YWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRo
ZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5tZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pLCBXVEZNb3Zl
KHRvcEZyYW1lRG9tYWluMSksIFdURk1vdmUodG9wRnJhbWVEb21haW4yKSwgbGFzdFNlZW4sIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhl
cmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtOTExLDExICs5MTEsMTEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omlu
c2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRp
bmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZv
ckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0Rh
eXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAg
ICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9y
VGVzdGluZyhkb21haW4sIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNlckludGVy
YWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVu
dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoV1RGTW92ZShkb21h
aW4pLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICB9IGVsc2UgewpAQCAtOTM0LDIwICs5MzQsMjAgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0ZyYW1l
TmF2aWdhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0
LCBib29sIGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExv
YWQsIGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHRhcmdldERvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVjdCwg
Ym9vbCBpc01haW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2Fk
LCBib29sIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKQogewogICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSkKLSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0ZyYW1lTmF2aWdhdGlv
bih0YXJnZXREb21haW4sIHRvcEZyYW1lRG9tYWluLCBzb3VyY2VEb21haW4sIGlzUmVkaXJlY3Qs
IGlzTWFpbkZyYW1lLCBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCB3YXNQb3RlbnRp
YWxseUluaXRpYXRlZEJ5VXNlcik7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5sb2dGcmFtZU5hdmlnYXRpb24oV1RGTW92ZSh0YXJnZXREb21haW4pLCBXVEZNb3ZlKHRvcEZy
YW1lRG9tYWluKSwgV1RGTW92ZShzb3VyY2VEb21haW4pLCBpc1JlZGlyZWN0LCBpc01haW5GcmFt
ZSwgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZCwgd2FzUG90ZW50aWFsbHlJbml0aWF0
ZWRCeVVzZXIpOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVE
b21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5sb2dVc2VySW50ZXJhY3Rpb24oZG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dVc2VySW50ZXJh
Y3Rpb24oV1RGTW92ZShkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsK
QEAgLTk1NiwxMSArOTU2LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ1VzZXJJbnRlcmFj
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhCiAgICAgfQogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6aGFkVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFi
bGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
c2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+aGFzSGFkVXNlckludGVyYWN0aW9uKGRvbWFpbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aGFz
SGFkVXNlckludGVyYWN0aW9uKFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CiAgICAgfSBlbHNlIHsKQEAgLTk2OSwxMSArOTY5LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmhhZFVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjppc1JlbGF0aW9uc2hpcE9u
bHlJbkRhdGFiYXNlT25jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BEb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjppc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRG9tYWluLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHRvcERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5pc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShzdWJE
b21haW4sIHRvcERvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9u
Y2UoV1RGTW92ZShzdWJEb21haW4pLCBXVEZNb3ZlKHRvcERvbWFpbiksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOwogICAgIH0gZWxzZSB7CkBAIC05ODIsMTEgKzk4MiwxMSBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjppc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25jZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclVzZXJJ
bnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBzZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0g
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5jbGVhclVzZXJJbnRlcmFjdGlvbihk
b21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MtPmNsZWFyVXNlckludGVyYWN0aW9uKFdURk1vdmUoZG9tYWluKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC0xMTQzLDcgKzExNDMsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6
OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJh
bnNmZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1pdENy
b3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVn
aXN0cmFibGVEb21haW4mJiBmcm9tRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvRG9tYWlu
LCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6Rmxh
Zz4gbmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAgIEFTU0VS
VCghbmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5pc0VtcHR5KCkpOwogCkBAIC0xMTYyLDE3ICsxMTYy
LDE3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0
YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3NpCiAgICAgaWYgKG5hdmlnYXRpb25EYXRhVHJh
bnNmZXIuY29udGFpbnMoQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZzo6RGVz
dGluYXRpb25MaW5rRGVjb3JhdGlvbikpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKLSAg
ICAgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5sb2dDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBbXSB7IH0pOworICAgICAgICAg
ICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0Rl
Y29yYXRpb24oV1RGTW92ZShmcm9tRG9tYWluKSwgV1RGTW92ZSh0b0RvbWFpbiksIFtdIHsgfSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNv
cmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBmcm9tRG9tYWlu
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gc2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAg
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihmcm9tRG9tYWluLCB0b0RvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+bG9nQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihXVEZNb3ZlKGZyb21Eb21haW4pLCBXVEZNb3ZlKHRvRG9tYWluKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CkBAIC0xNjc0LDE0ICsxNjc0LDE0IEBAIHN0YXRp
YyBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBmaWx0ZXJGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoY29uc3QgSGFzCiAgICAgcmV0dXJuIG9yaWdpbnNEZWxldGVkOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFi
bGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3Ry
aWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0
V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBSZWdpc3RyYWJs
ZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnMsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKIAogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0
YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpEb05v
dENyZWF0ZVByb2Nlc3NlczsKIAogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7Ci0gICAg
ICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAg
ICAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTE2ODksMjAgKzE2ODksMjAgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyhQQUw6OlNlc3MKICAgICAgICAgfkNhbGxiYWNrQWdncmVnYXRvcigpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW5zID0gV1RGTW92ZShtX2RvbWFp
bnMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkb21h
aW5zKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFpbnMp
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+IG1fY29t
cGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluczsKICAgICB9OwogICAgIAotICAgIGF1dG8g
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoW3Ro
aXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNob3Vs
ZE5vdGlmeVBhZ2VdIChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1dp
dGhEYXRhKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVm
KCpuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBzaG91bGROb3RpZnlQYWdlXSAoSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mJiBkb21haW5zV2l0aERhdGEpIG11dGFibGUgewogICAgICAgICBpZiAoc2hv
dWxkTm90aWZ5UGFnZSkKICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5vdGlmeVdlYnNpdGVEYXRhRGVsZXRp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpLCAwKTsKICAgICAgICAgCi0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgZG9tYWluc1dpdGhEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFp
bnNXaXRoRGF0YSldICgpIG11dGFibGUgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZG9tYWluc1dpdGhEYXRhKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW5zV2l0aERh
dGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShkb21haW5zV2l0aERhdGEpKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRvbWFpbnNXaXRoRGF0
YSkpOwogICAgICAgICB9KTsKICAgICB9KSk7CiAKQEAgLTE4MzcsNyArMTgzNyw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgUmVnaXN0cmFiCiAgICAgZWxzZQogICAgICAgICB0b0RlbGV0ZUZvci5kb21haW5z
VG9EZWxldGVBbGxCdXRIdHRwT25seUNvb2tpZXNGb3IuYXBwZW5kKGRvbWFpbik7CiAKLSAgICBk
ZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25J
RCwgY29va2llVHlwZSwgV1RGTW92ZSh0b0RlbGV0ZUZvciksIHRydWUsIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mIGRvbWFpbnNEZWxldGVkRm9yKSBtdXRhYmxlIHsKKyAgICBkZWxldGVBbmRS
ZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKHNlc3Npb25JRCwgY29va2ll
VHlwZSwgV1RGTW92ZSh0b0RlbGV0ZUZvciksIHRydWUsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJiBk
b21haW5zRGVsZXRlZEZvcikgbXV0YWJsZSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShkb21haW5z
RGVsZXRlZEZvcik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CkBAIC0x
ODgwLDcgKzE4ODAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNX
aXRoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELAogICAgICAgICBpZiAoc2hv
dWxkTm90aWZ5UGFnZSkKICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5vdGlmeVdlYnNpdGVEYXRhU2NhbkZv
clJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCksIDApOwogCi0gICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgZG9tYWluc1dpdGhEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNXaXRoRGF0YSld
ICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvbWFpbnNXaXRoRGF0YSA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRvbWFpbnNXaXRoRGF0YSkpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZG9tYWluc1dpdGhEYXRhKSk7
CiAgICAgICAgIH0pOwogICAgIH0pKTsKQEAgLTIyMTIsMTAgKzIyMTIsMTAgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y2xlYXJTdG9yYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm8KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZp
ZXIgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaWRJbmNyZWFzZVF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCiB7CiAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICBzZXNzaW9u
LT5zdG9yYWdlTWFuYWdlcigpLmRpZEluY3JlYXNlUXVvdGEob3JpZ2luLCBpZGVudGlmaWVyLCBu
ZXdRdW90YSk7CisgICAgICAgIHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCkuZGlkSW5jcmVhc2VR
dW90YShXVEZNb3ZlKG9yaWdpbiksIGlkZW50aWZpZXIsIG5ld1F1b3RhKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgb2xkTmFtZSwgY29uc3QgVVJMJiBuZXdOYW1lLCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIyMjgsNyArMjIyOCw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIo
KS5tb3ZlRGF0YShkYXRhVHlwZXMsIG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0g
eyB9KTsKKyAgICAgICAgc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5tb3ZlRGF0YShkYXRhVHlw
ZXMsIFdURk1vdmUob2xkT3JpZ2luKSwgV1RGTW92ZShuZXdPcmlnaW4pLCBbYWdncmVnYXRvcl0g
eyB9KTsKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwMGJlNzFkZDMzOWMwYjg5NTRh
MzM4OTE3NjMzMTllMjVjYjdkYTZiLi40MmNlMDhiZjM1MGNmY2JhM2I1YTc1MjI5MzI2OWFlNzc4
Yjk1MTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0yMDEsMzEgKzIwMSwzMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRXZWJzaXRlRGF0
YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAjaWYgRU5BQkxFKElOVEVM
TElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCi0gICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291
cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJh
YmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFJl
Z2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKKyAgICB2b2lkIGNsZWFyUHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwg
UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFM
OjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFp
bnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBh
Z2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+
JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFJl
Z2lzdHJhYmxlRG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKTsKICAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcihQQUw6OlNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWluc1RvQmxvY2ssIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwotICAgIHZvaWQgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9t
YWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNQcmV2
YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZShQQUw6OlNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2ll
cyhQQUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBjb25zdCBSZWRpcmVjdGVk
VG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGlz
UmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzZXRHcmFuZGZhdGhl
cmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaXNHcmFu
ZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaXNSZWdp
c3RlcmVkQXNSZWRpcmVjdGluZ1RvKFBBTDo6U2Vzc2lvbklELCBSZWRpcmVjdGVkRnJvbURvbWFp
biYmLCBSZWRpcmVjdGVkVG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQs
IFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFBB
TDo6U2Vzc2lvbklELCBTdWJSZXNvdXJjZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQo
UEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYsIGJvb2wgaXNHcmFuZGZhdGhlcmVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWF4U3RhdGlzdGlj
c0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IG1heGltdW1FbnRyeUNvdW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2Uo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2Rl
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBS
ZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIFJlZ2lz
dHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBz
ZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcnVuZUVudHJp
ZXNEb3duVG8oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBydW5lVGFyZ2V0Q291bnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBoYWRVc2VySW50ZXJhY3Rpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBpc1JlbGF0aW9uc2hpcE9ubHlJbkRhdGFiYXNlT25j
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCBoYWRVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIFJl
Z2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgaXNSZWxhdGlvbnNoaXBPbmx5SW5EYXRhYmFzZU9uY2UoUEFMOjpTZXNzaW9uSUQsIFJl
Z2lzdHJhYmxlRG9tYWluJiYgc3ViRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcERvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBoYXNMb2NhbFN0
b3JhZ2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiBkb21haW5zKT4mJik7Ci0gICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25z
dCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1l
LCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50
aWFsbHlJbml0aWF0ZWRCeVVzZXIpOwotICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oUEFMOjpTZXNzaW9uSUQsIE5hdmln
YXRlZFRvRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE5hdmlnYXRlZEZyb21Eb21haW4mJiwg
Ym9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWlu
RnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpOwor
ICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBUb3BGcmFtZURvbWFp
biYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVl
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIzNSwxMCArMjM1LDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxlcyhQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVy
aW5nVGltZShQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4mJiwgU2Vj
b25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRvbWFpbklERXhp
c3RzSW5EYXRhYmFzZShQQUw6OlNlc3Npb25JRCwgaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYgdG9wRnJhbWVEb21haW4xLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9v
bCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1l
cmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgUmVnaXN0cmFibGVEb21haW4m
JiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbjEsIFRvcEZyYW1lRG9tYWluJiYgdG9w
RnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
U2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Ym9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNv
cmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2Vy
dEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBSZWdpc3RyYWJsZURv
bWFpbiYmLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNl
ckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWws
IGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKFBBTDo6U2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5n
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yNDcsMTYgKzI0NywxNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKFBBTDo6U2Vzc2lv
bklELCBib29sIGRlYnVnTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmZCk7CiAgICAg
dm9pZCBpc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFcGhlbWVyYWwoUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIHZvaWQgc2V0U2hvdWxk
Q2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQs
IGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRT
dWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZyYW1l
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBj
b25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklELCBTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURv
bWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0U3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluKFBBTDo6U2Vzc2lvbklELCBTdWJSZXNvdXJjZURvbWFp
biYmLCBUb3BGcmFtZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklELCBTdWJS
ZXNvdXJjZURvbWFpbiYmLCBSZWRpcmVjdGVkVG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFBB
TDo6U2Vzc2lvbklELCBTdWJSZXNvdXJjZURvbWFpbiYmLCBSZWRpcmVjdGVkRnJvbURvbWFpbiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29u
c3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklELCBUb3BG
cmFtZURvbWFpbiYmLCBSZWRpcmVjdGVkVG9Eb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vz
c2lvbklELCBUb3BGcmFtZURvbWFpbiYmLCBSZWRpcmVjdGVkRnJvbURvbWFpbiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9v
bCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRo
RGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJv
bURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8V2Vi
Q29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4sIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIHNldENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGlkQ29t
bWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQsIFJlZ2lzdHJh
YmxlRG9tYWluJiYgZnJvbURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b0RvbWFpbiwgT3B0
aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9p
ZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCwgUmVnaXN0cmFibGVEb21haW4mJiBmcm9tRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYm
IHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Np
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CiAgICAgdm9pZCBjbG9zZUlUUERh
dGFiYXNlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAt
MjkxLDcgKzI5MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXRRdW90YShQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU3RvcmFn
ZShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lk
IGRpZEluY3JlYXNlUXVvdGEoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gbmV3UXVvdGEpOworICAgIHZvaWQgZGlkSW5jcmVhc2VRdW90YShQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpOwogICAgIHZvaWQgcmVuYW1lT3Jp
Z2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA4YTVkNTg4NmEyZTMyNGEyYjE4YmUyNjNm
NmNjMTQ0NGU3YjY3ZTA2Li40ZDA5YzNiYjQyOWM0YzBmMzQ0OGM5OTZkZWE5OTFkYzRmODJmNjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUodHJ1ZSwgW10geyB9
KTsKICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgYmUgZm9yd2FyZGVkIHNpbmNlIGRlYnVnIG1v
ZGUgbWF5IGJlIGVuYWJsZWQgYXQgcnVudGltZS4KICAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSwgW10geyB9KTsKKyAg
ICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZShSZWdpc3RyYWJsZURvbWFpbiB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVh
bFByZXZhbGVudFJlc291cmNlIH0sIFtdIHsgfSk7CiAgICAgZm9yd2FyZFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTZXR0aW5ncygpOwogfQogCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBOZXR3b3Jr
U2Vzc2lvbjo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdAogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
VmFsdWVGcm9tV2ViUHJvY2VzcyhtZXNzYWdlLCBkZXNjcmlwdGlvbiwgdmFsdWUsIHNpZ25pZmlj
YW50RmlndXJlcywgc2hvdWxkU2FtcGxlKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Npb246
OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0
ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmlj
dFdlYnNpdGVEYXRhRm9yJiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucy5kb21h
aW5zVG9FbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggZjNlMDJkZTlhMjUzOWZjMjNmNzE0ZjEwMGJl
MTBmNzVlZjcxOWMwMy4uZmZmODdlODRlMDY2ODkzMGU2MTFiYzM1YzI0Zjc4ZjMyMjU0ODdmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAt
MTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wpOwogICAgIGJvb2wgaXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCgpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3Nl
ZCgpOwotICAgIHZvaWQgZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxl
RG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVEb21haW5zVG9E
ZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+Jik+JiYpOworICAgIHZvaWQgZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJl
Z2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVE
b21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwgYm9vbCBzaG91bGROb3Rp
ZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+JiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
JiYpPiYmKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAg
ICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCAwOTQyNzk2ODc3YWIzOTViMzk5OGY0YTg4Mzlj
NWE4M2M5M2VjMDk3Li4yYTgyYTExNWExYjliYWQ1OGJhODY4ZTU1ZTU3N2NmOWY1NzNkMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC02NjcsMTIgKzY2NywxMiBAQCB2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpbwogICAgIHN0b3JlKCkuY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhckZvclJlZ2lzdHJh
YmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIHN0b3JlKCkuY2xl
YXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHN0b3JlKCkuY2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUoZG9tYWluKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlcjo6Y2xlYXJFeHBpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IDExNzgyZDIzNDBlNTI1
NWY2NjVjMjFjNzA5NjM3NzUxZmYxYmY5NDQuLjY1MjhjYjAzMDc0MjY0MWU2Y2NjYTdkYTA5ODg2
Mzk3NDQ4MTRmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlQXR0cmli
dXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eVVSTCwgY29uc3QgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyJikgZmluYWw7CiAg
ICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBjbGVhckZvclJlZ2lz
dHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgZmluYWw7CiAgICAgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9t
TGVnYWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgZmluYWw7CiAgICAgdm9pZCBzZXREZWJ1Z01vZGVJc0Vu
YWJsZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVz
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oCmluZGV4IDE0NzlhZjNkYThm
MWVkNTJhZWRkYTg0MTdhNzk1OTQxOTg3NDRmYmYuLjA0NjBlNDI3M2IwY2IzN2E5YTdmYWQ5MTUz
YjQ2YzQ4MWZkY2MwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaApAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlVW5hdHRyaWJ1dGVk
KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRm9yUmVnaXN0cmFi
bGVEb21haW4oUmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZy
b21MZWdhY3lTdG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERlYnVn
TW9kZUlzRW5hYmxlZChib29sKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAK
aW5kZXggM2NmMmFmYzE0YTZjYzE4NmNkNjQxZTUyZGEwYjYyZTM0Y2UyNzk2Ni4uYjEzNGFiM2Zh
YzY1MzY5MmQwYjc1ODYwY2U1MGI5NjlmOWJlNmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQ
cm94eS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBzZW5kTWVzc2Fn
ZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6Q2xlYXI+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotdm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyRm9y
UmVnaXN0cmFibGVEb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5k
TWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbj4o
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvbWFpbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5LmgKaW5kZXggZDRhMjc5YWI5ZTEyMjI4ZGVlMDcwNWI4ZmQ4MmUyZjhlNTM5YTNjOC4u
NDQyNWJlZmE4YmRkMmYxNzZhMzE4OTAzYzcxMGNjOTk5YjQ2MjIzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyUHJveHkuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZVVu
YXR0cmlidXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlQXR0cmlidXRpb24oV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwg
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZGly
ZWN0RG9tYWluLCBjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwsIGNvbnN0IEFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllciYpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwog
ICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2Uo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFsOwogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVk
KGJvb2wpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAppbmRleCBiYjQ0Y2RmMThhYTgzODY5M2M0
MmM4MzBkMWMwODJhZDVlYmFkNTQ4Li45NmZjM2VhYjM3MmMxOGNkZTVkMTc4Y2VmODY2YjNmOTMx
NzdhMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgdm9pZCBTdG9yZTo6
bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVz
dGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
aXRlJiYgc291cmNlU2l0ZSwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiYgZGVzdGluYXRpb25TaXRlLCBjb25zdCBBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciwgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
SXNSdW5uaW5nTGF5b3V0VGVzdCBpc1J1bm5pbmdUZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+JiYsIERlYnVnSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiYgc291cmNlU2l0ZSwgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRl
JiYgZGVzdGluYXRpb25TaXRlLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImIGFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6SXNSdW5uaW5nTGF5b3V0VGVzdCBpc1J1bm5p
bmdUZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+JiYs
IERlYnVnSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwb3N0VGFzayhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNvdXJjZVNpdGUgPSBzb3VyY2VTaXRl
Lmlzb2xhdGVkQ29weSgpLCBkZXN0aW5hdGlvblNpdGUgPSBkZXN0aW5hdGlvblNpdGUuaXNvbGF0
ZWRDb3B5KCksIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IGFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1v
dmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGlzUnVubmluZ1Rlc3QsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIHBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc291cmNlU2l0ZSA9IFdU
Rk1vdmUoc291cmNlU2l0ZSkuaXNvbGF0ZWRDb3B5KCksIGRlc3RpbmF0aW9uU2l0ZSA9IFdURk1v
dmUoZGVzdGluYXRpb25TaXRlKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgaXNS
dW5uaW5nVGVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9kYXRhYmFzZSkgewogICAgICAgICAgICAg
cmV0dXJuIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bnVsbG9wdCwgeyB9KTsKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFN0b3JlOjph
dHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbQogCiAgICAgICAgIGF1dG8gW3NlY29uZHMsIGRlYnVnSW5mb10gPSBtX2RhdGFi
YXNlLT5hdHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5h
dGlvblNpdGUsIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciwgV1RGTW92ZShhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKSwgaXNSdW5uaW5nVGVzdCk7CiAKLSAgICAgICAgcG9zdFRhc2tSZXBseShb
c2Vjb25kcyA9IFdURk1vdmUoc2Vjb25kcyksIGRlYnVnSW5mbyA9IGRlYnVnSW5mby5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgcG9zdFRhc2tSZXBseShbc2Vjb25kcyA9IFdURk1vdmUoc2Vj
b25kcyksIGRlYnVnSW5mbyA9IFdURk1vdmUoZGVidWdJbmZvKS5pc29sYXRlZENvcHkoKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2Vjb25kcyksIFdURk1vdmUo
ZGVidWdJbmZvKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZv
aWQgU3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyCiAgICAgICAgIFN0cmluZyByZXN1bHQ7CiAgICAgICAgIGlm
IChtX2RhdGFiYXNlKQogICAgICAgICAgICAgcmVzdWx0ID0gbV9kYXRhYmFzZS0+cHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoKTsKLSAgICAgICAgcG9zdFRhc2tSZXBs
eShbcmVzdWx0ID0gcmVzdWx0Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBwb3N0VGFza1Jl
cGx5KFtyZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCkuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAg
LTE1Myw5ICsxNTMsOSBAQCB2b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSAogICAgIH0pOwogfQogCi12
b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTdG9yZTo6Y2xlYXJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIHBvc3RUYXNr
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZG9tYWluID0gV1RGTW92ZShk
b21haW4pLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fZGF0YWJhc2UpCiAgICAg
ICAgICAgICBtX2RhdGFiYXNlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KGRvbWFpbik7
CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAt
MTcyLDcgKzE3Miw3IEBAIHZvaWQgU3RvcmU6OmNsZWFyRXhwaXJlZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KCkKIAogdm9pZCBTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvblRvQ2xlYXIsIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQpCiB7Ci0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBhdHRyaWJ1dGlvblRvQ2xlYXIgPSBhdHRyaWJ1dGlvblRvQ2xlYXIuaXNv
bGF0ZWRDb3B5KCksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnRdKCkgbXV0YWJsZSB7CisgICAg
cG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBhdHRyaWJ1dGlv
blRvQ2xlYXIgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVG9DbGVhcikuaXNvbGF0ZWRDb3B5KCksIGF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnRdKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2RhdGFi
YXNlKQogICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92
ZShhdHRyaWJ1dGlvblRvQ2xlYXIpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JlLmgKaW5kZXggN2FjNWMxYmZmYjdiMjM3Y2FjZjhmZmYwNzExMjMzYjBkYzRi
MWIyYi4uM2E0ZWNjNjZiYzdlN2M4NjdiYjU2Y2I5OWQ1NWE2YjdjOWM5ZTg2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0
b3JlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NE
aWRSZXN1bWUoKTsKIAogICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiYsIGNvbnN0IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYmLCBjb25zdCBB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6SXNSdW5uaW5nTGF5b3V0VGVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNl
Y29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1Z0luZm8mJik+JiYpOworICAgIHZvaWQgYXR0cmli
dXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZVNpdGUmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uRGVzdGluYXRpb25TaXRlJiYsIGNvbnN0IEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
ciYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhJiYsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRU
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+JiYsIERl
YnVnSW5mbyYmKT4mJik7CiAKICAgICB2b2lkIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJp
bmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3Q7CiAg
ICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGly
ZWRGb3JUZXN0aW5nKCk7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFsbEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJik+JiYpOwogICAgIHZvaWQg
Y2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKICAgICB2b2lkIGNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIGNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9yUmVnaXN0cmFibGVE
b21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb25Ub0NsZWFyLCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CiAKICAgICB2b2lkIGNs
b3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmgKaW5kZXggODZhNWVkZTRiMzY4OGRiMjYzNjM0MWYyZGRkY2FkZjJl
MWI4NzM1ZC4uNWJjMTNlYzM2ZjVkMmE5NmZjNjFlNzAyMmMxYzhhMWU1Yzc5MWE0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaApAQCAtNTcsNyArNTcsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8T3JpZ2luRGV0YWlscz4gZGVjb2RlKERlY29kZXImKTsKIAotICAgICAgICBPcmln
aW5EZXRhaWxzIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgb3JpZ2luSWRlbnRpZmll
ci5pc29sYXRlZENvcHkoKSwgY3JlYXRpb25UaW1lLCBtb2RpZmljYXRpb25UaW1lIH07IH0KKyAg
ICAgICAgT3JpZ2luRGV0YWlscyBpc29sYXRlZENvcHkoKSBjb25zdCAmIHsgcmV0dXJuIHsgb3Jp
Z2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgY3JlYXRpb25UaW1lLCBtb2RpZmljYXRpb25U
aW1lIH07IH0KKyAgICAgICAgT3JpZ2luRGV0YWlscyBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVy
biB7IFdURk1vdmUob3JpZ2luSWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCksIGNyZWF0aW9uVGlt
ZSwgbW9kaWZpY2F0aW9uVGltZSB9OyB9CiAgICAgfTsKICAgICBWZWN0b3I8T3JpZ2luRGV0YWls
cz4gb3JpZ2luRGV0YWlsc0Nyb3NzVGhyZWFkQ29weSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCBjMWI5ODZjZjlmNjYxMjQxZjEwM2E3ODA2YzgzNjZkZThiYzQzNjNmLi44ZjQxZWY5ODMw
ODdiMTViYTQ1ZmE0YjIzZTUzNDk1YTg4YzYxMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTEwMCw4ICsxMDAsOCBAQCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gU3RvcmFnZU1hbmFn
ZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2luc0Nyb3NzVGhyZWFkQwogCiAgICAgSGFzaFNldDxT
ZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7
Ci0gICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPm9y
aWdpbnMoKSkKLSAgICAgICAgICAgIG9yaWdpbnMuYWRkKGNyb3NzVGhyZWFkQ29weShvcmlnaW4p
KTsKKyAgICAgICAgZm9yIChhdXRvJiYgb3JpZ2luIDogc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Ut
Pm9yaWdpbnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKG9yaWdpbikpKTsKICAgICB9CiAKICAgICByZXR1cm4gb3JpZ2luczsKQEAgLTEzMSwxOCAr
MTMxLDE4IEBAIEhhc2hTZXQ8U2VjdXJpdHlPcmlnaW5EYXRhPiBTdG9yYWdlTWFuYWdlcjo6Z2V0
TG9jYWxTdG9yYWdlT3JpZ2luc0Nyb3NzVGhyZWFkQ29wCiAKICAgICBIYXNoU2V0PFNlY3VyaXR5
T3JpZ2luRGF0YT4gb3JpZ2luczsKICAgICBpZiAobV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIpIHsKLSAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLT5vcmlnaW5zKCkpCi0gICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbi5pc29sYXRlZENvcHko
KSk7CisgICAgZm9yIChhdXRvJiYgb3JpZ2luIDogbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXItPm9yaWdpbnMoKSkKKyAgICAgICAgb3JpZ2lucy5hZGQoV1RGTW92ZShvcmlnaW4pLmlzb2xh
dGVkQ29weSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGxvY2Fs
U3RvcmFnZU5hbWVTcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkgewot
ICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBsb2NhbFN0b3JhZ2VOYW1lU3BhY2UtPmVw
aGVtZXJhbE9yaWdpbnMoKSkKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNv
bGF0ZWRDb3B5KCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiYgb3JpZ2luIDogbG9jYWxTdG9y
YWdlTmFtZVNwYWNlLT5lcGhlbWVyYWxPcmlnaW5zKCkpCisgICAgICAgICAgICAgICAgb3JpZ2lu
cy5hZGQoV1RGTW92ZShvcmlnaW4pLmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGZvciAoYXV0byYgdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogbV90cmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLT5vcmlnaW5zKCkpCi0g
ICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBm
b3IgKGF1dG8mJiBvcmlnaW4gOiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UtPm9yaWdp
bnMoKSkKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdURk1vdmUob3JpZ2luKS5pc29sYXRlZENv
cHkoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9yaWdpbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5k
ZXggNWY2YzA0MTg2YjM0NjZhYjI3YThmZGFhNDE2ZTQ2YzhmOWZlYjhkOC4uMmQ4MzU5MDAxMjAz
MDUyZjE2NjMzOTk4ZTQ0MGMzYjVmNmE2ZDkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNDQw
LDcgKzQ0MCw3IEBAIENhY2hlKiBFbmdpbmU6OmNhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRW5naW5l
Ojp3cml0ZUZpbGUoU3RyaW5nJiYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkgewogICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwpAQCAtNDQ4LDEzICs0NDgsMTMgQEAgdm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3IKICAg
ICB9CiAKICAgICBtX3BlbmRpbmdXcml0ZUNhbGxiYWNrcy5hZGQoKyttX3BlbmRpbmdDYWxsYmFj
a3NDb3VudGVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IG1fcGVuZGlu
Z0NhbGxiYWNrc0NvdW50ZXIsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBmaWxlbmFtZSA9IGZpbGVu
YW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBtX3BlbmRp
bmdDYWxsYmFja3NDb3VudGVyLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgZmlsZW5hbWUgPSBXVEZN
b3ZlKGZpbGVuYW1lKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKIAogICAgICAgICBTdHJp
bmcgZGlyZWN0b3J5UGF0aCA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoZmlsZW5hbWUpOwogICAg
ICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCiAgICAgICAg
ICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5UGF0aCk7CiAKLSAg
ICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6
OlR5cGU6OkNyZWF0ZSwgV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQpOworICAgICAgICBhdXRvIGNo
YW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oV1RGTW92ZShmaWxlbmFtZSksIElPQ2hhbm5lbDo6VHlw
ZTo6Q3JlYXRlLCBXb3JrUXVldWU6OlFPUzo6RGVmYXVsdCk7CiAgICAgICAgIGNoYW5uZWwtPndy
aXRlKDAsIGRhdGEsIFdvcmtRdWV1ZTo6bWFpbigpLCBbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3Zl
KHdlYWtUaGlzKSwgaWRlbnRpZmllcl0oaW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpA
QCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yCiAgICAgfSk7CiB9CiAK
LXZvaWQgRW5naW5lOjpyZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYsIGludCBlcnJvcik+JiYgY2Fs
bGJhY2spCit2b2lkIEVuZ2luZTo6cmVhZEZpbGUoU3RyaW5nJiYgZmlsZW5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJiwgaW50IGVycm9yKT4mJiBj
YWxsYmFjaykKIHsKICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkgewogICAgICAgICBjYWxsYmFj
ayhEYXRhIHsgfSwgMCk7CkBAIC00ODAsOCArNDgwLDggQEAgdm9pZCBFbmdpbmU6OnJlYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgTmV0
d28KICAgICB9CiAKICAgICBtX3BlbmRpbmdSZWFkQ2FsbGJhY2tzLmFkZCgrK21fcGVuZGluZ0Nh
bGxiYWNrc0NvdW50ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBtX2lvUXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gbV9w
ZW5kaW5nQ2FsbGJhY2tzQ291bnRlciwgZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHko
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZp
bGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXIgPSBtX3BlbmRp
bmdDYWxsYmFja3NDb3VudGVyLCBmaWxlbmFtZSA9IFdURk1vdmUoZmlsZW5hbWUpLmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9w
ZW4oV1RGTW92ZShmaWxlbmFtZSksIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7CiAgICAgICAgIGlm
ICghY2hhbm5lbC0+aXNPcGVuZWQoKSkgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBpZGVudGlmaWVyXSgp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01MDYsMjQgKzUw
NiwyNCBAQCB2b2lkIEVuZ2luZTo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBOZXR3bwogICAgIH0pOwogfQogCi12b2lkIEVuZ2lu
ZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQordm9pZCBFbmdpbmU6OnJlbW92
ZUZpbGUoU3RyaW5nJiYgZmlsZW5hbWUpCiB7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2ZpbGVuYW1lID0gZmls
ZW5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CisgICAgbV9pb1F1ZXVlLT5kaXNwYXRj
aChbZmlsZW5hbWUgPSBXVEZNb3ZlKGZpbGVuYW1lKS5pc29sYXRlZENvcHkoKV0gewogICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKICAgICB9KTsKIH0KIAotdm9pZCBF
bmdpbmU6OndyaXRlU2l6ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRfdCBzaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEVuZ2lu
ZTo6d3JpdGVTaXplRmlsZShTdHJpbmcmJiBwYXRoLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIAogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3BhdGgg
PSBwYXRoLmlzb2xhdGVkQ29weSgpLCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2go
W3BhdGggPSBXVEZNb3ZlKHBhdGgpLmlzb2xhdGVkQ29weSgpLCBzaXplLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgZ2xvYmFsU2l6ZUZpbGVMb2NrIH07CiAgICAgICAgIGF1dG8gZmlsZUhh
bmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6V3JpdGUpOwogCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBFbmdpbmU6OmdldERpcmVjdG9y
aWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4mJiBjb20K
ICAgICAgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
cGF0aCkpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKEZpbGVT
eXN0ZW06OmZpbGVUeXBlKGZpbGVQYXRoKSA9PSBGaWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0
b3J5KQotICAgICAgICAgICAgICAgIGZvbGRlclBhdGhzLmFwcGVuZChmaWxlUGF0aC5pc29sYXRl
ZENvcHkoKSk7CisgICAgICAgICAgICAgICAgZm9sZGVyUGF0aHMuYXBwZW5kKFdURk1vdmUoZmls
ZVBhdGgpLmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbZm9sZGVyUGF0aHMgPSBXVEZNb3ZlKGZvbGRlclBhdGhzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAg
LTcxMyw3ICs3MTMsNyBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGly
ZWN0b3JpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZvbGRlclBhdAogewogICAgIGF1dG8gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IGZvbGRlclBhdGhz
KSB7Ci0gICAgICAgIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBh
dGgsICptX2lvUXVldWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3Jp
Z2luLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIGZvbGRlclBhdGhdIChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNsaWVudE9yaWdpbj4mJiBmb2xkZXJPcmlnaW4pIG11dGFibGUgeworICAgICAgICBDYWNo
ZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9yaWdpbiwgY2FsbGJhY2tBZ2dy
ZWdhdG9yLCBmb2xkZXJQYXRoID0gZm9sZGVyUGF0aF0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
Q2xpZW50T3JpZ2luPiYmIGZvbGRlck9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
IWZvbGRlck9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAo
Zm9sZGVyT3JpZ2luLT50b3BPcmlnaW4gIT0gb3JpZ2luICYmIGZvbGRlck9yaWdpbi0+Y2xpZW50
T3JpZ2luICE9IG9yaWdpbikKQEAgLTcyMSwxNiArNzIxLDE2IEBAIHZvaWQgRW5naW5lOjpjbGVh
ckNhY2hlc0Zvck9yaWdpbkZyb21EaXJlY3Rvcmllcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZm9s
ZGVyUGF0CiAKICAgICAgICAgICAgIC8vIElmIGNhY2hlIHNhbHQgaXMgaW5pdGlhbGl6ZWQgYW5k
IHRoZSBwYXRocyBkbyBub3QgbWF0Y2gsIHNvbWUgY2FjaGUgZmlsZXMgaGF2ZSBwcm9iYWJseSBi
ZSByZW1vdmVkIG9yIHBhcnRpYWxseSBjb3JydXB0ZWQuCiAgICAgICAgICAgICBBU1NFUlQoIW1f
c2FsdCB8fCBmb2xkZXJQYXRoID09IGNhY2hlc1Jvb3RQYXRoKCpmb2xkZXJPcmlnaW4pKTsKLSAg
ICAgICAgICAgIGRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5T25CYWNrZ3JvdW5kVGhyZWFkKGZvbGRl
clBhdGgsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcild
IHsgfSk7CisgICAgICAgICAgICBkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRo
cmVhZChXVEZNb3ZlKGZvbGRlclBhdGgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gV1RGTW92ZShj
YWxsYmFja0FnZ3JlZ2F0b3IpXSB7IH0pOwogICAgICAgICB9KTsKICAgICB9CiB9CiAKLXZvaWQg
RW5naW5lOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVhZChjb25zdCBT
dHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgRW5naW5lOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeU9uQmFja2dyb3VuZFRocmVh
ZChTdHJpbmcmJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIG1faW9RdWV1
ZS0+ZGlzcGF0Y2goW3BhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIG1faW9RdWV1
ZS0+ZGlzcGF0Y2goW3BhdGggPSBXVEZNb3ZlKHBhdGgpLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgZ2xvYmFsU2l6ZUZpbGVMb2NrIH07CiAgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KHBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRl
eCBmZTNjMWY5MzBkYWUzOTk4Y2QxYzA0YzM0ZGJkZGM1MzU1NWE0NzAyLi41OWU3NmJhZTQ3MTdm
NDEzM2I5ZWI5OTg2MmVkM2JhYzk5MDFiMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTg5LDEwICs4
OSwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZFBlcnNpc3QoKSBjb25zdCB7IHJldHVy
biAhIW1faW9RdWV1ZTt9CiAKLSAgICB2b2lkIHdyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBs
ZXRpb25DYWxsYmFjayYmKTsKLSAgICB2b2lkIHJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgTmV0d29ya0NhY2hlOjpEYXRhJiwgaW50
IGVycm9yKT4mJik7Ci0gICAgdm9pZCByZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUp
OwotICAgIHZvaWQgd3JpdGVTaXplRmlsZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCBzaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgd3JpdGVGaWxlKFN0cmluZyYm
IGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlYWRGaWxlKFN0cmluZyYmIGZpbGVu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE5ldHdvcmtDYWNoZTo6RGF0YSYsIGlu
dCBlcnJvcik+JiYpOworICAgIHZvaWQgcmVtb3ZlRmlsZShTdHJpbmcmJiBmaWxlbmFtZSk7Cisg
ICAgdm9pZCB3cml0ZVNpemVGaWxlKFN0cmluZyYmLCB1aW50NjRfdCBzaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBy
ZWFkU2l6ZUZpbGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBjb25zdCBTdHJpbmcmIHJvb3RQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9yb290UGF0aDsgfQpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGVhckFsbENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckNhY2hlc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgY2xlYXJDYWNoZXNGb3JPcmlnaW5Gcm9tRGlzayhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZGVsZXRl
Tm9uRW1wdHlEaXJlY3RvcnlPbkJhY2tncm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZGVsZXRlTm9uRW1wdHlEaXJl
Y3RvcnlPbkJhY2tncm91bmRUaHJlYWQoU3RyaW5nJiYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlv
bkNhbGxiYWNrJiYpOwogICAgIFN0cmluZyByZXByZXNlbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcAppbmRleCBkYTljYjhhNWRjYzBlZDdmOWY0YzJlM2QyZjI3Njg5NGEwMWVk
MTc0Li5iNzVjNzg3NGY4NWRhYmM5YzE2NzJmZTQwMDY3OGQ1OTZkNzI1M2ZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
SFRUUFBhcnNlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtMTI4LDM1ICsxMjksMjMg
QEAgdm9pZCBDYWNoZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpCiAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpVbmluaXRpYWxpemVkOwogfQogCi1zdGF0aWMgUmVjb3JkSW5mb3JtYXRpb24gaXNv
bGF0ZWRDb3B5KGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbikKK1JlY29yZElu
Zm9ybWF0aW9uIFJlY29yZEluZm9ybWF0aW9uOjppc29sYXRlZENvcHkoKSAmJgogewotICAgIGF1
dG8gcmVzdWx0ID0gUmVjb3JkSW5mb3JtYXRpb24geyBpbmZvcm1hdGlvbi5rZXksIGluZm9ybWF0
aW9uLmluc2VydGlvblRpbWUsIGluZm9ybWF0aW9uLmlkZW50aWZpZXIsIGluZm9ybWF0aW9uLnVw
ZGF0ZVJlc3BvbnNlQ291bnRlciwgaW5mb3JtYXRpb24uc2l6ZSwgaW5mb3JtYXRpb24udXJsLmlz
b2xhdGVkQ29weSgpLCBpbmZvcm1hdGlvbi5oYXNWYXJ5U3RhciwgeyB9IH07Ci0gICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gdmFyeUhlYWRlcnM7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBrZXlW
YWx1ZSA6IGluZm9ybWF0aW9uLnZhcnlIZWFkZXJzKQotICAgICAgICB2YXJ5SGVhZGVycy5zZXQo
a2V5VmFsdWUua2V5Lmlzb2xhdGVkQ29weSgpLCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHko
KSk7Ci0gICAgcmVzdWx0LnZhcnlIZWFkZXJzID0gV1RGTW92ZSh2YXJ5SGVhZGVycyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4geyBrZXksIGluc2VydGlvblRpbWUsIGlkZW50aWZp
ZXIsIHVwZGF0ZVJlc3BvbnNlQ291bnRlciwgc2l6ZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29w
eSgpLCBoYXNWYXJ5U3RhciwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodmFyeUhlYWRlcnMpKSB9
OwogfQogCiBzdHJ1Y3QgVHJhdmVyc2FsUmVzdWx0IHsKICAgICB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4+IHJl
Y29yZHM7CiAgICAgVmVjdG9yPEtleT4gZmFpbGVkUmVjb3JkczsKKworICAgIFRyYXZlcnNhbFJl
c3VsdCBpc29sYXRlZENvcHkoKSAmJjsKIH07CiAKLXN0YXRpYyBUcmF2ZXJzYWxSZXN1bHQgaXNv
bGF0ZWRDb3B5KFRyYXZlcnNhbFJlc3VsdCYmIHJlc3VsdCkKK1RyYXZlcnNhbFJlc3VsdCBUcmF2
ZXJzYWxSZXN1bHQ6Omlzb2xhdGVkQ29weSgpICYmCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZl
Y3RvcjxSZWNvcmRJbmZvcm1hdGlvbj4+IGlzb2xhdGVkUmVjb3JkczsKLSAgICBmb3IgKGF1dG8m
IGtleVZhbHVlIDogcmVzdWx0LnJlY29yZHMpIHsKLSAgICAgICAgYXV0byYgcmVjb3JkVmVjdG9y
ID0ga2V5VmFsdWUudmFsdWU7Ci0gICAgICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwg
cmVjb3JkVmVjdG9yLnNpemUoKTsgY3B0cisrKQotICAgICAgICAgICAgcmVjb3JkVmVjdG9yW2Nw
dHJdID0gaXNvbGF0ZWRDb3B5KHJlY29yZFZlY3RvcltjcHRyXSk7Ci0KLSAgICAgICAgaXNvbGF0
ZWRSZWNvcmRzLnNldChrZXlWYWx1ZS5rZXkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUocmVjb3Jk
VmVjdG9yKSk7Ci0gICAgfQotCi0gICAgLy8gTm8gbmVlZCB0byBpc29sYXRlIGtleXMgc2luY2Ug
dGhleSBhcmUgaXNvbGF0ZWQgdGhyb3VnaCB0aGUgY29weSBjb25zdHJ1Y3RvcgotICAgIHJldHVy
biBUcmF2ZXJzYWxSZXN1bHQgeyByZXN1bHQuY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKGlzb2xh
dGVkUmVjb3JkcyksIFdURk1vdmUocmVzdWx0LmZhaWxlZFJlY29yZHMpIH07CisgICAgLy8gTm8g
bmVlZCB0byBpc29sYXRlIGtleXMgc2luY2UgdGhleSBhcmUgaXNvbGF0ZWQgdGhyb3VnaCB0aGUg
Y29weSBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4geyBjYWNoZUlkZW50aWZpZXIsIGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHJlY29yZHMpKSwgV1RGTW92ZShmYWlsZWRSZWNvcmRzKSB9OwogfQog
CiB2b2lkIENhY2hlOjpvcGVuKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtMTcz
LDcgKzE2Miw3IEBAIHZvaWQgQ2FjaGU6Om9wZW4oQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiAgICAgVHJhdmVyc2FsUmVzdWx0IHRyYXZlcnNhbFJlc3VsdCB7IG1faWRlbnRpZmllciwg
eyB9LCB7IH0gfTsKICAgICBtX2NhY2hlcy5yZWFkUmVjb3Jkc0xpc3QoKnRoaXMsIFtjYWNoZXMg
PSBSZWYgeyBtX2NhY2hlcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0cmF2ZXJz
YWxSZXN1bHQgPSBXVEZNb3ZlKHRyYXZlcnNhbFJlc3VsdCldKGNvbnN0IGF1dG8qIHN0b3JhZ2VS
ZWNvcmQsIGNvbnN0IGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFzdG9yYWdlUmVjb3Jk
KSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhY2hlcyA9IFdURk1v
dmUoY2FjaGVzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdHJhdmVyc2FsUmVzdWx0
ID0gaXNvbGF0ZWRDb3B5KFdURk1vdmUodHJhdmVyc2FsUmVzdWx0KSkgXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWNoZXMgPSBXVEZNb3ZlKGNh
Y2hlcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRyYXZlcnNhbFJlc3VsdCA9IFdU
Rk1vdmUodHJhdmVyc2FsUmVzdWx0KS5pc29sYXRlZENvcHkoKSBdKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiB0cmF2ZXJzYWxSZXN1bHQuZmFpbGVkUmVjb3Jk
cykKICAgICAgICAgICAgICAgICAgICAgY2FjaGVzLT5yZW1vdmVDYWNoZUVudHJ5KGtleSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuaAppbmRleCBiMjBkY2Y3YmM3MGNhNmMzZmIxZGI0OTE0NWZk
ZGU1NjI1OTc3MjdjLi40MDE5NzdhZDEyOGIyYzg2YzA3Nzg5ZDA2M2M4Mjg3NjMyNTY1ZDljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCkBAIC01Miw2ICs1Miw4IEBAIHN0cnVjdCBSZWNvcmRJ
bmZvcm1hdGlvbiB7CiAgICAgVVJMIHVybDsKICAgICBib29sIGhhc1ZhcnlTdGFyIHsgZmFsc2Ug
fTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB2YXJ5SGVhZGVyczsKKworICAgIFJlY29y
ZEluZm9ybWF0aW9uIGlzb2xhdGVkQ29weSgpICYmOwogfTsKIAogY2xhc3MgQXN5bmNocm9ub3Vz
UHV0VGFza0NvdW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggZDc1YzU4
NGQzZjBhMGVkZDBhZTI3NTNiMmVjMjA2ZmY4NGIzMGYyZi4uNzdhZDAwYmJhZWE1MmRlYjczMTRm
MDc4OTE0OWM0OGVlNDg3MWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAt
ODMsNyArODMsNyBAQCB2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZp
bGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBJ
T0NoYW5uZWw6Om9wZW4oV1RGTW92ZShmaWxlbmFtZSksIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7
CiAgICAgICAgIGNoYW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSwgV29ya1F1ZXVlOjptYWluKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmIChl
cnJvcikgewpAQCAtMjU4LDcgKzI1OCw4IEBAIHZvaWQgQ2FjaGVzOjpjbGVhcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgaWYgKG1fZW5naW5lKQog
ICAgICAgICBtX2VuZ2luZS0+cmVtb3ZlRmlsZShjYWNoZXNMaXN0RmlsZW5hbWUobV9yb290UGF0
aCkpOwogICAgIGlmIChtX3N0b3JhZ2UpIHsKLSAgICAgICAgbV9zdG9yYWdlLT5jbGVhcihTdHJp
bmcgeyB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgU3RyaW5nIGFueVR5cGU7CisgICAgICAgIG1fc3RvcmFnZS0+Y2xl
YXIoV1RGTW92ZShhbnlUeXBlKSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bigpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTQ1MSw3ICs0NTIsNyBA
QCB2b2lkIENhY2hlczo6cmVhZENhY2hlc0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBl
Y3RlZDxWZWN0b3I8Q2FjaGU+LCBFcnJvcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9lbmdpbmUtPnJlYWRGaWxlKGZpbGVuYW1lLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIHRoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IERhdGEmIGRhdGEs
IGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgbV9lbmdpbmUtPnJlYWRGaWxlKFdURk1vdmUoZmls
ZW5hbWUpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghbV9lbmdpbmUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxD
YWNoZT4geyB9KTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBmMjEwYjA5ZmJkMWUy
MGViZmMyMTZmMjE5YTI3NjM1ZDg3MTg0MjVkLi4zY2NlNjNjNzRhMGUyZjU4NTlkZTA5Njg3M2E4
MDc5OWExMDllMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC02NjEsNyArNjYxLDcgQEAgdm9pZCBDYWNoZTo6Y2xl
YXIoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGNsZWFyaW5n
IGNhY2hlIik7CiAKICAgICBTdHJpbmcgYW55VHlwZTsKLSAgICBtX3N0b3JhZ2UtPmNsZWFyKGFu
eVR5cGUsIG1vZGlmaWVkU2luY2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBt
X3N0b3JhZ2UtPmNsZWFyKFdURk1vdmUoYW55VHlwZSksIG1vZGlmaWVkU2luY2UsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIGRlbGV0ZUR1bXBGaWxlKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJ
T0NoYW5uZWwuaAppbmRleCBiYjU3MjVjOTliZTIyYjY3YTZkNDdmNmM4OWVhOTMyMTk1ZmU2Yzg2
Li4zNWM5NTBmODNkNDZhY2NkMjkzZDJlNGNkMzdlODQ1NjFkNTcwMTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9D
aGFubmVsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFz
cyBJT0NoYW5uZWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SU9DaGFubmVsPiB7CiBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgUmVhZCwgV3JpdGUsIENyZWF0ZSB9OwotICAg
IHN0YXRpYyBSZWY8SU9DaGFubmVsPiBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZSwgVHlwZSB0eXBl
LCBzdGQ6Om9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPiBxb3MgPSB7IH0pIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSU9DaGFubmVsKGZpbGUuaXNvbGF0ZWRDb3B5KCksIHR5cGUsIHFvcykpOyB9Cisg
ICAgc3RhdGljIFJlZjxJT0NoYW5uZWw+IG9wZW4oU3RyaW5nJiYgZmlsZSwgVHlwZSB0eXBlLCBz
dGQ6Om9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPiBxb3MgPSB7IH0pIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSU9DaGFubmVsKFdURk1vdmUoZmlsZSkuaXNvbGF0ZWRDb3B5KCksIHR5cGUsIHFvcykp
OyB9CiAKICAgICAvLyBVc2luZyBudWxscHRyIGFzIHF1ZXVlIHN1Ym1pdHMgdGhlIHJlc3VsdCB0
byB0aGUgbWFpbiBxdWV1ZS4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkZCBXb3JrUXVldWU6
Om1haW4oKSBpbnN0ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZmZiYmVkY2I1OGRkMDI4
N2NiOGRjMGEyOGEzMGEyYmUxMzMyMTFjYy4uYjFlNmZmM2MwNzhiZTg3MWQ5NTEwZmEzNzZjNDcw
MGUzM2MxOWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC03MjQsOSArNzI0LDkgQEAgdm9p
ZCBTdG9yYWdlOjpkZWxldGVGaWxlcyhjb25zdCBLZXkmIGtleSkKICAgICBtX2Jsb2JTdG9yYWdl
LnJlbW92ZShibG9iUGF0aEZvcktleShrZXkpKTsKIH0KIAotdm9pZCBTdG9yYWdlOjp1cGRhdGVG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCit2b2lkIFN0b3JhZ2U6OnVw
ZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKFN0cmluZyYmIHBhdGgpCiB7Ci0gICAgc2VyaWFsQmFj
a2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCldIHsK
KyAgICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFtwYXRoID0gV1RGTW92ZShw
YXRoKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGlt
ZUlmTmVlZGVkKHBhdGgpOwogICAgIH0pOwogfQpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgU3Rv
cmFnZTo6ZGlzcGF0Y2hSZWFkT3BlcmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxSZWFkT3BlcmF0aW9u
PiByZWFkT3BlcmF0aW9uCiAKICAgICAgICAgcmVhZE9wZXJhdGlvbi50aW1pbmdzLnJlY29yZElP
U3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICAgICAgYXV0byBjaGFubmVs
ID0gSU9DaGFubmVsOjpvcGVuKHJlY29yZFBhdGgsIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7Cisg
ICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihXVEZNb3ZlKHJlY29yZFBhdGgp
LCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOwogICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGlvUXVldWUoKSwgW3RoaXMsICZyZWFkT3Bl
cmF0aW9uXShjb25zdCBEYXRhJiBmaWxlRGF0YSwgaW50IGVycm9yKSB7CiAgICAgICAgICAgICBy
ZWFkT3BlcmF0aW9uLnRpbWluZ3MucmVjb3JkSU9FbmRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAgICAgICAgICAgICBpZiAoIWVycm9yKQpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgU3Rv
cmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRp
b24+IHdyaXRlT3BlcmF0CiAKICAgICAgICAgYXV0byByZWNvcmREYXRhID0gZW5jb2RlUmVjb3Jk
KHdyaXRlT3BlcmF0aW9uLnJlY29yZCwgYmxvYik7CiAKLSAgICAgICAgYXV0byBjaGFubmVsID0g
SU9DaGFubmVsOjpvcGVuKHJlY29yZFBhdGgsIElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlKTsKKyAg
ICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKFdURk1vdmUocmVjb3JkUGF0aCks
IElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlKTsKICAgICAgICAgc2l6ZV90IHJlY29yZFNpemUgPSBy
ZWNvcmREYXRhLnNpemUoKTsKICAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgcmVjb3JkRGF0YSwg
V29ya1F1ZXVlOjptYWluKCksIFt0aGlzLCAmd3JpdGVPcGVyYXRpb24sIHJlY29yZFNpemVdKGlu
dCBlcnJvcikgewogICAgICAgICAgICAgLy8gT24gZXJyb3IgdGhlIGVudHJ5IHN0aWxsIHN0YXlz
IGluIHRoZSBjb250ZW50cyBmaWx0ZXIgdW50aWwgbmV4dCBzeW5jaHJvbml6YXRpb24uCkBAIC0x
MDExLDcgKzEwMTEsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgICAgICAgICAgTG9j
a2VyIGxvY2sgeyB0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVMb2NrIH07CiAgICAgICAgICAgICAr
K3RyYXZlcnNlT3BlcmF0aW9uLmFjdGl2ZUNvdW50OwogCi0gICAgICAgICAgICBhdXRvIGNoYW5u
ZWwgPSBJT0NoYW5uZWw6Om9wZW4ocmVjb3JkUGF0aCwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsK
KyAgICAgICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihXVEZNb3ZlKHJlY29y
ZFBhdGgpLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOwogICAgICAgICAgICAgY2hhbm5lbC0+cmVh
ZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBXb3JrUXVldWU6Om1haW4o
KSwgW3RoaXMsICZ0cmF2ZXJzZU9wZXJhdGlvbiwgd29ydGgsIGJvZHlTaGFyZUNvdW50XShEYXRh
JiBmaWxlRGF0YSwgaW50KSB7CiAgICAgICAgICAgICAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURh
dGE7CiAgICAgICAgICAgICAgICAgRGF0YSBoZWFkZXJEYXRhOwpAQCAtMTA4MSw3ICsxMDgxLDcg
QEAgdm9pZCBTdG9yYWdlOjpzZXRDYXBhY2l0eShzaXplX3QgY2FwYWNpdHkpCiAgICAgc2hyaW5r
SWZOZWVkZWQoKTsKIH0KIAotdm9pZCBTdG9yYWdlOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFN0b3JhZ2U6OmNsZWFyKFN0cmluZyYmIHR5cGUsIFdh
bGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBM
T0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgY2xlYXJpbmcgY2FjaGUi
KTsKQEAgLTEwOTIsNyArMTA5Miw3IEBAIHZvaWQgU3RvcmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5n
JiB0eXBlLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlVGltZSwgQ29tcGxldGlvbkhhCiAgICAgICAg
IG1fYmxvYkZpbHRlci0+Y2xlYXIoKTsKICAgICBtX2FwcHJveGltYXRlUmVjb3Jkc1NpemUgPSAw
OwogCi0gICAgaW9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgbW9kaWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHR5cGUgPSB0eXBlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxl
IHsKKyAgICBpb1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBtb2RpZmllZFNpbmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgdHlwZSA9IFdURk1vdmUodHlwZSkuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgewogICAgICAgICBhdXRvIHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGhJ
c29sYXRlZENvcHkoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgs
IHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25z
dCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5
UGF0aCwgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCA1MWViZWJhMGU2YmM4NmI2Mjkx
MjQyZGFiMDMwNTc5ZjI5NDgzMTkzLi4yNmI4NGMyZWYwZjRiNzY4NzUwMmQ4OWM4NTQ2NjFlODZl
NjFhODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHJlbW92ZShjb25zdCBLZXkmKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBWZWN0b3I8
S2V5PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjbGVhcihjb25z
dCBTdHJpbmcmIHR5cGUsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY2xlYXIoU3RyaW5nJiYgdHlwZSwgV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZVRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBz
dHJ1Y3QgUmVjb3JkSW5mbyB7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZTsKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBwcml2YXRlOgogICAgIERhdGEgZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYsIHN0
ZDo6b3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+KTsKICAgICB2b2lkIHJlYWRSZWNvcmQoUmVh
ZE9wZXJhdGlvbiYsIGNvbnN0IERhdGEmKTsKIAotICAgIHZvaWQgdXBkYXRlRmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICB2b2lkIHVwZGF0ZUZpbGVNb2RpZmlj
YXRpb25UaW1lKFN0cmluZyYmIHBhdGgpOwogICAgIHZvaWQgcmVtb3ZlRnJvbVBlbmRpbmdXcml0
ZU9wZXJhdGlvbnMoY29uc3QgS2V5Jik7CiAKICAgICBDb25jdXJyZW50V29ya1F1ZXVlJiBpb1F1
ZXVlKCkgeyByZXR1cm4gbV9pb1F1ZXVlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5l
Y3Rpb25Ub0NsaWVudC5jcHAKaW5kZXggOGFmNGM2NDY0MzZiOTZlMTRlODdiM2NlMmI2MTFkYjA0
Mjg3OTA1Zi4uZmQ5NzdlYmE2MWViNGNlY2I1YzYwMTBhODM2ZjhjNzgxMTMwNDRmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25u
ZWN0aW9uVG9DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtMTY4LDcgKzE2OCw3IEBA
IHZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcihjb25z
dCBXZWJDb3JlOjpJREJSZXN1bHREYXRhCiAgICAgZGlkR2V0UmVzdWx0PE1lc3NhZ2VzOjpXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OkRpZEl0ZXJhdGVDdXJzb3I+KHJlc3VsdERhdGEpOwogfQog
Ci12b2lkIElEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFt
ZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbj4mIGRhdGFiYXNlcykKK3ZvaWQgSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlk
R2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uPiYmIGRhdGFiYXNlcykKIHsKICAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQobV9jb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpEaWRH
ZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMocmVxdWVzdElkZW50aWZpZXIsIGRhdGFiYXNl
cyksIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9JREJTdG9yYWdlQ29ubmVjdGlvblRvQ2xpZW50LmgKaW5kZXggNTBi
YTAxYjAyMTIwZjIxZGI2MTM5MWYzYTg3NDRkMjJiNWZmNzBlNC4uNjRkMjc3M2I5ZTE3N2ZmOTQ1
OTdlMjVjNDYxNDAwZTI0ODQwM2E5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0lEQlN0b3JhZ2VDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvSURCU3RvcmFnZUNvbm5lY3Rpb25Ub0Ns
aWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZWxldGVSZWNv
cmQoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZGlkT3Bl
bkN1cnNvcihjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgZmluYWw7CiAgICAgdm9pZCBk
aWRJdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJ
REJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VO
YW1lQW5kVmVyc2lvbj4mKSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXNB
bmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImLCBWZWN0b3I8
V2ViQ29yZTo6SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4mJikgZmluYWw7CiAgICAgdm9pZCBu
b3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBu
ZXdWZXJzaW9uKSBmaW5hbDsKICAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKSBmaW5hbDsKICAgICB2b2lkIGRpZENsb3NlRnJvbVNlcnZlcihXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OklEQkVycm9yJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDQyZjFh
NjMwYmRmNTg3NTgyMTFlZTk4OWU0ZGNhMDM4NjYzNjhlOWEuLjdjYmFmMWVmZjU0NDI4N2RkM2Fl
ODgxNjcxYWRlNTU2NjU4ZjhmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0z
MTcsMTEgKzMxNywxMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xlYXJTdG9yYWdl
Rm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgYwogICAgIH0pOwogfQogCi12
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlkSW5jcmVhc2VRdW90YShjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKQordm9pZCBOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OmRpZEluY3JlYXNlUXVvdGEoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
b3JpZ2luLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIGlkZW50aWZpZXIs
IG5ld1F1b3RhXSgpIG11dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUob3JpZ2luKSksIGlkZW50aWZpZXIsIG5ld1F1b3RhXSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoYXV0byBtYW5hZ2VyID0gbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy5nZXQob3JpZ2lu
KSkKICAgICAgICAgICAgIG1hbmFnZXItPnF1b3RhTWFuYWdlcigpLmRpZEluY3JlYXNlUXVvdGEo
aWRlbnRpZmllciwgbmV3UXVvdGEpOwogICAgIH0pOwpAQCAtNjE3LDEyICs2MTcsMTIgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMo
T3B0aW9uU2V0PFdlYnNpdGVEYXQKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6Om1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzLCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjptb3ZlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlcywgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
c291cmNlLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0YXJnZXQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9jbG9zZWQpOwogCi0gICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB0eXBlcywgc291cmNl
ID0gY3Jvc3NUaHJlYWRDb3B5KHNvdXJjZSksIHRhcmdldCA9IGNyb3NzVGhyZWFkQ29weSh0YXJn
ZXQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgdHlwZXMsIHNvdXJjZSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHNvdXJj
ZSkpLCB0YXJnZXQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0YXJnZXQpKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgYXV0byBzb3VyY2VPcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyBzb3VyY2UsIHNv
dXJjZSB9OwogICAgICAgICBhdXRvIHRhcmdldE9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdp
biB7IHRhcmdldCwgdGFyZ2V0IH07CiAgICAgICAgIApAQCAtNzIyLDExICs3MjIsMTEgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnJlc2V0UXVvdGFGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb20KICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpy
ZXNldFF1b3RhVXBkYXRlZEJhc2VkT25Vc2FnZUZvclRlc3RpbmcoV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYgb3JpZ2luKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG9y
aWdpbiA9IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pXSgpIG11dGFibGUgeworICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb3JpZ2luID0g
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUob3JpZ2luKSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChhdXRvIG1hbmFnZXIgPSBtX2xvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXJzLmdldChvcmlnaW4p
KQogICAgICAgICAgICAgbWFuYWdlci0+cXVvdGFNYW5hZ2VyKCkucmVzZXRRdW90YVVwZGF0ZWRC
YXNlZE9uVXNhZ2VGb3JUZXN0aW5nKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgK
aW5kZXggMmY5MjY1ZDNmMGU3YzFkNjlhMTdjODRjNjI5MGZhNDZlMGMwMmI4NC4uOTlhNDUzMTdk
YmUzYjRmY2YwNGE5MmFhMWI1ZWFlMDY3ZTdmNWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIu
aApAQCAtODAsMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogICAgIHZvaWQgY2xvc2UoKTsKICAg
ICB2b2lkIGNsZWFyU3RvcmFnZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIGRpZEluY3JlYXNlUXVvdGEoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBuZXdRdW90YSk7CisgICAgdm9pZCBkaWRJbmNyZWFzZVF1b3RhKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmLCBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IG5ld1F1b3RhKTsKICAgICB2b2lkIGZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vic2l0ZURhdGE6OkVudHJ5
PiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhTW9kaWZpZWRTaW5jZShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBkZWxldGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzb3VyY2UsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNvdXJjZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgdGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzdW1lKCk7
CiAgICAgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CkBAIC05Myw3ICs5Myw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVGVtcG9yYXJ5QmxvYkZpbGVQYXRocyhJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgcmVxdWVzdFNwYWNlKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVzZXRRdW90YUZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRP
blVzYWdlRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICB2b2lk
IHJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyhXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vz
c2lvbklELCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21J
REJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCB1aW50
NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5T3JpZ2lu
UXVvdGEsIGJvb2wgc2hvdWxkVXNlQ3VzdG9tUGF0aHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVN0cmluZy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVN0cmluZy5oCmluZGV4IDk5ZDFhM2UzZDM2OWU1ZTBiOTEzMjlmODI5NDYzMmJjOTYwNDM3ODku
LmIyN2U3Njg0ZGYyYzk4MmExODRlMDdhOWVmZDFmM2E0ZGE5ZDYwNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJU3RyaW5nLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFJlZjxTdHJpbmc+IGNyZWF0ZShXVEY6OlN0cmluZyYmIHN0cmluZykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmluZyhzdHJpbmcuaXNOdWxsKCkgPyBXVEY6OlN0
cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSA6IHN0cmluZy5pc29sYXRlZENvcHkoKSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmcoc3RyaW5nLmlzTnVsbCgpID8gV1RGOjpT
dHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkgOiBXVEZNb3ZlKHN0cmluZykuaXNvbGF0ZWRDb3B5
KCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPFN0cmluZz4gY3JlYXRlKGNvbnN0IFdURjo6
U3RyaW5nJiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5jcHAKaW5kZXggZjliMmZlMDQwOWRjNDMwYjFkM2QzYWViMDBlNzZiMDBiM2Yw
NTZiOS4uOTRmZDA1MzU1YTFiZGY5ZDkzMWVmZDg0MjUyYzhkNzU5MmRlOTI1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApAQCAtMTQ3
LDcgKzE0Nyw3IEBAIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IFdlYnNpdGVEYXRhOjpmaWx0
ZXIoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdW5maWx0CiAgICAgcmV0dXJuIGZpbHRlcmVk
OwogfQogCi1XZWJzaXRlRGF0YSBXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1dl
YnNpdGVEYXRhIFdlYnNpdGVEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhIHsKICAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGVudHJpZXMpLApAQCAt
MTU5LDEzICsxNTksMjYgQEAgV2Vic2l0ZURhdGEgV2Vic2l0ZURhdGE6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiAgICAgfTsKIH0KIAotYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0IC0+IEVudHJ5CitXZWJzaXRlRGF0YSBXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5
KCkgJiYKIHsKLSAgICByZXR1cm4gRW50cnkgewotICAgICAgICBjcm9zc1RocmVhZENvcHkob3Jp
Z2luKSwKLSAgICAgICAgdHlwZSwKLSAgICAgICAgc2l6ZSwKKyAgICByZXR1cm4gV2Vic2l0ZURh
dGEgeworICAgICAgICBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShlbnRyaWVzKSksCisgICAgICAg
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGhvc3ROYW1lc1dpdGhDb29raWVzKSksCisgICAgICAg
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpKSwKKyNpZiBF
TkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKKyAgICAgICAgY3Jvc3NUaHJl
YWRDb3B5KFdURk1vdmUocmVnaXN0cmFibGVEb21haW5zV2l0aFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MpKSwKKyNlbmRpZgogICAgIH07CiB9CiAKK2F1dG8gV2Vic2l0ZURhdGE6OkVudHJ5Ojppc29s
YXRlZENvcHkoKSBjb25zdCAmIC0+IEVudHJ5Cit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KG9yaWdpbiksIHR5cGUsIHNpemUgfTsKK30KKworYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6
Omlzb2xhdGVkQ29weSgpICYmIC0+IEVudHJ5Cit7CisgICAgcmV0dXJuIHsgY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUob3JpZ2luKSksIHR5cGUsIHNpemUgfTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgKaW5kZXggYmIyMGIyNTE5MjNm
NGZlYjlkNzdhYWQ0ZmIyY2M3MWY5NDBhYzQ5MS4uZmQ5ZGMzOTY1OGJhMDFmN2RiMTJhMWZjOWQz
NTAwNGYyZWM3MGU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YS5oCkBAIC00OCwxMyArNDgsMTUgQEAgc3RydWN0IFdlYnNpdGVEYXRhIHsKICAg
ICAgICAgV2Vic2l0ZURhdGFUeXBlIHR5cGU7CiAgICAgICAgIHVpbnQ2NF90IHNpemU7CiAKLSAg
ICAgICAgRW50cnkgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIEVudHJ5IGlzb2xhdGVk
Q29weSgpIGNvbnN0ICY7CisgICAgICAgIEVudHJ5IGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAg
ICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxXZWJzaXRlRGF0YTo6RW50cnk+IGRlY29kZShJUEM6OkRlY29kZXImKTsKICAg
ICB9OwogCi0gICAgV2Vic2l0ZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgV2Vic2l0
ZURhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBXZWJzaXRlRGF0YSBpc29sYXRlZENv
cHkoKSAmJjsKIAogICAgIFZlY3RvcjxFbnRyeT4gZW50cmllczsKICAgICBIYXNoU2V0PFN0cmlu
Zz4gaG9zdE5hbWVzV2l0aENvb2tpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA2NWNhNGMwYzE0ZjYx
YThjMzJhOTRjNDQ0YmY0MTM2NzNhNWFlMGFkLi5jMGE2NGZlZmJkMmY0NWMxMmFkOWNiZTJjNzg4
M2IyNTE5ZDg4YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCBzdGF0aWMg
RXhwZWN0ZWQ8TWFwcGVkRGF0YSwgc3RkOjplcnJvcl9jb2RlPiBjb21waWxlZFRvRmlsZShXVEY6
OlN0cmluZyYmIGpzb24sCiAgICAgcmV0dXJuIHt7IFdURk1vdmUobWV0YURhdGEpLCBXVEZNb3Zl
KG1hcHBlZERhdGEpIH19OwogfQogCi1zdGF0aWMgUmVmPEFQSTo6Q29udGVudFJ1bGVMaXN0PiBj
cmVhdGVFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIE1hcHBlZERhdGEm
JiBkYXRhKQorc3RhdGljIFJlZjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4gY3JlYXRlRXh0ZW5zaW9u
KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgTWFwcGVkRGF0YSYmIGRhdGEpCiB7CiAgICAgYXV0
byBzaGFyZWRNZW1vcnkgPSBkYXRhLmRhdGEudHJ5Q3JlYXRlU2hhcmVkTWVtb3J5KCk7CiAKQEAg
LTQzMSw3ICs0MzEsNyBAQCBzdGF0aWMgUmVmPEFQSTo6Q29udGVudFJ1bGVMaXN0PiBjcmVhdGVF
eHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgY29uc3Qgc2l6ZV90
IGZyYW1lVVJMRmlsdGVyc09mZnNldCA9IHRvcFVSTEZpbHRlcnNPZmZzZXQgKyBkYXRhLm1ldGFE
YXRhLnRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemU7CiAKICAgICBhdXRvIGNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0RGF0YSA9IFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhKAot
ICAgICAgICBXVEY6OlN0cmluZyhpZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZShpZGVudGlm
aWVyKSwKICAgICAgICAgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCksCiAgICAgICAgIGFj
dGlvbnNPZmZzZXQsCiAgICAgICAgIGRhdGEubWV0YURhdGEuYWN0aW9uc1NpemUsCkBAIC00NzEs
MTAgKzQ3MSwxMCBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZ2V0Q29udGVudFJ1bGVMaXN0U291cmNl
RnJvbU1hcHBlZEZpbGUoY29uc3QgTWFwcGVkRGF0YSYgbWFwcAogICAgIHJldHVybiBXVEY6OlN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4obWFwcGVkRGF0YS5kYXRhLmRhdGEo
KSArIHN0YXJ0KSwgbGVuZ3RoIC8gc2l6ZW9mKFVDaGFyKSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxp
c3Q+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdChXVEY6OlN0cmluZyYmIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwg
c3RkOjplcnJvcl9jb2RlKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKLSAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwg
c3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgbV9yZWFkUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9
IFdURk1vdmUoaWRlbnRpZmllcikuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQ
YXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBh
dGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBmYWxzZSk7CiAgICAgICAgIGF1dG8gbGVnYWN5UGF0
aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIHRydWUpOwogICAgICAg
ICBpZiAoZmlsZUV4aXN0cyhsZWdhY3lQYXRoKSkgewpAQCAtNTAyLDggKzUwMiw4IEBAIHZvaWQg
Q29udGVudFJ1bGVMaXN0U3RvcmU6Omxvb2t1cENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwKICAgICAgICAgCiAgICAgICAgIGlmIChjb250ZW50UnVsZUxpc3Qt
Pm1ldGFEYXRhLnZlcnNpb24gIT0gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkN1cnJlbnRDb250ZW50
UnVsZUxpc3RGaWxlVmVyc2lvbikgewogICAgICAgICAgICAgaWYgKGF1dG8gc291cmNlRnJvbU9s
ZFZlcnNpb24gPSBnZXRDb250ZW50UnVsZUxpc3RTb3VyY2VGcm9tTWFwcGVkRmlsZSgqY29udGVu
dFJ1bGVMaXN0KTsgIXNvdXJjZUZyb21PbGRWZXJzaW9uLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIHNvdXJjZUZyb21PbGRWZXJzaW9uID0gc291cmNlRnJvbU9sZFZlcnNp
b24uaXNvbGF0ZWRDb3B5KCksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29tcGlsZUNvbnRlbnRS
dWxlTGlzdChpZGVudGlmaWVyLCBXVEZNb3ZlKHNvdXJjZUZyb21PbGRWZXJzaW9uKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHNvdXJjZUZy
b21PbGRWZXJzaW9uID0gV1RGTW92ZShzb3VyY2VGcm9tT2xkVmVyc2lvbikuaXNvbGF0ZWRDb3B5
KCksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpLmlzb2xhdGVkQ29weSgpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29tcGlsZUNvbnRlbnRSdWxlTGlz
dChXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKHNvdXJjZUZyb21PbGRWZXJzaW9uKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTUxMyw4ICs1MTMsOCBAQCB2b2lkIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjpsb29rdXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJp
bmcmIGlkZW50aWZpZXIsCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
LCBjb250ZW50UnVsZUxpc3QgPSBXVEZNb3ZlKCpjb250ZW50UnVsZUxpc3QpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZUV4dGVuc2lvbihpZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbnRlbnRSdWxlTGlzdCkpLCB7IH0pOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKS5pc29sYXRlZENvcHkoKSwgY29udGVudFJ1bGVMaXN0ID0g
V1RGTW92ZSgqY29udGVudFJ1bGVMaXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihjcmVhdGVFeHRlbnNpb24oV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShjb250ZW50
UnVsZUxpc3QpKSwgeyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC01NDIsNyArNTQy
LDcgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxlQ29udGVudFJ1bGVM
aXN0SWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAotdm9pZCBDb250ZW50
UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllciwgV1RGOjpTdHJpbmcmJiBqc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Y29tcGlsZUNvbnRlbnRSdWxlTGlz
dChXVEY6OlN0cmluZyYmIGlkZW50aWZpZXIsIFdURjo6U3RyaW5nJiYganNvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpDb250ZW50UnVsZUxpc3Q+LCBzdGQ6OmVycm9yX2Nv
ZGUpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKQEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIENvbnRl
bnRSdWxlTGlzdFN0b3JlOjpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLAogICAgIGlmICghcGFyc2VkUnVsZXMuaGFzX3ZhbHVlKCkpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCBwYXJzZWRSdWxlcy5lcnJvcigpKTsK
ICAgICAKLSAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwganNvbiA9
IGpzb24uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1v
dmUocGFyc2VkUnVsZXMpLnZhbHVlKCkpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRl
ZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CisgICAgbV9jb21waWxlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCks
IGpzb24gPSBXVEZNb3ZlKGpzb24pLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRSdWxlcyA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKHBhcnNlZFJ1bGVzKS52YWx1ZSgpKSwgc3RvcmVQYXRoID0gbV9z
dG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1
Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBmYWxzZSk7CiAKICAgICAgICAgYXV0byBy
ZXN1bHQgPSBjb21waWxlZFRvRmlsZShXVEZNb3ZlKGpzb24pLCBXVEZNb3ZlKHBhcnNlZFJ1bGVz
KSwgcGF0aCk7CkBAIC01NjQsMTYgKzU2NCwxNiBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3Jl
Ojpjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAog
ICAgICAgICB9CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
ZmllciksIGRhdGEgPSBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBh
dXRvIGNvbnRlbnRSdWxlTGlzdCA9IGNyZWF0ZUV4dGVuc2lvbihpZGVudGlmaWVyLCBXVEZNb3Zl
KGRhdGEpKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudFJ1bGVMaXN0ID0gY3JlYXRlRXh0ZW5z
aW9uKFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUoZGF0YSkpOwogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY29udGVudFJ1bGVMaXN0LnB0cigpLCB7IH0pOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KIAotdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1
bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDb250ZW50UnVs
ZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcmVtb3ZlUXVl
dWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9
IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xh
dGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgeworICAgIG1fcmVtb3ZlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcikuaXNvbGF0
ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6
OmVycm9yX2NvZGUgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZXJyb3IgPSBXVEZNb3Zl
KGVycm9yKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXJyb3IpOwpAQCAtNjA3LDEyICs2MDcsMTIgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6
aW52YWxpZGF0ZUNvbnRlbnRSdWxlTGlzdFZlcnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGkKICAg
ICBjbG9zZUZpbGUoZmlsZSk7CiB9CiAKLXZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENv
bnRlbnRSdWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXVEY6OlN0cmluZyk+IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBD
b250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKFdURjo6U3RyaW5n
JiYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OlN0cmluZyk+IGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9y
ZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRp
ZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRo
Lmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIGNvbXBsZXRlID0gW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShXVEY6OlN0cmluZyBzb3VyY2UpIG11dGFibGUgewotICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgc291cmNlID0gc291cmNlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICBt
X3JlYWRRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKS5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0g
bV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY29tcGxldGUgPSBb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFdURjo6U3RyaW5nJiYgc291cmNlKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHNvdXJjZSA9IFdURk1vdmUoc291cmNlKS5pc29sYXRlZENvcHko
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc291cmNl
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAppbmRleCBmODQ2NjA2YmNl
MzVjNmY3MmVlMmVmNDE4OGUwYjAzODdlZTE1Njk4Li5jZTVkYzQwMmNhODY3ODk3OGQ1NzMwNGJk
MDdkYjRlZGYxMmZlOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtNjMsMTUgKzYzLDE1IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBDb250ZW50UnVsZUxpc3RTdG9yZShjb25zdCBXVEY6OlN0cmluZyYgc3Rv
cmVQYXRoKTsKICAgICB2aXJ0dWFsIH5Db250ZW50UnVsZUxpc3RTdG9yZSgpOwogCi0gICAgdm9p
ZCBjb21waWxlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBX
VEY6OlN0cmluZyYmIGpzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6Q29u
dGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4pOwotICAgIHZvaWQgbG9va3VwQ29udGVu
dFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsK
LSAgICB2b2lkIHJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUpPik7CisgICAgdm9p
ZCBjb21waWxlQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgV1RGOjpT
dHJpbmcmJiBqc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRS
dWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+KTsKKyAgICB2b2lkIGxvb2t1cENvbnRlbnRSdWxl
TGlzdChXVEY6OlN0cmluZyYmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0Piwgc3RkOjplcnJvcl9jb2RlKT4pOworICAgIHZvaWQg
cmVtb3ZlQ29udGVudFJ1bGVMaXN0KFdURjo6U3RyaW5nJiYgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6OmVycm9yX2NvZGUpPik7CiAgICAgdm9pZCBnZXRBdmFpbGFibGVD
b250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPik+KTsKIAogICAgIC8vIEZvciB0ZXN0aW5nIG9ubHkuCiAgICAgdm9p
ZCBzeW5jaHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKTsKICAgICB2b2lkIGludmFs
aWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVy
KTsKLSAgICB2b2lkIGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OlN0cmluZyk+KTsKKyAgICB2
b2lkIGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZShXVEY6OlN0cmluZyYmIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpTdHJpbmcpPik7CiAKIHByaXZhdGU6CiAgICAgV1RG
OjpTdHJpbmcgZGVmYXVsdFN0b3JlUGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRGaWx0ZXJTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3Jl
LmNwcAppbmRleCA3MmJlOTEyMWFhYTc2MjRjNDljYzJiYjYxOWRmYzZiYmFlZjg0OWMwLi5lZjVm
YTMzN2VlOGU5MDhkYjRiMGVhYzFjZmNmYzFiMmE2MGVkMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudEZpbHRlclN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dEZpbHRlclN0b3JlLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVz
ZXJDb250ZW50RmlsdGVyU3RvcmVTYXZlQnl0ZXMoR1JlZlB0cjxHVGFzaz4mJiB0YXNrLCBTdHJp
bmcmCiAgICAgfQogCiAgICAgYXV0byogc3RvcmUgPSBXRUJLSVRfVVNFUl9DT05URU5UX0ZJTFRF
Ul9TVE9SRShnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpOwotICAgIHN0b3Jl
LT5wcml2LT5zdG9yZS0+Y29tcGlsZUNvbnRlbnRSdWxlTGlzdChpZGVudGlmaWVyLCBTdHJpbmc6
OmZyb21VVEY4KHNvdXJjZURhdGEsIHNvdXJjZVNpemUpLCBbdGFzayA9IFdURk1vdmUodGFzayld
KFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4gY29udGVudFJ1bGVMaXN0LCBzdGQ6OmVycm9y
X2NvZGUgZXJyb3IpIHsKKyAgICBzdG9yZS0+cHJpdi0+c3RvcmUtPmNvbXBpbGVDb250ZW50UnVs
ZUxpc3QoV1RGTW92ZShpZGVudGlmaWVyKSwgU3RyaW5nOjpmcm9tVVRGOChzb3VyY2VEYXRhLCBz
b3VyY2VTaXplKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShSZWZQdHI8QVBJOjpDb250ZW50UnVs
ZUxpc3Q+IGNvbnRlbnRSdWxlTGlzdCwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7CiAgICAgICAg
IGlmIChnX3Rhc2tfcmV0dXJuX2Vycm9yX2lmX2NhbmNlbGxlZCh0YXNrLmdldCgpKSkKICAgICAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IGY2MjQzNmQ3Mzg1ZDZlYWRhMTg1NDkyNGU4NGFh
MTg1NWJmYjVhYWQuLjRiMjFlOTg5ZjI3OWFlNjczNGQ5ZDMyNjAxZGUzNjZkYjAwYWY3YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHAKQEAgLTI1OCwxMCArMjU4LDEwIEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6
OmdldERldmljZUlkSGFzaFNhbHRPcmlnaW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAKIHZv
aWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmRlbGV0ZUhhc2hTYWx0RnJvbURpc2soY29uc3Qg
SGFzaFNhbHRGb3JPcmlnaW4mIGhhc2hTYWx0Rm9yT3JpZ2luKQogewotICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGV2aWNlSWRIYXNo
U2FsdCA9IGhhc2hTYWx0Rm9yT3JpZ2luLmRldmljZUlkSGFzaFNhbHQuaXNvbGF0ZWRDb3B5KCld
KCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBkZXZpY2VJZEhhc2hTYWx0ID0gaGFzaFNhbHRGb3JPcmlnaW4uZGV2
aWNlSWRIYXNoU2FsdC51dGY4KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgICAgIFN0cmluZyBmaWxlRnVsbFBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZURpcmVj
dG9yeSwgZGV2aWNlSWRIYXNoU2FsdC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgU3RyaW5nIGZp
bGVGdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Rldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlRGlyZWN0b3J5LCBkZXZpY2VJZEhhc2hTYWx0LmRhdGEoKSk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZUZ1bGxQYXRoKTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5o
CmluZGV4IDcyY2ZhN2I0MDc5MTUyNDg3YzFlNDhhYjY3OTk3NThmOWUwNjk4OGUuLmNjYWQyYTg4
OGI5OTFkYTAzMGU2MGVkYjM1YzI0MTAzM2FlNWRkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaApAQCAtNTEsMTkgKzUxLDE1IEBA
IHByaXZhdGU6CiAgICAgc3RydWN0IEhhc2hTYWx0Rm9yT3JpZ2luIHsKICAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgICAgIEhhc2hTYWx0Rm9yT3JpZ2luKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGRvY3VtZW50T3JpZ2luLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBwYXJlbnRPcmlnaW4sIFN0cmluZyYmIGRldmljZUlkSGFzaFNhbHQp
CisgICAgICAgIEhhc2hTYWx0Rm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IGRvY3VtZW50T3JpZ2luLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBwYXJlbnRPcmln
aW4sIFN0cmluZyYmIGRldmljZUlkSGFzaFNhbHQsIFdhbGxUaW1lIGxhc3RUaW1lVXNlZCA9IFdh
bGxUaW1lOjpub3coKSkKICAgICAgICAgICAgIDogZG9jdW1lbnRPcmlnaW4oV1RGTW92ZShkb2N1
bWVudE9yaWdpbikpCiAgICAgICAgICAgICAsIHBhcmVudE9yaWdpbihXVEZNb3ZlKHBhcmVudE9y
aWdpbikpCiAgICAgICAgICAgICAsIGRldmljZUlkSGFzaFNhbHQoV1RGTW92ZShkZXZpY2VJZEhh
c2hTYWx0KSkKLSAgICAgICAgICAgICwgbGFzdFRpbWVVc2VkKFdhbGxUaW1lOjpub3coKSkKLSAg
ICAgICAgeyB9OworICAgICAgICAgICAgLCBsYXN0VGltZVVzZWQobGFzdFRpbWVVc2VkKQorICAg
ICAgICB7IH0KIAotICAgICAgICBIYXNoU2FsdEZvck9yaWdpbiBpc29sYXRlZENvcHkoKSBjb25z
dAotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGlzb2xhdGVkQ29weSA9IEhhc2hTYWx0Rm9y
T3JpZ2luKGRvY3VtZW50T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBwYXJlbnRPcmlnaW4uaXNvbGF0
ZWRDb3B5KCksIGRldmljZUlkSGFzaFNhbHQuaXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICAgICAg
aXNvbGF0ZWRDb3B5Lmxhc3RUaW1lVXNlZCA9IGxhc3RUaW1lVXNlZDsKLSAgICAgICAgICAgIHJl
dHVybiBpc29sYXRlZENvcHk7Ci0gICAgICAgIH07CisgICAgICAgIEhhc2hTYWx0Rm9yT3JpZ2lu
IGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBkb2N1bWVudE9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgcGFyZW50T3JpZ2luLmlzb2xhdGVkQ29weSgpLCBkZXZpY2VJZEhhc2hTYWx0Lmlz
b2xhdGVkQ29weSgpLCBsYXN0VGltZVVzZWQgfTsgfQorICAgICAgICBIYXNoU2FsdEZvck9yaWdp
biBpc29sYXRlZENvcHkoKSAmJiB7IHJldHVybiB7IFdURk1vdmUoZG9jdW1lbnRPcmlnaW4pLmlz
b2xhdGVkQ29weSgpLCBXVEZNb3ZlKHBhcmVudE9yaWdpbikuaXNvbGF0ZWRDb3B5KCksIFdURk1v
dmUoZGV2aWNlSWRIYXNoU2FsdCkuaXNvbGF0ZWRDb3B5KCksIGxhc3RUaW1lVXNlZCB9OyB9CiAK
ICAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGRvY3VtZW50T3JpZ2luOwogICAg
ICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgcGFyZW50T3JpZ2luOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNv
cmQuY3BwCmluZGV4IDg1ZDIyZDJkYzUyYTMzYjJiZDEwZGM0MmZkMTE3Njg4YzZiMGIzMzEuLjFk
YmMzMWFhN2I4MjMzNTgyYTVlMmIzM2NiYTE3ZmFlNmMzNjQ2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5j
cHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFSZWNvcmQ6OnRvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW4oKQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1X
ZWJzaXRlRGF0YVJlY29yZCBXZWJzaXRlRGF0YVJlY29yZDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K1dlYnNpdGVEYXRhUmVjb3JkIFdlYnNpdGVEYXRhUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25z
dCAmCiB7CiAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUmVjb3JkIHsKICAgICAgICAgY3Jvc3NUaHJl
YWRDb3B5KGRpc3BsYXlOYW1lKSwKQEAgLTE3Myw0ICsxNzMsMjAgQEAgV2Vic2l0ZURhdGFSZWNv
cmQgV2Vic2l0ZURhdGFSZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgfTsKIH0KIAor
V2Vic2l0ZURhdGFSZWNvcmQgV2Vic2l0ZURhdGFSZWNvcmQ6Omlzb2xhdGVkQ29weSgpICYmCit7
CisgICAgcmV0dXJuIFdlYnNpdGVEYXRhUmVjb3JkIHsKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUoZGlzcGxheU5hbWUpKSwKKyAgICAgICAgdHlwZXMsCisgICAgICAgIHNpemUsCisg
ICAgICAgIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKG9yaWdpbnMpKSwKKyAgICAgICAgY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUoY29va2llSG9zdE5hbWVzKSksCisgICAgICAgIGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKEhTVFNDYWNoZUhvc3ROYW1lcykpLAorICAgICAgICBjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShhbHRlcm5hdGl2ZVNlcnZpY2VzSG9zdE5hbWVzKSksCisjaWYgRU5BQkxFKElO
VEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJsZURvbWFpbnMpKSwKKyNlbmRp
ZgorICAgIH07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCmluZGV4IDExY2E4ZTgwMDI2YmE4NTI5N2Rl
MzFlM2ZkMDEyMWNiMWZjZDVlNDYuLmQ2ODU2ZjQ0ZGM3ZGViZGRmNTlhNGYwOGRhYTI3NjE3ODRk
YzZlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhUmVjb3JkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFSZWNvcmQuaApAQCAtNTgsNyArNTgsOCBAQCBzdHJ1Y3QgV2Vic2l0ZURh
dGFSZWNvcmQgewogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYpIGNvbnN0OwogICAgIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKCk7
CiAKLSAgICBXZWJzaXRlRGF0YVJlY29yZCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBXZWJz
aXRlRGF0YVJlY29yZCBpc29sYXRlZENvcHkoKSBjb25zdCAmOworICAgIFdlYnNpdGVEYXRhUmVj
b3JkIGlzb2xhdGVkQ29weSgpICYmOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHR5cGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXgg
NDY0NzJkNzE0OGYyM2Y1N2U3M2VhNzc3MTlhMTFmNjQ0YmQxN2M1Yi4uNjYwMzc1NzU2ZGQ3YmY0
NWNmYWEzMDA2YzY3ZGZkZWMzMGU2YzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVy
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JECiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgV29ya2Vy
RmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmJiByZWdp
c3RyYXRpb25LZXksIFdvcmtlckZldGNoUmVzdWx0JiYgcmVzdWx0KQogewogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
ciB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHJlc3VsdCB9KTsKIH0KQEAg
LTExMCw3ICsxMTAsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIgeyBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIg
fSk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkK
K3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGEmJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgU3RyaW5nJiYgdXNlckFnZW50KQogewogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsg
dG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgdXNlckFnZW50IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCBiNmIy
YjRmMThhNWM0YjRhZWRkMDhmNDExZmE4MzE4MDE4NTliNTA3Li5iMjkyNTU5MDQyYzc3NDY1NTIw
MGIxYjVlZjUxMDNjODgzY2JhYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNzEsOSArNzEsOSBA
QCBwcml2YXRlOgogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBzY2hl
ZHVsZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmlu
YWw7Ci0gICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYp
IGZpbmFsOworICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpIGZpbmFs
OwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVu
dGlmaWVyJiBzb3VyY2UpIGZpbmFsOwotICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGEmJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBTdHJpbmcmJiB1c2VyQWdlbnQpIGZpbmFsOwog
ICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2NoZWR1bGVVbnJlZ2lz
dGVySm9iSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6RXhjZXB0aW9uT3I8Ym9vbD4mJik+JiYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGFkMTkzYmIwZTRkMGY2
YTQ4MjM3ODg0ZGVmMWQ0MjIzNjE3MWU3ZDkuLjE4NDI5YWY2ZDRlNjJmMDc4Yjc3Yjg2M2U5OGEx
YTAyYzc3ZjdlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgYmxvYlVSTCA9IGJsb2JVUkwuaXNvbGF0ZWRDb3B5KCldICgpIHsKKyAg
ICBjYWxsT25NYWluUnVuTG9vcChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGJsb2JVUkwgPSBXVEZNb3ZlKGJsb2JVUkwpLmlzb2xhdGVkQ29weSgpXSAoKSB7CiAgICAgICAg
IGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKICAgICAgICAgaWYgKCFzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpIHsKICAgICAgICAgICAg
IGRpZEZhaWwoaW50ZXJuYWxFcnJvcihibG9iVVJMKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDc3NDNkNTA4ODUyNGJj
ZTVkN2QzZjM0OTJmYzc3MTdhODdhYTEwOWUuLjc2NTRiYmQ3MTNlYzk3ZDcwZDlkZDVjM2NkOWYy
Nzg5YmU5NDk3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00ODQsOSArNDg0LDkgQEAgdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJS
ZXNvdXIKICAgICB9KTsKIH0KIAotdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERh
dGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SURCRGF0YWJhc2VO
YW1lQW5kVmVyc2lvbj4mIGRhdGFiYXNlcykKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRH
ZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMoY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OklEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb24+JiYgZGF0YWJhc2VzKQogewotICAgIGRpc3BhdGNoVGFza1JlcGx5KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVxdWVzdElkZW50aWZpZXIsIGRh
dGFiYXNlcyA9IGNyb3NzVGhyZWFkQ29weShkYXRhYmFzZXMpXSgpIG11dGFibGUgeworICAgIGRp
c3BhdGNoVGFza1JlcGx5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcmVx
dWVzdElkZW50aWZpZXIsIGRhdGFiYXNlcyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRhdGFi
YXNlcykpXSgpIG11dGFibGUgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0
QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGRh
dGFiYXNlcykpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L0luUHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IGQyMDc0MWM4MDJhZmU5ZmE2NmJhMDFmMzY5Y2M0
NTJlYjFlNGI2MDYuLjhjYjBhMjA4NmJlM2YzNTM1NzljYTQxMDcyZTVhZjk2NzgwNGNiZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9JblByb2Nlc3NJREJTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvSW5Qcm9jZXNzSURCU2VydmVyLmgK
QEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9u
KGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xvc2VG
cm9tU2VydmVyKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeU9wZW5E
QlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24p
IGZpbmFsOwotICAgIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYpIGZpbmFsOworICAgIHZvaWQgZGlkR2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciYsIFZlY3RvcjxXZWJDb3JlOjpJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiYmKSBmaW5hbDsK
IAogICAgIHZvaWQgY2xvc2VBbmREZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKFdhbGxUaW1l
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
aW5kZXggMTg5N2JkNjJkNDdiZDQzNTQzYzMyNmU1NWFmYjg2OGZlYWZjNWU3NS4uYjIwMmI0NDgw
NzhjM2ZlYTViYzk1NTA4MGFhN2VlZGU2ZWNhNzhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBT
dG9yYWdlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3Jp
Z2luKQogICAgICAgICBtX29yaWdpblNldC5yZW1vdmUob3JpZ2luSWQpOwogICAgIH0KIAotICAg
IG1fdGhyZWFkLT5kaXNwYXRjaChbdGhpcywgb3JpZ2luSWQgPSBvcmlnaW5JZC5pc29sYXRlZENv
cHkoKV0geworICAgIG1fdGhyZWFkLT5kaXNwYXRjaChbdGhpcywgb3JpZ2luSWQgPSBXVEZNb3Zl
KG9yaWdpbklkKS5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBzeW5jRGVsZXRlT3JpZ2luKG9y
aWdpbklkKTsKICAgICB9KTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>