<?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>230626</bug_id>
          
          <creation_ts>2021-09-22 07:43:12 -0700</creation_ts>
          <short_desc>Drop makeRef() and use Ref { } instead</short_desc>
          <delta_ts>2021-09-22 13:05:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>luiz</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796066</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-22 07:43:12 -0700</bug_when>
    <thetext>Drop makeRef() and use Ref { } instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796072</commentid>
    <comment_count>1</comment_count>
      <attachid>438949</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-22 07:59:26 -0700</bug_when>
    <thetext>Created attachment 438949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796074</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-22 08:00:16 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796174</commentid>
    <comment_count>3</comment_count>
      <attachid>438949</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-22 13:04:31 -0700</bug_when>
    <thetext>Comment on attachment 438949
Patch

Clearing flags on attachment: 438949

Committed r282882 (242011@main): &lt;https://commits.webkit.org/242011@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796175</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-22 13:04:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796176</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-22 13:05:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/83414079&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438949</attachid>
            <date>2021-09-22 07:59:26 -0700</date>
            <delta_ts>2021-09-22 13:04:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230626-20210922075925.patch</filename>
            <type>text/plain</type>
            <size>152270</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU3M2NlNWZjOTY4MzRkMWMwZTg5NWI4
ODNiZjEyNWUxMTE0YzkwY2QuLmYzZTg4OGUyMWMzNDk4MWY4YTZmODRlN2FjMWRkYzhlNzY1NWYz
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIG1ha2VSZWYoKSBhbmQgdXNlIFJlZiB7IH0gaW5z
dGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvUmVmLmg6CisKIDIwMjEtMDktMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIGZyb20gRU5BQkxFKFJVQkJFUl9CQU5ESU5HKSB0byBI
QVZFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIxZGIzYmY3MTUxNTRjMWJhMTM0ZjBj
YjA2NTc5YzlkN2NkYjNmM2MuLjA3YzIxM2RjOWMwOGRhMGRkMTIwMDY2OWIzZDVkZjFjYWU0NDQ0
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOS0yMiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgbWFrZVJlZigpIGFuZCB1c2UgUmVm
IHsgfSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzA2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YSBjb25zdCk6CisK
IDIwMjEtMDktMjIgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0ludGVncmF0aW9uXSBGbG93SGFzVGV4dFNlY3VyaXR5IEZsb3dIYXNKdXN0aWZpZWROb25C
cmVha2luZ1NwYWNlIGFyZSB1bnVzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTQ2NjkzMmM0ZDAxZmJiMDU5YzU2
MTFiOTNmY2I1OTE4MGRhNDRmZC4uZjNhOTYxMjQ0ODg4MDBmYWM0YTk0Y2VkZGYzNmI3NzhmMjNk
NTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMjIgQEAKKzIwMjEtMDktMjIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIG1ha2VSZWYoKSBhbmQgdXNlIFJl
ZiB7IH0gaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMwNjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6Y3JlYXRlSDI2NERlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6Y3JlYXRlSDI2NURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6Y3JlYXRlVlA5RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpjcmVhdGVFbmNvZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRh
VG9QQ01EYXRhYmFzZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0
YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDYWNoZU1heEFnZUNh
cCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRl
Q2xpZW50U2lkZUNvb2tpZXNBZ2VDYXApOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVzdGluZ0V2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OlNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyOjplbnN1cmVPcmlnaW5TdG9yYWdlUXVvdGFN
YW5hZ2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBpbmdMb2FkOjppbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6U3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpQQ006OlN0b3JlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6U3RvcmU6Om1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEFzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjph
dHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6
U3RvcmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6bWFya0F0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6UENNOjpTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdp
c3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OmNsZWFyRXhwaXJl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6
Y2xlYXJTZW50QXR0cmlidXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQQ006OlN0b3JlOjpjbG9z
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpsb2FkV2l0aENhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hl
U3RvcmFnZTo6RW5naW5lOjpmcm9tKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6Q2FjaGU6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpy
ZXRyaWV2ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OnJl
dHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OnB1
dCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OnVwZGF0ZVJlY29yZFRv
RGlzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OmluaXRp
YWxpemVTaXplKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlYWRS
ZWNvcmRzTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjp3cml0
ZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZWFkUmVj
b3JkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkU3luY0luVGhyZWFk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpj
bGVhclN0b3JhZ2VGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya01ETlNSZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtNRE5TUmVn
aXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJv
dmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENUQ1BTb2NrZXRDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1JUQ1RDUFNvY2tldENvY29hOjpOZXR3b3JrUlRDVENQU29ja2V0Q29jb2EpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDVURQU29ja2V0Q29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENVRFBTb2NrZXRDb2NvYUNvbm5lY3Rpb25zOjpOZXR3b3Jr
UlRDVURQU29ja2V0Q29jb2FDb25uZWN0aW9ucyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRl
Ojpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAg
ICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmMpOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNz
YWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdl
UmVjZWl2ZVF1ZXVlcy5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+
OjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjp1cGRhdGVTY2VuZVN0YXRlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjp+Q29tcG9zaXRpbmdSdW5Mb29wKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6
OkNvbnRlbnRXb3JsZDo6c2hhcmVkV29ybGRXaXRoTmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ZyYW1lczpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtfV0tEb3du
bG9hZCBjYW5jZWxdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxv
YWQuY3BwOgorICAgICAgICAod2Via2l0X2Rvd25sb2FkX2NhbmNlbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OndpbGxTaG93SmF2YVNjcmlw
dERpYWxvZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0
ZU1vdXNlSW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6c2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjp0YWtlU2NyZWVuc2hvdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lcjo6
c2V0UmVzcG9uc2l2ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2Fk
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW06CisgICAg
ICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBpbml0V2l0aEZyYW1lOnNhZmVCcm93c2luZ1dh
cm5pbmc6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJlZ2lu
U2FmZUJyb3dzaW5nQ2hlY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpEcmF3aW5nQXJl
YVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0
ZXJFeHRlbnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OmNhbGxPYnNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc3Bv
bnNpdmVuZXNzVGltZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNwb25zaXZl
bmVzc1RpbWVyOjpzdG9wKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5n
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5Ojp1cGRhdGVTdG9yZWRSZXF1ZXN0cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpoYW5kbGVTeW5jaHJvbm91c01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OmVuc3VyZVNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZU1hbmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6YmVnaW5BcHBCb3VuZERv
bWFpbkNoZWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om5ldHdvcmtQcm9jZXNzRm9yU2Vzc2lvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjppbnNlcnRPclVwZGF0ZVF1aWNrTG9v
a0ltYWdlSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9FbmNyeXB0ZWRNZWRpYS9NZWRpYUtl
eVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzZW5kTWVkaWFLZXlTeXN0ZW1S
ZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OnJlY29yZEZvbnRVc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkV2l0aExvY2spOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUmVjb3JkZXJQcml2YXRlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI6OnNlbmRVc2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJh
dGVneTo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpTdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
TGliV2ViUlRDTmV0d29ya01hbmFnZXI6Om5ldHdvcmtzQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OkxpYldlYlJUQ05ldHdvcmtNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46OmNhbmNlbEFuZEZvcmdldExvYWRlcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXI6OmNyZWF0ZVNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUEM6OnZpc2l0ZWRMaW5rU3RvcmVJRCk6CisgICAg
ICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTTWVzc2FnZUxpc3RlbmVyOjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTTWVzc2FnZUxpc3Rl
bmVyOjp3aWxsU2VuZE1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cmVxdWVzdFRleHRSZWNvZ25pdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2hvd0Vtb2ppUGlja2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9y
U3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0Ojppc09ic2N1cmVkRWxlbWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OmVsZW1lbnRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0QW5kUGxhY2VDYXJldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmFuaW1hdGlvbkRpZEZpbmlzaEZvckVsZW1lbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaXNw
YXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrc0lmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVTcGVlY2hSZWNvZ25pdGlvblJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyKToKKwogMjAyMS0wOS0yMSAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBTaGFyZWRNZW1vcnkgZm9yIHRyYW5z
ZmVycmluZyBhcHBlbmRlZCBidWZmZXJzIGZyb20gU291cmNlQnVmZmVyIHRvIHRoZSBHUFUgcHJv
Y2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQxYTk5ODljY2NkZTAwOWZiMWQz
YjM2YTM2MmZhN2M4MDkxZjE2YTguLjcyNmViZTU4MTg4M2MxZjc3ZWRkYjcxYjQ2Y2Y1ODdhNWQ1
NTg5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MS0wOS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3Ag
bWFrZVJlZigpIGFuZCB1c2UgUmVmIHsgfSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcp
OgorCiAyMDIxLTA5LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCBtYWtlUmVmUHRyKCkgYW5kIHVzZSBSZWZQdHIgeyB9IGRpcmVjdGx5IGluc3RlYWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgK
aW5kZXggMGYxMGQxZTFjNzUyNWQ4YWNlZTMzMDYyODQwMTE4ZDNiN2M2MjlhOC4uNTc0OTlhZDlh
MDk0NWI1YTYxN2YxMGUwYzI3NWYwMmMwNDA1YzZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUmVmLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmLmgKQEAgLTE0OSw3ICsxNDksNiBAQCBw
cml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gUmVmPFQsIFU+
IGFkb3B0UmVmKFQmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFJlZjxUPiBtYWtlUmVmKFQmKTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIGlubGluZSBSZWY8VCwgVT4mIFJl
ZjxULCBVPjo6b3BlcmF0b3I9KFQmIHJlZmVyZW5jZSkKQEAgLTI3MSwxMiArMjcwLDYgQEAgaW5s
aW5lIFJlZjxULCBVPiBhZG9wdFJlZihUJiByZWZlcmVuY2UpCiAgICAgcmV0dXJuIFJlZjxULCBV
PihyZWZlcmVuY2UsIFJlZjxULCBVPjo6QWRvcHQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotaW5saW5lIFJlZjxUPiBtYWtlUmVmKFQmIHJlZmVyZW5jZSkKLXsKLSAgICByZXR1cm4gUmVm
PFQ+KHJlZmVyZW5jZSk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlw
ZW5hbWUgQXJnVHlwZSwgdHlwZW5hbWUgUHRyVHJhaXRzPgogaW5saW5lIGJvb2wgaXMoUmVmPEFy
Z1R5cGUsIFB0clRyYWl0cz4mIHNvdXJjZSkKIHsKQEAgLTMyOSw1ICszMjIsNCBAQCBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFQmIGEsIGNvbnN0IFJlZjxVLCBWPiYgYikKIAogdXNpbmcgV1RGOjpS
ZWY7CiB1c2luZyBXVEY6OmFkb3B0UmVmOwotdXNpbmcgV1RGOjptYWtlUmVmOwogdXNpbmcgV1RG
OjpzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggNGJh
YjVjMDFlNDdhNTdlNWJjNDE1MjNlOGU3MzZjMmM4YmZjYTk4Zi4uMmNkNzg0MjllMjg1ZGU5YWVi
NzExMmY2MzY2ZmYyMTJkMzU2MjY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtMjE1
LDcgKzIxNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVk
aW9GaWxlUmVhZGVyOjpkZW11eFdlYk1EYXRhKGNvbnN0IHVpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIHRyYWNrLT5zZXREaXNjYXJkUGFkZGluZyhkaXNjYXJkUGFkZGluZyk7CiAgICAg
fSk7Ci0gICAgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50IHNlZ21lbnQobWFrZVJlZihidWZm
ZXIuZ2V0KCkpKTsKKyAgICBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQgc2VnbWVudChSZWYg
eyBidWZmZXIuZ2V0KCkgfSk7CiAgICAgcGFyc2VyLT5hcHBlbmREYXRhKFdURk1vdmUoc2VnbWVu
dCkpOwogICAgIGlmICghdHJhY2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHAKaW5kZXggMzI5YzkzY2E5Zjg5MjhhZmQ4YTgxNjQ4NzVmZTc4OWYyMjQy
OTZkZS4uZjJhNWUwMmQzYzc3MDBiNzljZjdkMzFlMDM2OWJlYTMzMzU2N2IzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDCiAgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcykpCiAgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQotICAgICwgbV9y
ZW5kZXJpbmdCYWNrZW5kKG1ha2VSZWYocmVuZGVyaW5nQmFja2VuZCkpCisgICAgLCBtX3JlbmRl
cmluZ0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZCkKICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdChTY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3Q6OmFjcXVpcmUoKSkK
IHsKICAgICBhc3NlcnRJc01haW5SdW5Mb29wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggMWU3ZGU5ZmIxYmY3NDRiNjUxMDQ1NDU4OTU5ZDBhOTdiMjRjYjI5Zi4uYWE5NDU2NDE0OWQw
OGU0ODk2MzQ3ZDk0ZjAzOTQ2MTU0NzI5YmY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVJbWFnZUJ1ZmZlciht
YWtlUmVmKCppbWFnZUJ1ZmZlcikpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUlt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlcik7CiAgICAgdXBkYXRlUmVuZGVyaW5nUmVzb3VyY2VSZXF1
ZXN0KCk7CiAKICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJ
bmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyKSkK
QEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0
aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbgogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5h
dGl2ZUltYWdlKG1ha2VSZWYoKmltYWdlKSk7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNh
Y2hlTmF0aXZlSW1hZ2UoKmltYWdlKTsKIAogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYm
IG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAobmF0aXZlSW1hZ2VSZXNv
dXJjZUlkZW50aWZpZXIpKQogICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6
ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgc3RkOjpudWxsb3B0KS0+YXJndW1lbnRzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0Nv
ZGVjc1Byb3h5Lm1tCmluZGV4IGVjMTA5MjZhNTEzOGNjYTg0ODg4NDY1NDVkOTI4MTEyZThhYTY3
Y2IuLjAyZGE1Zjk2MzhkMzJhMGYwNTMxNDZiNDYzMGJhYmExODY5NjBmYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tbQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVI
MjY0RGVjb2RlcihSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQVNT
RVJUKCFtX2RlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBtX2RlY29kZXJzLmFk
ZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsSDI2NERlY29kZXIobWFrZUJsb2NrUHRy
KFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVj
dGlvbigpKSwgaWRlbnRpZmllcl0oQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMy
X3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgeworICAgIG1fZGVjb2RlcnMuYWRk
KGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxIMjY0RGVjb2RlcihtYWtlQmxvY2tQdHIo
W2Nvbm5lY3Rpb24gPSBSZWYgeyBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpIH0sIGlkZW50aWZpZXJdKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90
IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApIHsKICAgICAgICAgaWYgKGF1dG8gc2Ft
cGxlID0gV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlciwgTWVk
aWFUaW1lKHRpbWVTdGFtcE5zLCAxKSkpCiAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkNvbXBsZXRlZERlY29kaW5nIHsgaWRlbnRpZmllciwg
dGltZVN0YW1wLCAqc2FtcGxlIH0sIDApOwogICAgIH0pLmdldCgpKSk7CkBAIC04OSw3ICs4OSw3
IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUgyNjVEZWNvZGVyKFJUQ0RlY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29u
dGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0
Yzo6Y3JlYXRlTG9jYWxIMjY1RGVjb2RlcihtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSBtYWtl
UmVmKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkpLCBpZGVudGlmaWVy
XShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0aW1lU3RhbXBOcywgdWlu
dDMyX3QgdGltZVN0YW1wKSB7CisgICAgbV9kZWNvZGVycy5hZGQoaWRlbnRpZmllciwgd2VicnRj
OjpjcmVhdGVMb2NhbEgyNjVEZWNvZGVyKG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IFJlZiB7
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkgfSwgaWRlbnRpZmllcl0o
Q1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQz
Ml90IHRpbWVTdGFtcCkgewogICAgICAgICBpZiAoYXV0byBzYW1wbGUgPSBXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUodGltZVN0YW1wTnMs
IDEpKSkKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjczo6Q29tcGxldGVkRGVjb2RpbmcgeyBpZGVudGlmaWVyLCB0aW1lU3RhbXAsICpzYW1wbGUg
fSwgMCk7CiAgICAgfSkuZ2V0KCkpKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjpjcmVhdGVWUDlEZWNvZGVyKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKICAgICBBU1NFUlQoIW1fZGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikp
OwotICAgIG1fZGVjb2RlcnMuYWRkKGlkZW50aWZpZXIsIHdlYnJ0Yzo6Y3JlYXRlTG9jYWxWUDlE
ZWNvZGVyKG1ha2VCbG9ja1B0cihbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXJdKENWUGl4ZWxCdWZmZXJSZWYg
cGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApIHsK
KyAgICBtX2RlY29kZXJzLmFkZChpZGVudGlmaWVyLCB3ZWJydGM6OmNyZWF0ZUxvY2FsVlA5RGVj
b2RlcihtYWtlQmxvY2tQdHIoW2Nvbm5lY3Rpb24gPSBSZWYgeyBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpIH0sIGlkZW50aWZpZXJdKENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApIHsKICAg
ICAgICAgaWYgKGF1dG8gc2FtcGxlID0gV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0
ZShwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSkpCiAgICAgICAgICAgICBj
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkNvbXBsZXRlZERlY29k
aW5nIHsgaWRlbnRpZmllciwgdGltZVN0YW1wLCAqc2FtcGxlIH0sIDApOwogICAgIH0pLmdldCgp
KSk7CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRl
RW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdAogICAgIGZvciAo
YXV0byYgcGFyYW1ldGVyIDogcGFyYW1ldGVycykKICAgICAgICAgcnRjUGFyYW1ldGVycy5lbXBs
YWNlKHBhcmFtZXRlci5maXJzdC51dGY4KCkuZGF0YSgpLCBwYXJhbWV0ZXIuc2Vjb25kLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgYXV0byogZW5jb2RlciA9IHdlYnJ0Yzo6Y3JlYXRlTG9jYWxFbmNv
ZGVyKHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQgeyBmb3JtYXROYW1lLnV0ZjgoKS5kYXRhKCksIHJ0
Y1BhcmFtZXRlcnMgfSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpKSwgaWRlbnRpZmllcl0oY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3Qgc2l6ZSwgY29uc3Qgd2VicnRjOjpXZWJLaXRFbmNvZGVkRnJh
bWVJbmZvJiBpbmZvKSB7CisgICAgYXV0byogZW5jb2RlciA9IHdlYnJ0Yzo6Y3JlYXRlTG9jYWxF
bmNvZGVyKHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQgeyBmb3JtYXROYW1lLnV0ZjgoKS5kYXRhKCks
IHJ0Y1BhcmFtZXRlcnMgfSwgbWFrZUJsb2NrUHRyKFtjb25uZWN0aW9uID0gUmVmIHsgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSB9LCBpZGVudGlmaWVyXShjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCB3ZWJydGM6OldlYktpdEVuY29kZWRG
cmFtZUluZm8mIGluZm8pIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGli
V2ViUlRDQ29kZWNzOjpDb21wbGV0ZWRFbmNvZGluZyB7IGlkZW50aWZpZXIsIElQQzo6RGF0YVJl
ZmVyZW5jZSB7IGJ1ZmZlciwgc2l6ZSB9LCBpbmZvIH0sIDApOwogICAgIH0pLmdldCgpKTsKICAg
ICB3ZWJydGM6OnNldExvY2FsRW5jb2Rlckxvd0xhdGVuY3koZW5jb2RlciwgdXNlTG93TGF0ZW5j
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAppbmRleCBlMzlkMjBhM2Q4NjkzYjk4Y2JkYjEyMWIxMmNhYTllY2Y5NDAwZTA2Li44
MWU1MTk1YjYwNGI4NjdhMGUyMTRjNDUzNzU2NDEyMzhiMzlmOTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTU1MSw3
ICs1NTEsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptaWdy
YXRlRGF0YVRvUENNRGF0YWJhc2VJZk5lY2Vzc2FyeSgpCiAgICAgfQogCiAgICAgaWYgKCF1bmF0
dHJpYnV0ZWQuaXNFbXB0eSgpIHx8ICFhdHRyaWJ1dGVkLmlzRW1wdHkoKSkgewotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgdW5hdHRy
aWJ1dGVkID0gdW5hdHRyaWJ1dGVkLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGVkID0gYXR0cmli
dXRlZC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBzdG9yZSgpIH0sIHVuYXR0cmlidXRlZCA9IHVuYXR0
cmlidXRlZC5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRlZCA9IGF0dHJpYnV0ZWQuaXNvbGF0ZWRD
b3B5KCldICgpIG11dGFibGUgewogICAgICAgICAgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBz
dG9yZS0+bmV0d29ya1Nlc3Npb24oKTsKICAgICAgICAgICAgIGlmICghbmV0d29ya1Nlc3Npb24p
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI4Nyw3ICsxMjg3LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k6Ci0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKHN0b3JlKCkp
LCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBz
dWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgc3RvcmUtPmhhc0Nvb2tpZXMoc3ViRnJhbWVEb21haW4sIFtzdG9yZSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzdWx0XSAo
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
KTsKQEAgLTEzMDAsNyArMTMwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgICAg
IGJyZWFrOwogICAgIH07CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0g
bWFrZVJlZihzdG9yZSgpKSwgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRl
ZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwg
ZnJhbWVJRCwgcGFnZUlELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUg
PSBSZWYgeyBzdG9yZSgpIH0sIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0
ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCks
IGZyYW1lSUQsIHBhZ2VJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgc3RvcmUtPmNhbGxIYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWVIYW5kbGVyKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRC52
YWx1ZSgpLCBwYWdlSUQsIFtzdG9yZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYm9vbCByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgc3RvcmUt
PnN0YXRpc3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCByZXN1bHRdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC0xNDM4LDcgKzE0MzgsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbQogICAgICAgICBzZXRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21h
aW4sIHRydWUsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgfQogCi0gICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgp
LCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFtZUlE
LCBwYWdlSUQsIHN0b3JlID0gbWFrZVJlZihzdG9yZSgpKSwgc2NvcGUsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xh
dGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgp
LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlID0gUmVmIHsgc3RvcmUoKSB9LCBzY29wZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgc3RvcmUtPmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKHN1YkZyYW1lRG9tYWlu
LCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBzY29wZSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0b3JlXShTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCB3YXNHcmFudGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHN0b3JlLT5zdGF0aXN0
aWNzUXVldWUoKS5kaXNwYXRjaChbd2FzR3JhbnRlZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIod2FzR3JhbnRlZCk7CkBAIC0yMjY4LDcgKzIyNjgsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhD
b21wbGV0aW9uSGFuZGxlcgogICAgIGlmIChkZWJ1Z0xvZ2dpbmdFbmFibGVkKCkgJiYgKCFkb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpIHx8ICFkb21haW5zVG9CbG9j
a0J1dEtlZXBDb29raWVzRm9yLmlzRW1wdHkoKSkpCiAgICAgICAgIGRlYnVnTG9nRG9tYWluc0lu
QmF0Y2hlcygiQXBwbHlpbmcgY3Jvc3Mtc2l0ZSB0cmFja2luZyByZXN0cmljdGlvbnMiLCBkb21h
aW5zVG9CbG9jayk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIGRvbWFpbnNUb0Js
b2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNUb0Jsb2NrKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc3RvcmUgPSBS
ZWYgeyBzdG9yZSgpIH0sIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5KGRvbWFpbnNU
b0Jsb2NrKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIHN0b3JlLT5jYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
QmxvY2tDb29raWVzRm9ySGFuZGxlcihkb21haW5zVG9CbG9jaywgW3dlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIHN0b3JlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgc3RvcmUtPnN0YXRpc3RpY3NRdWV1
ZSgpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCmluZGV4IDllMTc0MjQxNjgyZjM1NTg4MGFkN2FhY2U3NDZhMzQ2M2Fk
MDJlNGYuLjA5NDQ2NjA1MDYwYzFlMmI5YmIzNDIxNWYwNWE0ZTNiZGQ4NTEzMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xODMsNyArMTgzLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJgogCiAgICAgc2V0RGF0YVJlY29yZHNCZWluZ1JlbW92
ZWQodHJ1ZSk7CiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gbWFrZVJl
ZihtX3N0b3JlKSwgZG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yID0gY3Jv
c3NUaHJlYWRDb3B5KGRvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkID0gbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2Vy
ZVNjYW5uZWQsIHdvcmtRdWV1ZSA9IG1fd29ya1F1ZXVlXSAoKSBtdXRhYmxlIHsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gUmVmIHsgbV9zdG9yZSB9LCBkb21haW5zVG9E
ZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3IgPSBjcm9zc1RocmVhZENvcHkoZG9tYWluc1Rv
RGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHNo
b3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSBtX3BhcmFtZXRlcnMu
c2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwgd29ya1F1ZXVlID0g
bV93b3JrUXVldWVdICgpIG11dGFibGUgewogICAgICAgICBzdG9yZS0+ZGVsZXRlQW5kUmVzdHJp
Y3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpLCBXVEZNb3ZlKGRvbWFpbnNUb0RlbGV0ZU9y
UmVzdHJpY3RXZWJzaXRlRGF0YUZvciksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRz
V2VyZVNjYW5uZWQsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3b3JrUXVldWVdKGNvbnN0IEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkgbXV0
YWJsZSB7CiAgICAgICAgICAgICB3b3JrUXVldWUtPmRpc3BhdGNoKFtkb21haW5zV2l0aERlbGV0
ZWRXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRl
RGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHdl
YWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldICgpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpCiAgICAgICAg
IGlmICghbV9wYXJhbWV0ZXJzLnNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtzdG9yZSA9IG1ha2VSZWYobV9zdG9yZSldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtzdG9yZSA9IFJlZiB7IG1fc3RvcmUgfV0gewogICAgICAgICAgICAgc3Rv
cmUtPm5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQcm9jZXNzZWQoKTsKICAgICAgICAgfSk7
CiAgICAgfSk7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YShDb21wbGV0aW9uSGFuZGwKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQg
PSBtX3BhcmFtZXRlcnMuc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZCwgd29ya1F1ZXVlID0gbV93b3JrUXVldWUsIHN0b3JlID0gbWFrZVJlZihtX3N0b3JlKV0gKCkg
bXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2hvdWxkTm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCA9IG1fcGFyYW1ldGVycy5zaG91bGROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkLCB3b3JrUXVldWUgPSBtX3dvcmtRdWV1
ZSwgc3RvcmUgPSBSZWYgeyBtX3N0b3JlIH1dICgpIG11dGFibGUgewogICAgICAgICBzdG9yZS0+
cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCksIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFS
ZWNvcmRzV2VyZVNjYW5uZWQsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCB3b3JrUXVldWVdIChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYmIGRvbWFpbnNXaXRoV2Vic2l0ZURhdGEpIG11dGFibGUgewogICAgICAgICAgICAgd29y
a1F1ZXVlLT5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZG9tYWluc1dp
dGhXZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weShkb21haW5zV2l0aFdlYnNpdGVEYXRhKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykgewpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDYWNoZU1heEFnZUNhcCgpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dG9yZSA9IG1ha2VSZWYobV9zdG9yZSksIHNlY29uZHMgPSBtX3BhcmFtZXRlcnMuY2FjaGVNYXhB
Z2VDYXBUaW1lXSAoKSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9yZSA9IFJl
ZiB7IG1fc3RvcmUgfSwgc2Vjb25kcyA9IG1fcGFyYW1ldGVycy5jYWNoZU1heEFnZUNhcFRpbWVd
ICgpIHsKICAgICAgICAgc3RvcmUtPnNldENhY2hlTWF4QWdlQ2FwKHNlY29uZHMsIFtdIHsgfSk7
CiAgICAgfSk7CiB9CkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnVwZGF0ZUNsaWVudFNpZGVDb29raWVzQWdlQ2FwKCkKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVW
RU5USU9OKQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKG1f
c3RvcmUpLCBzZWNvbmRzID0gbV9wYXJhbWV0ZXJzLmNsaWVudFNpZGVDb29raWVzQWdlQ2FwVGlt
ZV0gKCkgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBtX3N0
b3JlIH0sIHNlY29uZHMgPSBtX3BhcmFtZXRlcnMuY2xpZW50U2lkZUNvb2tpZXNBZ2VDYXBUaW1l
XSAoKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0b3JlLT5uZXR3b3Jr
U2Vzc2lvbigpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgICAgICAgICAgc3Rv
cmFnZVNlc3Npb24tPnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHNlY29uZHMpOwpAQCAt
NDE1LDcgKzQxNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVD
b29raWVCbG9ja2luZ0ZvckRvbWFpbnMoY29uc3QgUmVnaXN0cmFiCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtz
dG9yZSA9IG1ha2VSZWYobV9zdG9yZSksIGRvbWFpbnNUb0Jsb2NrID0gY3Jvc3NUaHJlYWRDb3B5
KGRvbWFpbnNUb0Jsb2NrKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdG9y
ZSA9IFJlZiB7IG1fc3RvcmUgfSwgZG9tYWluc1RvQmxvY2sgPSBjcm9zc1RocmVhZENvcHkoZG9t
YWluc1RvQmxvY2spLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgc3RvcmUtPmNhbGxVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGRvbWFpbnNUb0Jsb2NrLCBbc3RvcmUsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBzdG9yZS0+c3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYg
ZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3N0b3JlID0gbWFrZVJlZihtX3N0b3JlKSwgZXZlbnQgPSBldmVu
dC5pc29sYXRlZENvcHkoKV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUg
PSBSZWYgeyBtX3N0b3JlIH0sIGV2ZW50ID0gZXZlbnQuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAg
ICAgc3RvcmUtPmxvZ1Rlc3RpbmdFdmVudChldmVudCk7CiAgICAgfSk7CiB9CkBAIC00NjUsNyAr
NDY1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmxvZ1Rlc3RpbmdFdmVu
dChjb25zdCBTdHJpbmcmIGV2ZW50KQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBtYWtlUmVmKG1fc3RvcmUpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3RvcmUgPSBSZWYgeyBtX3N0b3JlIH0sIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIHN0b3JlLT5yZW1vdmVBbGxTdG9yYWdlQWNjZXNzKFtzdG9yZSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHN0b3JlLT5zdGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDVjOWI3NzE4NmZi
MTgxMGNiMjg1NzE0YmM1Mzc1MDkxYTQ4NTdlMjcuLjNiN2ZkMDRmZjUwM2E3MWI5ZTUzYjNkMGEy
NTc2NGY4MzkwMDU2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcGxhdGZvcm1TZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgW3BvbGljeSwgcHJvY2VzcyA9IG1ha2VSZWYobV9w
cm9jZXNzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KCkgbXV0YWJsZSB7CisgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGlj
eSwgW3BvbGljeSwgcHJvY2VzcyA9IFJlZiB7IG1fcHJvY2VzcyB9LCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgcHJv
Y2Vzcy0+Y29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChwb2xpY3kpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5j
cHAKaW5kZXggMmU0NWUyZGJiNjAxMzkxYTAwMmE4Njc4NzVhNjEyM2RiMjBkNjYyYi4uMTQ5MGQ5
OTJhZWUxMzQ1OGNiYTE1ZGIxNjNmMWI5MGU0YzQ4MjZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6V2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29y
ZTo6SURCQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCi0g
ICAgOiBtX2Nvbm5lY3Rpb24obWFrZVJlZihjb25uZWN0aW9uKSkKKyAgICA6IG1fY29ubmVjdGlv
bihjb25uZWN0aW9uKQogICAgICwgbV9pZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKQogICAgICwgbV9jb25uZWN0aW9uVG9DbGllbnQoSURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmNyZWF0ZSgqdGhpcykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDg0NmJkZDUzZjM0NmI1ZmNjNDI4MDdhOWYz
YTU0NjMyMzJiODExYzUuLjk3YWRhZDE3NTMyOWMxMGMxODM0ZGRkNDA5NWQzMDNhY2ZhOGJlOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0yMTM0LDcgKzIxMzQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rv
d25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogCiAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gbmV0d29ya0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1l
KCk7CiAKLSAgICBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgbmV0d29ya0RhdGFUYXNrID0gbWFrZVJlZihuZXR3b3JrRGF0YVRhc2spXSAoU3Ry
aW5nJiYgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlKSBtdXRhYmxlIHsKKyAg
ICBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHJl
c3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bmV0d29ya0RhdGFUYXNrID0gUmVmIHsgbmV0d29ya0RhdGFUYXNrIH1dIChTdHJpbmcmJiBkZXN0
aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUpIG11dGFibGUgewogICAgICAgICBhdXRv
IGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAg
ICAgIGlmIChkZXN0aW5hdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGE2NGEwMWZmNGZiZDJhZWUzNjljZTNk
MTM1ZGU4NzhiOTc0NDU5ZDAuLjQyOTBiMGFjYzU0NmI4MmRjMTBjZWVhNTZjYWNlMDZjZmYyODE1
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTUyMCw3ICs1MjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXV0byBpdGVyID0gbV9z
dG9yYWdlUXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbcXVvdGEsIHVzYWdlR2V0dGVyID0g
V1RGTW92ZSh1c2FnZUdldHRlciksIHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIgPSBXVEZNb3ZlKHF1
b3RhSW5jcmVhc2VSZXF1ZXN0ZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIHJldHVy
biBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpjcmVhdGUocXVvdGEsIFdURk1vdmUodXNh
Z2VHZXR0ZXIpLCBXVEZNb3ZlKHF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXIpKTsKICAgICAgICAgICAg
IH0pLml0ZXJhdG9yOwotICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWYoKml0ZXItPnZhbHVlKTsK
KyAgICAgICAgICAgIHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgICAgIH0KIAogICAgICAgICBh
dXRvIGV4aXN0aW5nU3RvcmFnZVF1b3RhTWFuYWdlcnMoKSB7IHJldHVybiBtX3N0b3JhZ2VRdW90
YU1hbmFnZXJzLnZhbHVlcygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCmluZGV4IDhjNzg4ZjA3ZmFjNzJmNjczNjc5YzhlOWIwZmI3NTZkZGZmZmJlNjAuLmM1
ZWE4ODM1ZjRlMTVkMDk3MDgyNWE0MWRhZmM1YzlkYTYzNGY0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUGluZ0xv
YWQ6OmluaXRpYWxpemUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzKQogICAgIC8vIFNl
dCBhIHZlcnkgZ2VuZXJvdXMgdGltZW91dCwganVzdCBpbiBjYXNlLgogICAgIG1fdGltZW91dFRp
bWVyLnN0YXJ0T25lU2hvdCg2MDAwMF9zKTsKIAotICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5j
aGVjayhSZXNvdXJjZVJlcXVlc3QgeyBtX3BhcmFtZXRlcnMucmVxdWVzdCB9LCBudWxscHRyLCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIG5ldHdvcmtQcm9jZXNzID0gbWFr
ZVJlZihuZXR3b3JrUHJvY2VzcyldIChhdXRvJiYgcmVzdWx0KSB7CisgICAgbV9uZXR3b3JrTG9h
ZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0IH0s
IG51bGxwdHIsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmV0d29ya1By
b2Nlc3MgPSBSZWYgeyBuZXR3b3JrUHJvY2VzcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBXVEY6OnN3aXRj
aE9uKHJlc3VsdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCmluZGV4IDNlNTlkZGUxMjc4NDBkNzQ1ZmY3OWM0
YjNlMmU5ZDdmMzAzZGY5OTEuLmQ4OTI5NTU5NzZmOTFlYTNkZTA5ZjJlMTg0MmMyNmQ2N2E3N2Nk
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JlLmNwcApAQCAtNTksNyArNTksNyBAQCBTdG9yZTo6U3RvcmUoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKICAgICA6IG1fcXVldWUoc2hhcmVkV29ya1F1
ZXVlKCkpCiB7CiAgICAgaWYgKCFkYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YWJh
c2VEaXJlY3RvcnkgPSBkYXRhYmFzZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgZGF0YWJhc2VEaXJlY3RvcnkgPSBkYXRhYmFzZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxEYXRhYmFz
ZT4oV1RGTW92ZShkYXRhYmFzZURpcmVjdG9yeSkpOwogICAgICAgICB9KTsKICAgICB9CkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgU3RvcmU6OnBvc3RUYXNrUmVwbHkoV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgcmVwbHkpIGNvbnN0CiAKIHZvaWQgU3RvcmU6Omluc2VydFByaXZhdGVDbGlja01lYXN1
cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24sIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIGF0dHJpYnV0aW9uVHlwZSkKIHsK
LSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhdHRy
aWJ1dGlvbiA9IFdURk1vdmUoYXR0cmlidXRpb24pLCBhdHRyaWJ1dGlvblR5cGVdICgpIG11dGFi
bGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
YXR0cmlidXRpb24gPSBXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25UeXBlXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKG1fZGF0YWJhc2UpCiAgICAgICAgICAgICBtX2RhdGFiYXNl
LT5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0
cmlidXRpb25UeXBlKTsKICAgICB9KTsKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTdG9yZTo6aW5z
ZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiBhdHQKIAogdm9pZCBTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpCiB7Ci0gICAgcG9zdFRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAobV9kYXRhYmFzZSkKICAg
ICAgICAgICAgIG1fZGF0YWJhc2UtPm1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICAgICB9KTsKQEAgLTk3LDcgKzk3LDcgQEAg
dm9pZCBTdG9yZTo6bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNF
eHBpcmVkRm9yVGVzdGluZygpCiAKIHZvaWQgU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
aXRlJiBzb3VyY2VTaXRlLCBjb25zdCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmIGRlc3RpbmF0aW9uU2l0ZSwgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50PiYmIGVwaGVtZXJhbE1lYXN1cmVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vj
b25kc1VudGlsU2VuZERhdGE+JiYsIERlYnVnSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
b3VyY2VTaXRlID0gc291cmNlU2l0ZS5pc29sYXRlZENvcHkoKSwgZGVzdGluYXRpb25TaXRlID0g
ZGVzdGluYXRpb25TaXRlLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0g
V1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBj
cm9zc1RocmVhZENvcHkoZXBoZW1lcmFsTWVhc3VyZW1lbnQpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNvdXJjZVNpdGUgPSBzb3VyY2VT
aXRlLmlzb2xhdGVkQ29weSgpLCBkZXN0aW5hdGlvblNpdGUgPSBkZXN0aW5hdGlvblNpdGUuaXNv
bGF0ZWRDb3B5KCksIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZNb3ZlKGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEpLCBlcGhlbWVyYWxNZWFzdXJlbWVudCA9IGNyb3NzVGhyZWFkQ29weShlcGhl
bWVyYWxNZWFzdXJlbWVudCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1fZGF0YWJhc2UpIHsKICAgICAg
ICAgICAgIHJldHVybiBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHsgfSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBT
dG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW0KIAogdm9pZCBTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBjb25zdAogewotICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwogICAgICAgICBpZiAo
bV9kYXRhYmFzZSkKICAgICAgICAgICAgIHJlc3VsdCA9IG1fZGF0YWJhc2UtPnByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKCk7CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHIKIAogdm9pZCBTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBw
b3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHBv
c3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
VmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBjb252ZXJ0ZWRBdHRyaWJ1
dGlvbnM7CiAgICAgICAgIGlmIChtX2RhdGFiYXNlKQogICAgICAgICAgICAgY29udmVydGVkQXR0
cmlidXRpb25zID0gbV9kYXRhYmFzZS0+YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTdG9yZTo6YWxsQXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFcKIAogdm9p
ZCBTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRG
b3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKG1fZGF0YWJhc2UpCiAgICAgICAgICAgICBtX2RhdGFiYXNlLT5tYXJrQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKICAg
ICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xNTMs
NyArMTUzLDcgQEAgdm9pZCBTdG9yZTo6bWFya0F0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb24KIAogdm9pZCBTdG9yZTo6Y2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKCkgbXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fZGF0YWJhc2UpCiAgICAgICAgICAgICBtX2Rh
dGFiYXNlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMTYyLDcg
KzE2Miw3IEBAIHZvaWQgU3RvcmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25ICiAKIHZvaWQgU3RvcmU6OmNsZWFyUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBw
b3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGRvbWFpbiA9IGRv
bWFpbi5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2RhdGFiYXNlKQogICAgICAg
ICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChkb21haW4pOwog
ICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTE3
MSw3ICsxNzEsNyBAQCB2b2lkIFN0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50Rm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaQogCiB2b2lkIFN0b3JlOjpjbGVh
ckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpCiB7Ci0gICAgcG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CisgICAgcG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSgpIHsKICAgICAgICAgaWYgKG1fZGF0YWJh
c2UpCiAgICAgICAgICAgICBtX2RhdGFiYXNlLT5jbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCgpOwogICAgIH0pOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgU3RvcmU6OmNsZWFy
RXhwaXJlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KCkKIAogdm9pZCBTdG9yZTo6Y2xlYXJTZW50
QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlv
blRvQ2xlYXIsIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJl
cG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCiB7Ci0gICAgcG9zdFRhc2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXR0cmlidXRpb25Ub0NsZWFy
ID0gYXR0cmlidXRpb25Ub0NsZWFyLmlzb2xhdGVkQ29weSgpLCBhdHRyaWJ1dGlvblJlcG9ydEVu
ZHBvaW50XSgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgYXR0cmlidXRpb25Ub0NsZWFyID0gYXR0cmlidXRpb25Ub0NsZWFyLmlz
b2xhdGVkQ29weSgpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50XSgpIG11dGFibGUgewogICAg
ICAgICBpZiAobV9kYXRhYmFzZSkKICAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNsZWFyU2VudEF0
dHJpYnV0aW9uKFdURk1vdmUoYXR0cmlidXRpb25Ub0NsZWFyKSwgYXR0cmlidXRpb25SZXBvcnRF
bmRwb2ludCk7CiAgICAgfSk7CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTdG9yZTo6Y2xlYXJT
ZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1
dGlvblQKIAogdm9pZCBTdG9yZTo6Y2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgeworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOwogICAgICAg
ICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4
IGY1MzAxNTBkMzE1OTZiODFhNTVmZTA1MjkyMWM1NWJjNTQwYjMzNzcuLmIwMTQ1NzViNTJiZWIx
MDI1ZDI2ZWE4OGM4NmEwYWQ0ZGY2MzU2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRXaXRoQ2FjaGVFbnRyeShOZXR3b3JrQ2Fj
aGU6OkVudHJ5JiBlbnRyCiAgICAgfQogCiAgICAgaWYgKGVudHJ5LmJ1ZmZlcigpKQotICAgICAg
ICBkaWRSZWNlaXZlQnVmZmVyKG1ha2VSZWYoKmVudHJ5LmJ1ZmZlcigpKSwgMCk7CisgICAgICAg
IGRpZFJlY2VpdmVCdWZmZXIoKmVudHJ5LmJ1ZmZlcigpLCAwKTsKICAgICBkaWRGaW5pc2hMb2Fk
aW5nKHsgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCAwMjk1MWVlYjcxMzQyMTUwZjUx
ZmFiZmI4ODM1NTlhYmQ3ZGVlYTQ5Li43OGMyN2U4ODI0ZTBhOTRhYWE1MTE4YzE3MGYzNDFlMDhl
NmNmNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRW5naW5l
Ojpmcm9tKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBGdW5jCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBuZXR3b3JrUHJvY2Vz
cy5jYWNoZVN0b3JhZ2VSb290UGF0aChzZXNzaW9uSUQsIFtuZXR3b3JrUHJvY2VzcyA9IG1ha2VS
ZWYobmV0d29ya1Byb2Nlc3MpLCBzZXNzaW9uSUQsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldIChhdXRvJiYgcm9vdFBhdGgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLmNhY2hl
U3RvcmFnZVJvb3RQYXRoKHNlc3Npb25JRCwgW25ldHdvcmtQcm9jZXNzID0gUmVmIHsgbmV0d29y
a1Byb2Nlc3MgfSwgc2Vzc2lvbklELCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0
byYmIHJvb3RQYXRoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2sobmV0d29ya1Byb2Nlc3Mt
PmVuc3VyZUNhY2hlRW5naW5lKHNlc3Npb25JRCwgWyZdIHsKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEVuZ2luZSB7IHNlc3Npb25JRCwgbmV0d29ya1Byb2Nlc3MuZ2V0KCksIFdU
Rk1vdmUocm9vdFBhdGgpIH0pOwogICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwCmluZGV4IDM4MmFiN2ZjZTE2NTJiMDliZTRjZGY5NTcyODE3ZWIzZDUxMjIxNDMuLjZmMjZi
NGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBDYWNoZTo6b3BlbihDb21wbGV0aW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB9CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpPcGVuaW5n
OwogICAgIFRyYXZlcnNhbFJlc3VsdCB0cmF2ZXJzYWxSZXN1bHQgeyBtX2lkZW50aWZpZXIsIHsg
fSwgeyB9IH07Ci0gICAgbV9jYWNoZXMucmVhZFJlY29yZHNMaXN0KCp0aGlzLCBbY2FjaGVzID0g
bWFrZVJlZihtX2NhY2hlcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRyYXZlcnNh
bFJlc3VsdCA9IFdURk1vdmUodHJhdmVyc2FsUmVzdWx0KV0oY29uc3QgYXV0byogc3RvcmFnZVJl
Y29yZCwgY29uc3QgYXV0byYpIG11dGFibGUgeworICAgIG1fY2FjaGVzLnJlYWRSZWNvcmRzTGlz
dCgqdGhpcywgW2NhY2hlcyA9IFJlZiB7IG1fY2FjaGVzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHRyYXZlcnNhbFJlc3VsdCA9IFdURk1vdmUodHJhdmVyc2FsUmVzdWx0KV0oY29u
c3QgYXV0byogc3RvcmFnZVJlY29yZCwgY29uc3QgYXV0byYpIG11dGFibGUgewogICAgICAgICBp
ZiAoIXN0b3JhZ2VSZWNvcmQpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY2FjaGVzID0gV1RGTW92ZShjYWNoZXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCB0cmF2ZXJzYWxSZXN1bHQgPSBpc29sYXRlZENvcHkoV1RGTW92ZSh0cmF2ZXJzYWxSZXN1bHQp
KSBdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiB0cmF2ZXJz
YWxSZXN1bHQuZmFpbGVkUmVjb3JkcykKQEAgLTI3NSw3ICsyNzUsNyBAQCBwcml2YXRlOgogCiB2
b2lkIENhY2hlOjpyZXRyaWV2ZVJlY29yZChjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3Jk
LCBSZWY8UmVhZFJlY29yZFRhc2tDb3VudGVyPiYmIHRhc2tDb3VudGVyKQogewotICAgIHJlYWRS
ZWNvcmRGcm9tRGlzayhyZWNvcmQsIFtjYWNoZXMgPSBtYWtlUmVmKG1fY2FjaGVzKSwgaWRlbnRp
ZmllciA9IG1faWRlbnRpZmllciwgcmVjb3JkSWRlbnRpZmllciA9IHJlY29yZC5pZGVudGlmaWVy
LCB1cGRhdGVDb3VudGVyID0gcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlciwgdGFza0NvdW50
ZXIgPSBXVEZNb3ZlKHRhc2tDb3VudGVyKV0oRXhwZWN0ZWQ8UmVjb3JkLCBFcnJvcj4mJiByZXN1
bHQpIG11dGFibGUgeworICAgIHJlYWRSZWNvcmRGcm9tRGlzayhyZWNvcmQsIFtjYWNoZXMgPSBS
ZWYgeyBtX2NhY2hlcyB9LCBpZGVudGlmaWVyID0gbV9pZGVudGlmaWVyLCByZWNvcmRJZGVudGlm
aWVyID0gcmVjb3JkLmlkZW50aWZpZXIsIHVwZGF0ZUNvdW50ZXIgPSByZWNvcmQudXBkYXRlUmVz
cG9uc2VDb3VudGVyLCB0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShFeHBlY3Rl
ZDxSZWNvcmQsIEVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8qIGNhY2hl
ID0gY2FjaGVzLT5maW5kKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlUmVj
b3Jkcyhjb25zdCBSZXRyaWV2ZVJlY29yZHNPcHRpb25zJiBvcHRpb25zLCBSZWNvcmRzQ2FsbGJh
CiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6Ok9wZW4pOwogCi0gICAgYXV0byB0YXNr
Q291bnRlciA9IFJlYWRSZWNvcmRUYXNrQ291bnRlcjo6Y3JlYXRlKFtjYWNoZXMgPSBtYWtlUmVm
KG1fY2FjaGVzKSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgb3B0aW9ucywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBWZWN0b3I8dWlu
dDY0X3Q+JiYgZmFpbGVkUmVjb3JkSWRlbnRpZmllcnMpIG11dGFibGUgeworICAgIGF1dG8gdGFz
a0NvdW50ZXIgPSBSZWFkUmVjb3JkVGFza0NvdW50ZXI6OmNyZWF0ZShbY2FjaGVzID0gUmVmIHsg
bV9jYWNoZXMgfSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgb3B0aW9ucywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBWZWN0b3I8dWlu
dDY0X3Q+JiYgZmFpbGVkUmVjb3JkSWRlbnRpZmllcnMpIG11dGFibGUgewogICAgICAgICBhdXRv
KiBjYWNoZSA9IGNhY2hlcy0+ZmluZChpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGNhY2hlKQog
ICAgICAgICAgICAgY2FjaGUtPnJlbW92ZUZyb21SZWNvcmRMaXN0KGZhaWxlZFJlY29yZElkZW50
aWZpZXJzKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIENhY2hlOjpwdXQoVmVjdG9yPFJlY29y
ZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2NhY2hlcy5yZXF1ZXN0U3BhY2Uoc3BhY2VSZXF1
aXJlZCwgW2NhY2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVudGlm
aWVyLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6RXJyb3I+JiYgZXJyb3IpIG11dGFi
bGUgeworICAgIG1fY2FjaGVzLnJlcXVlc3RTcGFjZShzcGFjZVJlcXVpcmVkLCBbY2FjaGVzID0g
UmVmIHsgbV9jYWNoZXMgfSwgaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwgcmVjb3JkcyA9IFdU
Rk1vdmUocmVjb3JkcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9u
YWw8RE9NQ2FjaGVFbmdpbmU6OkVycm9yPiYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KGVycm9yKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChlcnJvci52YWx1
ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBDYWNo
ZTo6d3JpdGVSZWNvcmRUb0Rpc2soY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9y
bWF0aW9uLCBSZWNvcmQKIHZvaWQgQ2FjaGU6OnVwZGF0ZVJlY29yZFRvRGlzayhSZWNvcmRJbmZv
cm1hdGlvbiYgZXhpc3RpbmdSZWNvcmQsIFJlY29yZCYmIHJlY29yZCwgUmVmPEFzeW5jaHJvbm91
c1B1dFRhc2tDb3VudGVyPiYmIHRhc2tDb3VudGVyKQogewogICAgICsrZXhpc3RpbmdSZWNvcmQu
dXBkYXRlUmVzcG9uc2VDb3VudGVyOwotICAgIHJlYWRSZWNvcmRGcm9tRGlzayhleGlzdGluZ1Jl
Y29yZCwgW2NhY2hlcyA9IG1ha2VSZWYobV9jYWNoZXMpLCBpZGVudGlmaWVyID0gbV9pZGVudGlm
aWVyLCByZWNvcmRJZGVudGlmaWVyID0gZXhpc3RpbmdSZWNvcmQuaWRlbnRpZmllciwgcmVjb3Jk
ID0gV1RGTW92ZShyZWNvcmQpLCB0YXNrQ291bnRlciA9IFdURk1vdmUodGFza0NvdW50ZXIpXShF
eHBlY3RlZDxSZWNvcmQsIEVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgcmVhZFJlY29y
ZEZyb21EaXNrKGV4aXN0aW5nUmVjb3JkLCBbY2FjaGVzID0gUmVmIHsgbV9jYWNoZXMgfSwgaWRl
bnRpZmllciA9IG1faWRlbnRpZmllciwgcmVjb3JkSWRlbnRpZmllciA9IGV4aXN0aW5nUmVjb3Jk
LmlkZW50aWZpZXIsIHJlY29yZCA9IFdURk1vdmUocmVjb3JkKSwgdGFza0NvdW50ZXIgPSBXVEZN
b3ZlKHRhc2tDb3VudGVyKV0oRXhwZWN0ZWQ8UmVjb3JkLCBFcnJvcj4mJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDE3Y2JjZmIyMTRjNzZjZTdl
MmFmMGVmZmI2ZTA3MzE3ZTQ4ZWI3MjUuLmU1ZWMwNGUyOTM4MWU3NDFmNDRkOWM5NDcwYmZmMmJm
MmI4NWJiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTIxMyw3ICsyMTMs
NyBAQCB2b2lkIENhY2hlczo6aW5pdGlhbGl6ZVNpemUoKQogICAgIH0KIAogICAgIHVpbnQ2NF90
IHNpemUgPSAwOwotICAgIG1fc3RvcmFnZS0+dHJhdmVyc2UoeyB9LCB7IH0sIFtwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpcywgcHJvdGVjdGVkU3RvcmFnZSA9IG1ha2VSZWYoKm1f
c3RvcmFnZSksIHNpemVdKGNvbnN0IGF1dG8qIHN0b3JhZ2UsIGNvbnN0IGF1dG8mIGluZm9ybWF0
aW9uKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnRyYXZlcnNlKHsgfSwgeyB9LCBbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXMsIHByb3RlY3RlZFN0b3JhZ2UgPSBSZWYgeyAq
bV9zdG9yYWdlIH0sIHNpemVdKGNvbnN0IGF1dG8qIHN0b3JhZ2UsIGNvbnN0IGF1dG8mIGluZm9y
bWF0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFzdG9yYWdlKSB7CiAgICAgICAgICAgICBp
ZiAobV9wZW5kaW5nSW5pdGlhbGl6YXRpb25DYWxsYmFja3MuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gQ2FjaGVzIHdhcyBjbGVhcmVkIHNvIGxldCdzIG5vdCBnZXQgaW5pdGlhbGl6
ZWQuCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBDYWNoZXM6OnJlYWRSZWNvcmRzTGlzdChDYWNo
ZSYgY2FjaGUsIE5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6VHJhdmVyc2VIYW5kbGUKICAgICAgICAg
Y2FsbGJhY2sobnVsbHB0ciwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3N0
b3JhZ2UtPnRyYXZlcnNlKGNhY2hlLnVuaXF1ZU5hbWUoKSwgeyB9LCBbcHJvdGVjdGVkU3RvcmFn
ZSA9IG1ha2VSZWYoKm1fc3RvcmFnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNv
bnN0IGF1dG8qIHN0b3JhZ2UsIGNvbnN0IGF1dG8mIGluZm9ybWF0aW9uKSB7CisgICAgbV9zdG9y
YWdlLT50cmF2ZXJzZShjYWNoZS51bmlxdWVOYW1lKCksIHsgfSwgW3Byb3RlY3RlZFN0b3JhZ2Ug
PSBSZWYgeyAqbV9zdG9yYWdlIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0
IGF1dG8qIHN0b3JhZ2UsIGNvbnN0IGF1dG8mIGluZm9ybWF0aW9uKSB7CiAgICAgICAgIGNhbGxi
YWNrKHN0b3JhZ2UsIGluZm9ybWF0aW9uKTsKICAgICB9KTsKIH0KQEAgLTU1Miw3ICs1NTIsNyBA
QCB2b2lkIENhY2hlczo6d3JpdGVSZWNvcmQoY29uc3QgQ2FjaGUmIGNhY2hlLCBjb25zdCBSZWNv
cmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mbwogICAgIGlmICghbV9zdG9yYWdlKQogICAgICAgICBy
ZXR1cm4gY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKIAotICAgIG1fc3RvcmFnZS0+c3RvcmUoQ2Fj
aGU6OmVuY29kZShyZWNvcmRJbmZvcm1hdGlvbiwgcmVjb3JkKSwgeyB9LCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb3RlY3RlZFN0b3JhZ2UgPSBtYWtlUmVmKCptX3N0
b3JhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShpbnQgZXJyb3IpIG11dGFibGUg
eworICAgIG1fc3RvcmFnZS0+c3RvcmUoQ2FjaGU6OmVuY29kZShyZWNvcmRJbmZvcm1hdGlvbiwg
cmVjb3JkKSwgeyB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb3Rl
Y3RlZFN0b3JhZ2UgPSBSZWYgeyAqbV9zdG9yYWdlIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGludCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiQ2FjaGVzOjp3cml0ZVJlY29y
ZCBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIGVycm9yKTsKICAgICAgICAgICAgIGNhbGxiYWNrKEVy
cm9yOjpXcml0ZURpc2spOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgQ2FjaGVzOjpyZWFkUmVj
b3JkKGNvbnN0IE5ldHdvcmtDYWNoZTo6S2V5JiBrZXksIFdURjo6RnVuY3Rpb248dm9pZChFeHBl
Y3RlCiAgICAgaWYgKCFtX3N0b3JhZ2UpCiAgICAgICAgIHJldHVybiBjYWxsYmFjayhtYWtlVW5l
eHBlY3RlZChFcnJvcjo6SW50ZXJuYWwpKTsKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoa2V5
LCA0LCBbcHJvdGVjdGVkU3RvcmFnZSA9IG1ha2VSZWYoKm1fc3RvcmFnZSksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlOjpSZWNvcmQ+IHN0b3Jh
Z2UsIGNvbnN0IFN0b3JhZ2U6OlRpbWluZ3MmKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJl
dHJpZXZlKGtleSwgNCwgW3Byb3RlY3RlZFN0b3JhZ2UgPSBSZWYgeyAqbV9zdG9yYWdlIH0sIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlOjpSZWNv
cmQ+IHN0b3JhZ2UsIGNvbnN0IFN0b3JhZ2U6OlRpbWluZ3MmKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKCFzdG9yYWdlKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3Jh
Z2UsICJDYWNoZXM6OnJlYWRSZWNvcmQgZmFpbGVkIHJlYWRpbmcgcmVjb3JkIGZyb20gZGlzayIp
OwogICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlJlYWREaXNrKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKaW5kZXggNWIwZmU1YzNlZWY3NzIyZWZmOTZiOGJhYTY0ZjRjODAwYjY1ZTJkMS4uMDQ3
NzY4MzZmOTk5MDkzOTEwYjM5OWQ3NTUzODU1ZDVkM2YxZmY0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzkyLDcg
KzM5Miw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICNpZiBFTkFCTEUoTkVUV09SS19D
QUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKGNhblVzZVNwZWN1bGF0aXZl
UmV2YWxpZGF0aW9uICYmIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+Y2FuUmV0cmlldmUoc3Rv
cmFnZUtleSwgcmVxdWVzdCwgZnJhbWVJRCkpIHsKLSAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyLT5yZXRyaWV2ZShzdG9yYWdlS2V5LCBbbmV0d29ya1Byb2Nlc3MgPSBtYWtlUmVmKG5l
dHdvcmtQcm9jZXNzKCkpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc2Vzc2lvbklEID0gbV9zZXNz
aW9uSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnkpIG11dGFibGUgeworICAgICAgICBt
X3NwZWN1bGF0aXZlTG9hZE1hbmFnZXItPnJldHJpZXZlKHN0b3JhZ2VLZXksIFtuZXR3b3JrUHJv
Y2VzcyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNzKCkgfSwgcmVxdWVzdCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaW5mbyA9IFdURk1vdmUoaW5mbyksIHNl
c3Npb25JRCA9IG1fc2Vzc2lvbklEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5KSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGluZm8ud2FzU3BlY3VsYXRpdmVMb2FkID0gdHJ1ZTsKICAgICAg
ICAgICAgIGlmIChlbnRyeSAmJiBXZWJDb3JlOjp2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMo
bmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCksIGVudHJ5LT52YXJ5aW5n
UmVxdWVzdEhlYWRlcnMoKSwgcmVxdWVzdCkpCiAgICAgICAgICAgICAgICAgY29tcGxldGVSZXRy
aWV2ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShlbnRyeSksIGluZm8pOwpA
QCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAgICAgfQogI2VuZGlm
CiAKLSAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9y
YWdlS2V5LCBuZXR3b3JrUHJvY2VzcyA9IG1ha2VSZWYobmV0d29ya1Byb2Nlc3MoKSksIHNlc3Np
b25JRCA9IG1fc2Vzc2lvbklELCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
XShhdXRvIHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJl
dHJpZXZlKHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBuZXR3b3JrUHJvY2Vz
cyA9IFJlZiB7IG5ldHdvcmtQcm9jZXNzKCkgfSwgc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIGZy
YW1lSUQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5dKGF1dG8gcmVjb3JkLCBhdXRvIHRp
bWluZ3MpIG11dGFibGUgewogICAgICAgICBpbmZvLnN0b3JhZ2VUaW1pbmdzID0gdGltaW5nczsK
IAogICAgICAgICBpZiAoIXJlY29yZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHAK
aW5kZXggM2Q3Nzk1ZGYyMjJmOGI5ZTJmZjBjY2U4MjEwODcxNjE2MWFhOWY4MC4uMmNmZTY4ZjI0
MTYzMjdiMTI1Njg0ZmNhNmFlMDU2M2E3YmVhNGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5l
bEdMaWIuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBJT0NoYW5uZWw6OnJlYWRTeW5jSW5U
aHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSYgcXVldWUsIEYKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFRocmVhZDo6Y3JlYXRlKCJJ
T0NoYW5uZWw6OnJlYWRTeW5jIiwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBzaXplLCBxdWV1ZSA9IG1ha2VSZWYocXVldWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBUaHJlYWQ6OmNyZWF0ZSgi
SU9DaGFubmVsOjpyZWFkU3luYyIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgc2l6ZSwgcXVldWUgPSBSZWYgeyBxdWV1ZSB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBzdGQ6Om1pbihzaXplLCBnRGVmYXVsdFJlYWRCdWZmZXJTaXplKTsKICAgICAgICAg
dWludDhfdCogYnVmZmVyRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKGJ1
ZmZlclNpemUpKTsKICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+IHJlYWRCdWZmZXIgPSBhZG9wdEdS
ZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoYnVmZmVyRGF0YSwgYnVmZmVyU2l6ZSwgZmFz
dEZyZWUsIGJ1ZmZlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMzYy
YWZiODg1MmFmZjQ4MDk5ZTA5Y2Y1NWU3ZWM2NzM1ZTUzMzNjNy4uMzg2MjgxNzQyNWJkMmJiYTA4
OWYwODQ3YjMzYjVkYTdhYjA2ZTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHIKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCi0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0
YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgbV9wYXRoID0gcGF0aDsKICAgICAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBhdXRvIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fcGF0aCwgInNhbHQiKTsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6cGVyc2lzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
Q29tcGxldAogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsZWFyU3RvcmFnZUZvclRlc3Rp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fbG9j
YWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMuY2xlYXIoKTsKICAgICAgICAgbV9zZXNzaW9uT3JpZ2lu
U3RvcmFnZU1hbmFnZXJzLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggN2Fh
MTdjMTMxZjE2MjY4NGNkMjgzYTdhMGU0YzFkMTMxYmVlODYxYS4uNzk3ZTU4NDM3Y2JiY2RhNTg2
YTcyYjBjMDMxNzY5NDU2OTFmZGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTEzNyw3
ICsxMzcsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUoTURO
U1JlZ2lzdGVySWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1ha2VVbmlxdWU8UGVuZGluZ1JlZ2lzdHJh
dGlvblJlcXVlc3Q+KG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNzaW9uSUQoKSk7CisgICAgYXV0byBwZW5kaW5n
UmVxdWVzdCA9IG1ha2VVbmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNz
aW9uSUQoKSk7CiAgICAgYXV0byogcmVjb3JkID0gJnBlbmRpbmdSZXF1ZXN0LT5yZWNvcmQ7CiAg
ICAgYXV0byBlcnJvciA9IEROU1NlcnZpY2VSZWdpc3RlclJlY29yZChzZXJ2aWNlLAogICAgICAg
ICByZWNvcmQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAppbmRleCAzNGU3YWI2ZTM0ZDFmMWZhOGZhMjY4
NzJhYTE1YTdhNGMwZWZhYmFkLi5hMWM0NTJkNzdjN2IwNDNkNTg3M2NjMTcyMmZlNDMzZTljYmY5
MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIHZvaWQg
ZG9SZWxlYXNlTG9nZ2luZyhydGM6OkxvZ2dpbmdTZXZlcml0eSBzZXZlcml0eSwgY29uc3QgY2hh
ciogbWVzc2FnZSkKIAogTmV0d29ya1JUQ1Byb3ZpZGVyOjpOZXR3b3JrUlRDUHJvdmlkZXIoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCiAgICAgOiBtX2Nvbm5lY3Rp
b24oJmNvbm5lY3Rpb24pCi0gICAgLCBtX2lwY0Nvbm5lY3Rpb24obWFrZVJlZihjb25uZWN0aW9u
LmNvbm5lY3Rpb24oKSkpCisgICAgLCBtX2lwY0Nvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkpCiAgICAgLCBtX3J0Y01vbml0b3IoKnRoaXMpCiAgICAgLCBtX3J0Y05ldHdvcmtUaHJl
YWQocnRjTmV0d29ya1RocmVhZCgpKQogICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VV
bmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0
b3J5PigmbV9ydGNOZXR3b3JrVGhyZWFkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENUQ1BTb2NrZXRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENUQ1BTb2NrZXRDb2NvYS5tbQpp
bmRleCBjMTFiZDBmYjlhOTU3YWQ3MjY3OWNhM2Q0Y2VjZmRiMTZkNWJkODkwLi43MzQ0ZTVkYTk2
ZjIxNmJmZDQ0N2U0M2YyMWQxMGZiZDNhNDcwNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDVENQU29ja2V0Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1RDUFNvY2tldENv
Y29hLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgTmV0d29ya1JUQ1RDUFNvY2tldENvY29hOjpOZXR3
b3JrUlRDVENQU29ja2V0Q29jb2EoTGliV2ViUlRDU29ja2V0SWRlbnRpZmllciBpZGUKICAgICBt
X253Q29ubmVjdGlvbiA9IGFkb3B0TlMobndfY29ubmVjdGlvbl9jcmVhdGUoaG9zdC5nZXQoKSwg
dGNwVExTLmdldCgpKSk7CiAKICAgICBud19jb25uZWN0aW9uX3NldF9xdWV1ZShtX253Q29ubmVj
dGlvbi5nZXQoKSwgdGNwU29ja2V0UXVldWUoKSk7Ci0gICAgbndfY29ubmVjdGlvbl9zZXRfc3Rh
dGVfY2hhbmdlZF9oYW5kbGVyKG1fbndDb25uZWN0aW9uLmdldCgpLCBtYWtlQmxvY2tQdHIoW2lk
ZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIHJ0Y1Byb3ZpZGVyID0gbWFrZVJlZihydGNQcm92aWRl
ciksIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24uY29weVJlZigpXShud19jb25uZWN0aW9uX3N0
YXRlX3Qgc3RhdGUsIF9OdWxsYWJsZSBud19lcnJvcl90IGVycm9yKSB7CisgICAgbndfY29ubmVj
dGlvbl9zZXRfc3RhdGVfY2hhbmdlZF9oYW5kbGVyKG1fbndDb25uZWN0aW9uLmdldCgpLCBtYWtl
QmxvY2tQdHIoW2lkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIHJ0Y1Byb3ZpZGVyID0gUmVmIHsg
cnRjUHJvdmlkZXIgfSwgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbi5jb3B5UmVmKCldKG53X2Nv
bm5lY3Rpb25fc3RhdGVfdCBzdGF0ZSwgX051bGxhYmxlIG53X2Vycm9yX3QgZXJyb3IpIHsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChlcnJvciwgIWVycm9yKTsKICAgICAgICAgc3dpdGNoIChzdGF0
ZSkgewogICAgICAgICBjYXNlIG53X2Nvbm5lY3Rpb25fc3RhdGVfaW52YWxpZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENVRFBTb2Nr
ZXRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENVRFBTb2NrZXRDb2NvYS5tbQppbmRleCA5YjcxMjk2NTE0Nzg2MmYzY2EyYTUyOTRmMzBhMDE1
NTFkNzIwMTQ1Li5lOTA5NTBmMjI2MzAwNTVlYjc5ZDgwYzhkODhhOGQ4NGMxZWMzNTZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDVURQ
U29ja2V0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1VEUFNvY2tldENvY29hLm1tCkBAIC0yMDAsNyArMjAwLDcgQEAgTmV0d29ya1JU
Q1VEUFNvY2tldENvY29hQ29ubmVjdGlvbnM6Ok5ldHdvcmtSVENVRFBTb2NrZXRDb2NvYUNvbm5l
Y3Rpb25zKFdlYkNvcmUKICAgICBud19saXN0ZW5lcl9zZXRfcXVldWUobV9ud0xpc3RlbmVyLmdl
dCgpLCB1ZHBTb2NrZXRRdWV1ZSgpKTsKIAogICAgIC8vIFRoZSBjYWxsYmFjayBob2xkcyBhIHJl
ZmVyZW5jZSB0byB0aGUgbndfbGlzdGVuZXIgYW5kIHdlIGNsZWFyIGl0IHdoZW4gZ29pbmcgaW4g
bndfbGlzdGVuZXJfc3RhdGVfY2FuY2VsbGVkIHN0YXRlLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hl
biBjbG9zaW5nIHRoZSBzb2NrZXQuCi0gICAgbndfbGlzdGVuZXJfc2V0X3N0YXRlX2NoYW5nZWRf
aGFuZGxlcihtX253TGlzdGVuZXIuZ2V0KCksIG1ha2VCbG9ja1B0cihbbndMaXN0ZW5lciA9IG1f
bndMaXN0ZW5lciwgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbi5jb3B5UmVmKCksIHByb3RlY3Rl
ZFJUQ1Byb3ZpZGVyID0gbWFrZVJlZihydGNQcm92aWRlciksIGlkZW50aWZpZXIgPSBtX2lkZW50
aWZpZXJdKG53X2xpc3RlbmVyX3N0YXRlX3Qgc3RhdGUsIG53X2Vycm9yX3QgZXJyb3IpIG11dGFi
bGUgeworICAgIG53X2xpc3RlbmVyX3NldF9zdGF0ZV9jaGFuZ2VkX2hhbmRsZXIobV9ud0xpc3Rl
bmVyLmdldCgpLCBtYWtlQmxvY2tQdHIoW253TGlzdGVuZXIgPSBtX253TGlzdGVuZXIsIGNvbm5l
Y3Rpb24gPSBtX2Nvbm5lY3Rpb24uY29weVJlZigpLCBwcm90ZWN0ZWRSVENQcm92aWRlciA9IFJl
ZiB7IHJ0Y1Byb3ZpZGVyIH0sIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJdKG53X2xpc3RlbmVy
X3N0YXRlX3Qgc3RhdGUsIG53X2Vycm9yX3QgZXJyb3IpIG11dGFibGUgewogICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7CiAgICAgICAgIGNhc2UgbndfbGlzdGVuZXJfc3RhdGVfaW52YWxpZDoKICAg
ICAgICAgY2FzZSBud19saXN0ZW5lcl9zdGF0ZV93YWl0aW5nOgpAQCAtMjI0LDcgKzIyNCw3IEBA
IE5ldHdvcmtSVENVRFBTb2NrZXRDb2NvYUNvbm5lY3Rpb25zOjpOZXR3b3JrUlRDVURQU29ja2V0
Q29jb2FDb25uZWN0aW9ucyhXZWJDb3JlCiAgICAgICAgIH0KICAgICB9KS5nZXQoKSk7CiAKLSAg
ICBud19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25faGFuZGxlcihtX253TGlzdGVuZXIuZ2V0
KCksIG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShud19jb25u
ZWN0aW9uX3QgY29ubmVjdGlvbikgeworICAgIG53X2xpc3RlbmVyX3NldF9uZXdfY29ubmVjdGlv
bl9oYW5kbGVyKG1fbndMaXN0ZW5lci5nZXQoKSwgbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0obndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pIHsKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IHByb3RlY3RlZFRoaXMtPm1fbndDb25uZWN0aW9uc0xvY2sgfTsKICAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1faXNDbG9zZWQpCiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IGU2ZjgzMmQ5
OGJhNGU4MmIyNWRiNDY5OTE0NmU2NGNhNmMwZTA3YjAuLmQ2ZWE5YzhjYTUzYzlkNTgwMmM2MGI2
ZDNkZDQzMmExODVjOWJkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICB9
CiAKICAgICBpZiAoc2hvdWxkRGlzcGF0Y2gpIHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRDb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRDb25uZWN0aW9uID0gUmVmIHsgY29ubmVjdGlvbiB9XSgpIG11dGFibGUgewogICAgICAg
ICAgICAgZGlzcGF0Y2hNZXNzYWdlc0FuZFJlc2V0RGlkU2NoZWR1bGVEaXNwYXRjaE1lc3NhZ2Vz
Rm9yQ29ubmVjdGlvbihwcm90ZWN0ZWRDb25uZWN0aW9uKTsKICAgICAgICAgfSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDcxMDBjZTcx
MTk0MGU2ZjM3NzBlM2IwNzMzY2JhYTRjMjdiM2M2YTYuLmM3ZDdhNTM2OWQ3MjU1NzQ4ZTMwZWMw
YmUzZWM3YTJkZWVjZjdkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKQEAgLTIxOSw3ICsyMTksNyBAQCBib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91
cyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZQogICAg
IGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
dHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3JlcGx5RW5jb2Rl
ciA9IFdURk1vdmUocmVwbHlFbmNvZGVyKSwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlv
bildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgdHlwZW5hbWUgVDo6RGVsYXllZFJl
cGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3JlcGx5RW5jb2RlciA9IFdURk1vdmUocmVwbHlFbmNv
ZGVyKSwgY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rpb24gfV0gKGF1dG8mJi4uLiBhcmdzKSBt
dXRhYmxlIHsKICAgICAgICAgbG9nUmVwbHkoY29ubmVjdGlvbiwgVDo6bmFtZSgpLCBhcmdzLi4u
KTsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVj
dGlvbiksIGFyZ3MuLi4pOwogICAgIH07CkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBoYW5kbGVN
ZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGUKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhh
bmRsZXIgPSBbcmVwbHlFbmNvZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9u
ID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICB0
eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVwbHlFbmNvZGVy
ID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gUmVmIHsgY29ubmVjdGlvbiB9
XSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBsb2dSZXBseShjb25uZWN0aW9u
LCBUOjpuYW1lKCksIGFyZ3MuLi4pOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUocmVwbHlFbmNv
ZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKQEAgLTI1Nyw3ICsy
NTcsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZSYgY29ubmVjdGlvbiwgRGVjb2RlciYgZAogICAgIGlmIChVTkxJS0VMWSghYXJndW1l
bnRzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNv
bXBsZXRpb25IYW5kbGVyID0gW3N5bmNSZXF1ZXN0SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNv
bm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgIHR5cGVuYW1lIFQ6OkRl
bGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElELCBjb25uZWN0aW9u
ID0gUmVmIHsgY29ubmVjdGlvbiB9XSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAg
ICBsb2dSZXBseShjb25uZWN0aW9uLT5jb25uZWN0aW9uKCksIFQ6Om5hbWUoKSwgYXJncy4uLik7
CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHk8VD4oc3luY1JlcXVlc3RJRCwgYXJn
cy4uLik7CiAgICAgfTsKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3lu
YyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1G
CiAgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQogICAgICAgICByZXR1cm47CiAKLSAgICB0
eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0geyBbbGlzdGVuZXJJRCA9
ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4u
LiBhcmdzKSBtdXRhYmxlIHsKKyAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25I
YW5kbGVyID0geyBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gUmVmIHsg
Y29ubmVjdGlvbiB9XSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgp
LCBsaXN0ZW5lcklEKTsKICAgICAgICAgbG9nUmVwbHkoY29ubmVjdGlvbiwgVDo6bmFtZSgpLCBh
cmdzLi4uKTsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5l
Y3Rpb24pLCBhcmdzLi4uKTsKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VB
c3luY1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNv
ZGVyLAogICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVy
SUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRv
JiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0
aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IFJl
ZiB7IGNvbm5lY3Rpb24gfV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5h
bWUoKSwgbGlzdGVuZXJJRCk7CiAgICAgICAgIGxvZ1JlcGx5KGNvbm5lY3Rpb24sIFQ6Om5hbWUo
KSwgYXJncy4uLik7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShj
b25uZWN0aW9uKSwgYXJncy4uLik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVJlY2VpdmVRdWV1ZXMuaAppbmRleCBjOTg3MTlkNTM1YTU0OWFmMDdhZGVlOGIwNTIw
NmJiZDVhNGFlM2QzLi5hZGIwMjAxYzI1ZGQ5ZTc2YTk3MDY0OGI2ODNkNWUzM2NjOGIwZGRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVl
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVz
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBtZXNzYWdl
KSBmaW5hbAogICAgIHsKLSAgICAgICAgbV9kaXNwYXRjaGVyLmRpc3BhdGNoKFtjb25uZWN0aW9u
ID0gbWFrZVJlZihjb25uZWN0aW9uKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksICZyZWNl
aXZlciA9IG1fcmVjZWl2ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIG1fZGlzcGF0Y2hlci5kaXNw
YXRjaChbY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rpb24gfSwgbWVzc2FnZSA9IFdURk1vdmUo
bWVzc2FnZSksICZyZWNlaXZlciA9IG1fcmVjZWl2ZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBjb25uZWN0aW9uLT5kaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UocmVjZWl2ZXIsIFdU
Rk1vdmUobWVzc2FnZSkpOwogICAgICAgICB9KTsKICAgICB9CkBAIC01NSwxNCArNTUsMTQgQEAg
Y2xhc3MgVGhyZWFkTWVzc2FnZVJlY2VpdmVyUXVldWUgZmluYWwgOiBwdWJsaWMgTWVzc2FnZVJl
Y2VpdmVRdWV1ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
VGhyZWFkTWVzc2FnZVJlY2VpdmVyUXVldWUoQ29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlcikKLSAgICAgICAgOiBtX3JlY2VpdmVyKG1ha2VSZWYocmVjZWl2ZXIpKQor
ICAgICAgICA6IG1fcmVjZWl2ZXIocmVjZWl2ZXIpCiAgICAgewogICAgIH0KICAgICB+VGhyZWFk
TWVzc2FnZVJlY2VpdmVyUXVldWUoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGVucXVl
dWVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiYmIG1lc3NhZ2UpIGZpbmFsCiAgICAgewotICAgICAgICBtX3JlY2VpdmVyLT5kaXNwYXRjaFRv
VGhyZWFkKFtjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKSwgbWVzc2FnZSA9IFdURk1v
dmUobWVzc2FnZSksIHJlY2VpdmVyID0gbV9yZWNlaXZlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAg
bV9yZWNlaXZlci0+ZGlzcGF0Y2hUb1RocmVhZChbY29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rp
b24gfSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHJlY2VpdmVyID0gbV9yZWNlaXZlcl0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmRpc3BhdGNoTWVzc2FnZVJlY2Vp
dmVyTWVzc2FnZShyZWNlaXZlci5nZXQoKSwgV1RGTW92ZShtZXNzYWdlKSk7CiAgICAgICAgIH0p
OwogICAgIH0KQEAgLTc0LDE1ICs3NCwxNSBAQCBjbGFzcyBXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXJRdWV1ZSBmaW5hbCA6IHB1YmxpYyBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJR
dWV1ZShXb3JrUXVldWUmIHF1ZXVlLCBDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXImIHJlY2VpdmVyKQotICAgICAgICA6IG1fcXVldWUobWFrZVJlZihxdWV1ZSkpCi0gICAgICAg
ICwgbV9yZWNlaXZlcihtYWtlUmVmKHJlY2VpdmVyKSkKKyAgICAgICAgOiBtX3F1ZXVlKHF1ZXVl
KQorICAgICAgICAsIG1fcmVjZWl2ZXIocmVjZWl2ZXIpCiAgICAgewogICAgIH0KICAgICB+V29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyUXVldWUoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICB2b2lk
IGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiYmIG1lc3NhZ2UpIGZpbmFsCiAgICAgewotICAgICAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpLCByZWNlaXZlciA9IG1fcmVjZWl2ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIG1fcXVl
dWUtPmRpc3BhdGNoKFtjb25uZWN0aW9uID0gUmVmIHsgY29ubmVjdGlvbiB9LCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKSwgcmVjZWl2ZXIgPSBtX3JlY2VpdmVyXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgY29ubmVjdGlvbi0+ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKHJlY2Vp
dmVyLmdldCgpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IDNhOGU3YTU2NWU4NDc3YTQ3MDNkZDY3OTFhNWE2MmI3MzVmM2QxODcuLmM5YzliYjc1OWRh
M2M4Yzc4MTc2N2FiZDNkYTNmNmRlMDhjMjVlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTE2OCw3ICsxNjgsNyBA
QCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdGFydFJlY2VpdmluZ01l
c3NhZ2VzKFJlY2VpdmVyJiByZWNlaXZlcgogICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9w
YWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOwog
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZWNlaXZlcnNMb2NrIH07CiAgICAgICAgIEFTU0VS
VCghbV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7Ci0gICAgICAgIG1fcmVjZWl2ZXJzLmFkZChr
ZXksIG1ha2VSZWYocmVjZWl2ZXIpKTsKKyAgICAgICAgbV9yZWNlaXZlcnMuYWRkKGtleSwgcmVj
ZWl2ZXIpOwogICAgIH0KICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNl
aXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCA3NTZiMjQwYjZmYTdiYjViZThl
Y2JmZTcwZjk1OWM5ODczMTY3OGUzLi5kMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNi
YTI3YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC01Miw3
ICs1Miw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVm
ZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6
ZSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoewotICAgICAgICBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSAtPiBjb25zdCB1aW50OF90KiB7CisgICAgICAg
IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRU
aGlzLT5kYXRhKCkpOwogICAgICAgICB9LAogICAgICAgICBbZGF0YVNpemVdICgpIC0+IHNpemVf
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggY2IyNzYy
MjNkZTU2MjA4NzBiZGU2YmUyZGI5OGYyMWY5MTk0MDRhZi4uODI2ZWZmYTYzZTVmYzUzYmEwNmVm
YTJhM2U2NjI3MWU4NDYwZjk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcApAQCAtMzczLDcgKzM3Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
Ojp1cGRhdGVTY2VuZVN0YXRlKCkKICAgICAgICAgICAgIHVwZGF0ZUJhY2tpbmdTdG9yZShlbnRy
eS5sYXllci5nZXQoKSwgY29tcG9zaXRpb25TdGF0ZSwgZW50cnkudXBkYXRlKTsKIAogICAgICAg
ICAgICAgaWYgKGNvbXBvc2l0aW9uU3RhdGUuYmFja2luZ1N0b3JlKQotICAgICAgICAgICAgICAg
IGJhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuYWRkKG1ha2VSZWYoKmNvbXBvc2l0aW9u
U3RhdGUuYmFja2luZ1N0b3JlKSk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3Jlc1dpdGhQ
ZW5kaW5nQnVmZmVycy5hZGQoKmNvbXBvc2l0aW9uU3RhdGUuYmFja2luZ1N0b3JlKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGxheWVyc0J5QmFja2luZy5iYWNraW5nU3RvcmUgPSB7IH07CkBAIC0z
ODQsNyArMzg0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5l
U3RhdGUoKQogICAgICAgICAgICAgYXV0byYgcHJveHkgPSBlbnRyeS5wcm94eS5nZXQoKTsKICAg
ICAgICAgICAgIGlmIChlbnRyeS5uZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICAgICAgICAgcHJv
eHkuYWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKHRoaXMsICZlbnRyeS5sYXllci5nZXQoKSk7
Ci0gICAgICAgICAgICBwcm94aWVzRm9yU3dhcHBpbmcuYWRkKG1ha2VSZWYocHJveHkpKTsKKyAg
ICAgICAgICAgIHByb3hpZXNGb3JTd2FwcGluZy5hZGQocHJveHkpOwogICAgICAgICB9CiAKICAg
ICAgICAgbGF5ZXJzQnlCYWNraW5nLmNvbnRlbnRMYXllciA9IHsgfTsKQEAgLTM5Niw3ICszOTYs
NyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAg
ICAgICAgICAgICB1cGRhdGVJbWFnZUJhY2tpbmcoZW50cnkubGF5ZXIuZ2V0KCksIGNvbXBvc2l0
aW9uU3RhdGUsIGVudHJ5LnVwZGF0ZSk7CiAKICAgICAgICAgICAgIGlmIChjb21wb3NpdGlvblN0
YXRlLmJhY2tpbmdTdG9yZSkKLSAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVzV2l0aFBlbmRp
bmdCdWZmZXJzLmFkZChtYWtlUmVmKCpjb21wb3NpdGlvblN0YXRlLmJhY2tpbmdTdG9yZSkpOwor
ICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuYWRkKCpjb21w
b3NpdGlvblN0YXRlLmJhY2tpbmdTdG9yZSk7CiAgICAgICAgIH0KIAogICAgICAgICBsYXllcnNC
eUJhY2tpbmcuaW1hZ2VCYWNraW5nID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdS
dW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXggNTc5MTM3OTJmZTQ4
ZWQ4YWVlNDUyNzQzOTczZmM2N2U2NWRhODY5OS4uZGRiNmJlYjY5ZGM4NjM4NDM4NDZhNTAyZTBi
M2VjNzA5NmFkYjAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC02OCw3ICs2OCw3IEBAIENvbXBvc2l0aW5n
UnVuTG9vcDo6fkNvbXBvc2l0aW5nUnVuTG9vcCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIFJ1bkxvb3AgaXMgc3RvcHBlZCBhZnRlciB0
aGUgQ29tcG9zaXRpbmdSdW5Mb29wLCBiZWNhdXNlIG1fdXBkYXRlVGltZXIgaGFzIGEgcmVmZXJl
bmNlLgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcnVuTG9vcCA9IG1ha2VSZWYoKm1f
cnVuTG9vcCldIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3J1bkxvb3AgPSBSZWYg
eyAqbV9ydW5Mb29wIH1dIHsKICAgICAgICAgcnVuTG9vcC0+c3RvcCgpOwogICAgICAgICBydW5M
b29wLT5kaXNwYXRjaChbXSB7CiAgICAgICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3Js
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcApp
bmRleCAzMjcwODNkYTg4YmVmN2ZiNGQ3OTg4ZGIzNTIwMzA2NjMxNTI3ZDQwLi43YTUxOGEzOGMz
NzE5ODhiMDU1YWFhMTJlYmZlYWU4NTY3YTRkODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcApAQCAtODAsNyArODAsNyBAQCBSZWY8Q29u
dGVudFdvcmxkPiBDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpT
dHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VSZWYoKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogQ29udGVudFdv
cmxkJiBDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQppbmRleCBhYmVhOGEwZWViYjk4M2Jk
OTM0MmQ4NDg3NjI0M2MzZTcwODdhZjg2Li5iNTE5NWViNzJhMmNhZmUxM2U0YjY1NTJkYTcwNTQ4
ZWFkN2Y1NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZC5tbQpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fZGVs
ZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkK
ICAgICAgICAgICAgIHJldHVybiBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5n
ZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3Rl
Y3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKIAotICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkKSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBl
cihjaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hhbGxlbmdlID0g
bWFrZVJlZihjaGFsbGVuZ2UpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25s
b2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjop
KV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNV
UkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgW21fZGVsZWdhdGUg
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOndyYXBwZXIoY2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2No
YWxsZW5nZSA9IFJlZiB7IGNoYWxsZW5nZSB9LCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVj
dG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9u
SGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhh
bmRsZXIoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fZGVs
ZWdhdGUpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZTo6Tm8sIHsgfSk7CiAKLSAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZCkgZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlOnJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Rvd25sb2FkID0gbWFrZVJlZihkb3dubG9hZCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBX
ZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdl
dCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3Bv
bnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkwgKmRlc3Rp
bmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZCkgZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVz
cG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2Rvd25sb2FkID0gUmVmIHsgZG93bmxvYWQgfSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0
KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2U6c3Vn
Z2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTCAqZGVzdGluYXRpb24p
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzVjMjA1NWUwOWJhYmVkZWM4YjQxYjk4
ZjhlNzcwZDM0ODU3NjJjNy4uMDRlNDkyMTJkY2E2MGEyODUzZjRlYWJhOTAxMzM1OTIzYWJmMGY2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0xOTU0LDcgKzE5NTQsNyBAQCAtIChCT09MKV9uZWdvdGlhdGVkTGVnYWN5VExTCiAKIC0g
KHZvaWQpX2ZyYW1lczoodm9pZCAoXikoX1dLRnJhbWVUcmVlTm9kZSAqKSljb21wbGV0aW9uSGFu
ZGxlcgogewotICAgIF9wYWdlLT5nZXRBbGxGcmFtZXMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgcGFnZSA9IG1ha2VSZWYoKl9wYWdlLmdldCgp
KV0gKFdlYktpdDo6RnJhbWVUcmVlTm9kZURhdGEmJiBkYXRhKSB7CisgICAgX3BhZ2UtPmdldEFs
bEZyYW1lcyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpLCBwYWdlID0gUmVmIHsgKl9wYWdlLmdldCgpIH1dIChXZWJLaXQ6OkZyYW1lVHJlZU5vZGVE
YXRhJiYgZGF0YSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKEFQSTo6RnJh
bWVUcmVlTm9kZTo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIHBhZ2UuZ2V0KCkpKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQu
bW0KaW5kZXggMGIzMjkwMDg3OWY3M2I5Nzc2ZjFiZmJiNmFlYzczYzA1NTNmN2FjMC4uMWY0YzU3
MTkzMTI2NWM3NTkxMmY4ZDI0Yzc5NWQwYzUyMmVlNzRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQpAQCAtNjcsNyArNjcsNyBAQCAr
IChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9h
ZAogCiAtICh2b2lkKWNhbmNlbAogewotICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5jYW5jZWwo
W2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkLT5fZG93bmxvYWQpXSAoYXV0byopIHsKKyAg
ICBfZG93bmxvYWQtPl9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9hZCA9IFJlZiB7ICpfZG93bmxv
YWQtPl9kb3dubG9hZCB9XSAoYXV0byopIHsKICAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxl
Z2FjeURpZENhbmNlbChkb3dubG9hZC5nZXQoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZC5jcHAKaW5kZXggMjUw
YTFiOTdkYWQzNDJmNjAyNjZhYTFlOGE0ZTJiYjcwMmY0NGNhZC4uNGZjYTU1ZGJhODE2NWY5MDc4
OGE1ZjM1OTMzZTZhZjkxZWZmMGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkLmNwcApAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQg
d2Via2l0X2Rvd25sb2FkX2NhbmNlbChXZWJLaXREb3dubG9hZCogZG93bmxvYWQpCiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfRE9XTkxPQUQoZG93bmxvYWQpKTsKIAogICAgIGRvd25s
b2FkLT5wcml2LT5pc0NhbmNlbGxlZCA9IHRydWU7Ci0gICAgZG93bmxvYWQtPnByaXYtPmRvd25s
b2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqZG93bmxvYWQtPnByaXYtPmRvd25sb2Fk
KV0gKGF1dG8qKSB7CisgICAgZG93bmxvYWQtPnByaXYtPmRvd25sb2FkLT5jYW5jZWwoW2Rvd25s
b2FkID0gUmVmIHsgKmRvd25sb2FkLT5wcml2LT5kb3dubG9hZCB9XSAoYXV0byopIHsKICAgICAg
ICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENhbmNlbChkb3dubG9hZC5nZXQoKSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDJlNDcxYWIxNDk2YWIxZjJhOWMz
MmEwMGJiYzc5ZWJkMGVmOGFlZTkuLjUxNDNhYmVlMjQ0MmExZDA3ZWNlODRmOWIwZmUzYTkzMWM1
YTA3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXQKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIHBhZ2UtPmdldFdpbmRv
d0ZyYW1lV2l0aENhbGxiYWNrKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGFnZSA9
IG1ha2VSZWYoKnBhZ2UpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXZWJDb3JlOjpG
bG9hdFJlY3Qgd2luZG93RnJhbWUpIG11dGFibGUgeworICAgIHBhZ2UtPmdldFdpbmRvd0ZyYW1l
V2l0aENhbGxiYWNrKFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcGFnZSA9IFJlZiB7
ICpwYWdlIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdlYkNvcmU6OkZsb2F0UmVj
dCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2Vzcyhw
cm90ZWN0ZWRUaGlzLT5idWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2UocGFnZS5nZXQoKSwgd2lu
ZG93RnJhbWUpKTsKICAgICB9KTsKIH0KQEAgLTM3Myw3ICszNzMsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFt
ZU5vdEZvdW5kKTsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWxzbyBzd2l0Y2ggdG8gdGhl
IGZyYW1lIHRoYXQgZnJhbWVIYW5kbGUgcG9pbnRzIHRvPwotICAgIG1fY2xpZW50LT5yZXF1ZXN0
U3dpdGNoVG9QYWdlKCp0aGlzLCAqcGFnZSwgW3BhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSB7CisgICAgbV9jbGllbnQtPnJlcXVlc3RTd2l0Y2hU
b1BhZ2UoKnRoaXMsICpwYWdlLCBbcGFnZSA9IFJlZiB7ICpwYWdlIH0sIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgewogICAgICAgICBwYWdlLT5zZXRGb2N1cyh0cnVlKTsKIAogICAg
ICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsU2hvd0phdmFTY3JpcHREaWFsb2coV2ViUGFnZVByb3h5
JiBwYWdlKQogICAgIC8vIHRoZSBsb2FkIGluIGNhc2Ugb2Ygbm9ybWFsIHN0cmF0ZWd5LCBzbyB3
ZSB3YW50IHRvIGRpc3BhdGNoIGFsbCBwZW5kaW5nIG5hdmlnYXRpb24gY2FsbGJhY2tzLgogICAg
IC8vIElmIHRoZSBkaWFsb2cgd2FzIHNob3duIGR1cmluZyBhIHNjcmlwdCBleGVjdXRpb24sIHdl
IHdhbnQgdG8gZmluaXNoIHRoZSBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbgogICAgIC8vIG9w
ZXJhdGlvbiB3aXRoIGFuIHVuZXhwZWN0ZWQgYWxlcnQgb3BlbiBlcnJvci4KLSAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBw
YWdlID0gbWFrZVJlZihwYWdlKV0geworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhZ2UgPSBSZWYgeyBwYWdlIH1dIHsK
ICAgICAgICAgaWYgKCFwYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpIHx8ICFtX2NsaWVudCB8fCAh
bV9jbGllbnQtPmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2dPblBhZ2UoKnRoaXMsIHBhZ2UpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjEwLDcgKzE2MTAsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpyZXNldENsaWNrQ291bnQoKQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUlu
dGVyYWN0aW9uIGludGVyYWN0aW9uLCBNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgY29uc3QgU3RyaW5nJiBwb2ludGVy
VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21t
YW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBwYWdlLmdldFdpbmRvd0Zy
YW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcGFnZSA9IG1ha2VS
ZWYocGFnZSksIGludGVyYWN0aW9uLCBtb3VzZUJ1dHRvbiwgbG9jYXRpb25JblZpZXdwb3J0LCBw
b2ludGVyVHlwZV0oV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lKSBtdXRhYmxlIHsKKyAg
ICBwYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgcGFnZSA9IFJlZiB7IHBhZ2UgfSwgaW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBsb2Nh
dGlvbkluVmlld3BvcnQsIHBvaW50ZXJUeXBlXShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJh
bWUpIG11dGFibGUgewogICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjptaW4oc3RkOjptYXgo
MC4wZiwgKGZsb2F0KWxvY2F0aW9uSW5WaWV3cG9ydC54KCkpLCB3aW5kb3dGcmFtZS5zaXplKCku
d2lkdGgoKSk7CiAgICAgICAgIGF1dG8gY2xpcHBlZFkgPSBzdGQ6Om1pbihzdGQ6Om1heCgwLjBm
LCAoZmxvYXQpbG9jYXRpb25JblZpZXdwb3J0LnkoKSksIHdpbmRvd0ZyYW1lLnNpemUoKS5oZWln
aHQoKSk7CiAgICAgICAgIGlmIChjbGlwcGVkWCAhPSBsb2NhdGlvbkluVmlld3BvcnQueCgpIHx8
IGNsaXBwZWRZICE9IGxvY2F0aW9uSW5WaWV3cG9ydC55KCkpIHsKQEAgLTE2ODksNyArMTY4OSw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlv
bihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9XSEVFTF9J
TlRFUkFDVElPTlMpCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVdoZWVsSW50
ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9j
YXRpb25JblZpZXdwb3J0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBkZWx0YSwgQXV0b21hdGlv
bkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcGFnZS5nZXRX
aW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhZ2Ug
PSBtYWtlUmVmKHBhZ2UpLCBsb2NhdGlvbkluVmlld3BvcnQsIGRlbHRhXShXZWJDb3JlOjpGbG9h
dFJlY3Qgd2luZG93RnJhbWUpIG11dGFibGUgeworICAgIHBhZ2UuZ2V0V2luZG93RnJhbWVXaXRo
Q2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYWdlID0gUmVmIHsgcGFnZSB9
LCBsb2NhdGlvbkluVmlld3BvcnQsIGRlbHRhXShXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJh
bWUpIG11dGFibGUgewogICAgICAgICBhdXRvIGNsaXBwZWRYID0gc3RkOjptaW4oc3RkOjptYXgo
MC4wZiwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxvY2F0aW9uSW5WaWV3cG9ydC54KCkpKSwgd2luZG93
RnJhbWUuc2l6ZSgpLndpZHRoKCkpOwogICAgICAgICBhdXRvIGNsaXBwZWRZID0gc3RkOjptaW4o
c3RkOjptYXgoMC4wZiwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxvY2F0aW9uSW5WaWV3cG9ydC55KCkp
KSwgd2luZG93RnJhbWUuc2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgaWYgKGNsaXBwZWRYICE9
IGxvY2F0aW9uSW5WaWV3cG9ydC54KCkgfHwgY2xpcHBlZFkgIT0gbG9jYXRpb25JblZpZXdwb3J0
LnkoKSkgewpAQCAtMTc3NSw3ICsxNzc1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXUKICAg
ICAgICAga2V5TW9kaWZpZXJzLmFkZChwcm90b2NvbE1vZGlmaWVyVG9XZWJFdmVudE1vZGlmaWVy
KHBhcnNlZE1vZGlmaWVyLnZhbHVlKCkpKTsKICAgICB9CiAKLSAgICBwYWdlLT5nZXRXaW5kb3dG
cmFtZVdpdGhDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgZmxvYXRY
LCBmbG9hdFksIG1vdXNlSW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBrZXlNb2RpZmllcnNdKFdl
YkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CisgICAgcGFnZS0+Z2V0V2lu
ZG93RnJhbWVXaXRoQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gUmVmIHsgKnBhZ2UgfSwgZmxv
YXRYLCBmbG9hdFksIG1vdXNlSW50ZXJhY3Rpb24sIG1vdXNlQnV0dG9uLCBrZXlNb2RpZmllcnNd
KFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZSkgbXV0YWJsZSB7CiAgICAgICAgIGZsb2F0
WCA9IHN0ZDo6bWluKHN0ZDo6bWF4KDAuMGYsIGZsb2F0WCksIHdpbmRvd0ZyYW1lLnNpemUoKS53
aWR0aCgpKTsKICAgICAgICAgZmxvYXRZID0gc3RkOjptaW4oc3RkOjptYXgoMC4wZiwgZmxvYXRZ
KSwgd2luZG93RnJhbWUuc2l6ZSgpLmhlaWdodCgpKTsKIApAQCAtMTg3Myw3ICsxODczLDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUtleWJvYXJkSW50ZXJhY3Rpb25zKGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2wKICAgICBpZiAoIWFjdGlvbnNUb1BlcmZvcm0uc2l6ZSgp
KQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhJ
bnRlcm5hbEVycm9yLCAiTm8gYWN0aW9ucyB0byBwZXJmb3JtLiIpOwogCi0gICAgYXV0byBrZXli
b2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWYoKnBhZ2UpXShz
dGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSB7CisgICAgYXV0byBr
ZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFjayA9IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IFJlZiB7ICpwYWdlIH1d
KHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIHsKICAgICAgICAg
aWYgKGVycm9yKQogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yLnZhbHVl
KCkudG9Qcm90b2NvbFN0cmluZygpKTsKICAgICAgICAgZWxzZQpAQCAtMjIwNiw3ICsyMjA2LDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjoKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBGdW5j
dGlvbjx2b2lkKFdlYlBhZ2VQcm94eSYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4m
JiwgUmVmPFRha2VTY3JlZW5zaG90Q2FsbGJhY2s+JiYpPiB0YWtlVmlld1NuYXBzb3QgPSBbXShX
ZWJQYWdlUHJveHkmIHBhZ2UsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJiByZWN0
LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJiBjYWxsYmFjaykgewotICAgICAgICBwYWdl
LmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoW3BhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBy
ZWN0ID0gV1RGTW92ZShyZWN0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgcGFnZS5jYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFtwYWdl
ID0gUmVmIHsgcGFnZSB9LCByZWN0ID0gV1RGTW92ZShyZWN0KSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgYXV0byBzbmFwc2hvdCA9IHBh
Z2UtPnRha2VWaWV3U25hcHNob3QoV1RGTW92ZShyZWN0KSk7CiAgICAgICAgICAgICBpZiAoIXNu
YXBzaG90KQpAQCAtMjIyNSw3ICsyMjI1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjoKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0JiYpPiBjb21wbGV0aW9uSGFuZGxlciA9
IFtwYWdlID0gbWFrZVJlZigqcGFnZSksIGNhbGxiYWNrLCB0YWtlVmlld1NuYXBzb3QgPSBXVEZN
b3ZlKHRha2VWaWV3U25hcHNvdCldKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdl
YkNvcmU6OkludFJlY3QmJiByZWN0KSBtdXRhYmxlIHsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCYmKT4gY29tcGxldGlv
bkhhbmRsZXIgPSBbcGFnZSA9IFJlZiB7ICpwYWdlIH0sIGNhbGxiYWNrLCB0YWtlVmlld1NuYXBz
b3QgPSBXVEZNb3ZlKHRha2VWaWV3U25hcHNvdCldKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIFdlYkNvcmU6OkludFJlY3QmJiByZWN0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVy
cm9yVHlwZSkgewogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklOR19GT1Jf
UFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNz
UmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCmluZGV4IDRmZjU0MTMxZDM2MGUyY2Zh
OTY3ODMyMDdjMTAyZjRlZjBkNzJhODEuLmIxNjkwNWY4YmZkNjEzZGQ1OWQ0MzI4ZjljNGJlMTA1
MjYyY2YwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tncm91bmRQ
cm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcApAQCAtMTE2LDcgKzEx
Niw3IEBAIHZvaWQgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyOjpzZXRSZXNw
b25zaXZlKGJvb2wgaXNSZXNwb25zaXZlKQogICAgIGlmIChtX2lzUmVzcG9uc2l2ZSA9PSBpc1Jl
c3BvbnNpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcHJvdGVjdGVkQ2xpZW50ID0g
bWFrZVJlZihjbGllbnQoKSk7CisgICAgUmVmIHByb3RlY3RlZENsaWVudCB7IGNsaWVudCgpIH07
CiAKICAgICBjbGllbnQoKS53aWxsQ2hhbmdlSXNSZXNwb25zaXZlKCk7CiAgICAgbV9pc1Jlc3Bv
bnNpdmUgPSBpc1Jlc3BvbnNpdmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDU0NmVjZDA1ZGJjZmI5NWZlNGRm
NzRkMWIzYTE1NDM0ZjcyYTE2MTguLjBmYjdlOGFkOTliYTQ3MWY4OWRmMWFlOTEwOTgzMzIxNjgw
ZWJiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2Fj
eURvd25sb2FkQ2xpZW50Lm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9h
ZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkm
IGRvd24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFttX2RlbGVnYXRlIF9kb3dubG9h
ZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KV0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tlciA9
IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdl
dCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CisgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3Jh
cHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IFJlZiB7IGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIH0sIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9k
ZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVu
dGlhbCkgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21w
bGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCmluZGV4IDhjMDBmYTdhOTM5ZGMwYjlkNDIzYWU1MjU1MzA5Mjc5NmI3
NzgzZTMuLmQ0ZThkNmViZGVmOTJkNGIyZmEwZjE3Mzc1Njg0NjMyM2FlMDc1MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTQ3
MSw3ICs0NzEsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgIGlmICghbV9uYXZpZ2F0
aW9uU3RhdGUgfHwgKCFtX25hdmlnYXRpb25TdGF0ZS0+bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVy
CiAgICAgICAgICYmICFtX25hdmlnYXRpb25TdGF0ZS0+bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uV2l0aFByZWZlcmVuY2Vz
VXNlckluZm9EZWNpc2lvbkhhbmRsZXIKICAgICAgICAgJiYgIW1fbmF2aWdhdGlvblN0YXRlLT5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25XaXRoUHJlZmVyZW5jZXNEZWNpc2lvbkhhbmRsZXIpKSB7Ci0gICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBbd2ViUGFnZSA9IG1ha2VSZWYod2ViUGFnZVByb3h5KSwgbGlz
dGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKSwgbmF2aWdhdGlvbkFjdGlvbiwgZGVmYXVsdFdlYnNp
dGVQb2xpY2llc10gKGJvb2wgaW50ZXJjZXB0ZWROYXZpZ2F0aW9uKSB7CisgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBbd2ViUGFnZSA9IFJlZiB7IHdlYlBhZ2VQcm94eSB9LCBsaXN0
ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpLCBuYXZpZ2F0aW9uQWN0aW9uLCBkZWZhdWx0V2Vic2l0
ZVBvbGljaWVzXSAoYm9vbCBpbnRlcmNlcHRlZE5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGlm
IChpbnRlcmNlcHRlZE5hdmlnYXRpb24pIHsKICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+aWdu
b3JlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgfSkoKTsKIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCks
IHNlbGVjdG9yRm9yQ29tcGxldGlvbkhhbmRsZXJDaGVja2VyKTsKLSAgICBhdXRvIGRlY2lzaW9u
SGFuZGxlcldpdGhQcmVmZXJlbmNlc09yUG9saWNpZXMgPSBbbG9jYWxMaXN0ZW5lciA9IFdURk1v
dmUobGlzdGVuZXIpLCBuYXZpZ2F0aW9uQWN0aW9uLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KSwgd2ViUGFnZVByb3h5ID0gbWFrZVJlZih3ZWJQYWdlUHJveHkpLCBzdWJmcmFtZU5hdmlnYXRp
b24sIGRlZmF1bHRXZWJzaXRlUG9saWNpZXNdIChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgYWN0
aW9uUG9saWN5LCBXS1dlYnBhZ2VQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpIG11dGFibGUgewor
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyV2l0aFByZWZlcmVuY2VzT3JQb2xpY2llcyA9IFtsb2Nh
bExpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lciksIG5hdmlnYXRpb25BY3Rpb24sIGNoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpLCB3ZWJQYWdlUHJveHkgPSBSZWYgeyB3ZWJQYWdlUHJveHkgfSwg
c3ViZnJhbWVOYXZpZ2F0aW9uLCBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzXSAoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5IGFjdGlvblBvbGljeSwgV0tXZWJwYWdlUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTk3Nyw3ICs5NzcsNyBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFdlYlBhZwogICAgICAgICByZXR1cm4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKIAogICAgIGF1dG8g
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2NoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwp
IHsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJW
aWV3IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoYWxsZW5nZSA9
IFJlZiB7IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIH0sIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5T
VVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZGRjMTQ4Yjc1Yzg1NTJlY2NkMGZkZGE4
YjlkZGM4MDg5NDRmNmI4Yi4uMTFiN2E0MDU4YTViNjQxYWI4ODRhOTc2NTc3Y2YyMTAzYmNiNmJk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0x
MTIwLDcgKzExMjAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogICAgIC8vIEZJWE1FOiBQ
cm92aWRlIGEgc3BlY2lmaWMgZGVsZWdhdGUgZm9yIGRpc3BsYXkgY2FwdHVyZS4KICAgICBpZiAo
IXJlcXVlc3QucmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpICYmIHJlc3BvbmRzVG9SZXF1ZXN0TWVk
aWFDYXB0dXJlUGVybWlzc2lvbikgewogICAgICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnJl
cXVlc3RNZWRpYUNhcHR1cmVQZXJtaXNzaW9uRm9yT3JpZ2luOmluaXRpYXRlZEJ5RnJhbWU6dHlw
ZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildKFdLUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSB7CisgICAg
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRSZXF1ZXN0
ID0gUmVmIHsgcmVxdWVzdCB9LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oV0tQZXJtaXNz
aW9uRGVjaXNpb24gZGVjaXNpb24pIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0
aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTExNjgsNyAr
MTE2OCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAgICAgfQogCiAgICAgYXV0byBjaGVj
a2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLCBAc2Vs
ZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JEZXZpY2VzOnVy
bDptYWluRnJhbWVVUkw6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIGF1dG8gZGVjaXNpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwg
Y2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKEJPT0wgYXV0aG9yaXplZCkgeworICAgIGF1dG8g
ZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gUmVmIHsg
cmVxdWVzdCB9LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oQk9PTCBhdXRob3JpemVkKSB7
CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25I
YW5kbGVyKCk7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV2ViUGFnZVByb3h5JiBwYWdlLAog
CiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
OmluY2x1ZGVTZW5zaXRpdmVNZWRpYURldmljZURldGFpbHM6KV0pIHsKICAgICAgICAgYXV0byBj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdl
dCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6aW5jbHVkZVNlbnNpdGl2ZU1lZGlhRGV2aWNlRGV0YWls
czopKTsKLSAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3Byb3Rl
Y3RlZFJlcXVlc3QgPSBtYWtlUmVmKHJlcXVlc3QpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KV0oQk9PTCBpbmNsdWRlU2Vuc2l0aXZlRGV0YWlscykgeworICAgICAgICBhdXRvIGRlY2lzaW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihbcHJvdGVjdGVkUmVxdWVzdCA9IFJlZiB7IHJlcXVlc3Qg
fSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKEJPT0wgaW5jbHVkZVNlbnNpdGl2ZURldGFp
bHMpIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5D
YWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTEyMTMsNyArMTIxMyw3IEBAIHZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihXZWJQ
YWdlUHJveHkmIHBhZ2UsCiAgICAgfQogCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZp
ZXc6Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJMOm1haW5GcmFtZVVSTDpmcmFtZUlkZW50
aWZpZXI6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKFtwcm90ZWN0ZWRSZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildKE5TU3RyaW5nKiwgQk9PTCBhdXRob3JpemVkKSB7CisgICAgYXV0
byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3Byb3RlY3RlZFJlcXVlc3QgPSBSZWYg
eyByZXF1ZXN0IH0sIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShOU1N0cmluZyosIEJPT0wg
YXV0aG9yaXplZCkgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNC
ZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENh
bGxDb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCmluZGV4IDg0ZDhkMzZjOTcyMzAxMjZi
NjU5MmFlYmEyZDA1NzUxZDYxZmI4ZDcuLjNjMDc3NzRiZDkxNGJiOTUwZTIwNTg4NGQ3Mjk0N2E1
MDc2NmQ4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2Fm
ZUJyb3dzaW5nV2FybmluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
S1NhZmVCcm93c2luZ1dhcm5pbmcubW0KQEAgLTMwMyw3ICszMDMsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhGcmFtZTooUmVjdFR5cGUpZnJhbWUgc2FmZUJyb3dzaW5nV2FybmluZzooY29u
c3QgV2ViS2l0OgogI2VuZGlmCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVz
dWx0KSk7CiAgICAgfTsKLSAgICBfd2FybmluZyA9IG1ha2VSZWYod2FybmluZyk7CisgICAgX3dh
cm5pbmcgPSAmd2FybmluZzsKICNpZiBQTEFURk9STShNQUMpCiAgICAgW3NlbGYgc2V0U2FmZUJy
b3dzaW5nQmFja2dyb3VuZENvbG9yOmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6QmFja2dyb3Vu
ZCwgc2VsZildOwogICAgIFtzZWxmIGFkZENvbnRlbnRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCA0MjM0ZTJkMmMxYTUx
ZTE1YjgyNGIwY2UyNzhmZTYyMWQ0ODRiODQ1Li4yYWI1MGRkNzZmZDNhZTNjZjMxZjZmODJlYmRm
NWI3YTI3MWJlZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYgdXJsLCBib29sIGZvck1haW5GcmFt
ZU5hdmlnCiAgICAgU1NCTG9va3VwQ29udGV4dCAqY29udGV4dCA9IFtTU0JMb29rdXBDb250ZXh0
IHNoYXJlZExvb2t1cENvbnRleHRdOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJu
IGxpc3RlbmVyLmRpZFJlY2VpdmVTYWZlQnJvd3NpbmdSZXN1bHRzKHsgfSk7Ci0gICAgW2NvbnRl
eHQgbG9va1VwVVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2xpc3RlbmVy
ID0gbWFrZVJlZihsaXN0ZW5lciksIGZvck1haW5GcmFtZU5hdmlnYXRpb24sIHVybCA9IHVybF0g
KFNTQkxvb2t1cFJlc3VsdCAqcmVzdWx0LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAg
W2NvbnRleHQgbG9va1VwVVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2xp
c3RlbmVyID0gUmVmIHsgbGlzdGVuZXIgfSwgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgdXJsID0g
dXJsXSAoU1NCTG9va3VwUmVzdWx0ICpyZXN1bHQsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtsaXN0ZW5lciA9IFdURk1vdmUobGlz
dGVuZXIpLCByZXN1bHQgPSByZXRhaW5QdHIocmVzdWx0KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJy
b3IpLCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCB1cmwgPSBXVEZNb3ZlKHVybCldIHsKICAgICAg
ICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5kaWRSZWNlaXZl
U2FmZUJyb3dzaW5nUmVzdWx0cyh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDU3YjU2NWNiNGJhYWY2ZTJlN2Yw
MGE4Y2JlMGQyMTdlY2NmNmVmNmYuLjQ2Mzg0ZTQyZjkxZTE0YzEyMjE1NGNiOTA3NTBkMjllYjJk
NDZlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
CiAgICAgaWYgKCFtX2RhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5ID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6
Y3JlYXRlKFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBjaGFsbGVuZ2VJRCwgbWFr
ZVJlZigqbV9kYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuY29ubmVjdGlvbigpKSwgbnVsbHB0
cik7CisgICAgYXV0byBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5ID0gQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
LCBjaGFsbGVuZ2VJRCwgKm1fZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLmNvbm5lY3Rpb24o
KSwgbnVsbHB0cik7CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggZTQ5YTRk
N2VlYjgzYTZiN2YyNTZkZmRjNWIyY2FlNmE1YjNkNGQ3Ni4uOTI5ZWZkOTNmMjFiYTY0ODNkNDU4
ZTMwNDM3ZTM4MWE2N2FmZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgRHJhd2luZ0FyZWFQcm94eTo6RHJhd2lu
Z0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGUgdHlwZSwgV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHIK
ICAgICA6IG1fdHlwZSh0eXBlKQogICAgICwgbV9pZGVudGlmaWVyKERyYXdpbmdBcmVhSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94eSkKLSAg
ICAsIG1fcHJvY2VzcyhtYWtlUmVmKHByb2Nlc3MpKQorICAgICwgbV9wcm9jZXNzKHByb2Nlc3Mp
CiAgICAgLCBtX3NpemUod2ViUGFnZVByb3h5LnZpZXdTaXplKCkpCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICwgbV92aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmRHJhd2luZ0FyZWFQcm94eTo6dmlld0V4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyRmlyZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApp
bmRleCBiZTVlNjZjMGZhNTUzMmRiNWViMzMyYjdiOTA1ZDI1MmRmODBjZjc4Li5iYzdlNTAyYmIy
OTVjMmI3MTU4Mzc0NTdlZWVlMDQ2ZDIwZmFiNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdG9yOjoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWdpc3RlckV4dGVuc2lvbiB7
IGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSB9LCBbc3Ryb25nVGhpcyA9IG1ha2VSZWYoKndlYWtU
aGlzLmdldCgpKSwgZXh0ZW5zaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpSZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSB9LCBbc3Ry
b25nVGhpcyA9IFJlZiB7ICp3ZWFrVGhpcy5nZXQoKSB9LCBleHRlbnNpb25JRCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
ICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB3ZWFr
VGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVu
c2lvbklEIH0sIFtzdHJvbmdUaGlzID0gbWFrZVJlZigqd2Vha1RoaXMuZ2V0KCkpLCBleHRlbnNp
b25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oRXhw
ZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlVucmVnaXN0ZXJFeHRl
bnNpb24geyBleHRlbnNpb25JRCB9LCBbc3Ryb25nVGhpcyA9IFJlZiB7ICp3ZWFrVGhpcy5nZXQo
KSB9LCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBlOGVhODBiZjg5MTEwNjRlNDRhMjNkYmI3YjQzODI0MjlkNTljNWU5Li4zNjVhNjE5
ZDdhOGFlODFhNjAzM2IwNjcxMTQ3ZTAxYWNjZGQ0MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTM5
MCw5ICszOTAsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgICAgICAgICAgc3RvcmUt
PmFkZFNlY0tleVByb3h5U3RvcmUoV1RGTW92ZShuZXdTZWNLZXlQcm94eVN0b3JlKSk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgYXV0byBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShXVEZNb3ZlKGNvcmVDaGFsbGVuZ2UpLCBjaGFs
bGVuZ2VJRCwgbWFrZVJlZigqY29ubmVjdGlvbigpKSwgV1RGTW92ZShzZWNLZXlQcm94eVN0b3Jl
KSk7CisgICAgYXV0byBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OmNyZWF0ZShXVEZNb3ZlKGNvcmVDaGFsbGVuZ2UpLCBjaGFsbGVuZ2VJRCwg
KmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzZWNLZXlQcm94eVN0b3JlKSk7CiAjZWxzZQotICAgIGF1
dG8gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
OjpjcmVhdGUoV1RGTW92ZShjb3JlQ2hhbGxlbmdlKSwgY2hhbGxlbmdlSUQsIG1ha2VSZWYoKmNv
bm5lY3Rpb24oKSksIG51bGxwdHIpOworICAgIGF1dG8gYXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoV1RGTW92ZShjb3JlQ2hhbGxl
bmdlKSwgY2hhbGxlbmdlSUQsICpjb25uZWN0aW9uKCksIG51bGxwdHIpOwogI2VuZGlmCiAKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBudWxscHRyOwpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVn
aXN0cmFibGVEb21haW5zKFBBTDoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdlYnNp
dGVEYXRhU3RvcmUtPmZldGNoRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhkYXRhVHlwZXMsIGZl
dGNoT3B0aW9ucywgV1RGTW92ZShkb21haW5zKSwgW2RhdGFUeXBlcywgd2Vic2l0ZURhdGFTdG9y
ZSA9IG1ha2VSZWYoKndlYnNpdGVEYXRhU3RvcmUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmIG1hdGNo
aW5nRGF0YVJlY29yZHMsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9t
YWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSBtdXRhYmxlIHsKKyAgICB3ZWJzaXRlRGF0YVN0
b3JlLT5mZXRjaERhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoZGF0YVR5cGVzLCBmZXRjaE9wdGlv
bnMsIFdURk1vdmUoZG9tYWlucyksIFtkYXRhVHlwZXMsIHdlYnNpdGVEYXRhU3RvcmUgPSBSZWYg
eyAqd2Vic2l0ZURhdGFTdG9yZSB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiYmIG1hdGNoaW5nRGF0YVJl
Y29yZHMsIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWluc1dpdGhN
YXRjaGluZ0RhdGFSZWNvcmRzKSBtdXRhYmxlIHsKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS0+
cmVtb3ZlRGF0YShkYXRhVHlwZXMsIFdURk1vdmUobWF0Y2hpbmdEYXRhUmVjb3JkcyksIFtkb21h
aW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMgPSBXVEZNb3ZlKGRvbWFpbnNXaXRoTWF0Y2hpbmdE
YXRhUmVjb3JkcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShk
b21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCmluZGV4IDBlMDIyNGEzNTQ5MTRiZTc0ODM5
M2RjMjZmODdiNjA0OTg1YjgyMzYuLjA0NzExYjIxM2FhZTc1OTQ4MDQzYzA2ZjEzNWIyMjU3Njky
ZjI1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCkBAIC00
NzcsNyArNDc3LDcgQEAgdm9pZCBQYWdlTG9hZFN0YXRlOjpkaWRDaGFuZ2VQcm9jZXNzSXNSZXNw
b25zaXZlKCkKIAogdm9pZCBQYWdlTG9hZFN0YXRlOjpjYWxsT2JzZXJ2ZXJDYWxsYmFjayh2b2lk
IChPYnNlcnZlcjo6KmNhbGxiYWNrKSgpKQogewotICAgIGF1dG8gcHJvdGVjdGVkUGFnZSA9IG1h
a2VSZWYobV93ZWJQYWdlUHJveHkpOworICAgIFJlZiBwcm90ZWN0ZWRQYWdlIHsgbV93ZWJQYWdl
UHJveHkgfTsKIAogICAgIGF1dG8gb2JzZXJ2ZXJDb3B5ID0gbV9vYnNlcnZlcnM7CiAgICAgZm9y
IChhdXRvKiBvYnNlcnZlciA6IG9ic2VydmVyQ29weSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAppbmRleCA0MWYwYjE1N2NhMjMzMDU1ZTMy
NTJlMDc1NmVlOGI3NTA5YmNhNjk1Li4xNzE4ODg0ZTVlNzhlMjUxMGNiMTIyZjczNjk0M2VmODRl
ZTA3YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVz
c1RpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFJlc3BvbnNpdmVuZXNzVGltZXI6OnRpbWVy
RmlyZWQoKQogICAgIGlmICghbV9pc1Jlc3BvbnNpdmUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gcHJvdGVjdGVkQ2xpZW50ID0gbWFrZVJlZihtX2NsaWVudCk7CisgICAgUmVmIHByb3Rl
Y3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAoIW1heUJlY29tZVVucmVzcG9uc2l2
ZSgpKSB7CiAgICAgICAgIG1fd2FpdGluZ0ZvclRpbWVyID0gdHJ1ZTsKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIFJlc3BvbnNpdmVuZXNzVGltZXI6OnN0YXJ0V2l0aExhenlTdG9wKCkKIHZvaWQg
UmVzcG9uc2l2ZW5lc3NUaW1lcjo6c3RvcCgpCiB7CiAgICAgaWYgKCFtX2lzUmVzcG9uc2l2ZSkg
ewotICAgICAgICBhdXRvIHByb3RlY3RlZENsaWVudCA9IG1ha2VSZWYobV9jbGllbnQpOworICAg
ICAgICBSZWYgcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgICAgICAvLyBXZSBn
b3QgYSBsaWZlIHNpZ24gZnJvbSB0aGUgd2ViIHByb2Nlc3MuCiAgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VJc1Jlc3BvbnNpdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAppbmRleCA1YWM0ZmI2MjZhOWY1NDEyN2M0NjMyY2NhMzFkYjk0NTljODI3NzdkLi5iMzkzN2Fj
MDQzNzczOTJkMzBiMTgzM2RlZTBjMDFlNmNhMTY4OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC0yMzcsMTMgKzIzNywxMyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFudFJlcXVlc3QoVXNlck1lZGlhUGVybWlzc2lv
blJlcQogICAgICAgICBtX3BhZ2Uud2lsbFN0YXJ0Q2FwdHVyZShyZXF1ZXN0LCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHRy
dWUpOwogICAgICAgICB9KTsKLSAgICAgICAgbV9ncmFudGVkUmVxdWVzdHMuYXBwZW5kKG1ha2VS
ZWYocmVxdWVzdCkpOworICAgICAgICBtX2dyYW50ZWRSZXF1ZXN0cy5hcHBlbmQocmVxdWVzdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvJiB1c2VyTWVkaWFEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luID0gcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCk7
CiAgICAgYXV0byYgdG9wTGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gcmVxdWVzdC50b3BM
ZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKLSAgICBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9y
ZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbih1
c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCB0b3BMZXZlbERvY3VtZW50U2VjdXJpdHlP
cmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9IG1h
a2VSZWYocmVxdWVzdCldKFN0cmluZyYmKSBtdXRhYmxlIHsKKyAgICBtX3BhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkuZGV2aWNlSWRIYXNoU2FsdEZvck9y
aWdpbih1c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCB0b3BMZXZlbERvY3VtZW50U2Vj
dXJpdHlPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVz
dCA9IFJlZiB7IHJlcXVlc3QgfV0oU3RyaW5nJiYpIG11dGFibGUgewogICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmaW5pc2hHcmFudGluZ1JlcXVl
c3QocmVxdWVzdCk7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6ZmluaXNoR3JhbnRpbmdSZXF1ZXN0KFVzZXJNZWRpYVBlcm0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGFnZS53aWxsU3RhcnRDYXB0dXJlKHJl
cXVlc3QsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzdHJvbmdSZXF1ZXN0
ID0gbWFrZVJlZihyZXF1ZXN0KV0oKSBtdXRhYmxlIHsKKyAgICBtX3BhZ2Uud2lsbFN0YXJ0Q2Fw
dHVyZShyZXF1ZXN0LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc3Ryb25n
UmVxdWVzdCA9IFJlZiB7IHJlcXVlc3QgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzg2LDcgKzM4Niw3IEBAIGJvb2wgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Ondhc1JlcXVlc3REZW5pZWQoY29u
c3QgVXNlck1lZGlhUGVyCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5Ojp1cGRhdGVTdG9yZWRSZXF1ZXN0cyhVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5
JiByZXF1ZXN0KQogewogICAgIGlmIChyZXF1ZXN0LnJlcXVlc3RUeXBlKCkgPT0gTWVkaWFTdHJl
YW1SZXF1ZXN0OjpUeXBlOjpVc2VyTWVkaWEpCi0gICAgICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFw
cGVuZChtYWtlUmVmKHJlcXVlc3QpKTsKKyAgICAgICAgbV9ncmFudGVkUmVxdWVzdHMuYXBwZW5k
KHJlcXVlc3QpOwogCiAgICAgbV9kZW5pZWRSZXF1ZXN0cy5yZW1vdmVBbGxNYXRjaGluZyhbJnJl
cXVlc3RdKGF1dG8mIGRlbmllZFJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFpc01hdGNoaW5nRGVu
aWVkUmVxdWVzdChyZXF1ZXN0LCBkZW5pZWRSZXF1ZXN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhjY2Q5OTQxODA0NTkxZTk2MjczNzQ4NjJlZDliYzVi
NWU1YzVkYTIuLjYxYTQ0Yjk3MzkzYWIyMGY3NjhiNjc1MzczOTlmM2NkNTU4YTE2MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzQ5Niw3ICszNDk2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgfQogICAgIH0KIAotICAgIHByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlv
biwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpu
YXZpZ2F0aW9uKSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiks
IHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKKyAgICBwcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNv
dXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uID0gUmVmIHsgKm5hdmlnYXRp
b24gfSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHNvdXJj
ZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKICAgICAgICAgcG9saWNpZXMgPSBX
VEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdh
dGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0
IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24g
aGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAgICAgICAgaWYg
KGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24obmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCkpKSB7CkBAIC0zNjQ5LDcgKzM2NDksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgcwogICAgIGJvb2wgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QgPSBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlck5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiAmJiBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRp
cmVjdCgpOwogICAgIGJvb2wgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCA9IHNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbjsKICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9
IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBXVEZNb3ZlKG5ld1Byb2Nl
c3MpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBp
c1NlcnZlclNpZGVSZWRpcmVjdCwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBzaG91bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0
LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwotICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZp
Z2F0aW9uKSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgbmF2aWdhdGlvbiA9IFJlZiB7IG5hdmln
YXRpb24gfSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZp
Z2F0aW9uLT50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFn
ZVByb3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJM
ICVzIiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTU0MTYsNyArNTQx
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgc2hvdWxkRXhwZWN0QXBwQm91bmRE
b21haW5SZXN1bHQgPSBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6WWVzOwogI2Vu
ZGlmCiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3Rl
bmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBmcmFtZSA9IG1h
a2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIG5hdmln
YXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlv
biBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8
U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsK
KyAgICBSZWYgbGlzdGVuZXIgPSBmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBmcmFtZSA9IFJlZiB7IGZyYW1lIH0sIHNl
bmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiwgZnJh
bWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
QVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJu
aW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRD0lbGx1LCBuYXZpZ2F0aW9uSUQ9JWxsdSwgcG9s
aWN5QWN0aW9uPSV1LCBzYWZlQnJvd3NpbmdXYXJuaW5nPSVkLCBpc0FwcEJvdW5kRG9tYWluPSVk
IiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2lu
Z1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShz
ZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBSZWZQdHIg
eyBwb2xpY2llcyB9XSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CkBAIC01
NDg2LDcgKzU0ODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICB9CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeUFjdGlvbik7CiAKLSAgICB9LCBzaG91bGRFeHBl
Y3RTYWZlQnJvd3NpbmdSZXN1bHQsIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0KSk7
CisgICAgfSwgc2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBzaG91bGRFeHBlY3RBcHBC
b3VuZERvbWFpblJlc3VsdCk7CiAgICAgaWYgKHNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3Vs
dCA9PSBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6OlllcykKICAgICAgICAgYmVnaW5T
YWZlQnJvd3NpbmdDaGVjayhyZXF1ZXN0LnVybCgpLCBmcmFtZS5pc01haW5GcmFtZSgpLCBsaXN0
ZW5lcik7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTYxMCw3ICs1NjEwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9
IG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwo
KS5ob3N0KCk7CiAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0
aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5m
by5nZXQoKSwgbnVsbHB0ciwgZnJhbWVOYW1lLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIFVS
TCB7IH0sIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkp
KTsKICAgICAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRp
ZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGljeUFjdGlv
biBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dz
aW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxl
IHsKKyAgICBSZWYgbGlzdGVuZXIgPSBmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaWRlbnRpZmllciwgbGlzdGVuZXJJ
RCwgZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24s
IEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBz
YWZlQnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8g
RklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBv
bmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3
YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
PT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTU2MjAs
NyArNTYyMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgIH0pOwogCiAgICAg
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBudWxscHRy
LCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwotICAgIH0sIFNo
b3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9t
YWluUmVzdWx0OjpObykpOworICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6
Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObyk7CiAKICAgICBpZiAobV9w
b2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgcmVxdWVz
dCwgZnJhbWVOYW1lLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CkBAIC01NjQ4LDcgKzU2NDgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlv
bihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShX
VEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hv
d01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFr
ZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgd2ViUGFnZUlELCBmcmFtZUlELCBicm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaERlY2lzaW9uLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgaWRlbnRpZmllciwg
bGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCisgICAgUmVmIGxp
c3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIHdlYlBhZ2VJRCwgZnJhbWVJRCwgYnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2hEZWNpc2lvbiwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGlkZW50aWZp
ZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAogICAgICAg
ICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
LCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYg
c2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8v
IEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUg
b25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBh
d2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKQEAgLTU2NzcsNyArNTY3Nyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBu
dWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSwgeyB9
LCB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKTsKLSAgICB9LCBTaG91bGRFeHBlY3RTYWZl
QnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm8p
KTsKKyAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBl
Y3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm8pOwogCiAgICAgaWYgKHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlKSB7CiAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCmluZGV4IGM1ZjE3ZWIwY2YzMWIwYTQ1ZDk2YTYx
NjEwZGM5YmRkMTBjMTIxMzAuLjczOGQxOThiODk2ZmI5Mjg5MzRjMjVkMmFmZWI2NTUzYTUwZDhl
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcApAQCAt
OTcsNyArOTcsNyBAQCBib29sIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBDYWNoZWRQcm9jZXNzIGNhbiBkZXN0cm95IHRoZSBwcm9jZXNzIHBvb2wgKHdoaWNo
IG93bnMgdGhlIFdlYlByb2Nlc3NDYWNoZSksIGJ5IG1ha2luZyBpdHMgcmVmZXJlbmNlIHdlYWsg
aW4gV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0luUHJvY2Vzc0NhY2hlLgotICAgIGF1dG8gcHJvdGVj
dGVkUHJvY2Vzc1Bvb2wgPSBtYWtlUmVmKHByb2Nlc3MtPnByb2Nlc3NQb29sKCkpOworICAgIFJl
ZiBwcm90ZWN0ZWRQcm9jZXNzUG9vbCA9IHByb2Nlc3MtPnByb2Nlc3NQb29sKCk7CiAgICAgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0ZUFkZFJlcXVlc3RJZGVudGlmaWVyKCk7
CiAgICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5p
cXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA1Y2RmY2E2OGJkNjYxNWI4MjA0NmNk
MWNhN2EwZmYzZDA1OGE5MzY1Li4zYjM1YzAwMzMwMTY4YzViNjZhYWNiOWZlMzg2ZjA1N2MyNzRk
MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0x
NTc4LDcgKzE1NzgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVTeW5jaHJvbm91c01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdAogICAgIGlmICghd2ViUHJv
Y2Vzc1Byb3h5KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAg
IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoKnRoaXMsIG1lc3NhZ2VOYW1lLCB3ZWJQcm9jZXNzUHJveHktPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHMobWVzc2FnZUJvZHkub2JqZWN0KCkpLmdldCgpLCBbd2ViUHJv
Y2Vzc1Byb3h5ID0gbWFrZVJlZigqd2ViUHJvY2Vzc1Byb3h5KSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZlB0cjxBUEk6Ok9iamVjdD4mJiByZXR1
cm5EYXRhKSBtdXRhYmxlIHsKKyAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5kaWRSZWNlaXZl
U3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKCp0aGlzLCBtZXNzYWdlTmFtZSwg
d2ViUHJvY2Vzc1Byb3h5LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKG1lc3NhZ2VCb2R5Lm9i
amVjdCgpKS5nZXQoKSwgW3dlYlByb2Nlc3NQcm94eSA9IFJlZiB7ICp3ZWJQcm9jZXNzUHJveHkg
fSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZlB0
cjxBUEk6Ok9iamVjdD4mJiByZXR1cm5EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoVXNlckRhdGEod2ViUHJvY2Vzc1Byb3h5LT50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHJldHVybkRhdGEuZ2V0KCkpKSk7CiAgICAgfSk7CiB9CkBAIC0xODA4LDcgKzE4MDgsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVQcm9jZXNzRnJvbU9yaWdpbkNhY2hlU2V0KFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zv
ck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJM
JiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYgZGF0YVN0b3JlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94
eSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHByb2Nlc3NG
b3JOYXZpZ2F0aW9uSW50ZXJuYWwocGFnZSwgbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5
UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZShk
YXRhU3RvcmUpLCBbdGhpcywgcGFnZSA9IFJlZiB7IHBhZ2UgfSwgbmF2aWdhdGlvbiA9IG1ha2VS
ZWYobmF2aWdhdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwg
c291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pIG11dGFibGUgeworICAgIHByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwocGFnZSwg
bmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZShkYXRhU3RvcmUpLCBbdGhpcywgcGFnZSA9IFJl
ZiB7IHBhZ2UgfSwgbmF2aWdhdGlvbiA9IFJlZiB7IG5hdmlnYXRpb24gfSwgc291cmNlUHJvY2Vz
cyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgU3VzcGVuZGVkUGFnZVByb3h5KiBz
dXNwZW5kZWRQYWdlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgbXV0YWJsZSB7CiAgICAgICAgIC8v
IFdlIGFyZSBwcm9jZXNzLXN3YXBwaW5nIHNvIGF1dG9tYXRpYyBwcm9jZXNzIHByZXdhcm1pbmcg
d291bGQgYmUgYmVuZWZpY2lhbCBpZiB0aGUgY2xpZW50IGhhcyBub3QgZXhwbGljaXRseSBlbmFi
bGVkIC8gZGlzYWJsZWQgaXQuCiAgICAgICAgIGJvb2wgZG9pbmdBbkF1dG9tYXRpY1Byb2Nlc3NT
d2FwID0gcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50OjpObyAmJiBwcm9jZXNzLnB0cigpICE9IHNvdXJjZVByb2Nlc3MucHRyKCk7CiAg
ICAgICAgIGlmIChkb2luZ0FuQXV0b21hdGljUHJvY2Vzc1N3YXAgJiYgIWNvbmZpZ3VyYXRpb24o
KS53YXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ1NldEJ5Q2xpZW50KCkgJiYgIWNvbmZpZ3VyYXRp
b24oKS5jbGllbnRXb3VsZEJlbmVmaXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcoKSkg
ewpAQCAtMTgzNiw3ICsxODM2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5h
dmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICBhdXRv
JiB0YXJnZXRVUkwgPSBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkudXJsKCk7CiAgICAgYXV0
byB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsg
dGFyZ2V0VVJMIH07CiAKLSAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBhZ2UgPSBtYWtlUmVmKHBhZ2UpLCB0YXJnZXRSZWdp
c3RyYWJsZURvbWFpbiwgZGF0YVN0b3JlXSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7Cisg
ICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBwYWdlID0gUmVmIHsgcGFnZSB9LCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbiwgZGF0
YVN0b3JlXSAoKSAtPiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7CiAgICAgICAgIHJldHVybiBwcm9j
ZXNzRm9yUmVnaXN0cmFibGVEb21haW4oZGF0YVN0b3JlLCBwYWdlLnB0cigpLCB0YXJnZXRSZWdp
c3RyYWJsZURvbWFpbik7CiAgICAgfTsKIApAQCAtMTkxOSw3ICsxOTE5LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBh
Z2UsIGNvbnN0IEFQSToKICAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9y
ZSgpID09IGRhdGFTdG9yZS5wdHIoKSkgewogICAgICAgICAgICAgICAgIExPRyhQcm9jZXNzU3dh
cHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBSZXVzaW5nIGEgcHJldmlvdXNseSBjYWNoZWQgcHJv
Y2VzcyB3aXRoIHBpZCAlaSB0byBjb250aW51ZSBuYXZpZ2F0aW9uIHRvIFVSTCAlcyIsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHRhcmdldFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIAotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlUmVmKCpw
cm9jZXNzKSwgbnVsbHB0ciwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoKnByb2Nlc3MsIG51bGxwdHIsIHJlYXNvbik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCAxZDg4MTVhZGI3M2FkMmQ1MjAzYTY4YWEyOGMxOWJhZDMwY2Y4NzZmLi4yYmU5
NmE2OTE2MGYxNmU2ZWNhNWY1YjA4NjQzNDQzNWM0ZjJmOTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE4MDMsOSArMTgwMyw5IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcklkZW50CiAgICAgYXV0byBjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlID0g
W3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgewogICAgICAgICByZXR1cm4g
d2Vha1BhZ2UgPyB3ZWFrUGFnZS0+Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJl
Y29nbml0aW9uKCkgOiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJQYWdlIGlzIGludmFsaWQiIH07
CiAgICAgfTsKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFdU
Rk1vdmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlKSk7CisgICAgc3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVy
PigqY29ubmVjdGlvbigpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwg
V1RGTW92ZShjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCksIFdURk1vdmUoY3JlYXRl
UmVhbHRpbWVNZWRpYVNvdXJjZSkpOwogI2Vsc2UKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZl
ciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rp
b24oKSksIGlkZW50aWZpZXIsIFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNo
ZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSk7CisgICAgc3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPigqY29ubmVjdGlvbigp
LCBpZGVudGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92ZShjaGVja0lm
TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCkpOwogI2VuZGlmCiAKICAgICBhZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIGlkZW50aWZpZXIsICpzcGVlY2hSZWNvZ25pdGlvblNlcnZlcik7CkBAIC0xODIyLDcg
KzE4MjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVzdHJveVNwZWVjaFJlY29nbml0aW9u
U2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbgogU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciYgV2ViUHJvY2Vzc1Byb3h5OjplbnN1cmVTcGVl
Y2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyKCkKIHsKICAgICBp
ZiAoIW1fc3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcikg
ewotICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZU1hbmFnZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSkpOworICAgICAgICBtX3NwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgPSBtYWtlVW5pcXVlPFNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI+KCpjb25uZWN0
aW9uKCkpOwogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgKm1fc3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdl
cik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
Y3BwCmluZGV4IDFjMDI2YjVhMmQ4YzliN2NkZGIwZGViZTJkOWU1ZTkwMWYzYTQyNmEuLmRmNTlk
NTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC00NCw3ICs0NCw3IEBAIFJlZjxXZWJV
UkxTY2hlbWVUYXNrPiBXZWJVUkxTY2hlbWVUYXNrOjpjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxl
ciYgaGFuZGxlciwgV2ViCiAKIFdlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2Vi
VVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgVVJMU2NoZW1lVGFza1Bh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgc3luY0Nv
bXBsZXRpb25IYW5kbGVyKQogICAgIDogbV91cmxTY2hlbWVIYW5kbGVyKGhhbmRsZXIpCi0gICAg
LCBtX3Byb2Nlc3MobWFrZVJlZihwcm9jZXNzKSkKKyAgICAsIG1fcHJvY2VzcygmcHJvY2VzcykK
ICAgICAsIG1fcmVzb3VyY2VMb2FkZXJJRChwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyKQogICAg
ICwgbV9wYWdlUHJveHlJRChwYWdlLmlkZW50aWZpZXIoKSkKICAgICAsIG1fd2ViUGFnZUlEKHdl
YlBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA1NjNiZWE4
NmU5MmJlNDM3MmVhMzgzZGYwYjc0NzFlM2I5M2EzMjBkLi5hZWY1YjdkZmZiYTdjMDE1MzI2ZjZm
OWU3MTY1MDRmM2MzZTE3Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpiZWdpbkFwcEJvdW5k
RG9tYWluQ2hlY2soY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZW5zdXJlQXBwQm91bmREb21haW5zKFsmaG9z
dCwgJnByb3RvY29sLCBsaXN0ZW5lciA9IG1ha2VSZWYobGlzdGVuZXIpXSAoYXV0byYgZG9tYWlu
cywgYXV0byYgc2NoZW1lcykgbXV0YWJsZSB7CisgICAgZW5zdXJlQXBwQm91bmREb21haW5zKFsm
aG9zdCwgJnByb3RvY29sLCBsaXN0ZW5lciA9IFJlZiB7IGxpc3RlbmVyIH1dIChhdXRvJiBkb21h
aW5zLCBhdXRvJiBzY2hlbWVzKSBtdXRhYmxlIHsKICAgICAgICAgLy8gTXVzdCBjaGVjayBmb3Ig
Ym90aCBhbiBlbXB0eSBhcHAgYm91bmQgZG9tYWlucyBsaXN0IGFuZCBhbiBlbXB0eSBrZXkgYmVm
b3JlIHJldHVybmluZyBudWxsb3B0CiAgICAgICAgIC8vIGJlY2F1c2UgdGVzdCBjYXNlcyBtYXkg
aGF2ZSBhcHAgYm91bmQgZG9tYWlucyBidXQgbm8ga2V5LgogICAgICAgICBib29sIGhhc0FwcEJv
dW5kRG9tYWlucyA9IGtleUV4aXN0cyB8fCAhZG9tYWlucy5pc0VtcHR5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDAzYjNkOGU0OTU1OWJlZmQ3NzNhMzcyZDc4ZTA1NDU1NmM1OTZjZmMuLjIxMGNk
MGFmNzI4MzEwNTBjOTFlYWVmOGNjZDkwYTkzNTQzNmRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBA
IC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIFJlZjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBuZXR3b3Jr
UHJvY2Vzc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAgLy8gUmV1
c2UgYSBwcmV2aW91cyBwZXJzaXN0ZW50IHNlc3Npb24gbmV0d29yayBwcm9jZXNzIGZvciBlcGhl
bWVyYWwgc2Vzc2lvbnMuCiAgICAgICAgIGZvciAoYXV0byogZGF0YVN0b3JlIDogYWxsRGF0YVN0
b3JlcygpLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAoZGF0YVN0b3JlLT5pc1BlcnNpc3Rl
bnQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZihkYXRhU3RvcmUtPm5ldHdvcmtQ
cm9jZXNzKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBkYXRhU3RvcmUtPm5ldHdvcmtQcm9j
ZXNzKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCA3MTVlZjYzM2M1MzA4MzEwZTkzNGNlYjRkMmE3MTQ3
ZTE4MzY4NzNiLi5hOTVhNTcwNDhiNzg4OWUxZDFkN2I2M2I5YTJmMTA2MDdiNGFkNDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5tbQpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51CiAKIHZv
aWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6aW5zZXJ0T3JVcGRhdGVRdWlja0xvb2tJbWFnZUl0
ZW0oY29uc3QgVVJMJiBpbWFnZVVSTCwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZUJpdG1h
cCwgc3RkOjpvcHRpb25hbDxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYmIHF1aWNrTG9va0l0ZW1U
b0luc2VydElmTmVlZGVkLCBib29sIHNob3VsZFVwZGF0ZVF1aWNrTG9va0l0ZW1UaXRsZSkKIHsK
LSAgICBhdXRvIHBhZ2UgPSBtYWtlUmVmKCp0aGlzLT5wYWdlKCkpOworICAgIFJlZiBwYWdlID0g
KnRoaXMtPnBhZ2UoKTsKICAgICBpZiAocXVpY2tMb29rSXRlbVRvSW5zZXJ0SWZOZWVkZWQpIHsK
ICAgICAgICAgcGFnZS0+Y29tcHV0ZUhhc0ltYWdlQW5hbHlzaXNSZXN1bHRzKGltYWdlVVJMLCBp
bWFnZUJpdG1hcC5nZXQoKSwgSW1hZ2VBbmFseXNpc1R5cGU6OlZpc3VhbFNlYXJjaCwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBxdWlja0xvb2tJdGVtVG9JbnNlcnRJZk5lZWRlZCA9
IFdURk1vdmUoKnF1aWNrTG9va0l0ZW1Ub0luc2VydElmTmVlZGVkKV0gKGJvb2wgaGFzVmlzdWFs
U2VhcmNoUmVzdWx0cykgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyIHByb3RlY3Rl
ZFRoaXMgPSB3ZWFrVGhpcy5nZXQoKTsgcHJvdGVjdGVkVGhpcyAmJiBoYXNWaXN1YWxTZWFyY2hS
ZXN1bHRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW5jcnlwdGVk
TWVkaWEvTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0VuY3J5cHRlZE1lZGlhL01lZGlhS2V5U3lzdGVtUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCAyNTVkZTA4MDc0YmY0NTY0OGYwY2JlNTlkZTRkYjA4
NGM1NDEwOThjLi4yYTM3OTI1OTE5MDgwNmIxMTk2ZTAzMzJhY2UwYzMwNzhiMzhiMjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW5jcnlwdGVkTWVkaWEvTWVkaWFLZXlT
eXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9FbmNyeXB0ZWRNZWRpYS9NZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcjo6c2VuZE1lZGlhS2V5U3lzdGVtUmVxdWVzdChNZWRpYUtleVMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fb25nb2luZ01lZGlhS2V5U3lzdGVtUmVxdWVzdHMu
YWRkKHVzZXJSZXF1ZXN0LmlkZW50aWZpZXIoKSwgbWFrZVJlZih1c2VyUmVxdWVzdCkpOworICAg
IG1fb25nb2luZ01lZGlhS2V5U3lzdGVtUmVxdWVzdHMuYWRkKHVzZXJSZXF1ZXN0LmlkZW50aWZp
ZXIoKSwgdXNlclJlcXVlc3QpOwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6
OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKICAgICBBU1NFUlQod2ViRnJhbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDk0NTIwYTZjNjBkZmJkMDQ3MDU2NzRlZWRj
MTQyNmRmNzQ5ODk1MGQuLmMwMzc0MWNlOWRhNGI5NjkzNjc1ZjJiYWI4NmM3OWU5NjE0OTZiMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVjb3JkRm9udFVzZShGb250JiBmb250
KQogICAgIH0pOwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlRm9udChtYWtlUmVmKGZvbnQpKTsKKyAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVGb250KGZvbnQpOwogICAgICAg
ICArK21fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGU7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCA5YWQ5NGQ2ODZlNDM4MGI1YTEzYjk0
NzcxMzNhODgyMjUxZGIwNDdjLi41YzQ1OTFjZjk2MjlkY2FkNjQ5NGRmODEyYjRkODlkYjk1YzQx
ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIExpYldlYlJUQ0Nv
ZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygpCiAK
ICAgICBhdXRvJiBncHVDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBncHVDb25uZWN0aW9uLmFkZENsaWVudCgqdGhp
cyk7Ci0gICAgbV9jb25uZWN0aW9uID0gbWFrZVJlZihncHVDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSk7CisgICAgbV9jb25uZWN0aW9uID0gJmdwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpOwogICAg
IG1fY29ubmVjdGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJS
VENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiAKICAgICBpZiAobV9sb2dn
aW5nTGV2ZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggOTdmZTRhNTE0ZjBhY2Q3ODQw
NmNkMGI3MDQyYTM1MzcwY2Y4ZDcyNi4uZjE0YjYzNzE0NjFlZmY5N2E3M2FlNDBkMTk1OTBjM2Yw
MTU3ZGJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtNDksNyArNDksNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTWVkaWFSZWNvcmRlclByaXZhdGU6Ok1lZGlhUmVjb3Jk
ZXJQcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtLCBjb25zdCBNZWRpYVJlY29yZGVy
UHJpdmF0ZU9wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBtX2lkZW50aWZpZXIoTWVkaWFSZWNvcmRl
cklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCi0gICAgLCBtX3N0cmVhbShtYWtlUmVmKHN0cmVhbSkp
CisgICAgLCBtX3N0cmVhbShzdHJlYW0pCiAgICAgLCBtX2Nvbm5lY3Rpb24oV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkpCiAg
ICAgLCBtX29wdGlvbnMob3B0aW9ucykKICAgICAsIG1faGFzVmlkZW8oc3RyZWFtLmhhc1ZpZGVv
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmlu
ZGV4IDZjYTdiZTFlYTM5MmRlNGQ5YzRkZWUzN2IwNWI1ZDBkNDM1MTJmZmQuLjgzMzE0NTY5ZjJj
MmQ4Njg4NDViNGViZGYwZjdhZWJhZGY1NGY1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzZW5kVXNlck1lZGlhUmVxdWVzdChVc2VyTWVk
aWFSZXF1ZXN0JiB1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX29uZ29pbmdVc2Vy
TWVkaWFSZXF1ZXN0cy5hZGQodXNlclJlcXVlc3QuaWRlbnRpZmllcigpLCBtYWtlUmVmKHVzZXJS
ZXF1ZXN0KSk7CisgICAgbV9vbmdvaW5nVXNlck1lZGlhUmVxdWVzdHMuYWRkKHVzZXJSZXF1ZXN0
LmlkZW50aWZpZXIoKSwgdXNlclJlcXVlc3QpOwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0g
V2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKICAgICBBU1NFUlQod2ViRnJhbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCmluZGV4IDdjMGM0NjIyMmNhNmE4MzZmZGM3OWNkMzI5MDhjMmRiZmFiOTUxZDIu
LjBkMTgyOWIzOThjMzYwNTFiODRlMjE1ZGIzZDE2ZWEzNDc3OTE5NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
QEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2Uo
RnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlcwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIFdU
Rk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFt0aGlzLCByZWZlcnJlclBvbGljeSA9IG9wdGlvbnMu
cmVmZXJyZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlc291cmNlID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+KCZy
ZXNvdXJjZSksIGZyYW1lID0gbWFrZVJlZihmcmFtZSldIChSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+JiYgbG9hZGVyKSBtdXRhYmxlIHsKKyAgICBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZy
YW1lLCByZXNvdXJjZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgW3RoaXMsIHJlZmVycmVy
UG9saWN5ID0gb3B0aW9ucy5yZWZlcnJlclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzb3VyY2UgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4oJnJlc291cmNlKSwgZnJhbWUgPSBSZWYgeyBmcmFtZSB9XSAoUmVmUHRy
PFN1YnJlc291cmNlTG9hZGVyPiYmIGxvYWRlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChsb2Fk
ZXIpCiAgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKmxvYWRlciwgcmVzb3VyY2UuZ2V0KCksIHJl
ZmVycmVyUG9saWN5ID09IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7
CiAgICAgICAgIGVsc2UKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
Ojpsb2FkUmVzb3VyY2UoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJl
cwogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJh
bWUmIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCYgY2xpZW50LCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCBXVEZNb3Zl
KHJlcXVlc3QpLCBbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKV0gKFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcj4mJiBsb2FkZXIpIG11dGFibGUgeworICAgIE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZyYW1lID0gUmVm
IHsgZnJhbWUgfV0gKFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJiBsb2FkZXIp
IG11dGFibGUgewogICAgICAgICBpZiAobG9hZGVyKQogICAgICAgICAgICAgc2NoZWR1bGVMb2Fk
KCpsb2FkZXIsIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVy
cmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUobG9hZGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmtNYW5hZ2Vy
LmNwcAppbmRleCA1Y2NmN2FlMzc2NGFhNjMwYjM4YzM1NTVmNWE2Y2Y4NGY3ZTMxOTllLi45ZDU4
MWZhNDMxY2UyMjk2ZjFkMTM4MDFlNWExZWU2OTQyYjRkODY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29ya01hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENOZXR3b3JrTWFuYWdlci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBMaWJXZWJSVENOZXR3
b3JrTWFuYWdlcjo6U3RhcnRVcGRhdGluZygpCiAKICAgICAgICAgYXV0byYgbW9uaXRvciA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCk7CiAgICAg
ICAgIGlmIChtX3JlY2VpdmVkTmV0d29ya0xpc3QpIHsKLSAgICAgICAgICAgIFdlYkNvcmU6Okxp
YldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkxpYldlYlJU
Q1Byb3ZpZGVyOjpjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gewogICAgICAgICAgICAgICAgIFNpZ25hbE5ldHdvcmtzQ2hhbmdl
ZCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAobW9uaXRvci5kaWRSZWNl
aXZlTmV0d29ya0xpc3QoKSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIExpYldlYlJUQ05ldHdv
cmtNYW5hZ2VyOjpuZXR3b3Jrc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms+JiBuZXR3
b3JrcwogICAgIGJvb2wgZm9yY2VTaWduYWxpbmcgPSAhbV9yZWNlaXZlZE5ldHdvcmtMaXN0Owog
ICAgIG1fcmVjZWl2ZWROZXR3b3JrTGlzdCA9IHRydWU7CiAKLSAgICBXZWJDb3JlOjpMaWJXZWJS
VENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBuZXR3b3JrcywgaXB2NCwgaXB2NiwgZm9yY2VTaWduYWxpbmdd
IHsKKyAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29ya1Ro
cmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG5ldHdvcmtzLCBpcHY0
LCBpcHY2LCBmb3JjZVNpZ25hbGluZ10gewogICAgICAgICBzdGQ6OnZlY3RvcjxydGM6Ok5ldHdv
cmsqPiBuZXR3b3JrTGlzdChuZXR3b3Jrcy5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgbmV0d29ya3Muc2l6ZSgpOyArK2luZGV4KQogICAgICAgICAgICAg
bmV0d29ya0xpc3RbaW5kZXhdID0gbmV3IHJ0Yzo6TmV0d29yayhuZXR3b3Jrc1tpbmRleF0udmFs
dWUoKSk7CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBMaWJXZWJSVENOZXR3b3JrTWFuYWdlcjo6
bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSW4gY2Fz
ZSB3ZSBoYXZlIGNsaWVudHMgd2FpdGluZyBmb3IgbmV0d29ya3NDaGFuZ2VkLCB3ZSBjYWxsIFNp
Z25hbE5ldHdvcmtzQ2hhbmdlZCB0byBtYWtlIHN1cmUgdGhleSBkbyBub3Qgd2FpdCBmb3Igbm90
aGluZy4KLSAgICBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDTmV0d29y
a1RocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgV2Vi
Q29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIFNpZ25hbE5ldHdvcmtz
Q2hhbmdlZCgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggMDVhNzY4NDA5MDk5NDFjNjgwNDZhZGRhYWIw
ZDYwNGNhZTdjMDMyNC4uNWI2NTQ0MWU2ZGY1YmM4NWM0NDIzYWI5Y2VkZWNhZmE0ZDZiZDFmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIFBERlBsdWdpbjo6Zm9yZ2V0TG9hZGVyKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyJiBsb2FkZXIpCiAKIHZvaWQgUERGUGx1Z2luOjpjYW5j
ZWxBbmRGb3JnZXRMb2FkZXIoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXImIGxvYWRlcikKIHsK
LSAgICBhdXRvIHByb3RlY3RlZExvYWRlciA9IG1ha2VSZWYobG9hZGVyKTsKKyAgICBSZWYgcHJv
dGVjdGVkTG9hZGVyIHsgbG9hZGVyIH07CiAgICAgZm9yZ2V0TG9hZGVyKGxvYWRlcik7CiAgICAg
bG9hZGVyLmNhbmNlbChsb2FkZXIuY2FuY2VsbGVkRXJyb3IoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAppbmRleCA1M2Ni
MjZlZjQ5OTFhNTBkZTFhODk3NDg1ZGQzYzZmN2NlZTJhMDI1Li4wODA3MjY2NWU0YjUyMDkwOGRj
NDYwY2NmMTQ4YjE2ZjVlYWI5Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNw
ZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6OmNyZWF0ZVNvdXJjZShS
ZWFsdGltZU1lZGlhU291cgogICAgIH0KIAogICAgIEFTU0VSVCghbV9zb3VyY2VzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKLSAgICBtX3NvdXJjZXMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8
U291cmNlPihpZGVudGlmaWVyLCByZXN1bHQuc291cmNlKCksIG1ha2VSZWYoKm1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkpKSk7CisgICAgbV9zb3VyY2VzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5p
cXVlPFNvdXJjZT4oaWRlbnRpZmllciwgcmVzdWx0LnNvdXJjZSgpLCAqbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSkpOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNv
dXJjZU1hbmFnZXI6OmRlbGV0ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBp
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMGU4Yjk3YTY3
ZTU3ODhjZjUwZWRiZjA1NTI4NDg5MWE0ZTU4ZWFjYS4uNThmMGM0NGZhYzA5ZjBlYmMyZGQyMTk1
MDMzNjRkNjZjZThhNTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0x
MDE4LDcgKzEwMTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IGRvY3VtZW50TG9hZGVy
LT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKTsKIAogICAgIC8vIE5vdGlmeSB0aGUg
VUlQcm9jZXNzLgotICAgIGF1dG8gcHJvdGVjdG9yID0gbWFrZVJlZigqY29yZUZyYW1lKTsKKyAg
ICBSZWYgcHJvdGVjdG9yIHsgKmNvcmVGcmFtZSB9OwogCiAgICAgaWYgKHBvbGljeURlY2lzaW9u
TW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1vZGU6OlN5bmNocm9ub3VzKSB7CiAgICAgICAgIFBvbGlj
eURlY2lzaW9uIHBvbGljeURlY2lzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCA2NjE0OGFlOGVkNGU1NWVjZDU2MWVj
N2JhMDBhZGIyODE5NWFiNGEzLi4wZjExODM4NTE4Y2I5MDg5ZWM1ZWNjZmFhYzMzNWUyMDFhNmMz
NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcApAQCAtMTI5Miw3ICsxMjkyLDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6dm1QYWdl
U2l6ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHIK
IEpTVmFsdWVSZWYgSlNJUEM6OnZpc2l0ZWRMaW5rU3RvcmVJRChKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKICAgICByZXR1cm4gcmV0cmlldmVJRChjb250ZXh0LCB0aGlzT2JqZWN0LCBleGNl
cHRpb24sIFtdKEpTSVBDJiB3cmFwcGVkKSB7Ci0gICAgICAgIGF1dG8gd2ViUGFnZSA9IG1ha2VS
ZWYoKndyYXBwZWQubV93ZWJQYWdlKTsKKyAgICAgICAgUmVmIHdlYlBhZ2UgPSAqd3JhcHBlZC5t
X3dlYlBhZ2U7CiAgICAgICAgIHJldHVybiB3ZWJQYWdlLT52aXNpdGVkTGlua1RhYmxlSUQoKTsK
ICAgICB9KTsKIH0KQEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgSlNNZXNzYWdlTGlzdGVuZXI6
OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUkVMRUFTRV9BU1NFUlQobV9qc0lQQyk7Ci0gICAgYXV0byBwcm90ZWN0
T3duZXJPZlRoaXMgPSBtYWtlUmVmKCptX2pzSVBDKTsKKyAgICBSZWYgcHJvdGVjdE93bmVyT2ZU
aGlzID0gKm1fanNJUEM7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhtX2NvbnRleHQp
OwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52bSgpKTsKIApAQCAt
MTQ3MCw3ICsxNDcwLDcgQEAgdm9pZCBKU01lc3NhZ2VMaXN0ZW5lcjo6d2lsbFNlbmRNZXNzYWdl
KGNvbnN0IElQQzo6RW5jb2RlciYgZW5jb2RlciwgT3B0aW9uU2V0PEkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUkVMRUFTRV9BU1NFUlQobV9qc0lQQyk7Ci0gICAgYXV0byBwcm90ZWN0T3duZXJP
ZlRoaXMgPSBtYWtlUmVmKCptX2pzSVBDKTsKKyAgICBSZWYgcHJvdGVjdE93bmVyT2ZUaGlzID0g
Km1fanNJUEM7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhtX2NvbnRleHQpOwogICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52bSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxYmU3NGIzOWE4ZWVh
ZTc2OGRjZmM2ZGM1NWQ5OTgyZTgwYjA2YTk0Li4yNDYwYTQzZDJlNjRiN2VhOTExM2E5ODU2MmJk
M2I1OTI2YzJhYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMzczNCw3ICszNzM0LDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0
KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAg
ICB9CiAjZW5kaWYKIAotICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3dvcmxkID0gbWFrZVJl
Zigqd29ybGQpLCBmcmFtZSA9IFJlZiB7ICpmcmFtZSB9LCBjb3JlRnJhbWUgPSBSZWYgeyAqZnJh
bWUtPmNvcmVGcmFtZSgpIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byBy
ZXNvbHZlRnVuY3Rpb24gPSBbd29ybGQgPSBSZWYgeyAqd29ybGQgfSwgZnJhbWUgPSBSZWYgeyAq
ZnJhbWUgfSwgY29yZUZyYW1lID0gUmVmIHsgKmZyYW1lLT5jb3JlRnJhbWUoKSB9LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmFsdWVPckV4Y2VwdGlv
biByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAg
ICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KGZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZC5wdHIoKSksCkBAIC03MDQ3LDcgKzcwNDcs
NyBAQCB2b2lkIFdlYlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBz
dWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEbwogCiB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxl
RG9tYWluJiYgdG9wRnJhbWVEb21haW4sIFdlYkZyYW1lJiBmcmFtZSwgU3RvcmFnZUFjY2Vzc1Nj
b3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdl
QWNjZXNzUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUo
dG9wRnJhbWVEb21haW4pLCBmcmFtZS5mcmFtZUlEKCksIG1faWRlbnRpZmllciwgbV93ZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBzY29wZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZnJh
bWUgPSBtYWtlUmVmKGZyYW1lKSwgcGFnZUlEID0gbV9pZGVudGlmaWVyLCBmcmFtZUlEID0gZnJh
bWUuZnJhbWVJRCgpXShSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCByZXN1bHQpIG11dGFibGUg
eworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZy
YW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lLmZyYW1lSUQoKSwgbV9p
ZGVudGlmaWVyLCBtX3dlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHNjb3BlKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBmcmFtZSA9IFJlZiB7IGZyYW1lIH0sIHBhZ2VJRCA9IG1faWRlbnRp
ZmllciwgZnJhbWVJRCA9IGZyYW1lLmZyYW1lSUQoKV0oUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1
bHQgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC53YXNHcmFudGVkID09IFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMpIHsKICAgICAgICAgICAgIHN3aXRjaCAocmVzdWx0
LnNjb3BlKSB7CiAgICAgICAgICAgICBjYXNlIFN0b3JhZ2VBY2Nlc3NTY29wZTo6UGVyRnJhbWU6
CkBAIC03NDY1LDcgKzc0NjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RUZXh0UmVjb2duaXRp
b24oV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBodG1sRWxlbWVudCA9IG1ha2VSZWYoZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKTsKKyAgICBSZWYgaHRtbEVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MRWxlbWVudD4oZWxlbWVudCk7CiAgICAgaWYgKGNvcmVQYWdlKCktPmhhc0NhY2hlZFRleHRS
ZWNvZ25pdGlvblJlc3VsdChodG1sRWxlbWVudC5nZXQoKSkpIHsKICAgICAgICAgaWYgKGNvbXBs
ZXRpb24pIHsKICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBpbWFnZU92ZXJsYXlIb3N0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsu
Y3BwCmluZGV4IGMwNTE0YzBkYzhhMmMyMGEzNWE0ZGIwYWE5YmRmOTFkMWViNjBjNjMuLjQzMWFj
YTJhYjY2ZWNkMTc3ZjljYzRjYzAwY2E3OGUxZTVjNzI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKQEAgLTE3MCw3ICsx
NzAsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkKIAogdm9pZCBXZWJQYWdlOjpzaG93RW1vamlQaWNrZXIoRnJhbWUmIGZy
YW1lKQogewotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4gY29tcGxldGlvbkhh
bmRsZXIgPSBbZnJhbWUgPSBtYWtlUmVmKGZyYW1lKV0oU3RyaW5nIHJlc3VsdCkgeworICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbZnJhbWUg
PSBSZWYgeyBmcmFtZSB9XShTdHJpbmcgcmVzdWx0KSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmlz
RW1wdHkoKSkKICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHJlc3VsdCwg
bnVsbHB0cik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZDNlYjRjMzk5ZTE0YzQ2MmNlNGM3ZGYwNWMzOWZi
ZmZkMTc0MWUxMy4uNWJjYTA5NTEzMDlhNmVhOGM3Njg4NGE0ZDU3YTJjODQwMThjYzM0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3Rh
dGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogICAgICAgICByZXR1
cm47CiAgICAgQVNTRVJUKGZyYW1lLnZpZXcoKSk7CiAgICAgYXV0byYgcG9zdExheW91dERhdGEg
PSByZXN1bHQucG9zdExheW91dERhdGEoKTsKLSAgICBhdXRvIHZpZXcgPSBtYWtlUmVmKCpmcmFt
ZS52aWV3KCkpOworICAgIFJlZiB2aWV3ID0gKmZyYW1lLnZpZXcoKTsKIAogICAgIGlmIChmcmFt
ZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIGlmIChhdXRvIGNvbXBvc2l0
aW9uUmFuZ2UgPSBmcmFtZS5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCkpIHsKQEAgLTI2MDQs
NyArMjYwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Fzc2lzdGFibGVFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2N1cmVkRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50KQogewotICAgIGF1dG8gdG9wRG9jdW1lbnQgPSBtYWtlUmVmKGVsZW1lbnQu
ZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpKTsKKyAgICBSZWYgdG9wRG9jdW1lbnQgPSBlbGVtZW50
LmRvY3VtZW50KCkudG9wRG9jdW1lbnQoKTsKICAgICBhdXRvIGVsZW1lbnRSZWN0SW5NYWluRnJh
bWUgPSBlbGVtZW50LmJvdW5kaW5nQm94SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCk7CiAKICAgICBj
b25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVz
dFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBI
aXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCwgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6Oklnbm9yZUNsaXBwaW5nIH07CkBAIC0yODQ5LDcgKzI4NDksNyBAQCBzdGF0aWMgdm9p
ZCBlbGVtZW50UG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBJbgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIGlmIChpbmZv
LmlzSW1hZ2VPdmVybGF5VGV4dCAmJiBpbm5lck5vblNoYXJlZE5vZGUtPnNoYWRvd0hvc3QoKSA9
PSAmZWxlbWVudCAmJiBpczxIVE1MRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgaWYgKGF1
dG8gaHRtbEVsZW1lbnQgPSBtYWtlUmVmKGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7
IGh0bWxFbGVtZW50LT5oYXNJbWFnZU92ZXJsYXkoKSkKKyAgICAgICAgaWYgKFJlZiBodG1sRWxl
bWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KTsgaHRtbEVsZW1lbnQtPmhhc0lt
YWdlT3ZlcmxheSgpKQogICAgICAgICAgICAgZGF0YURldGVjdG9ySW1hZ2VPdmVybGF5UG9zaXRp
b25JbmZvcm1hdGlvbihodG1sRWxlbWVudC5nZXQoKSwgcmVxdWVzdCwgaW5mbyk7CiAgICAgfQog
I2VuZGlmCkBAIC00NTQyLDcgKzQ1NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZvY3VzVGV4dElucHV0
Q29udGV4dEFuZFBsYWNlQ2FyZXQoY29uc3QgRWxlbWVudENvbnRleHQmIGVsZW1lbnRDbwogICAg
IH0KIAogICAgIEFTU0VSVCh0YXJnZXQtPmRvY3VtZW50KCkuZnJhbWUoKSk7Ci0gICAgYXV0byB0
YXJnZXRGcmFtZSA9IG1ha2VSZWYoKnRhcmdldC0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKKyAgICBS
ZWYgdGFyZ2V0RnJhbWUgPSAqdGFyZ2V0LT5kb2N1bWVudCgpLmZyYW1lKCk7CiAKICAgICB0YXJn
ZXRGcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAKQEAgLTQ2MTgsNyArNDYxOCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFBhc3N3b3Jk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOCiAKIHZv
aWQgV2ViUGFnZTo6YW5pbWF0aW9uRGlkRmluaXNoRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpF
bGVtZW50JiBhbmltYXRlZEVsZW1lbnQpCiB7Ci0gICAgUmVmIGZyYW1lID0gbWFrZVJlZihDaGVj
a2VkUmVmKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSk7
CisgICAgUmVmIGZyYW1lID0gQ2hlY2tlZFJlZihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgYXV0byYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24uaXNOb25lT3JPcnBoYW5lZCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KaW5kZXggMWY5NmUwODQxNGUyNWM3YTEwOWEzYjllMjlkODI3ZmZjN2FhNzBiYi4uYjQ0MjJj
NDg1NTVhZThhMzVmZGM3NTRiMjk5MThmZGFlN2E3NWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQ
b3NpdGlvbihXCiAgICAgaWYgKCFtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pCiAgICAgICAgIGlu
dmFsaWRhdGVSZW5kZXJpbmdVcGRhdGVSdW5Mb29wT2JzZXJ2ZXIoKTsKIAotICAgIFNjcm9sbGlu
Z1RocmVhZDo6ZGlzcGF0Y2hCYXJyaWVyKFt0aGlzLCByZXRhaW5lZFBhZ2UgPSBtYWtlUmVmKG1f
d2ViUGFnZSksIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKKyAgICBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoQmFycmllcihbdGhpcywgcmV0YWluZWRQYWdlID0gUmVmIHsgbV93ZWJQ
YWdlIH0sIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKICAgICAgICAgLy8gSXQgaXMg
cG9zc2libGUgZm9yIHRoZSBkcmF3aW5nIGFyZWEgdG8gYmUgZGVzdHJveWVkIGJlZm9yZSB0aGUg
Ym91bmQgYmxvY2sgaXMgaW52b2tlZC4KICAgICAgICAgaWYgKCFyZXRhaW5lZFBhZ2UtPmRyYXdp
bmdBcmVhKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6aGFuZGxlQWN0aXZpdHlTdGF0ZUNoYW5nZUNh
bGxiYWNrc0lmTmVlZGVkKCkKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBhdXRvIHByb3RlY3RlZFBhZ2UgPSBtYWtlUmVmKHdlYWtUaGlzLT5t
X3dlYlBhZ2UpOworICAgICAgICBSZWYgcHJvdGVjdGVkUGFnZSA9IHdlYWtUaGlzLT5tX3dlYlBh
Z2U7CiAgICAgICAgIGF1dG8qIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEqPihwcm90ZWN0ZWRQYWdlLT5kcmF3aW5nQXJlYSgpKTsKICAgICAg
ICAgQVNTRVJUKHdlYWtUaGlzLmdldCgpID09IGRyYXdpbmdBcmVhKTsKICAgICAgICAgaWYgKGRy
YXdpbmdBcmVhICE9IHdlYWtUaGlzLmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDA2ZmI1Njc3NjYzNWUyYWY5MzViNzVkZGM3YTQyYTkwMjBmZTEyYmEu
LjE5OGFlM2QwMjcyZTIyMTdkZTQ2OWYwMzdlNTM3NmI0ZGFiMzYzZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIxNTksNyArMjE1OSw3IEBAIGJvb2wgV2Vi
UHJvY2Vzczo6c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yV2ViR0woKSBjb25zdAogU3BlZWNo
UmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciYgV2ViUHJvY2Vzczo6ZW5zdXJl
U3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcigpCiB7CiAgICAgaWYg
KCFtX3NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpCi0gICAgICAg
IG1fc3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlciA9IG1ha2VVbmlx
dWU8U3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcj4obWFrZVJlZigq
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkpOworICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9u
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9u
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI+KCpwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKTsK
IAogICAgIHJldHVybiAqbV9zcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IDQxODZmNTU1ZDE4Y2Y2YTBlZjQwM2JlMmY5
YTEyY2JlY2U3ZDQwZjguLmQyMjU1MmVlNDVjMTg2M2YzMWFlYTFjMjU0NmM1NDE3N2QzMWU5MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTEyMzcsNyArMTIzNyw3IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhUZXh0Q2hlY2tpbmdSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zCiAgICAgYXV0byBpZGVudGlmaWVyID0gcmVxdWVzdC5kYXRhKCkuaWRlbnRpZmll
cigpLnZhbHVlKCk7CiAKICAgICBBU1NFUlQoIW1fcmVxdWVzdHNJbkZsaWdodC5jb250YWlucyhp
ZGVudGlmaWVyKSk7Ci0gICAgbV9yZXF1ZXN0c0luRmxpZ2h0LmFkZChpZGVudGlmaWVyLCBtYWtl
UmVmKHJlcXVlc3QpKTsKKyAgICBtX3JlcXVlc3RzSW5GbGlnaHQuYWRkKGlkZW50aWZpZXIsIHJl
cXVlc3QpOwogCiAgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIHJlcXVlc3QuZGF0
YSgpLnRleHQoKS5sZW5ndGgoKSk7CiAgICAgTlNSdW5Mb29wICpjdXJyZW50TG9vcCA9IFtOU1J1
bkxvb3AgY3VycmVudFJ1bkxvb3BdOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>