<?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>238210</bug_id>
          
          <creation_ts>2022-03-22 11:02:50 -0700</creation_ts>
          <short_desc>Swap all RemoteLayerBackingStore buffers in a single IPC</short_desc>
          <delta_ts>2022-03-23 12:09:03 -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>WebKit Process Model</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853767</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-22 11:02:50 -0700</bug_when>
    <thetext>Swap all RemoteLayerBackingStore buffers in a single IPC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853777</commentid>
    <comment_count>1</comment_count>
      <attachid>455399</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-22 11:10:06 -0700</bug_when>
    <thetext>Created attachment 455399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853778</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-22 11:10:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/90648100&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853783</commentid>
    <comment_count>3</comment_count>
      <attachid>455399</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-22 11:15:34 -0700</bug_when>
    <thetext>Comment on attachment 455399
Patch

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

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:266
&gt; +            WebCore::IntRect indicatorRect(0, 0, 52, 27);

Maybe `platformCALayerShowRepaintCounter` should populate an out arg or something? Now we have this in two places</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853836</commentid>
    <comment_count>4</comment_count>
      <attachid>455410</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-22 12:18:26 -0700</bug_when>
    <thetext>Created attachment 455410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854041</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-22 19:07:47 -0700</bug_when>
    <thetext>Committed r291733 (?): &lt;https://commits.webkit.org/r291733&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455410.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854324</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-23 12:09:03 -0700</bug_when>
    <thetext>*** Bug 238000 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455399</attachid>
            <date>2022-03-22 11:10:06 -0700</date>
            <delta_ts>2022-03-22 13:16:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238210-20220322111006.patch</filename>
            <type>text/plain</type>
            <size>43048</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVlYWUwNjY3NDBkZDM0ODZl
NWM0ZGJjNzk3MDVmYTdkY2Y1MWIwZjMuLjIxYjY5OTdlYTE1ODU3MGU1MmFmNTQ3NTU5OGMyM2Fl
MDZmMzg4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjItMDMtMjIgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dhcCBhbGwgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUgYnVmZmVycyBpbiBhIHNpbmdsZSBJUEMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODIxMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXBhcmVCdWZmZXJzRm9yRGlzcGxh
eSBpcyBhIHN5bmMgSVBDIChzaW5jZSB3ZSBuZWVkIHRoZSByZXN1bHQgYmVmb3JlIHBhaW50aW5n
KSwgYW5kIHN5bmMKKyAgICAgICAgSVBDIHBlci1sYXllciBoYXMgcGVyZm9ybWFuY2UgaW1wYWN0
LiBTbyBncm91cCBhbGwgdGhlIHN3YXBwaW5nIGludG8gYSBzaW5nbGUgSVBDIHdpdGggdGhlCisg
ICAgICAgIEdQVSBQcm9jZXNzLgorCisgICAgICAgIFRoZSBQcmVwYXJlQnVmZmVyc0ZvckRpc3Bs
YXkgbWVzc2FnZSBub3cgdGFrZXMgYSB2ZWN0b3Igb2YKKyAgICAgICAgUHJlcGFyZUJhY2tpbmdT
dG9yZUJ1ZmZlcnNJbnB1dERhdGEsIGFuZCByZXR1cm5zIGEgdmVjdG9yIG9mCisgICAgICAgIFBy
ZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YS4gU3dhcHBlZCBidWZmZXJzIGFyZSBh
cHBsaWVkIHRvIHRoZQorICAgICAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSBhcyBiZWZvcmUs
IHdpdGggYSBtaW5vciBjaGFuZ2UgaW4gdGhlIHBsYWNlIHRoYXQgc2V0TmVlZHNEaXNwbGF5KCkK
KyAgICAgICAgaXMgY2FsbGVkIGluIHRoZSBjYXNlIHdoZXJlIHdlIG5lZWQgYSBmdWxsIGRpc3Bs
YXkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwcmVwYXJl
QnVmZmVyc0ZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpwcmVwYXJlTGF5ZXJCdWZmZXJzRm9yRGlzcGxheSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6
CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBs
eVN3YXBwZWRCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnBlcmZvcm1EZWxlZ2F0ZWRMYXllckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6cHJlcGFyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVGcm9udEJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpwcmVwYXJlQnVmZmVycyk6CisgICAgICAg
IChXZWJLaXQ6Om9wZXJhdG9yPDwpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmg6CisgICAgICAgICog
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24u
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6
cHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVj
dGlvbjo6cHJlcGFyZUJhY2tpbmdTdG9yZXNGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6cHJl
cGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1ByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6UHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERhdGE6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzSW5wdXREYXRhOjpkZWNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc091dHB1dERh
dGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlByZXBhcmVCYWNraW5nU3RvcmVC
dWZmZXJzT3V0cHV0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnByZXBhcmVCdWZmZXJzRm9yRGlzcGxheSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lmg6CisKIDIwMjItMDMtMjIgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJBdXRobl0gU3VwcG9ydCBnZXRBc3NlcnRpb24gZm9yIHZpcnR1YWwgSElEIGF1
dGhlbnRpY2F0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggYTE1YjRhYTI5YjQ4NWM5
ZDBiZWVkMTJjMThjNjQxMzVmZjQ2ZTJiNS4uZDY3MzlmYmMyNTE5OWEzYzY5NjgzZTdjNDk5MWFh
NzlhMzhlZjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzk5LDggKzM5OSwxOSBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZUZy
b21CdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
K3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cHJlcGFyZUJ1ZmZlcnNGb3JEaXNwbGF5KFZl
Y3RvcjxQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc0lucHV0RGF0YT4gc3dhcEJ1ZmZlcnNJbnB1
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8UHJlcGFyZUJhY2tpbmdTdG9y
ZUJ1ZmZlcnNPdXRwdXREYXRhPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFZlY3Rv
cjxQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc091dHB1dERhdGE+IG91dHB1dERhdGE7CisgICAg
b3V0cHV0RGF0YS5yZXNpemVUb0ZpdChzd2FwQnVmZmVyc0lucHV0LnNpemUoKSk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3dhcEJ1ZmZlcnNJbnB1dC5zaXplKCk7ICsraSkKKyAg
ICAgICAgcHJlcGFyZUxheWVyQnVmZmVyc0ZvckRpc3BsYXkoc3dhcEJ1ZmZlcnNJbnB1dFtpXSwg
b3V0cHV0RGF0YVtpXSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihvdXRwdXREYXRhKTsKK30K
KwogLy8gVGhpcyBpcyB0aGUgR1BVIFByb2Nlc3MgdmVyc2lvbiBvZiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6cHJlcGFyZUJ1ZmZlcnMoKS4KLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
cHJlcGFyZUJ1ZmZlcnNGb3JEaXNwbGF5KGNvbnN0IEJ1ZmZlcklkZW50aWZpZXJTZXQmIGJ1ZmZl
clNldCwgYm9vbCBzdXBwb3J0c1BhcnRpYWxSZXBhaW50LCBib29sIGhhc0VtcHR5RGlydHlSZWdp
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQnVmZmVySWRlbnRpZmllclNldCYgc3dh
cHBlZEJ1ZmZlclNldCwgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+JiYg
ZnJvbnRCdWZmZXJIYW5kbGUsIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IHByZXBhcmVS
ZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpwcmVwYXJlTGF5ZXJCdWZmZXJzRm9yRGlzcGxheShjb25zdCBQcmVwYXJlQmFja2luZ1N0b3Jl
QnVmZmVyc0lucHV0RGF0YSYgaW5wdXREYXRhLCBQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc091
dHB1dERhdGEmIG91dHB1dERhdGEpCiB7CiAgICAgYXV0byBmZXRjaEJ1ZmZlciA9IFsmXShzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllcikgLT4gSW1h
Z2VCdWZmZXIqIHsKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPyBtX3JlbW90ZVJlc291cmNl
Q2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoeyAqaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pIDogbnVsbHB0cjsKQEAgLTQxMiwx
NCArNDIzLDE0IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cHJlcGFyZUJ1ZmZlcnNG
b3JEaXNwbGF5KGNvbnN0IEJ1ZmZlcklkZW50aWZpZXJTZXQmCiAgICAgICAgIHJldHVybiBidWZm
ZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwogICAgIH07CiAKLSAgICBhdXRvIGZy
b250QnVmZmVyID0gZmV0Y2hCdWZmZXIoYnVmZmVyU2V0LmZyb250KTsKLSAgICBhdXRvIGJhY2tC
dWZmZXIgPSBmZXRjaEJ1ZmZlcihidWZmZXJTZXQuYmFjayk7Ci0gICAgYXV0byBzZWNvbmRhcnlC
YWNrQnVmZmVyID0gZmV0Y2hCdWZmZXIoYnVmZmVyU2V0LnNlY29uZGFyeUJhY2spOworICAgIGF1
dG8gZnJvbnRCdWZmZXIgPSBmZXRjaEJ1ZmZlcihpbnB1dERhdGEuYnVmZmVyU2V0LmZyb250KTsK
KyAgICBhdXRvIGJhY2tCdWZmZXIgPSBmZXRjaEJ1ZmZlcihpbnB1dERhdGEuYnVmZmVyU2V0LmJh
Y2spOworICAgIGF1dG8gc2Vjb25kYXJ5QmFja0J1ZmZlciA9IGZldGNoQnVmZmVyKGlucHV0RGF0
YS5idWZmZXJTZXQuc2Vjb25kYXJ5QmFjayk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oUmVtb3Rl
UmVuZGVyaW5nQnVmZmVyVm9sYXRpbGl0eSwgc3RyZWFtIDw8ICJHUFUgUHJvY2VzczogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6cHJlcGFyZUJ1ZmZlcnNGb3JEaXNwbGF5IC0gZnJvbnQgIgotICAg
ICAgICA8PCBidWZmZXJTZXQuZnJvbnQgPDwgIiAoaW4tdXNlICIgPDwgKGZyb250QnVmZmVyICYm
IGZyb250QnVmZmVyLT5pc0luVXNlKCkpIDw8ICIpICIKLSAgICAgICAgPDwgYnVmZmVyU2V0LmJh
Y2sgPDwgIiAoaW4tdXNlICIgPDwgKGJhY2tCdWZmZXIgJiYgYmFja0J1ZmZlci0+aXNJblVzZSgp
KSA8PCAiKSAiCi0gICAgICAgIDw8IGJ1ZmZlclNldC5zZWNvbmRhcnlCYWNrIDw8ICIgKGluLXVz
ZSAiIDw8IChzZWNvbmRhcnlCYWNrQnVmZmVyICYmIHNlY29uZGFyeUJhY2tCdWZmZXItPmlzSW5V
c2UoKSkgPDwgIikgIik7CisgICAgICAgIDw8IGlucHV0RGF0YS5idWZmZXJTZXQuZnJvbnQgPDwg
IiAoaW4tdXNlICIgPDwgKGZyb250QnVmZmVyICYmIGZyb250QnVmZmVyLT5pc0luVXNlKCkpIDw8
ICIpICIKKyAgICAgICAgPDwgaW5wdXREYXRhLmJ1ZmZlclNldC5iYWNrIDw8ICIgKGluLXVzZSAi
IDw8IChiYWNrQnVmZmVyICYmIGJhY2tCdWZmZXItPmlzSW5Vc2UoKSkgPDwgIikgIgorICAgICAg
ICA8PCBpbnB1dERhdGEuYnVmZmVyU2V0LnNlY29uZGFyeUJhY2sgPDwgIiAoaW4tdXNlICIgPDwg
KHNlY29uZGFyeUJhY2tCdWZmZXIgJiYgc2Vjb25kYXJ5QmFja0J1ZmZlci0+aXNJblVzZSgpKSA8
PCAiKSAiKTsKIAogICAgIGJvb2wgbmVlZHNGdWxsRGlzcGxheSA9IGZhbHNlOwogCkBAIC00Mjks
MTUgKzQ0MCwxNSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnByZXBhcmVCdWZmZXJz
Rm9yRGlzcGxheShjb25zdCBCdWZmZXJJZGVudGlmaWVyU2V0JgogICAgICAgICAgICAgbmVlZHNG
dWxsRGlzcGxheSA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKGZyb250QnVmZmVyICYmICFuZWVk
c0Z1bGxEaXNwbGF5ICYmIGhhc0VtcHR5RGlydHlSZWdpb24pIHsKKyAgICBpZiAoZnJvbnRCdWZm
ZXIgJiYgIW5lZWRzRnVsbERpc3BsYXkgJiYgaW5wdXREYXRhLmhhc0VtcHR5RGlydHlSZWdpb24p
IHsKICAgICAgICAgLy8gTm8gc3dhcCBuZWNlc3NhcnksIGJ1dCB3ZSBkbyBuZWVkIHRvIHJldHVy
biB0aGUgZnJvbnQgYnVmZmVyIGhhbmRsZS4KLSAgICAgICAgYXV0byBmcm9udEJ1ZmZlckhhbmRs
ZSA9IGhhbmRsZUZyb21CdWZmZXIoKmZyb250QnVmZmVyKTsKLSAgICAgICAgYXV0byByZXN1bHRC
dWZmZXJTZXQgPSBCdWZmZXJJZGVudGlmaWVyU2V0IHsgYnVmZmVySWRlbnRpZmVyKGZyb250QnVm
ZmVyKSwgYnVmZmVySWRlbnRpZmVyKGJhY2tCdWZmZXIpLCBidWZmZXJJZGVudGlmZXIoc2Vjb25k
YXJ5QmFja0J1ZmZlcikgfTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0QnVmZmVy
U2V0LCBXVEZNb3ZlKGZyb250QnVmZmVySGFuZGxlKSwgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWly
ZW1lbnQ6Ok5lZWRzTm9EaXNwbGF5KTsKKyAgICAgICAgb3V0cHV0RGF0YS5mcm9udEJ1ZmZlckhh
bmRsZSA9IGhhbmRsZUZyb21CdWZmZXIoKmZyb250QnVmZmVyKTsKKyAgICAgICAgb3V0cHV0RGF0
YS5idWZmZXJTZXQgPSBCdWZmZXJJZGVudGlmaWVyU2V0IHsgYnVmZmVySWRlbnRpZmVyKGZyb250
QnVmZmVyKSwgYnVmZmVySWRlbnRpZmVyKGJhY2tCdWZmZXIpLCBidWZmZXJJZGVudGlmZXIoc2Vj
b25kYXJ5QmFja0J1ZmZlcikgfTsKKyAgICAgICAgb3V0cHV0RGF0YS5kaXNwbGF5UmVxdWlyZW1l
bnQgPSBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNOb0Rpc3BsYXk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKCFmcm9udEJ1ZmZlciB8fCAhc3VwcG9y
dHNQYXJ0aWFsUmVwYWludCkKKyAgICBpZiAoIWZyb250QnVmZmVyIHx8ICFpbnB1dERhdGEuc3Vw
cG9ydHNQYXJ0aWFsUmVwYWludCkKICAgICAgICAgbmVlZHNGdWxsRGlzcGxheSA9IHRydWU7CiAK
ICAgICBpZiAoIWJhY2tCdWZmZXIgfHwgYmFja0J1ZmZlci0+aXNJblVzZSgpKSB7CkBAIC00NTIs
MjMgKzQ2MywyMCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnByZXBhcmVCdWZmZXJz
Rm9yRGlzcGxheShjb25zdCBCdWZmZXJJZGVudGlmaWVyU2V0JgogCiAgICAgc3RkOjpzd2FwKGZy
b250QnVmZmVyLCBiYWNrQnVmZmVyKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlPiBmcm9udEJ1ZmZlckhhbmRsZTsKKyAgICBvdXRwdXREYXRhLmJ1ZmZlclNl
dCA9IEJ1ZmZlcklkZW50aWZpZXJTZXQgeyBidWZmZXJJZGVudGlmZXIoZnJvbnRCdWZmZXIpLCBi
dWZmZXJJZGVudGlmZXIoYmFja0J1ZmZlciksIGJ1ZmZlcklkZW50aWZlcihzZWNvbmRhcnlCYWNr
QnVmZmVyKSB9OwogICAgIGlmIChmcm9udEJ1ZmZlcikgewogICAgICAgICBhdXRvIHByZXZpb3Vz
U3RhdGUgPSBmcm9udEJ1ZmZlci0+c2V0Tm9uVm9sYXRpbGUoKTsKICAgICAgICAgaWYgKHByZXZp
b3VzU3RhdGUgPT0gU2V0Tm9uVm9sYXRpbGVSZXN1bHQ6OkVtcHR5KQogICAgICAgICAgICAgbmVl
ZHNGdWxsRGlzcGxheSA9IHRydWU7CiAKLSAgICAgICAgZnJvbnRCdWZmZXJIYW5kbGUgPSBoYW5k
bGVGcm9tQnVmZmVyKCpmcm9udEJ1ZmZlcik7CisgICAgICAgIG91dHB1dERhdGEuZnJvbnRCdWZm
ZXJIYW5kbGUgPSBoYW5kbGVGcm9tQnVmZmVyKCpmcm9udEJ1ZmZlcik7CiAgICAgfQogCi0gICAg
YXV0byByZXN1bHRCdWZmZXJTZXQgPSBCdWZmZXJJZGVudGlmaWVyU2V0IHsgYnVmZmVySWRlbnRp
ZmVyKGZyb250QnVmZmVyKSwgYnVmZmVySWRlbnRpZmVyKGJhY2tCdWZmZXIpLCBidWZmZXJJZGVu
dGlmZXIoc2Vjb25kYXJ5QmFja0J1ZmZlcikgfTsKLQogICAgIExPR19XSVRIX1NUUkVBTShSZW1v
dGVSZW5kZXJpbmdCdWZmZXJWb2xhdGlsaXR5LCBzdHJlYW0gPDwgIkdQVSBQcm9jZXNzOiBwcmVw
YXJlQnVmZmVyc0ZvckRpc3BsYXkgLSBzd2FwcGVkIGZyb20gWyIKLSAgICAgICAgPDwgYnVmZmVy
U2V0LmZyb250IDw8ICIsICIgPDwgYnVmZmVyU2V0LmJhY2sgPDwgIiwgIiA8PCBidWZmZXJTZXQu
c2Vjb25kYXJ5QmFjayA8PCAiXSB0byBbIgotICAgICAgICA8PCByZXN1bHRCdWZmZXJTZXQuZnJv
bnQgPDwgIiwgIiA8PCByZXN1bHRCdWZmZXJTZXQuYmFjayA8PCAiLCAiIDw8IHJlc3VsdEJ1ZmZl
clNldC5zZWNvbmRhcnlCYWNrIDw8ICJdIik7CisgICAgICAgIDw8IGlucHV0RGF0YS5idWZmZXJT
ZXQuZnJvbnQgPDwgIiwgIiA8PCBpbnB1dERhdGEuYnVmZmVyU2V0LmJhY2sgPDwgIiwgIiA8PCBp
bnB1dERhdGEuYnVmZmVyU2V0LnNlY29uZGFyeUJhY2sgPDwgIl0gdG8gWyIKKyAgICAgICAgPDwg
b3V0cHV0RGF0YS5idWZmZXJTZXQuZnJvbnQgPDwgIiwgIiA8PCBvdXRwdXREYXRhLmJ1ZmZlclNl
dC5iYWNrIDw8ICIsICIgPDwgb3V0cHV0RGF0YS5idWZmZXJTZXQuc2Vjb25kYXJ5QmFjayA8PCAi
XSIpOwogCi0gICAgYXV0byBkaXNwbGF5UmVxdWlyZW1lbnQgPSBuZWVkc0Z1bGxEaXNwbGF5ID8g
U3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzRnVsbERpc3BsYXkgOiBTd2FwQnVm
ZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNOb3JtYWxEaXNwbGF5OwotICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdEJ1ZmZlclNldCwgV1RGTW92ZShmcm9udEJ1ZmZlckhhbmRsZSksIGRp
c3BsYXlSZXF1aXJlbWVudCk7CisgICAgb3V0cHV0RGF0YS5kaXNwbGF5UmVxdWlyZW1lbnQgPSBu
ZWVkc0Z1bGxEaXNwbGF5ID8gU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzRnVs
bERpc3BsYXkgOiBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNOb3JtYWxEaXNw
bGF5OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1hcmtTdXJmYWNlc1ZvbGF0
aWxlKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+JiBp
ZGVudGlmaWVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiYgbWFya2VkVm9sYXRpbGVCdWZmZXJJZGVudGlm
aWVycyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA2YjU4
OTZjMmY3YWY0ZTMxODBiZTFlNmM4OWZmZmM0ODdlYTViYzRiLi4yYzI5MDk1ZGE4NWMyNWMzYTVl
ZDVlN2YxZWU1Njg5ZWZmNjcxYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY4LDYgKzY4
LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OwogY2xhc3MgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjsKIHN0cnVjdCBCdWZmZXJJZGVudGlm
aWVyU2V0Oworc3RydWN0IFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzSW5wdXREYXRhOworc3Ry
dWN0IFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YTsKIHN0cnVjdCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOwogZW51bSBjbGFzcyBTd2FwQnVmZmVy
c0Rpc3BsYXlSZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiAKQEAgLTEyMCw4ICsxMjIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5k
ZXJpbmdVcGRhdGVJRCk7CiAgICAgdm9pZCBtYXJrU3VyZmFjZXNWb2xhdGlsZShjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4mIG1hcmtlZFZvbGF0aWxlQnVmZmVySWRlbnRpZmllcnMpPiYmKTsKLQotICAgIHZvaWQgcHJl
cGFyZUJ1ZmZlcnNGb3JEaXNwbGF5KGNvbnN0IEJ1ZmZlcklkZW50aWZpZXJTZXQmIGJ1ZmZlclNl
dCwgYm9vbCBzdXBwb3J0c1BhcnRpYWxSZXBhaW50LCBib29sIGhhc0VtcHR5RGlydHlSZWdpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQnVmZmVySWRlbnRpZmllclNldCYgc3dhcHBl
ZEJ1ZmZlclNldCwgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+JiYgZnJv
bnRCdWZmZXJIYW5kbGUsIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IHByZXBhcmVSZXN1
bHQpPiYmKTsKKyAgICB2b2lkIHByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShWZWN0b3I8UHJlcGFy
ZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERhdGE+IHN3YXBCdWZmZXJzSW5wdXQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0
cHV0RGF0YT4mKT4mJik7CiAKICAgICAvLyBSZWNlaXZlZCBtZXNzYWdlcyB0cmFuc2xhdGVkIHRv
IHVzZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuCiAgICAgdm9pZCBjcmVh
dGVJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC0x
MzMsNiArMTM0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVdp
dGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgdm9pZCBjYWNoZUZvbnRXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihSZWY8V2ViQ29y
ZTo6Rm9udD4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAg
IHZvaWQgcHJlcGFyZUxheWVyQnVmZmVyc0ZvckRpc3BsYXkoY29uc3QgUHJlcGFyZUJhY2tpbmdT
dG9yZUJ1ZmZlcnNJbnB1dERhdGEmLCBQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc091dHB1dERh
dGEmKTsKKwogICAgIFJlZjxJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU+IG1fd29ya1F1
ZXVlOwogICAgIFJlZjxJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVj
dGlvbjsKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggNDM3Zjk2ZDRjN2EwMWQ5
NzMxMmQwMjBiZmNlMTc3ODQyNjM4MDIwMC4uZGE3Y2YxYzJkZDM0ZjI3ZWJjMzMzYjJhODMxYjNl
MDEzMDE1Y2Q0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAg
LTM3LDcgKzM3LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZD
b3VudGVkIFN0cmVhbSB7CiAgICAgRGVsZXRlQWxsRm9udHMoKQogICAgIFJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogCi0gICAgUHJlcGFyZUJ1ZmZlcnNGb3JEaXNwbGF5KHN0cnVjdCBX
ZWJLaXQ6OkJ1ZmZlcklkZW50aWZpZXJTZXQgYnVmZmVyU2V0LCBib29sIHN1cHBvcnRzUGFydGlh
bFJlcGFpbnQsIGJvb2wgaGFzRW1wdHlEaXJ0eVJlZ2lvbikgLT4gKHN0cnVjdCBXZWJLaXQ6OkJ1
ZmZlcklkZW50aWZpZXJTZXQgc3dhcHBlZEJ1ZmZlclNldCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6
OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZnJvbnRCdWZmZXJIYW5kbGUsIGVudW06dWludDhf
dCBXZWJLaXQ6OlN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IHByZXBhcmVSZXN1bHQpIFN5
bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZSBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQorICAg
IFByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShWZWN0b3I8V2ViS2l0OjpQcmVwYXJlQmFja2luZ1N0
b3JlQnVmZmVyc0lucHV0RGF0YT4gc3dhcEJ1ZmZlcnNJbnB1dCkgLT4gKFZlY3RvcjxXZWJLaXQ6
OlByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YT4gc3dhcEJ1ZmZlcnNPdXRwdXQp
IFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZSBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQog
CiAgICAgTWFya1N1cmZhY2VzVm9sYXRpbGUoVmVjdG9yPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycykgLT4gKFZlY3RvcjxX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IG1hcmtlZFZvbGF0aWxlQnVmZmVy
SWRlbnRpZmllcnMpIFN5bmNocm9ub3VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IDgyNTcxMjEyOWZjMjQxODU5MWYxNWJkN2Q5OWZhYjUxYjRiY2Y0YTEu
LmYwODU3YWVjN2UxNTM1MzMzOTQ1MTc3YmQ1NjI1YmQ2Njg3NTU0ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtODg5LDYgKzg4OSw4IEBAIGRlZiBoZWFk
ZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNz
aW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bic6IFsnIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1
cmVzV2ViS2l0LmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlByZXBhcmVCYWNraW5nU3RvcmVCdWZm
ZXJzSW5wdXREYXRhJzogWyciUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNEYXRhLmgiJ10sCisg
ICAgICAgICdXZWJLaXQ6OlByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YSc6IFsn
IlByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzRGF0YS5oIiddLAogICAgICAgICAnV2ViS2l0OjpS
ZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFt
ZUlkZW50aWZpZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRl
UmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmgKaW5kZXggNzJhMzRiMDQ3MDQ0MzExZGRjZjUxNDc5MjYwMWZmMmQ0
YjRiOTkwMC4uYmI4M2NkMzliNzBlYTRlZWM5NDEyNDFmZTYyOWMyNDY2NTQwZTI4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTY3LDEyICs2NywxMyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUpOwog
Ci0gICAgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQgcHJlcGFyZUJ1ZmZlcnMoYm9vbCBo
YXNFbXB0eURpcnR5UmVnaW9uKTsKKyAgICB2b2lkIHByZXBhcmVCdWZmZXJzKCk7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgd2UgbmVlZCBlbmNvZGUgdGhlIGJ1ZmZlci4KICAgICBib29sIGxh
eWVyV2lsbEJlRGlzcGxheWVkKCk7CiAgICAgYm9vbCBuZWVkc0Rpc3BsYXkoKSBjb25zdDsKIAor
ICAgIGJvb2wgcGVyZm9ybURlbGVnYXRlZExheWVyRGlzcGxheSgpOwogICAgIHZvaWQgcHJlcGFy
ZVRvRGlzcGxheSgpOwogICAgIHZvaWQgcGFpbnRDb250ZW50cygpOwogCkBAIC05OSw3ICsxMDAs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gSnVzdCBmb3IgUmVtb3RlQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi4KLSAgICB2b2lkIGFwcGx5U3dhcHBlZEJ1ZmZlcnMoUmVmUHRyPFdlYkNvcmU6
OkltYWdlQnVmZmVyPiYmIGZyb250LCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgYmFj
aywgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIHNlY29uZGFyeUJhY2spOworICAgIHZv
aWQgYXBwbHlTd2FwcGVkQnVmZmVycyhSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgZnJv
bnQsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBiYWNrLCBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+JiYgc2Vjb25kYXJ5QmFjaywgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1l
bnQpOwogICAgIFdlYkNvcmU6OlNldE5vblZvbGF0aWxlUmVzdWx0IHN3YXBUb1ZhbGlkRnJvbnRC
dWZmZXIoKTsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2Fm
ZUltYWdlQnVmZmVyRmx1c2hlcj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsKQEAgLTE0Myw2ICsx
NDQsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzZXRCdWZmZXJWb2xhdGlsZShCdWZmZXImKTsK
ICAgICBXZWJDb3JlOjpTZXROb25Wb2xhdGlsZVJlc3VsdCBzZXRCdWZmZXJOb25Wb2xhdGlsZShC
dWZmZXImKTsKKyAgICAKKyAgICB2b2lkIGVuc3VyZUZyb250QnVmZmVyKCk7CiAKICAgICBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fbGF5ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQppbmRleCBhMGNjNTQyMjk4OTExZDQ5ZGM4ZTA4NzA2ZWZhZTQxN2NiMzkwMDcyLi43NGEzN2M3
YzAxNzhiYWUwMDI1NWQyOTRmYmJmM2ZlZDEwMTY4YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCkBAIC0yNDksMTMgKzI0OSwyNiBAQCBXZWJDb3JlOjpTZXROb25Wb2xhdGlsZVJl
c3VsdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiB9
CiAKIC8vIENhbGxlZCBhZnRlciBidWZmZXIgc3dhcHBpbmcgaW4gdGhlIEdQVSBwcm9jZXNzLgot
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlTd2FwcGVkQnVmZmVycyhSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgZnJvbnQsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4mJiBiYWNrLCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgc2Vjb25kYXJ5QmFjaykK
K3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5U3dhcHBlZEJ1ZmZlcnMoUmVmUHRy
PFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIGZyb250LCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+JiYgYmFjaywgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIHNlY29uZGFyeUJhY2ss
IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IGRpc3BsYXlSZXF1aXJlbWVudCkKIHsKICAg
ICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5n
Rm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpOworICAgIG1fY29udGVudHNCdWZm
ZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
ID0gV1RGTW92ZShmcm9udCk7CiAgICAgbV9iYWNrQnVmZmVyLmltYWdlQnVmZmVyID0gV1RGTW92
ZShiYWNrKTsKICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXVEZNb3Zl
KHNlY29uZGFyeUJhY2spOworCisgICAgaWYgKGRpc3BsYXlSZXF1aXJlbWVudCA9PSBTd2FwQnVm
ZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNGdWxsRGlzcGxheSkKKyAgICAgICAgc2V0TmVl
ZHNEaXNwbGF5KCk7CisKKyAgICBpZiAoZGlzcGxheVJlcXVpcmVtZW50ICE9IFN3YXBCdWZmZXJz
RGlzcGxheVJlcXVpcmVtZW50OjpOZWVkc05vRGlzcGxheSkgeworICAgICAgICBpZiAobV9sYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKG1fbGF5ZXIpKSB7
CisgICAgICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IGluZGljYXRvclJlY3QoMCwgMCwgNTIsIDI3
KTsKKyAgICAgICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgZW5zdXJlRnJvbnRCdWZmZXIoKTsKIH0KIAogYm9vbCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpIGNvbnN0CkBA
IC0yNzIsMTggKzI4NSw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldENvbnRl
bnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIGNvbnRlbnRzKQogICAgIG1fcGFpbnRpbmdSZWN0cy5j
bGVhcigpOwogfQogCi0jaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IHJlc3Vs
dCkKLXsKLSAgICBzd2l0Y2ggKHJlc3VsdCkgewotICAgIGNhc2UgU3dhcEJ1ZmZlcnNEaXNwbGF5
UmVxdWlyZW1lbnQ6Ok5lZWRzRnVsbERpc3BsYXk6IHRzIDw8ICJmdWxsIGRpc3BsYXkiOyBicmVh
azsKLSAgICBjYXNlIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50OjpOZWVkc05vcm1hbERp
c3BsYXk6IHRzIDw8ICJub3JtYWwgZGlzcGxheSI7IGJyZWFrOwotICAgIGNhc2UgU3dhcEJ1ZmZl
cnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzTm9EaXNwbGF5OiB0cyA8PCAibm8gZGlzcGxheSI7
IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0jZW5kaWYKLQogYm9vbCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6bmVlZHNEaXNwbGF5KCkgY29uc3QKIHsKICAgICBhdXRvKiBjb2xs
ZWN0aW9uID0gYmFja2luZ1N0b3JlQ29sbGVjdGlvbigpOwpAQCAtMzAyLDggKzMwMywyMiBAQCBi
b29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpuZWVkc0Rpc3BsYXkoKSBjb25zdAogICAgIHJl
dHVybiBuZWVkc0Rpc3BsYXk7CiB9CiAKK2Jvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnBl
cmZvcm1EZWxlZ2F0ZWRMYXllckRpc3BsYXkoKQoreworICAgIGF1dG8mIGxheWVyT3duZXIgPSAq
bV9sYXllci0+b3duZXIoKTsKKyAgICBpZiAobGF5ZXJPd25lci5wbGF0Zm9ybUNBTGF5ZXJEZWxl
Z2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGNhbGwgYmFjayB0
byBzZXRDb250ZW50cygpLCBzZXR0aW5nIG1fY29udGVudHNCdWZmZXJIYW5kbGUuCisgICAgICAg
IGxheWVyT3duZXIucGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1fbGF5ZXIpOworICAgICAg
ICBsYXllck93bmVyLnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwog
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6cHJlcGFyZVRvRGlzcGxheSgpCiB7CisgICAg
QVNTRVJUKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdG
b3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSk7CiAgICAgQVNTRVJUKCFtX2Zyb250
QnVmZmVyRmx1c2hlcnMuc2l6ZSgpKTsKIAogICAgIGF1dG8qIGNvbGxlY3Rpb24gPSBiYWNraW5n
U3RvcmVDb2xsZWN0aW9uKCk7CkBAIC0zMTYsNDMgKzMzMSw0MyBAQCB2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpwcmVwYXJlVG9EaXNwbGF5KCkKIAogICAgIExPR19XSVRIX1NUUkVBTShS
ZW1vdGVSZW5kZXJpbmdCdWZmZXJWb2xhdGlsaXR5LCBzdHJlYW0gPDwgIlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlICIgPDwgbV9sYXllci0+bGF5ZXJJRCgpIDw8ICIgcHJlcGFyZVRvRGlzcGxheSgp
Iik7CiAKLSAgICBhdXRvJiBsYXllck93bmVyID0gKm1fbGF5ZXItPm93bmVyKCk7Ci0gICAgaWYg
KGxheWVyT3duZXIucGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xheWVyKSkgewot
ICAgICAgICAvLyBUaGlzIGNhbiBjYWxsIGJhY2sgdG8gc2V0Q29udGVudHMoKSwgc2V0dGluZyBt
X2NvbnRlbnRzQnVmZmVySGFuZGxlLgotICAgICAgICBsYXllck93bmVyLnBsYXRmb3JtQ0FMYXll
ckxheWVyRGlzcGxheShtX2xheWVyKTsKLSAgICAgICAgbGF5ZXJPd25lci5wbGF0Zm9ybUNBTGF5
ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CisgICAgaWYgKHBlcmZvcm1EZWxlZ2F0ZWRMYXll
ckRpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY29udGVudHNCdWZm
ZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGRpc3BsYXlSZXF1aXJlbWVudCA9
IGNvbGxlY3Rpb24tPnByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzKCp0aGlzKTsKLQotICAgIExP
R19XSVRIX1NUUkVBTShSZW1vdGVSZW5kZXJpbmdCdWZmZXJWb2xhdGlsaXR5LCBzdHJlYW0gPDwg
IlJlbW90ZUxheWVyQmFja2luZ1N0b3JlICIgPDwgbV9sYXllci0+bGF5ZXJJRCgpIDw8ICIgcHJl
cGFyZVRvRGlzcGxheSgpIC0gIiA8PCBkaXNwbGF5UmVxdWlyZW1lbnQpOwogCi0gICAgQVNTRVJU
KGRpc3BsYXlSZXF1aXJlbWVudCAhPSBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVl
ZHNOb0Rpc3BsYXkpOwotCi0gICAgaWYgKGRpc3BsYXlSZXF1aXJlbWVudCA9PSBTd2FwQnVmZmVy
c0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNGdWxsRGlzcGxheSkKLSAgICAgICAgc2V0TmVlZHNE
aXNwbGF5KCk7CisgICAgcHJlcGFyZUJ1ZmZlcnMoKTsKIAorICAgIGF1dG8mIGxheWVyT3duZXIg
PSAqbV9sYXllci0+b3duZXIoKTsKICAgICBpZiAobGF5ZXJPd25lci5wbGF0Zm9ybUNBTGF5ZXJT
aG93UmVwYWludENvdW50ZXIobV9sYXllcikpIHsKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBp
bmRpY2F0b3JSZWN0KDAsIDAsIDUyLCAyNyk7CiAgICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUo
aW5kaWNhdG9yUmVjdCk7CiAgICAgfQorICAgIAorICAgIGVuc3VyZUZyb250QnVmZmVyKCk7Cit9
CisKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUZyb250QnVmZmVyKCkKK3sK
KyAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byogY29sbGVjdGlvbiA9IGJhY2tpbmdTdG9yZUNvbGxlY3Rpb24oKTsKKyAgICBpZiAo
IWNvbGxlY3Rpb24pIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBpZiAoIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAg
ICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IGNvbGxlY3Rpb24tPmFsbG9jYXRlQnVm
ZmVyRm9yQmFja2luZ1N0b3JlKCp0aGlzKTsKKyAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
ID0gY29sbGVjdGlvbi0+YWxsb2NhdGVCdWZmZXJGb3JCYWNraW5nU3RvcmUoKnRoaXMpOwogCiAj
aWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQotICAgICAgICBp
ZiAobV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpZZXMpCi0gICAg
ICAgICAgICBtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgaWYgKG1faW5jbHVkZURpc3BsYXlMaXN0
ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6WWVzKQorICAgICAgICBtX2Zyb250QnVmZmVyLmRpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7
CiAjZW5kaWYKLSAgICB9CiB9CiAKLVN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpwcmVwYXJlQnVmZmVycyhib29sIGhhc0VtcHR5RGlydHlSZWdp
b24pCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpwcmVwYXJlQnVmZmVycygpCiB7CiAg
ICAgQVNTRVJUKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJp
bmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSk7CisgICAgbV9jb250ZW50c0J1
ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgbmVlZHNGdWxsRGlzcGxheSA9
IGZhbHNlOwogCkBAIC0zNjAsOCArMzc1LDggQEAgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1l
bnQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnByZXBhcmVCdWZmZXJzKGJvb2wgaGFzRW0KICAg
ICBpZiAoc2V0RnJvbnRCdWZmZXJOb25Wb2xhdGlsZSgpID09IFdlYkNvcmU6OlNldE5vblZvbGF0
aWxlUmVzdWx0OjpFbXB0eSkKICAgICAgICAgbmVlZHNGdWxsRGlzcGxheSA9IHRydWU7CiAKLSAg
ICBpZiAoIW5lZWRzRnVsbERpc3BsYXkgJiYgaGFzRW1wdHlEaXJ0eVJlZ2lvbikKLSAgICAgICAg
cmV0dXJuIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50OjpOZWVkc05vRGlzcGxheTsKKyAg
ICBpZiAoIW5lZWRzRnVsbERpc3BsYXkgJiYgaGFzRW1wdHlEaXJ0eVJlZ2lvbigpKQorICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIWhhc0Zyb250QnVmZmVyKCkgfHwgIXN1cHBvcnRzUGFydGlh
bFJlcGFpbnQoKSkKICAgICAgICAgbmVlZHNGdWxsRGlzcGxheSA9IHRydWU7CkBAIC0zNzAsNyAr
Mzg1LDEwIEBAIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpwcmVwYXJlQnVmZmVycyhib29sIGhhc0VtCiAgICAgaWYgKHJlc3VsdCA9PSBXZWJD
b3JlOjpTZXROb25Wb2xhdGlsZVJlc3VsdDo6RW1wdHkpCiAgICAgICAgIG5lZWRzRnVsbERpc3Bs
YXkgPSB0cnVlOwogCi0gICAgcmV0dXJuIG5lZWRzRnVsbERpc3BsYXkgPyBTd2FwQnVmZmVyc0Rp
c3BsYXlSZXF1aXJlbWVudDo6TmVlZHNGdWxsRGlzcGxheSA6IFN3YXBCdWZmZXJzRGlzcGxheVJl
cXVpcmVtZW50OjpOZWVkc05vcm1hbERpc3BsYXk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFJlbW90
ZVJlbmRlcmluZ0J1ZmZlclZvbGF0aWxpdHksIHN0cmVhbSA8PCAiUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUgIiA8PCBtX2xheWVyLT5sYXllcklEKCkgPDwgIiBwcmVwYXJlQnVmZmVycygpIC0gbmVl
ZHNGdWxsRGlzcGxheSAiIDw8IG5lZWRzRnVsbERpc3BsYXkpOworCisgICAgaWYgKG5lZWRzRnVs
bERpc3BsYXkpCisgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCiB2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpwYWludENvbnRlbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24uaAppbmRleCA3YmRiMGVkOTJiNmU3N2ZjZTEwNjIyNmE4OGI0
Y2ExOTNiNTdkNTNiLi5mYmIxMDBiZWIxNWY5ODY5N2M3YzNiNTBkOTllNmM3YjM0ZjU1ZTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oCkBAIC02MSw5
ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBiYWNraW5nU3RvcmVOZWVkc0Rp
c3BsYXkoY29uc3QgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKIAotICAgIHZpcnR1YWwgU3dh
cEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQgcHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnMoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKLQotICAgIHZvaWQgcHJlcGFyZUJhY2tpbmdTdG9yZXNG
b3JEaXNwbGF5KFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7CisgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVCYWNraW5nU3RvcmVzRm9yRGlzcGxheShSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biYpOwogICAgIHZvaWQgcGFpbnRSZWFjaGFibGVCYWNraW5nU3RvcmVDb250ZW50cygpOwogCiAg
ICAgdm9pZCB3aWxsRmx1c2hMYXllcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmVDb2xsZWN0aW9uLm1tCmluZGV4IGVkMGNjZjQ5ODQwY2RkY2ExNjY4MGVlZDI2MmRjZjc2
MWRmNTNjNTQuLmJmN2FjMGZjNTJhMjFkNGRhZGNmYjQ5MDQ3MjBmMDE0ODZjMzZhZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbQpAQCAtMTYzLDEx
ICsxNjMsNiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6YmFja2lu
Z1N0b3JlV2lsbEJlRGlzcGxheWVkKFJlbW90ZUxheWVyQgogICAgIHJldHVybiB0cnVlOwogfQog
Ci1Td2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNv
bGxlY3Rpb246OnByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzKFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlJiBiYWNraW5nU3RvcmUpCi17Ci0gICAgcmV0dXJuIGJhY2tpbmdTdG9yZS5wcmVwYXJlQnVm
ZmVycyhiYWNraW5nU3RvcmUuaGFzRW1wdHlEaXJ0eVJlZ2lvbigpKTsKLX0KLQogYm9vbCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246Om1hcmtCYWNraW5nU3RvcmVWb2xhdGlsZShS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBPcHRpb25TZXQ8Vm9sYXRpbGl0
eU1hcmtpbmdCZWhhdmlvcj4gbWFya2luZ0JlaGF2aW9yLCBNb25vdG9uaWNUaW1lIG5vdykKIHsK
ICAgICBBU1NFUlQoIW1faW5MYXllckZsdXNoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNr
aW5nU3RvcmVDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5o
CmluZGV4IDg5MWNhNmI4YzJlN2FjYTk3ZTZjNmYzOGE3OTVmMmJjMjIxNmVkOGYuLjEzMDBhMDA5
MmM2NThmN2Y2M2UxNjliYzRlY2RjMjE1MGEyZGI1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdC
YWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxl
Y3Rpb24uaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CiAKICAgICBib29sIGJh
Y2tpbmdTdG9yZU5lZWRzRGlzcGxheShjb25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpIGZp
bmFsOwotICAgIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IHByZXBhcmVCYWNraW5nU3Rv
cmVCdWZmZXJzKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJikgZmluYWw7CisgICAgdm9pZCBwcmVw
YXJlQmFja2luZ1N0b3Jlc0ZvckRpc3BsYXkoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKSBm
aW5hbDsKIAogICAgIGJvb2wgY29sbGVjdEJhY2tpbmdTdG9yZUJ1ZmZlcklkZW50aWZpZXJzVG9N
YXJrVm9sYXRpbGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmLCBPcHRpb25TZXQ8Vm9sYXRpbGl0
eU1hcmtpbmdCZWhhdmlvcj4sIE1vbm90b25pY1RpbWUgbm93LCBWZWN0b3I8V2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9u
Lm1tCmluZGV4IDAxZDY0MjNiYzg4MjgxYmRiMjM1OTYzNDBhZjdhNWYzYjViODI5MWEuLjkzNGMy
ZTY5ODMyNWM4M2MwMDliOWRlNzI4ZjkzZGVhYjhjNjFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJp
bmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVD
b2xsZWN0aW9uLm1tCkBAIC02NCwyMCArNjQsNDMgQEAgYm9vbCBSZW1vdGVMYXllcldpdGhSZW1v
dGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpiYWNraW5nU3RvcmVOZWVkc0Rpc3AK
ICAgICByZXR1cm4gIWJhY2tpbmdTdG9yZS5oYXNFbXB0eURpcnR5UmVnaW9uKCk7CiB9CiAKLVN3
YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IFJlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmlu
Z0JhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzKFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCit2b2lkIFJlbW90ZUxheWVyV2l0aFJl
bW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnByZXBhcmVCYWNraW5nU3RvcmVz
Rm9yRGlzcGxheShSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0g
ICAgYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA9IGxheWVyVHJlZUNvbnRleHQoKS5lbnN1
cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKLQotICAgIGF1dG8gaWRlbnRpZmllcnMg
PSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkJ1ZmZlclNldCB7Ci0gICAgICAgIGJhY2tp
bmdTdG9yZS5idWZmZXJGb3JUeXBlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBl
OjpGcm9udCksCi0gICAgICAgIGJhY2tpbmdTdG9yZS5idWZmZXJGb3JUeXBlKFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpCYWNrKSwKLSAgICAgICAgYmFja2luZ1N0b3JlLmJ1
ZmZlckZvclR5cGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkJ1ZmZlclR5cGU6OlNlY29uZGFy
eUJhY2spCi0gICAgfTsKKyAgICBWZWN0b3I8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpM
YXllclByZXBhcmVCdWZmZXJzRGF0YT4gcHJlcGFyZUJ1ZmZlcnNEYXRhOworICAgIHByZXBhcmVC
dWZmZXJzRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYmFja2luZ1N0b3Jlc05lZWRpbmdE
aXNwbGF5LnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUqPiBi
YWNraW5nU3RvcmVMaXN0OworICAgIGJhY2tpbmdTdG9yZUxpc3QucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX2JhY2tpbmdTdG9yZXNOZWVkaW5nRGlzcGxheS5zaXplKCkpOworCisgICAgZm9yIChh
dXRvKiBiYWNraW5nU3RvcmUgOiBtX2JhY2tpbmdTdG9yZXNOZWVkaW5nRGlzcGxheSkgeworICAg
ICAgICBiYWNraW5nU3RvcmUtPmxheWVyKCktPnByb3BlcnRpZXMoKS5ub3RlUHJvcGVydGllc0No
YW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpOwor
ICAgICAgICB0cmFuc2FjdGlvbi5sYXllclByb3BlcnRpZXNDaGFuZ2VkKCpiYWNraW5nU3RvcmUt
PmxheWVyKCkpOworCisgICAgICAgIGlmIChiYWNraW5nU3RvcmUtPnBlcmZvcm1EZWxlZ2F0ZWRM
YXllckRpc3BsYXkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHByZXBhcmVC
dWZmZXJzRGF0YS51bmNoZWNrZWRBcHBlbmQoeworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGJhY2tpbmdTdG9yZS0+YnVmZmVyRm9yVHlwZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
QnVmZmVyVHlwZTo6RnJvbnQpLAorICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZS0+YnVmZmVy
Rm9yVHlwZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyVHlwZTo6QmFjayksCisgICAg
ICAgICAgICAgICAgYmFja2luZ1N0b3JlLT5idWZmZXJGb3JUeXBlKFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpCdWZmZXJUeXBlOjpTZWNvbmRhcnlCYWNrKQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIGJhY2tpbmdTdG9yZS0+c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpLAorICAgICAgICAg
ICAgYmFja2luZ1N0b3JlLT5oYXNFbXB0eURpcnR5UmVnaW9uKCksCisgICAgICAgIH0pOworICAg
ICAgICAKKyAgICAgICAgYmFja2luZ1N0b3JlTGlzdC51bmNoZWNrZWRBcHBlbmQoYmFja2luZ1N0
b3JlKTsKKyAgICB9CiAKLSAgICBhdXRvIHN3YXBSZXN1bHQgPSByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLnByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShXVEZNb3ZlKGlkZW50aWZpZXJzKSwgYmFja2lu
Z1N0b3JlLnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKSwgYmFja2luZ1N0b3JlLmhhc0VtcHR5RGly
dHlSZWdpb24oKSk7CisgICAgYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA9IGxheWVyVHJl
ZUNvbnRleHQoKS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKKyAgICBhdXRv
IHN3YXBSZXN1bHQgPSByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnByZXBhcmVCdWZmZXJzRm9yRGlz
cGxheShXVEZNb3ZlKHByZXBhcmVCdWZmZXJzRGF0YSkpOwogCi0gICAgYmFja2luZ1N0b3JlLmFw
cGx5U3dhcHBlZEJ1ZmZlcnMoV1RGTW92ZShzd2FwUmVzdWx0LmJ1ZmZlcnMuZnJvbnQpLCBXVEZN
b3ZlKHN3YXBSZXN1bHQuYnVmZmVycy5iYWNrKSwgV1RGTW92ZShzd2FwUmVzdWx0LmJ1ZmZlcnMu
c2Vjb25kYXJ5QmFjaykpOwotICAgIHJldHVybiBzd2FwUmVzdWx0LmRpc3BsYXlSZXF1aXJlbWVu
dDsKKyAgICBSRUxFQVNFX0FTU0VSVChzd2FwUmVzdWx0LnNpemUoKSA9PSBiYWNraW5nU3RvcmVM
aXN0LnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN3YXBSZXN1bHQuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgYmFja2luZ1N0b3JlU3dhcFJlc3VsdCA9IHN3YXBS
ZXN1bHRbaV07CisgICAgICAgIGF1dG8qIGJhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZUxpc3Rb
aV07CisgICAgICAgIGJhY2tpbmdTdG9yZS0+YXBwbHlTd2FwcGVkQnVmZmVycyhXVEZNb3ZlKGJh
Y2tpbmdTdG9yZVN3YXBSZXN1bHQuYnVmZmVycy5mcm9udCksIFdURk1vdmUoYmFja2luZ1N0b3Jl
U3dhcFJlc3VsdC5idWZmZXJzLmJhY2spLCBXVEZNb3ZlKGJhY2tpbmdTdG9yZVN3YXBSZXN1bHQu
YnVmZmVycy5zZWNvbmRhcnlCYWNrKSwgYmFja2luZ1N0b3JlU3dhcFJlc3VsdC5kaXNwbGF5UmVx
dWlyZW1lbnQpOworICAgIH0KIH0KIAogUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBSZW1v
dGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjphbGxvY2F0
ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZShjb25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgYmFj
a2luZ1N0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNjcyN2M1NGVjNTQ5OWFhYzM5MTcyYTYzYWY0OTg3ZjhkNDY2OTY4Yy4uZTY4
NzZjYTFlM2I2ZmFlZjE2NGFlZDYzODAwZGUxMzU1MzMyZDljMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjIzLDYgKzI2MjMsNyBA
QAogCQkwRjVFMjAwMTE4RTc3MDUxMDAzRUMzRTUgLyogUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUUyMDAy
MThFNzcwNTEwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NTk1NjcyN0RCMUQ1ODAwRUU4NzRCIC8qIFN3
YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN3YXBCdWZmZXJz
RGlzcGxheVJlcXVpcmVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjU5
NTZDMjdFMTBDMkMwMEVFODc0QiAvKiBQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc0RhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzA3Qzc3MUExRkVFODMwMERBN0E0NSAvKiBSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzA3Qzc5MUExRkVFQTMwMERB
N0E0NSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzNCNzY3MjIyQjM4
QzYwMDgwNTMxNiAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVSZW1vdGVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTkwMiw2ICs5
OTAzLDcgQEAKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMxIC8q
IFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJCQkJNzIyNzgwMEIy
NDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAor
CQkJCTBGNjU5NTZDMjdFMTBDMkMwMEVFODc0QiAvKiBQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVy
c0RhdGEuaCAqLywKIAkJCQlGNDhCQjhERTI2Rjk2MzVEMDAxQzFDNDAgLyogUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmNwcCAqLywKIAkJCQlGNDhCQjhERDI2Rjk2MzVEMDAxQzFDNDAg
LyogUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggKi8sCiAJCQkJN0I5MDQxNjUyNTRB
RkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QcmVwYXJlQmFj
a2luZ1N0b3JlQnVmZmVyc0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ0MjRj
YzM3NWJiMjI0YTk1YjA2ZjNkNTZiNmI1ZGNlYzMyMjRhYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUHJlcGFyZUJhY2tpbmdTdG9yZUJ1
ZmZlcnNEYXRhLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkJ1ZmZlcklkZW50aWZpZXJT
ZXQuaCIKKyNpbmNsdWRlICJTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudC5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdHJ1Y3QgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERhdGEgewor
ICAgIEJ1ZmZlcklkZW50aWZpZXJTZXQgYnVmZmVyU2V0OworICAgIGJvb2wgc3VwcG9ydHNQYXJ0
aWFsUmVwYWludCB7IHRydWUgfTsKKyAgICBib29sIGhhc0VtcHR5RGlydHlSZWdpb24geyB0cnVl
IH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERhdGE+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQcmVwYXJlQmFja2luZ1N0b3JlQnVm
ZmVyc0lucHV0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBidWZmZXJTZXQ7CisgICAgZW5jb2RlciA8PCBzdXBwb3J0c1BhcnRpYWxSZXBhaW50
OworICAgIGVuY29kZXIgPDwgaGFzRW1wdHlEaXJ0eVJlZ2lvbjsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8UHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1
dERhdGE+IFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzSW5wdXREYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEJ1ZmZlcklkZW50aWZpZXJTZXQ+IGJ1
ZmZlclNldDsKKyAgICBkZWNvZGVyID4+IGJ1ZmZlclNldDsKKyAgICBpZiAoIWJ1ZmZlclNldCkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
c3VwcG9ydHNQYXJ0aWFsUmVwYWludDsKKyAgICBkZWNvZGVyID4+IHN1cHBvcnRzUGFydGlhbFJl
cGFpbnQ7CisgICAgaWYgKCFzdXBwb3J0c1BhcnRpYWxSZXBhaW50KQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNFbXB0eURpcnR5UmVn
aW9uOworICAgIGRlY29kZXIgPj4gaGFzRW1wdHlEaXJ0eVJlZ2lvbjsKKyAgICBpZiAoIWhhc0Vt
cHR5RGlydHlSZWdpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERhdGEgeyBXVEZNb3ZlKCpidWZmZXJT
ZXQpLCAqc3VwcG9ydHNQYXJ0aWFsUmVwYWludCwgKmhhc0VtcHR5RGlydHlSZWdpb24gfTsKK30K
KworCitzdHJ1Y3QgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNPdXRwdXREYXRhIHsKKyAgICBC
dWZmZXJJZGVudGlmaWVyU2V0IGJ1ZmZlclNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZT4gZnJvbnRCdWZmZXJIYW5kbGU7CisgICAgU3dhcEJ1ZmZlcnNEaXNw
bGF5UmVxdWlyZW1lbnQgZGlzcGxheVJlcXVpcmVtZW50IHsgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVx
dWlyZW1lbnQ6Ok5lZWRzTm9EaXNwbGF5IH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNPdXRwdXRE
YXRhPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNPdXRwdXREYXRhOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGJ1ZmZlclNldDsKKyAgICBlbmNvZGVy
IDw8IGZyb250QnVmZmVySGFuZGxlOworICAgIGVuY29kZXIgPDwgZGlzcGxheVJlcXVpcmVtZW50
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxQcmVwYXJlQmFj
a2luZ1N0b3JlQnVmZmVyc091dHB1dERhdGE+IFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0
cHV0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxC
dWZmZXJJZGVudGlmaWVyU2V0PiBidWZmZXJTZXQ7CisgICAgZGVjb2RlciA+PiBidWZmZXJTZXQ7
CisgICAgaWYgKCFidWZmZXJTZXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPj4g
YnVmZmVySGFuZGxlOworICAgIGRlY29kZXIgPj4gYnVmZmVySGFuZGxlOworICAgIGlmICghYnVm
ZmVySGFuZGxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRp
b25hbDxTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudD4gZGlzcGxheVJlcXVpcmVtZW50Owor
ICAgIGRlY29kZXIgPj4gZGlzcGxheVJlcXVpcmVtZW50OworICAgIGlmICghZGlzcGxheVJlcXVp
cmVtZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFByZXBh
cmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YSB7IFdURk1vdmUoKmJ1ZmZlclNldCksIFdU
Rk1vdmUoKmJ1ZmZlckhhbmRsZSksICpkaXNwbGF5UmVxdWlyZW1lbnQgfTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggZDM2YjhjYjY0Y2U4ZjFjMjY4
ZDViZTE5OGI1N2NmYjgwMmNiMmI0NC4uNmI5NDc4ZGVkNTIxZTMzYTQ4NTBjNmJkZGE4OWY0MDc3
NmE2NjE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAt
MjY3LDcgKzI2Nyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmCiAgICAgc2VuZFRvU3RyZWFt
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7CiB9CiAKLWF1dG8gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpwcmVwYXJlQnVmZmVyc0ZvckRpc3BsYXkoY29uc3QgQnVmZmVyU2V0JiBi
dWZmZXJzLCBib29sIHN1cHBvcnRzUGFydGlhbFJlcGFpbnQsIGJvb2wgaGFzRW1wdHlEaXJ0eVJl
Z2lvbikgLT4gU3dhcEJ1ZmZlcnNSZXN1bHQKK2F1dG8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpwcmVwYXJlQnVmZmVyc0ZvckRpc3BsYXkoY29uc3QgVmVjdG9yPExheWVyUHJlcGFyZUJ1
ZmZlcnNEYXRhPiYgcHJlcGFyZUJ1ZmZlcnNJbnB1dCkgLT4gVmVjdG9yPFN3YXBCdWZmZXJzUmVz
dWx0PgogewogICAgIGF1dG8gYnVmZmVySWRlbnRpZmllciA9IFtdKEltYWdlQnVmZmVyKiBidWZm
ZXIpIC0+IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiB7CiAgICAg
ICAgIGlmICghYnVmZmVyKQpAQCAtMjg2LDI2ICsyODYsMzAgQEAgYXV0byBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OnByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShjb25zdCBCdWZmZXJTZXQm
IGJ1ZmYKICAgICAgICAgfQogICAgIH07CiAKLSAgICAvLyBDbGVhciBhbGwgdGhlIGJ1ZmZlcidz
IE1hY2hTZW5kUmlnaHRzIHRvIGF2b2lkIGFsbCB0aGUgc3VyZmFjZXMgYXBwZWFyaW5nIHRvIGJl
IGluLXVzZS4KLSAgICAvLyBXZSBnZXQgYmFjayB0aGUgbmV3IGZyb250IGJ1ZmZlcidzIE1hY2hT
ZW5kUmlnaHQgaW4gdGhlIHJlcGx5LgotICAgIGNsZWFyQmFja2VuZEhhbmRsZShidWZmZXJzLmZy
b250LmdldCgpKTsKLSAgICBjbGVhckJhY2tlbmRIYW5kbGUoYnVmZmVycy5iYWNrLmdldCgpKTsK
LSAgICBjbGVhckJhY2tlbmRIYW5kbGUoYnVmZmVycy5zZWNvbmRhcnlCYWNrLmdldCgpKTsKLQot
ICAgIGF1dG8gYnVmZmVyU2V0ID0gQnVmZmVySWRlbnRpZmllclNldCB7Ci0gICAgICAgIGJ1ZmZl
cklkZW50aWZpZXIoYnVmZmVycy5mcm9udC5nZXQoKSksCi0gICAgICAgIGJ1ZmZlcklkZW50aWZp
ZXIoYnVmZmVycy5iYWNrLmdldCgpKSwKLSAgICAgICAgYnVmZmVySWRlbnRpZmllcihidWZmZXJz
LnNlY29uZGFyeUJhY2suZ2V0KCkpCi0gICAgfTsKLQotICAgIEJ1ZmZlcklkZW50aWZpZXJTZXQg
c3dhcHBlZEJ1ZmZlclNldDsKLSAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZT4gZnJvbnRCdWZmZXJIYW5kbGU7Ci0gICAgYXV0byBkaXNwbGF5UmVxdWlyZW1lbnQgPSBT
d2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNOb0Rpc3BsYXk7Ci0KLSAgICBzZW5k
U3luY1RvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpQcmVwYXJlQnVm
ZmVyc0ZvckRpc3BsYXkoYnVmZmVyU2V0LCBzdXBwb3J0c1BhcnRpYWxSZXBhaW50LCBoYXNFbXB0
eURpcnR5UmVnaW9uKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OlByZXBhcmVCdWZmZXJzRm9yRGlzcGxheTo6UmVwbHkoc3dhcHBlZEJ1ZmZlclNldCwgZnJvbnRC
dWZmZXJIYW5kbGUsIGRpc3BsYXlSZXF1aXJlbWVudCkpOworICAgIFZlY3RvcjxQcmVwYXJlQmFj
a2luZ1N0b3JlQnVmZmVyc0lucHV0RGF0YT4gaW5wdXREYXRhOworICAgIGlucHV0RGF0YS5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHByZXBhcmVCdWZmZXJzSW5wdXQuc2l6ZSgpKTsKKworICAgIGZv
ciAoY29uc3QgYXV0byYgcGVyTGF5ZXJEYXRhIDogcHJlcGFyZUJ1ZmZlcnNJbnB1dCkgeworICAg
ICAgICAvLyBDbGVhciBhbGwgdGhlIGJ1ZmZlcidzIE1hY2hTZW5kUmlnaHRzIHRvIGF2b2lkIGFs
bCB0aGUgc3VyZmFjZXMgYXBwZWFyaW5nIHRvIGJlIGluLXVzZS4KKyAgICAgICAgLy8gV2UgZ2V0
IGJhY2sgdGhlIG5ldyBmcm9udCBidWZmZXIncyBNYWNoU2VuZFJpZ2h0IGluIHRoZSByZXBseS4K
KyAgICAgICAgY2xlYXJCYWNrZW5kSGFuZGxlKHBlckxheWVyRGF0YS5idWZmZXJzLmZyb250Lmdl
dCgpKTsKKyAgICAgICAgY2xlYXJCYWNrZW5kSGFuZGxlKHBlckxheWVyRGF0YS5idWZmZXJzLmJh
Y2suZ2V0KCkpOworICAgICAgICBjbGVhckJhY2tlbmRIYW5kbGUocGVyTGF5ZXJEYXRhLmJ1ZmZl
cnMuc2Vjb25kYXJ5QmFjay5nZXQoKSk7CisKKyAgICAgICAgaW5wdXREYXRhLnVuY2hlY2tlZEFw
cGVuZCh7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnVmZmVySWRlbnRpZmllcihw
ZXJMYXllckRhdGEuYnVmZmVycy5mcm9udC5nZXQoKSksCisgICAgICAgICAgICAgICAgYnVmZmVy
SWRlbnRpZmllcihwZXJMYXllckRhdGEuYnVmZmVycy5iYWNrLmdldCgpKSwKKyAgICAgICAgICAg
ICAgICBidWZmZXJJZGVudGlmaWVyKHBlckxheWVyRGF0YS5idWZmZXJzLnNlY29uZGFyeUJhY2su
Z2V0KCkpCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcGVyTGF5ZXJEYXRhLnN1cHBvcnRz
UGFydGlhbFJlcGFpbnQsCisgICAgICAgICAgICBwZXJMYXllckRhdGEuaGFzRW1wdHlEaXJ0eVJl
Z2lvbgorICAgICAgICB9KTsKKyAgICB9CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oUmVtb3RlUmVu
ZGVyaW5nQnVmZmVyVm9sYXRpbGl0eSwgc3RyZWFtIDw8ICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnByZXBhcmVCdWZmZXJzRm9yRGlzcGxheSBzd2FwcGVkIHRvICIgPDwgc3dhcHBlZEJ1
ZmZlclNldC5mcm9udCA8PCAiICIgPDwgc3dhcHBlZEJ1ZmZlclNldC5iYWNrIDw8ICIgIiA8PCBz
d2FwcGVkQnVmZmVyU2V0LnNlY29uZGFyeUJhY2spOworICAgIFZlY3RvcjxQcmVwYXJlQmFja2lu
Z1N0b3JlQnVmZmVyc091dHB1dERhdGE+IG91dHB1dERhdGE7CisgICAgc2VuZFN5bmNUb1N0cmVh
bShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UHJlcGFyZUJ1ZmZlcnNGb3JEaXNw
bGF5KGlucHV0RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpQcmVwYXJl
QnVmZmVyc0ZvckRpc3BsYXk6OlJlcGx5KG91dHB1dERhdGEpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChpbnB1dERhdGEuc2l6ZSgpID09IG91dHB1dERhdGEuc2l6ZSgpKTsKIAogICAgIGF1dG8gZmV0
Y2hCdWZmZXJXaXRoSWRlbnRpZmllciA9IFsmXShzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGU+JiYgaGFuZGxlID0gc3RkOjpudWxsb3B0LCBib29sIGlzRnJvbnRCdWZmZXIgPSBm
YWxzZSkgLT4gUmVmUHRyPEltYWdlQnVmZmVyPiB7CiAgICAgICAgIGlmICghaWRlbnRpZmllcikK
QEAgLTMzMSwxNCArMzM1LDIxIEBAIGF1dG8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpw
cmVwYXJlQnVmZmVyc0ZvckRpc3BsYXkoY29uc3QgQnVmZmVyU2V0JiBidWZmCiAgICAgICAgIHJl
dHVybiBidWZmZXI7CiAgICAgfTsKIAotICAgIHJldHVybiB7Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZldGNoQnVmZmVyV2l0aElkZW50aWZpZXIoc3dhcHBlZEJ1ZmZlclNldC5mcm9udCwgV1RG
TW92ZShmcm9udEJ1ZmZlckhhbmRsZSksIHRydWUpLAotICAgICAgICAgICAgZmV0Y2hCdWZmZXJX
aXRoSWRlbnRpZmllcihzd2FwcGVkQnVmZmVyU2V0LmJhY2spLAotICAgICAgICAgICAgZmV0Y2hC
dWZmZXJXaXRoSWRlbnRpZmllcihzd2FwcGVkQnVmZmVyU2V0LnNlY29uZGFyeUJhY2spCi0gICAg
ICAgIH0sCi0gICAgICAgIGRpc3BsYXlSZXF1aXJlbWVudAotICAgIH07CisgICAgVmVjdG9yPFN3
YXBCdWZmZXJzUmVzdWx0PiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkob3V0cHV0RGF0YS5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBwZXJMYXllck91dHB1dERh
dGEgOiBvdXRwdXREYXRhKSB7CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoeworICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGZldGNoQnVmZmVyV2l0aElkZW50aWZpZXIocGVy
TGF5ZXJPdXRwdXREYXRhLmJ1ZmZlclNldC5mcm9udCwgV1RGTW92ZShwZXJMYXllck91dHB1dERh
dGEuZnJvbnRCdWZmZXJIYW5kbGUpLCB0cnVlKSwKKyAgICAgICAgICAgICAgICBmZXRjaEJ1ZmZl
cldpdGhJZGVudGlmaWVyKHBlckxheWVyT3V0cHV0RGF0YS5idWZmZXJTZXQuYmFjayksCisgICAg
ICAgICAgICAgICAgZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllcihwZXJMYXllck91dHB1dERhdGEu
YnVmZmVyU2V0LnNlY29uZGFyeUJhY2spCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcGVy
TGF5ZXJPdXRwdXREYXRhLmRpc3BsYXlSZXF1aXJlbWVudAorICAgICAgICB9KTsKKyAgICB9CisK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6bWFya1N1cmZhY2VzVm9sYXRpbGUoVmVjdG9yPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4mJiBpZGVudGlmaWVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CmluZGV4IDU2NjI5MzY4OTVjN2QxZGZiZWIxYjZlYTdjNTJkMjg2NTVmYTIzNWMuLmNiODU4OGM4
M2UxNTk2Yjg5YzIxMTBhMmIzZTQzODRhZDEyMzg4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaApAQCAtMTAxLDExICsxMDEsMTggQEAgcHVibGljOgogICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IHNlY29uZGFyeUJhY2s7CiAgICAgfTsKICAgICAK
KyAgICBzdHJ1Y3QgTGF5ZXJQcmVwYXJlQnVmZmVyc0RhdGEgeworICAgICAgICBCdWZmZXJTZXQg
YnVmZmVyczsKKyAgICAgICAgYm9vbCBzdXBwb3J0c1BhcnRpYWxSZXBhaW50IHsgdHJ1ZSB9Owor
ICAgICAgICBib29sIGhhc0VtcHR5RGlydHlSZWdpb24geyBmYWxzZSB9OworICAgIH07CisgICAg
CiAgICAgc3RydWN0IFN3YXBCdWZmZXJzUmVzdWx0IHsKICAgICAgICAgQnVmZmVyU2V0IGJ1ZmZl
cnM7CiAgICAgICAgIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IGRpc3BsYXlSZXF1aXJl
bWVudDsKICAgICB9OwotICAgIFN3YXBCdWZmZXJzUmVzdWx0IHByZXBhcmVCdWZmZXJzRm9yRGlz
cGxheShjb25zdCBCdWZmZXJTZXQmLCBib29sIHN1cHBvcnRzUGFydGlhbFJlcGFpbnQsIGJvb2wg
aGFzRW1wdHlEaXJ0eVJlZ2lvbik7CisKKyAgICBWZWN0b3I8U3dhcEJ1ZmZlcnNSZXN1bHQ+IHBy
ZXBhcmVCdWZmZXJzRm9yRGlzcGxheShjb25zdCBWZWN0b3I8TGF5ZXJQcmVwYXJlQnVmZmVyc0Rh
dGE+Jik7CiAKICAgICB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKCk7CiAgICAgUmVuZGVy
aW5nVXBkYXRlSUQgcmVuZGVyaW5nVXBkYXRlSUQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z1VwZGF0ZUlEOyB9Cg==
</data>
<flag name="review"
          id="483374"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="483407"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455410</attachid>
            <date>2022-03-22 12:18:26 -0700</date>
            <delta_ts>2022-03-22 19:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238210-20220322121825.patch</filename>
            <type>text/plain</type>
            <size>44722</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVlYWUwNjY3NDBkZDM0ODZl
NWM0ZGJjNzk3MDVmYTdkY2Y1MWIwZjMuLmVmODk2NjBjMmI5NWRiMGI2MzZlZmNhOWM2YjU2N2Ew
NGIzYjdmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjItMDMtMjIgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dhcCBhbGwgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUgYnVmZmVycyBpbiBhIHNpbmdsZSBJUEMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODIxMAorCisgICAgICAgIFJldmll
d2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgUHJlcGFyZUJ1ZmZlcnNGb3JEaXNwbGF5IGlz
IGEgc3luYyBJUEMgKHNpbmNlIHdlIG5lZWQgdGhlIHJlc3VsdCBiZWZvcmUgcGFpbnRpbmcpLCBh
bmQgc3luYworICAgICAgICBJUEMgcGVyLWxheWVyIGhhcyBwZXJmb3JtYW5jZSBpbXBhY3QuIFNv
IGdyb3VwIGFsbCB0aGUgc3dhcHBpbmcgaW50byBhIHNpbmdsZSBJUEMgd2l0aCB0aGUKKyAgICAg
ICAgR1BVIFByb2Nlc3MuCisKKyAgICAgICAgVGhlIFByZXBhcmVCdWZmZXJzRm9yRGlzcGxheSBt
ZXNzYWdlIG5vdyB0YWtlcyBhIHZlY3RvciBvZgorICAgICAgICBQcmVwYXJlQmFja2luZ1N0b3Jl
QnVmZmVyc0lucHV0RGF0YSwgYW5kIHJldHVybnMgYSB2ZWN0b3Igb2YKKyAgICAgICAgUHJlcGFy
ZUJhY2tpbmdTdG9yZUJ1ZmZlcnNPdXRwdXREYXRhLiBTd2FwcGVkIGJ1ZmZlcnMgYXJlIGFwcGxp
ZWQgdG8gdGhlCisgICAgICAgIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIGFzIGJlZm9yZSwgd2l0
aCBhIG1pbm9yIGNoYW5nZSBpbiB0aGUgcGxhY2UgdGhhdCBzZXROZWVkc0Rpc3BsYXkoKQorICAg
ICAgICBpcyBjYWxsZWQgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCBhIGZ1bGwgZGlzcGxheS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnByZXBhcmVCdWZm
ZXJzRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnByZXBhcmVMYXllckJ1ZmZlcnNGb3JEaXNwbGF5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAg
ICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6
CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5U3dh
cHBlZEJ1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
cGVyZm9ybURlbGVnYXRlZExheWVyRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpwcmVwYXJlVG9EaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuc3VyZUZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnByZXBhcmVCdWZmZXJzKToKKyAgICAgICAgKFdl
YktpdDo6b3BlcmF0b3I8PCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpwcmVw
YXJlQmFja2luZ1N0b3JlQnVmZmVycyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldp
dGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9u
OjpwcmVwYXJlQmFja2luZ1N0b3Jlc0ZvckRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpwcmVwYXJl
QmFja2luZ1N0b3JlQnVmZmVycyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUHJl
cGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQ
cmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc0lucHV0RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERhdGE6OmRlY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OlByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZl
cnNPdXRwdXREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cHJlcGFyZUJ1ZmZlcnNGb3JEaXNwbGF5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aDoKKwogMjAyMi0wMy0yMiAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYkF1dGhuXSBTdXBwb3J0IGdldEFzc2VydGlvbiBmb3IgdmlydHVhbCBISUQgYXV0aGVu
dGljYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBhMTViNGFhMjliNDg1YzlkMGJl
ZWQxMmMxOGM2NDEzNWZmNDZlMmI1Li4zZDRmODRmNTFmZmM2NGM4MjQ2ZTY5Njc1ZmQ3MTJhNjNl
MzE3Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zOTksOCArMzk5LDE5IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxlRnJvbUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwcmVwYXJlQnVmZmVyc0ZvckRpc3BsYXkoVmVjdG9y
PFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzSW5wdXREYXRhPiBzd2FwQnVmZmVyc0lucHV0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxQcmVwYXJlQmFja2luZ1N0b3JlQnVm
ZmVyc091dHB1dERhdGE+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVmVjdG9yPFBy
ZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YT4gb3V0cHV0RGF0YTsKKyAgICBvdXRw
dXREYXRhLnJlc2l6ZVRvRml0KHN3YXBCdWZmZXJzSW5wdXQuc2l6ZSgpKTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzd2FwQnVmZmVyc0lucHV0LnNpemUoKTsgKytpKQorICAgICAg
ICBwcmVwYXJlTGF5ZXJCdWZmZXJzRm9yRGlzcGxheShzd2FwQnVmZmVyc0lucHV0W2ldLCBvdXRw
dXREYXRhW2ldKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKG91dHB1dERhdGEpOworfQorCiAv
LyBUaGlzIGlzIHRoZSBHUFUgUHJvY2VzcyB2ZXJzaW9uIG9mIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpwcmVwYXJlQnVmZmVycygpLgotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwcmVw
YXJlQnVmZmVyc0ZvckRpc3BsYXkoY29uc3QgQnVmZmVySWRlbnRpZmllclNldCYgYnVmZmVyU2V0
LCBib29sIHN1cHBvcnRzUGFydGlhbFJlcGFpbnQsIGJvb2wgaGFzRW1wdHlEaXJ0eVJlZ2lvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBCdWZmZXJJZGVudGlmaWVyU2V0JiBzd2FwcGVk
QnVmZmVyU2V0LCBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4mJiBmcm9u
dEJ1ZmZlckhhbmRsZSwgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQgcHJlcGFyZVJlc3Vs
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnBy
ZXBhcmVMYXllckJ1ZmZlcnNGb3JEaXNwbGF5KGNvbnN0IFByZXBhcmVCYWNraW5nU3RvcmVCdWZm
ZXJzSW5wdXREYXRhJiBpbnB1dERhdGEsIFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0
RGF0YSYgb3V0cHV0RGF0YSkKIHsKICAgICBhdXRvIGZldGNoQnVmZmVyID0gWyZdKHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpZGVudGlmaWVyKSAtPiBJbWFnZUJ1
ZmZlciogewogICAgICAgICByZXR1cm4gaWRlbnRpZmllciA/IG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZS5jYWNoZWRJbWFnZUJ1ZmZlcih7ICppZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSkgOiBudWxscHRyOwpAQCAtNDEyLDE0ICs0
MjMsMTQgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwcmVwYXJlQnVmZmVyc0ZvckRp
c3BsYXkoY29uc3QgQnVmZmVySWRlbnRpZmllclNldCYKICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CiAgICAgfTsKIAotICAgIGF1dG8gZnJvbnRC
dWZmZXIgPSBmZXRjaEJ1ZmZlcihidWZmZXJTZXQuZnJvbnQpOwotICAgIGF1dG8gYmFja0J1ZmZl
ciA9IGZldGNoQnVmZmVyKGJ1ZmZlclNldC5iYWNrKTsKLSAgICBhdXRvIHNlY29uZGFyeUJhY2tC
dWZmZXIgPSBmZXRjaEJ1ZmZlcihidWZmZXJTZXQuc2Vjb25kYXJ5QmFjayk7CisgICAgYXV0byBm
cm9udEJ1ZmZlciA9IGZldGNoQnVmZmVyKGlucHV0RGF0YS5idWZmZXJTZXQuZnJvbnQpOworICAg
IGF1dG8gYmFja0J1ZmZlciA9IGZldGNoQnVmZmVyKGlucHV0RGF0YS5idWZmZXJTZXQuYmFjayk7
CisgICAgYXV0byBzZWNvbmRhcnlCYWNrQnVmZmVyID0gZmV0Y2hCdWZmZXIoaW5wdXREYXRhLmJ1
ZmZlclNldC5zZWNvbmRhcnlCYWNrKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShSZW1vdGVSZW5k
ZXJpbmdCdWZmZXJWb2xhdGlsaXR5LCBzdHJlYW0gPDwgIkdQVSBQcm9jZXNzOiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpwcmVwYXJlQnVmZmVyc0ZvckRpc3BsYXkgLSBmcm9udCAiCi0gICAgICAg
IDw8IGJ1ZmZlclNldC5mcm9udCA8PCAiIChpbi11c2UgIiA8PCAoZnJvbnRCdWZmZXIgJiYgZnJv
bnRCdWZmZXItPmlzSW5Vc2UoKSkgPDwgIikgIgotICAgICAgICA8PCBidWZmZXJTZXQuYmFjayA8
PCAiIChpbi11c2UgIiA8PCAoYmFja0J1ZmZlciAmJiBiYWNrQnVmZmVyLT5pc0luVXNlKCkpIDw8
ICIpICIKLSAgICAgICAgPDwgYnVmZmVyU2V0LnNlY29uZGFyeUJhY2sgPDwgIiAoaW4tdXNlICIg
PDwgKHNlY29uZGFyeUJhY2tCdWZmZXIgJiYgc2Vjb25kYXJ5QmFja0J1ZmZlci0+aXNJblVzZSgp
KSA8PCAiKSAiKTsKKyAgICAgICAgPDwgaW5wdXREYXRhLmJ1ZmZlclNldC5mcm9udCA8PCAiIChp
bi11c2UgIiA8PCAoZnJvbnRCdWZmZXIgJiYgZnJvbnRCdWZmZXItPmlzSW5Vc2UoKSkgPDwgIikg
IgorICAgICAgICA8PCBpbnB1dERhdGEuYnVmZmVyU2V0LmJhY2sgPDwgIiAoaW4tdXNlICIgPDwg
KGJhY2tCdWZmZXIgJiYgYmFja0J1ZmZlci0+aXNJblVzZSgpKSA8PCAiKSAiCisgICAgICAgIDw8
IGlucHV0RGF0YS5idWZmZXJTZXQuc2Vjb25kYXJ5QmFjayA8PCAiIChpbi11c2UgIiA8PCAoc2Vj
b25kYXJ5QmFja0J1ZmZlciAmJiBzZWNvbmRhcnlCYWNrQnVmZmVyLT5pc0luVXNlKCkpIDw8ICIp
ICIpOwogCiAgICAgYm9vbCBuZWVkc0Z1bGxEaXNwbGF5ID0gZmFsc2U7CiAKQEAgLTQyOSwxNSAr
NDQwLDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cHJlcGFyZUJ1ZmZlcnNGb3JE
aXNwbGF5KGNvbnN0IEJ1ZmZlcklkZW50aWZpZXJTZXQmCiAgICAgICAgICAgICBuZWVkc0Z1bGxE
aXNwbGF5ID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoZnJvbnRCdWZmZXIgJiYgIW5lZWRzRnVs
bERpc3BsYXkgJiYgaGFzRW1wdHlEaXJ0eVJlZ2lvbikgeworICAgIGlmIChmcm9udEJ1ZmZlciAm
JiAhbmVlZHNGdWxsRGlzcGxheSAmJiBpbnB1dERhdGEuaGFzRW1wdHlEaXJ0eVJlZ2lvbikgewog
ICAgICAgICAvLyBObyBzd2FwIG5lY2Vzc2FyeSwgYnV0IHdlIGRvIG5lZWQgdG8gcmV0dXJuIHRo
ZSBmcm9udCBidWZmZXIgaGFuZGxlLgotICAgICAgICBhdXRvIGZyb250QnVmZmVySGFuZGxlID0g
aGFuZGxlRnJvbUJ1ZmZlcigqZnJvbnRCdWZmZXIpOwotICAgICAgICBhdXRvIHJlc3VsdEJ1ZmZl
clNldCA9IEJ1ZmZlcklkZW50aWZpZXJTZXQgeyBidWZmZXJJZGVudGlmZXIoZnJvbnRCdWZmZXIp
LCBidWZmZXJJZGVudGlmZXIoYmFja0J1ZmZlciksIGJ1ZmZlcklkZW50aWZlcihzZWNvbmRhcnlC
YWNrQnVmZmVyKSB9OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHRCdWZmZXJTZXQs
IFdURk1vdmUoZnJvbnRCdWZmZXJIYW5kbGUpLCBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVu
dDo6TmVlZHNOb0Rpc3BsYXkpOworICAgICAgICBvdXRwdXREYXRhLmZyb250QnVmZmVySGFuZGxl
ID0gaGFuZGxlRnJvbUJ1ZmZlcigqZnJvbnRCdWZmZXIpOworICAgICAgICBvdXRwdXREYXRhLmJ1
ZmZlclNldCA9IEJ1ZmZlcklkZW50aWZpZXJTZXQgeyBidWZmZXJJZGVudGlmZXIoZnJvbnRCdWZm
ZXIpLCBidWZmZXJJZGVudGlmZXIoYmFja0J1ZmZlciksIGJ1ZmZlcklkZW50aWZlcihzZWNvbmRh
cnlCYWNrQnVmZmVyKSB9OworICAgICAgICBvdXRwdXREYXRhLmRpc3BsYXlSZXF1aXJlbWVudCA9
IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50OjpOZWVkc05vRGlzcGxheTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoIWZyb250QnVmZmVyIHx8ICFzdXBwb3J0c1Bh
cnRpYWxSZXBhaW50KQorICAgIGlmICghZnJvbnRCdWZmZXIgfHwgIWlucHV0RGF0YS5zdXBwb3J0
c1BhcnRpYWxSZXBhaW50KQogICAgICAgICBuZWVkc0Z1bGxEaXNwbGF5ID0gdHJ1ZTsKIAogICAg
IGlmICghYmFja0J1ZmZlciB8fCBiYWNrQnVmZmVyLT5pc0luVXNlKCkpIHsKQEAgLTQ1MiwyMyAr
NDYzLDIxIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cHJlcGFyZUJ1ZmZlcnNGb3JE
aXNwbGF5KGNvbnN0IEJ1ZmZlcklkZW50aWZpZXJTZXQmCiAKICAgICBzdGQ6OnN3YXAoZnJvbnRC
dWZmZXIsIGJhY2tCdWZmZXIpOwogCi0gICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGU+IGZyb250QnVmZmVySGFuZGxlOworICAgIG91dHB1dERhdGEuYnVmZmVyU2V0ID0g
QnVmZmVySWRlbnRpZmllclNldCB7IGJ1ZmZlcklkZW50aWZlcihmcm9udEJ1ZmZlciksIGJ1ZmZl
cklkZW50aWZlcihiYWNrQnVmZmVyKSwgYnVmZmVySWRlbnRpZmVyKHNlY29uZGFyeUJhY2tCdWZm
ZXIpIH07CiAgICAgaWYgKGZyb250QnVmZmVyKSB7CiAgICAgICAgIGF1dG8gcHJldmlvdXNTdGF0
ZSA9IGZyb250QnVmZmVyLT5zZXROb25Wb2xhdGlsZSgpOwogICAgICAgICBpZiAocHJldmlvdXNT
dGF0ZSA9PSBTZXROb25Wb2xhdGlsZVJlc3VsdDo6RW1wdHkpCiAgICAgICAgICAgICBuZWVkc0Z1
bGxEaXNwbGF5ID0gdHJ1ZTsKIAotICAgICAgICBmcm9udEJ1ZmZlckhhbmRsZSA9IGhhbmRsZUZy
b21CdWZmZXIoKmZyb250QnVmZmVyKTsKLSAgICB9Ci0KLSAgICBhdXRvIHJlc3VsdEJ1ZmZlclNl
dCA9IEJ1ZmZlcklkZW50aWZpZXJTZXQgeyBidWZmZXJJZGVudGlmZXIoZnJvbnRCdWZmZXIpLCBi
dWZmZXJJZGVudGlmZXIoYmFja0J1ZmZlciksIGJ1ZmZlcklkZW50aWZlcihzZWNvbmRhcnlCYWNr
QnVmZmVyKSB9OworICAgICAgICBvdXRwdXREYXRhLmZyb250QnVmZmVySGFuZGxlID0gaGFuZGxl
RnJvbUJ1ZmZlcigqZnJvbnRCdWZmZXIpOworICAgIH0gZWxzZQorICAgICAgICBuZWVkc0Z1bGxE
aXNwbGF5ID0gdHJ1ZTsKIAogICAgIExPR19XSVRIX1NUUkVBTShSZW1vdGVSZW5kZXJpbmdCdWZm
ZXJWb2xhdGlsaXR5LCBzdHJlYW0gPDwgIkdQVSBQcm9jZXNzOiBwcmVwYXJlQnVmZmVyc0ZvckRp
c3BsYXkgLSBzd2FwcGVkIGZyb20gWyIKLSAgICAgICAgPDwgYnVmZmVyU2V0LmZyb250IDw8ICIs
ICIgPDwgYnVmZmVyU2V0LmJhY2sgPDwgIiwgIiA8PCBidWZmZXJTZXQuc2Vjb25kYXJ5QmFjayA8
PCAiXSB0byBbIgotICAgICAgICA8PCByZXN1bHRCdWZmZXJTZXQuZnJvbnQgPDwgIiwgIiA8PCBy
ZXN1bHRCdWZmZXJTZXQuYmFjayA8PCAiLCAiIDw8IHJlc3VsdEJ1ZmZlclNldC5zZWNvbmRhcnlC
YWNrIDw8ICJdIik7CisgICAgICAgIDw8IGlucHV0RGF0YS5idWZmZXJTZXQuZnJvbnQgPDwgIiwg
IiA8PCBpbnB1dERhdGEuYnVmZmVyU2V0LmJhY2sgPDwgIiwgIiA8PCBpbnB1dERhdGEuYnVmZmVy
U2V0LnNlY29uZGFyeUJhY2sgPDwgIl0gdG8gWyIKKyAgICAgICAgPDwgb3V0cHV0RGF0YS5idWZm
ZXJTZXQuZnJvbnQgPDwgIiwgIiA8PCBvdXRwdXREYXRhLmJ1ZmZlclNldC5iYWNrIDw8ICIsICIg
PDwgb3V0cHV0RGF0YS5idWZmZXJTZXQuc2Vjb25kYXJ5QmFjayA8PCAiXSIpOwogCi0gICAgYXV0
byBkaXNwbGF5UmVxdWlyZW1lbnQgPSBuZWVkc0Z1bGxEaXNwbGF5ID8gU3dhcEJ1ZmZlcnNEaXNw
bGF5UmVxdWlyZW1lbnQ6Ok5lZWRzRnVsbERpc3BsYXkgOiBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1
aXJlbWVudDo6TmVlZHNOb3JtYWxEaXNwbGF5OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3Vs
dEJ1ZmZlclNldCwgV1RGTW92ZShmcm9udEJ1ZmZlckhhbmRsZSksIGRpc3BsYXlSZXF1aXJlbWVu
dCk7CisgICAgb3V0cHV0RGF0YS5kaXNwbGF5UmVxdWlyZW1lbnQgPSBuZWVkc0Z1bGxEaXNwbGF5
ID8gU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzRnVsbERpc3BsYXkgOiBTd2Fw
QnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNOb3JtYWxEaXNwbGF5OwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1hcmtTdXJmYWNlc1ZvbGF0aWxlKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+JiBpZGVudGlmaWVycywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiYgbWFya2VkVm9sYXRpbGVCdWZmZXJJZGVudGlmaWVycyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA2YjU4OTZjMmY3YWY0ZTMxODBi
ZTFlNmM4OWZmZmM0ODdlYTViYzRiLi4yYzI5MDk1ZGE4NWMyNWMzYTVlZDVlN2YxZWU1Njg5ZWZm
NjcxYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlcjsKIHN0cnVjdCBCdWZmZXJJZGVudGlmaWVyU2V0Oworc3RydWN0
IFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzSW5wdXREYXRhOworc3RydWN0IFByZXBhcmVCYWNr
aW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YTsKIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzOwogZW51bSBjbGFzcyBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJl
bWVudCA6IHVpbnQ4X3Q7CiAKQEAgLTEyMCw4ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCk7
CiAgICAgdm9pZCBtYXJrU3VyZmFjZXNWb2xhdGlsZShjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4mIG1hcmtlZFZvbGF0
aWxlQnVmZmVySWRlbnRpZmllcnMpPiYmKTsKLQotICAgIHZvaWQgcHJlcGFyZUJ1ZmZlcnNGb3JE
aXNwbGF5KGNvbnN0IEJ1ZmZlcklkZW50aWZpZXJTZXQmIGJ1ZmZlclNldCwgYm9vbCBzdXBwb3J0
c1BhcnRpYWxSZXBhaW50LCBib29sIGhhc0VtcHR5RGlydHlSZWdpb24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgQnVmZmVySWRlbnRpZmllclNldCYgc3dhcHBlZEJ1ZmZlclNldCwgc3Rk
OjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+JiYgZnJvbnRCdWZmZXJIYW5kbGUs
IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IHByZXBhcmVSZXN1bHQpPiYmKTsKKyAgICB2
b2lkIHByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShWZWN0b3I8UHJlcGFyZUJhY2tpbmdTdG9yZUJ1
ZmZlcnNJbnB1dERhdGE+IHN3YXBCdWZmZXJzSW5wdXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YT4mKT4mJik7
CiAKICAgICAvLyBSZWNlaXZlZCBtZXNzYWdlcyB0cmFuc2xhdGVkIHRvIHVzZSBRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuCiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcldp
dGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3Qg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFF1
YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC0xMzMsNiArMTM0LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVdpdGhRdWFsaWZpZWRJZGVu
dGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBj
YWNoZUZvbnRXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihSZWY8V2ViQ29yZTo6Rm9udD4mJiwgUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcHJlcGFyZUxh
eWVyQnVmZmVyc0ZvckRpc3BsYXkoY29uc3QgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1
dERhdGEmLCBQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc091dHB1dERhdGEmKTsKKwogICAgIFJl
ZjxJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFJlZjxJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ29ubmVjdGlvbjsKICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggNDM3Zjk2ZDRjN2EwMWQ5NzMxMmQwMjBiZmNlMTc3
ODQyNjM4MDIwMC4uZGE3Y2YxYzJkZDM0ZjI3ZWJjMzMzYjJhODMxYjNlMDEzMDE1Y2Q0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDcgQEAg
bWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7
CiAgICAgRGVsZXRlQWxsRm9udHMoKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogCi0gICAgUHJlcGFyZUJ1ZmZlcnNGb3JEaXNwbGF5KHN0cnVjdCBXZWJLaXQ6OkJ1ZmZlcklk
ZW50aWZpZXJTZXQgYnVmZmVyU2V0LCBib29sIHN1cHBvcnRzUGFydGlhbFJlcGFpbnQsIGJvb2wg
aGFzRW1wdHlEaXJ0eVJlZ2lvbikgLT4gKHN0cnVjdCBXZWJLaXQ6OkJ1ZmZlcklkZW50aWZpZXJT
ZXQgc3dhcHBlZEJ1ZmZlclNldCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZT4gZnJvbnRCdWZmZXJIYW5kbGUsIGVudW06dWludDhfdCBXZWJLaXQ6OlN3YXBC
dWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IHByZXBhcmVSZXN1bHQpIFN5bmNocm9ub3VzIE5vdFN0
cmVhbUVuY29kYWJsZSBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQorICAgIFByZXBhcmVCdWZmZXJz
Rm9yRGlzcGxheShWZWN0b3I8V2ViS2l0OjpQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc0lucHV0
RGF0YT4gc3dhcEJ1ZmZlcnNJbnB1dCkgLT4gKFZlY3RvcjxXZWJLaXQ6OlByZXBhcmVCYWNraW5n
U3RvcmVCdWZmZXJzT3V0cHV0RGF0YT4gc3dhcEJ1ZmZlcnNPdXRwdXQpIFN5bmNocm9ub3VzIE5v
dFN0cmVhbUVuY29kYWJsZSBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQogCiAgICAgTWFya1N1cmZh
Y2VzVm9sYXRpbGUoVmVjdG9yPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IG1hcmtlZFZvbGF0aWxlQnVmZmVySWRlbnRpZmllcnMpIFN5
bmNocm9ub3VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDgyNTcxMjEyOWZjMjQxODU5MWYxNWJkN2Q5OWZhYjUxYjRiY2Y0YTEuLmYwODU3YWVjN2UxNTM1
MzMzOTQ1MTc3YmQ1NjI1YmQ2Njg3NTU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtODg5LDYgKzg4OSw4IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5
cGUpOgogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbic6IFsnIlBheW1lbnRT
ZXR1cENvbmZpZ3VyYXRpb25XZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNl
dHVwRmVhdHVyZXMnOiBbJyJBcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgiJ10s
CisgICAgICAgICdXZWJLaXQ6OlByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzSW5wdXREYXRhJzog
WyciUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNEYXRhLmgiJ10sCisgICAgICAgICdXZWJLaXQ6
OlByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YSc6IFsnIlByZXBhcmVCYWNraW5n
U3RvcmVCdWZmZXJzRGF0YS5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9u
QW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVSZWFkUmVmZXJlbmNlJzogWyciUmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCIn
XSwKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlJzogWyci
UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmgKaW5kZXggNzJhMzRiMDQ3MDQ0MzExZGRjZjUxNDc5MjYwMWZmMmQ0YjRiOTkwMC4uZDU4NjNh
M2VhZmQ1NGQ0NGM1Yjk4NGEwOTg0ZmIyNjRiZGEzOGE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLmgKQEAgLTY3LDEyICs2NywxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvbnRl
bnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUpOwogCi0gICAgU3dhcEJ1ZmZl
cnNEaXNwbGF5UmVxdWlyZW1lbnQgcHJlcGFyZUJ1ZmZlcnMoYm9vbCBoYXNFbXB0eURpcnR5UmVn
aW9uKTsKLQogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBuZWVkIGVuY29kZSB0aGUgYnVmZmVy
LgogICAgIGJvb2wgbGF5ZXJXaWxsQmVEaXNwbGF5ZWQoKTsKICAgICBib29sIG5lZWRzRGlzcGxh
eSgpIGNvbnN0OwogCisgICAgYm9vbCBwZXJmb3JtRGVsZWdhdGVkTGF5ZXJEaXNwbGF5KCk7CiAg
ICAgdm9pZCBwcmVwYXJlVG9EaXNwbGF5KCk7CiAgICAgdm9pZCBwYWludENvbnRlbnRzKCk7CiAK
QEAgLTk5LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEp1c3QgZm9yIFJlbW90
ZUJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uCi0gICAgdm9pZCBhcHBseVN3YXBwZWRCdWZmZXJzKFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBmcm9udCwgUmVmUHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiYmIGJhY2ssIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBzZWNvbmRhcnlC
YWNrKTsKKyAgICB2b2lkIGFwcGx5U3dhcHBlZEJ1ZmZlcnMoUmVmUHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiYmIGZyb250LCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgYmFjaywgUmVm
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIHNlY29uZGFyeUJhY2ssIFN3YXBCdWZmZXJzRGlz
cGxheVJlcXVpcmVtZW50KTsKICAgICBXZWJDb3JlOjpTZXROb25Wb2xhdGlsZVJlc3VsdCBzd2Fw
VG9WYWxpZEZyb250QnVmZmVyKCk7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7
CkBAIC0xNDMsNiArMTQyLDEwIEBAIHByaXZhdGU6CiAKICAgICBib29sIHNldEJ1ZmZlclZvbGF0
aWxlKEJ1ZmZlciYpOwogICAgIFdlYkNvcmU6OlNldE5vblZvbGF0aWxlUmVzdWx0IHNldEJ1ZmZl
ck5vblZvbGF0aWxlKEJ1ZmZlciYpOworICAgIAorICAgIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVp
cmVtZW50IHByZXBhcmVCdWZmZXJzKCk7CisgICAgdm9pZCBlbnN1cmVGcm9udEJ1ZmZlcigpOwor
ICAgIHZvaWQgZGlydHlSZXBhaW50Q291bnRlcklmTmVjZXNzYXJ5KCk7CiAKICAgICBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUqIG1fbGF5ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpp
bmRleCBhMGNjNTQyMjk4OTExZDQ5ZGM4ZTA4NzA2ZWZhZTQxN2NiMzkwMDcyLi4wM2M0NDQxODFk
MzNkOTI3ZmExNmZmZTAwYjM0ZGFmZjA3Y2FkODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tCkBAIC0yNDksMTMgKzI0OSwyMyBAQCBXZWJDb3JlOjpTZXROb25Wb2xhdGlsZVJlc3Vs
dCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiB9CiAK
IC8vIENhbGxlZCBhZnRlciBidWZmZXIgc3dhcHBpbmcgaW4gdGhlIEdQVSBwcm9jZXNzLgotdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlTd2FwcGVkQnVmZmVycyhSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+JiYgZnJvbnQsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4m
JiBiYWNrLCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgc2Vjb25kYXJ5QmFjaykKK3Zv
aWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5U3dhcHBlZEJ1ZmZlcnMoUmVmUHRyPFdl
YkNvcmU6OkltYWdlQnVmZmVyPiYmIGZyb250LCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
JiYgYmFjaywgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIHNlY29uZGFyeUJhY2ssIFN3
YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IGRpc3BsYXlSZXF1aXJlbWVudCkKIHsKICAgICBB
U1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9y
KFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpOworICAgIG1fY29udGVudHNCdWZmZXJI
YW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0g
V1RGTW92ZShmcm9udCk7CiAgICAgbV9iYWNrQnVmZmVyLmltYWdlQnVmZmVyID0gV1RGTW92ZShi
YWNrKTsKICAgICBtX3NlY29uZGFyeUJhY2tCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKHNl
Y29uZGFyeUJhY2spOworCisgICAgaWYgKGRpc3BsYXlSZXF1aXJlbWVudCA9PSBTd2FwQnVmZmVy
c0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNOb0Rpc3BsYXkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChkaXNwbGF5UmVxdWlyZW1lbnQgPT0gU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1l
bnQ6Ok5lZWRzRnVsbERpc3BsYXkpCisgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOworCisgICAg
ZGlydHlSZXBhaW50Q291bnRlcklmTmVjZXNzYXJ5KCk7CisgICAgZW5zdXJlRnJvbnRCdWZmZXIo
KTsKIH0KIAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVw
YWludCgpIGNvbnN0CkBAIC0yNzIsMTggKzI4Miw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIGNvbnRlbnRzKQogICAgIG1f
cGFpbnRpbmdSZWN0cy5jbGVhcigpOwogfQogCi0jaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFN3YXBCdWZmZXJzRGlzcGxheVJl
cXVpcmVtZW50IHJlc3VsdCkKLXsKLSAgICBzd2l0Y2ggKHJlc3VsdCkgewotICAgIGNhc2UgU3dh
cEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzRnVsbERpc3BsYXk6IHRzIDw8ICJmdWxs
IGRpc3BsYXkiOyBicmVhazsKLSAgICBjYXNlIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50
OjpOZWVkc05vcm1hbERpc3BsYXk6IHRzIDw8ICJub3JtYWwgZGlzcGxheSI7IGJyZWFrOwotICAg
IGNhc2UgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzTm9EaXNwbGF5OiB0cyA8
PCAibm8gZGlzcGxheSI7IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0jZW5kaWYK
LQogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6bmVlZHNEaXNwbGF5KCkgY29uc3QKIHsK
ICAgICBhdXRvKiBjb2xsZWN0aW9uID0gYmFja2luZ1N0b3JlQ29sbGVjdGlvbigpOwpAQCAtMzAy
LDggKzMwMCwyMiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpuZWVkc0Rpc3BsYXko
KSBjb25zdAogICAgIHJldHVybiBuZWVkc0Rpc3BsYXk7CiB9CiAKK2Jvb2wgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OnBlcmZvcm1EZWxlZ2F0ZWRMYXllckRpc3BsYXkoKQoreworICAgIGF1dG8m
IGxheWVyT3duZXIgPSAqbV9sYXllci0+b3duZXIoKTsKKyAgICBpZiAobGF5ZXJPd25lci5wbGF0
Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNEaXNwbGF5KG1fbGF5ZXIpKSB7CisgICAgICAgIC8vIFRoaXMg
Y2FuIGNhbGwgYmFjayB0byBzZXRDb250ZW50cygpLCBzZXR0aW5nIG1fY29udGVudHNCdWZmZXJI
YW5kbGUuCisgICAgICAgIGxheWVyT3duZXIucGxhdGZvcm1DQUxheWVyTGF5ZXJEaXNwbGF5KG1f
bGF5ZXIpOworICAgICAgICBsYXllck93bmVyLnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxh
eShtX2xheWVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVy
biBmYWxzZTsKK30KKwogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6cHJlcGFyZVRvRGlz
cGxheSgpCiB7CisgICAgQVNTRVJUKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VS
ZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSk7CiAgICAg
QVNTRVJUKCFtX2Zyb250QnVmZmVyRmx1c2hlcnMuc2l6ZSgpKTsKIAogICAgIGF1dG8qIGNvbGxl
Y3Rpb24gPSBiYWNraW5nU3RvcmVDb2xsZWN0aW9uKCk7CkBAIC0zMTYsNjcgKzMyOCw5MiBAQCB2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpwcmVwYXJlVG9EaXNwbGF5KCkKIAogICAgIExP
R19XSVRIX1NUUkVBTShSZW1vdGVSZW5kZXJpbmdCdWZmZXJWb2xhdGlsaXR5LCBzdHJlYW0gPDwg
IlJlbW90ZUxheWVyQmFja2luZ1N0b3JlICIgPDwgbV9sYXllci0+bGF5ZXJJRCgpIDw8ICIgcHJl
cGFyZVRvRGlzcGxheSgpIik7CiAKLSAgICBhdXRvJiBsYXllck93bmVyID0gKm1fbGF5ZXItPm93
bmVyKCk7Ci0gICAgaWYgKGxheWVyT3duZXIucGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxh
eShtX2xheWVyKSkgewotICAgICAgICAvLyBUaGlzIGNhbiBjYWxsIGJhY2sgdG8gc2V0Q29udGVu
dHMoKSwgc2V0dGluZyBtX2NvbnRlbnRzQnVmZmVySGFuZGxlLgotICAgICAgICBsYXllck93bmVy
LnBsYXRmb3JtQ0FMYXllckxheWVyRGlzcGxheShtX2xheWVyKTsKLSAgICAgICAgbGF5ZXJPd25l
ci5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CisgICAgaWYgKHBlcmZv
cm1EZWxlZ2F0ZWRMYXllckRpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGRpc3Bs
YXlSZXF1aXJlbWVudCA9IGNvbGxlY3Rpb24tPnByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzKCp0
aGlzKTsKLQotICAgIExPR19XSVRIX1NUUkVBTShSZW1vdGVSZW5kZXJpbmdCdWZmZXJWb2xhdGls
aXR5LCBzdHJlYW0gPDwgIlJlbW90ZUxheWVyQmFja2luZ1N0b3JlICIgPDwgbV9sYXllci0+bGF5
ZXJJRCgpIDw8ICIgcHJlcGFyZVRvRGlzcGxheSgpIC0gIiA8PCBkaXNwbGF5UmVxdWlyZW1lbnQp
OwogCi0gICAgQVNTRVJUKGRpc3BsYXlSZXF1aXJlbWVudCAhPSBTd2FwQnVmZmVyc0Rpc3BsYXlS
ZXF1aXJlbWVudDo6TmVlZHNOb0Rpc3BsYXkpOworICAgIGF1dG8gZGlzcGxheVJlcXVpcmVtZW50
ID0gcHJlcGFyZUJ1ZmZlcnMoKTsKKyAgICBpZiAoZGlzcGxheVJlcXVpcmVtZW50ID09IFN3YXBC
dWZmZXJzRGlzcGxheVJlcXVpcmVtZW50OjpOZWVkc05vRGlzcGxheSkKKyAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGRpc3BsYXlSZXF1aXJlbWVudCA9PSBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1
aXJlbWVudDo6TmVlZHNGdWxsRGlzcGxheSkKICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiAK
LSAgICBpZiAobGF5ZXJPd25lci5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIobV9s
YXllcikpIHsKKyAgICBkaXJ0eVJlcGFpbnRDb3VudGVySWZOZWNlc3NhcnkoKTsKKyAgICBlbnN1
cmVGcm9udEJ1ZmZlcigpOworfQorCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXJ0
eVJlcGFpbnRDb3VudGVySWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2xheWVyLT5vd25lcigp
LT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIobV9sYXllcikpIHsKICAgICAgICAg
V2ViQ29yZTo6SW50UmVjdCBpbmRpY2F0b3JSZWN0KDAsIDAsIDUyLCAyNyk7CiAgICAgICAgIG1f
ZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7CiAgICAgfQorfQogCi0gICAgaWYgKCFt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VC
dWZmZXIgPSBjb2xsZWN0aW9uLT5hbGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZSgqdGhpcyk7
Cit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVGcm9udEJ1ZmZlcigpCit7Cisg
ICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIGNvbGxlY3Rpb24gPSBiYWNraW5nU3RvcmVDb2xsZWN0aW9uKCk7CisgICAgaWYgKCFj
b2xsZWN0aW9uKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IGNvbGxlY3Rpb24t
PmFsbG9jYXRlQnVmZmVyRm9yQmFja2luZ1N0b3JlKCp0aGlzKTsKIAogI2lmIEVOQUJMRShDR19E
SVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKLSAgICAgICAgaWYgKG1faW5jbHVkZURp
c3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6WWVzKQotICAgICAgICAgICAgbV9mcm9u
dEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1
ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9z
Y2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0
KCksIG51bGxwdHIpOworICAgIGlmIChtX2luY2x1ZGVEaXNwbGF5TGlzdCA9PSBJbmNsdWRlRGlz
cGxheUxpc3Q6OlllcykKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVm
ZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogI2VuZGlmCit9CisK
KyNpZiAhTE9HX0RJU0FCTEVECitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQgcmVzdWx0KQoreworICAgIHN3
aXRjaCAocmVzdWx0KSB7CisgICAgY2FzZSBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6
TmVlZHNGdWxsRGlzcGxheTogdHMgPDwgImZ1bGwgZGlzcGxheSI7IGJyZWFrOworICAgIGNhc2Ug
U3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzTm9ybWFsRGlzcGxheTogdHMgPDwg
Im5vcm1hbCBkaXNwbGF5IjsgYnJlYWs7CisgICAgY2FzZSBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1
aXJlbWVudDo6TmVlZHNOb0Rpc3BsYXk6IHRzIDw8ICJubyBkaXNwbGF5IjsgYnJlYWs7CiAgICAg
fQorICAgIHJldHVybiB0czsKIH0KKyNlbmRpZgogCi1Td2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJl
bWVudCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6cHJlcGFyZUJ1ZmZlcnMoYm9vbCBoYXNFbXB0
eURpcnR5UmVnaW9uKQorU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OnByZXBhcmVCdWZmZXJzKCkKIHsKICAgICBBU1NFUlQoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJp
bmdQdXJwb3NlOjpET00pKTsKKyAgICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gc3RkOjpudWxs
b3B0OwogCi0gICAgYm9vbCBuZWVkc0Z1bGxEaXNwbGF5ID0gZmFsc2U7CisgICAgYXV0byBkaXNw
bGF5UmVxdWlyZW1lbnQgPSBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNOb0Rp
c3BsYXk7CiAKICAgICAvLyBNYWtlIHRoZSBwcmV2aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0
aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBkaXJ0eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29t
ZXMgYmFjayBlbXB0eS4KLSAgICBpZiAoc2V0RnJvbnRCdWZmZXJOb25Wb2xhdGlsZSgpID09IFdl
YkNvcmU6OlNldE5vblZvbGF0aWxlUmVzdWx0OjpFbXB0eSkKLSAgICAgICAgbmVlZHNGdWxsRGlz
cGxheSA9IHRydWU7CisgICAgaWYgKCFoYXNGcm9udEJ1ZmZlcigpIHx8IHNldEZyb250QnVmZmVy
Tm9uVm9sYXRpbGUoKSA9PSBXZWJDb3JlOjpTZXROb25Wb2xhdGlsZVJlc3VsdDo6RW1wdHkpCisg
ICAgICAgIGRpc3BsYXlSZXF1aXJlbWVudCA9IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50
OjpOZWVkc0Z1bGxEaXNwbGF5OworICAgIGVsc2UgaWYgKCFoYXNFbXB0eURpcnR5UmVnaW9uKCkp
CisgICAgICAgIGRpc3BsYXlSZXF1aXJlbWVudCA9IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVt
ZW50OjpOZWVkc05vcm1hbERpc3BsYXk7CiAKLSAgICBpZiAoIW5lZWRzRnVsbERpc3BsYXkgJiYg
aGFzRW1wdHlEaXJ0eVJlZ2lvbikKLSAgICAgICAgcmV0dXJuIFN3YXBCdWZmZXJzRGlzcGxheVJl
cXVpcmVtZW50OjpOZWVkc05vRGlzcGxheTsKKyAgICBpZiAoZGlzcGxheVJlcXVpcmVtZW50ID09
IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50OjpOZWVkc05vRGlzcGxheSkKKyAgICAgICAg
cmV0dXJuIGRpc3BsYXlSZXF1aXJlbWVudDsKIAotICAgIGlmICghaGFzRnJvbnRCdWZmZXIoKSB8
fCAhc3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpKQotICAgICAgICBuZWVkc0Z1bGxEaXNwbGF5ID0g
dHJ1ZTsKKyAgICBpZiAoIXN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKSkKKyAgICAgICAgZGlzcGxh
eVJlcXVpcmVtZW50ID0gU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzRnVsbERp
c3BsYXk7CiAKICAgICBhdXRvIHJlc3VsdCA9IHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKTsKLSAg
ICBpZiAocmVzdWx0ID09IFdlYkNvcmU6OlNldE5vblZvbGF0aWxlUmVzdWx0OjpFbXB0eSkKLSAg
ICAgICAgbmVlZHNGdWxsRGlzcGxheSA9IHRydWU7CisgICAgaWYgKCFoYXNGcm9udEJ1ZmZlcigp
IHx8IHJlc3VsdCA9PSBXZWJDb3JlOjpTZXROb25Wb2xhdGlsZVJlc3VsdDo6RW1wdHkpCisgICAg
ICAgIGRpc3BsYXlSZXF1aXJlbWVudCA9IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50OjpO
ZWVkc0Z1bGxEaXNwbGF5OwogCi0gICAgcmV0dXJuIG5lZWRzRnVsbERpc3BsYXkgPyBTd2FwQnVm
ZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNGdWxsRGlzcGxheSA6IFN3YXBCdWZmZXJzRGlz
cGxheVJlcXVpcmVtZW50OjpOZWVkc05vcm1hbERpc3BsYXk7CisgICAgTE9HX1dJVEhfU1RSRUFN
KFJlbW90ZVJlbmRlcmluZ0J1ZmZlclZvbGF0aWxpdHksIHN0cmVhbSA8PCAiUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUgIiA8PCBtX2xheWVyLT5sYXllcklEKCkgPDwgIiBwcmVwYXJlQnVmZmVycygp
IC0gIiA8PCBkaXNwbGF5UmVxdWlyZW1lbnQpOworICAgIHJldHVybiBkaXNwbGF5UmVxdWlyZW1l
bnQ7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnBhaW50Q29udGVudHMoKQog
ewotICAgIGlmICghbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikKKyAgICBpZiAoIW1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUKG1fbGF5ZXItPm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllckRlbGVnYXRlc0Rpc3BsYXkobV9sYXllcikpOwogICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFJlbW90ZVJlbmRlcmluZ0J1ZmZlclZvbGF0
aWxpdHksIHN0cmVhbSA8PCAiUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgIiA8PCBtX2xheWVyLT5s
YXllcklEKCkgPDwgIiBwYWludENvbnRlbnRzKCkgLSBoYXMgZGlydHkgcmVnaW9uICIgPDwgIWhh
c0VtcHR5RGlydHlSZWdpb24oKSk7CiAgICAgaWYgKGhhc0VtcHR5RGlydHlSZWdpb24oKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaAppbmRleCA3YmRiMGVk
OTJiNmU3N2ZjZTEwNjIyNmE4OGI0Y2ExOTNiNTdkNTNiLi5mYmIxMDBiZWIxNWY5ODY5N2M3YzNi
NTBkOTllNmM3YjM0ZjU1ZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi5oCkBAIC02MSw5ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBiYWNraW5nU3RvcmVOZWVkc0Rpc3BsYXkoY29uc3QgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUm
KTsKIAotICAgIHZpcnR1YWwgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQgcHJlcGFyZUJh
Y2tpbmdTdG9yZUJ1ZmZlcnMoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKLQotICAgIHZvaWQg
cHJlcGFyZUJhY2tpbmdTdG9yZXNGb3JEaXNwbGF5KFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Jik7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmVzRm9yRGlzcGxheShSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbiYpOwogICAgIHZvaWQgcGFpbnRSZWFjaGFibGVCYWNraW5n
U3RvcmVDb250ZW50cygpOwogCiAgICAgdm9pZCB3aWxsRmx1c2hMYXllcnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tCmluZGV4IGVkMGNjZjQ5ODQw
Y2RkY2ExNjY4MGVlZDI2MmRjZjc2MWRmNTNjNTQuLmJmN2FjMGZjNTJhMjFkNGRhZGNmYjQ5MDQ3
MjBmMDE0ODZjMzZhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbi5tbQpAQCAtMTYzLDExICsxNjMsNiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlQ29sbGVjdGlvbjo6YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKFJlbW90ZUxheWVyQgog
ICAgIHJldHVybiB0cnVlOwogfQogCi1Td2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJz
KFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCi17Ci0gICAgcmV0dXJuIGJh
Y2tpbmdTdG9yZS5wcmVwYXJlQnVmZmVycyhiYWNraW5nU3RvcmUuaGFzRW1wdHlEaXJ0eVJlZ2lv
bigpKTsKLX0KLQogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246Om1hcmtC
YWNraW5nU3RvcmVWb2xhdGlsZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3Jl
LCBPcHRpb25TZXQ8Vm9sYXRpbGl0eU1hcmtpbmdCZWhhdmlvcj4gbWFya2luZ0JlaGF2aW9yLCBN
b25vdG9uaWNUaW1lIG5vdykKIHsKICAgICBBU1NFUlQoIW1faW5MYXllckZsdXNoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldp
dGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbi5oCmluZGV4IDg5MWNhNmI4YzJlN2FjYTk3ZTZjNmYzOGE3OTVm
MmJjMjIxNmVkOGYuLjEzMDBhMDA5MmM2NThmN2Y2M2UxNjliYzRlY2RjMjE1MGEyZGI1NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
cldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRl
cmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgog
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KCk7CiAKICAgICBib29sIGJhY2tpbmdTdG9yZU5lZWRzRGlzcGxheShjb25zdCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZSYpIGZpbmFsOwotICAgIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVt
ZW50IHByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJikg
ZmluYWw7CisgICAgdm9pZCBwcmVwYXJlQmFja2luZ1N0b3Jlc0ZvckRpc3BsYXkoUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24mKSBmaW5hbDsKIAogICAgIGJvb2wgY29sbGVjdEJhY2tpbmdTdG9y
ZUJ1ZmZlcklkZW50aWZpZXJzVG9NYXJrVm9sYXRpbGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUm
LCBPcHRpb25TZXQ8Vm9sYXRpbGl0eU1hcmtpbmdCZWhhdmlvcj4sIE1vbm90b25pY1RpbWUgbm93
LCBWZWN0b3I8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJX
aXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdC
YWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tCmluZGV4IDAxZDY0MjNiYzg4MjgxYmRiMjM1OTYzNDBh
ZjdhNWYzYjViODI5MWEuLjkzNGMyZTY5ODMyNWM4M2MwMDliOWRlNzI4ZjkzZGVhYjhjNjFiZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVS
ZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tCkBAIC02NCwyMCArNjQsNDMgQEAgYm9v
bCBSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpi
YWNraW5nU3RvcmVOZWVkc0Rpc3AKICAgICByZXR1cm4gIWJhY2tpbmdTdG9yZS5oYXNFbXB0eURp
cnR5UmVnaW9uKCk7CiB9CiAKLVN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50IFJlbW90ZUxh
eWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnByZXBhcmVCYWNr
aW5nU3RvcmVCdWZmZXJzKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCit2
b2lkIFJlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb246
OnByZXBhcmVCYWNraW5nU3RvcmVzRm9yRGlzcGxheShSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA9IGxh
eWVyVHJlZUNvbnRleHQoKS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKLQot
ICAgIGF1dG8gaWRlbnRpZmllcnMgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkJ1ZmZl
clNldCB7Ci0gICAgICAgIGJhY2tpbmdTdG9yZS5idWZmZXJGb3JUeXBlKFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpGcm9udCksCi0gICAgICAgIGJhY2tpbmdTdG9yZS5idWZm
ZXJGb3JUeXBlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpCYWNrKSwKLSAg
ICAgICAgYmFja2luZ1N0b3JlLmJ1ZmZlckZvclR5cGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OkJ1ZmZlclR5cGU6OlNlY29uZGFyeUJhY2spCi0gICAgfTsKKyAgICBWZWN0b3I8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpMYXllclByZXBhcmVCdWZmZXJzRGF0YT4gcHJlcGFyZUJ1ZmZl
cnNEYXRhOworICAgIHByZXBhcmVCdWZmZXJzRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
YmFja2luZ1N0b3Jlc05lZWRpbmdEaXNwbGF5LnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUqPiBiYWNraW5nU3RvcmVMaXN0OworICAgIGJhY2tpbmdTdG9yZUxp
c3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2JhY2tpbmdTdG9yZXNOZWVkaW5nRGlzcGxheS5z
aXplKCkpOworCisgICAgZm9yIChhdXRvKiBiYWNraW5nU3RvcmUgOiBtX2JhY2tpbmdTdG9yZXNO
ZWVkaW5nRGlzcGxheSkgeworICAgICAgICBiYWNraW5nU3RvcmUtPmxheWVyKCktPnByb3BlcnRp
ZXMoKS5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJh
Y2tpbmdTdG9yZUNoYW5nZWQpOworICAgICAgICB0cmFuc2FjdGlvbi5sYXllclByb3BlcnRpZXND
aGFuZ2VkKCpiYWNraW5nU3RvcmUtPmxheWVyKCkpOworCisgICAgICAgIGlmIChiYWNraW5nU3Rv
cmUtPnBlcmZvcm1EZWxlZ2F0ZWRMYXllckRpc3BsYXkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIHByZXBhcmVCdWZmZXJzRGF0YS51bmNoZWNrZWRBcHBlbmQoeworICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9yZS0+YnVmZmVyRm9yVHlwZShSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyVHlwZTo6RnJvbnQpLAorICAgICAgICAgICAgICAg
IGJhY2tpbmdTdG9yZS0+YnVmZmVyRm9yVHlwZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVm
ZmVyVHlwZTo6QmFjayksCisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlLT5idWZmZXJGb3JU
eXBlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpTZWNvbmRhcnlCYWNrKQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZS0+c3VwcG9ydHNQYXJ0aWFs
UmVwYWludCgpLAorICAgICAgICAgICAgYmFja2luZ1N0b3JlLT5oYXNFbXB0eURpcnR5UmVnaW9u
KCksCisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgYmFja2luZ1N0b3JlTGlzdC51bmNo
ZWNrZWRBcHBlbmQoYmFja2luZ1N0b3JlKTsKKyAgICB9CiAKLSAgICBhdXRvIHN3YXBSZXN1bHQg
PSByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShXVEZNb3Zl
KGlkZW50aWZpZXJzKSwgYmFja2luZ1N0b3JlLnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKSwgYmFj
a2luZ1N0b3JlLmhhc0VtcHR5RGlydHlSZWdpb24oKSk7CisgICAgYXV0byYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZCA9IGxheWVyVHJlZUNvbnRleHQoKS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKTsKKyAgICBhdXRvIHN3YXBSZXN1bHQgPSByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LnByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShXVEZNb3ZlKHByZXBhcmVCdWZmZXJzRGF0YSkpOwog
Ci0gICAgYmFja2luZ1N0b3JlLmFwcGx5U3dhcHBlZEJ1ZmZlcnMoV1RGTW92ZShzd2FwUmVzdWx0
LmJ1ZmZlcnMuZnJvbnQpLCBXVEZNb3ZlKHN3YXBSZXN1bHQuYnVmZmVycy5iYWNrKSwgV1RGTW92
ZShzd2FwUmVzdWx0LmJ1ZmZlcnMuc2Vjb25kYXJ5QmFjaykpOwotICAgIHJldHVybiBzd2FwUmVz
dWx0LmRpc3BsYXlSZXF1aXJlbWVudDsKKyAgICBSRUxFQVNFX0FTU0VSVChzd2FwUmVzdWx0LnNp
emUoKSA9PSBiYWNraW5nU3RvcmVMaXN0LnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHN3YXBSZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgYmFja2luZ1N0
b3JlU3dhcFJlc3VsdCA9IHN3YXBSZXN1bHRbaV07CisgICAgICAgIGF1dG8qIGJhY2tpbmdTdG9y
ZSA9IGJhY2tpbmdTdG9yZUxpc3RbaV07CisgICAgICAgIGJhY2tpbmdTdG9yZS0+YXBwbHlTd2Fw
cGVkQnVmZmVycyhXVEZNb3ZlKGJhY2tpbmdTdG9yZVN3YXBSZXN1bHQuYnVmZmVycy5mcm9udCks
IFdURk1vdmUoYmFja2luZ1N0b3JlU3dhcFJlc3VsdC5idWZmZXJzLmJhY2spLCBXVEZNb3ZlKGJh
Y2tpbmdTdG9yZVN3YXBSZXN1bHQuYnVmZmVycy5zZWNvbmRhcnlCYWNrKSwgYmFja2luZ1N0b3Jl
U3dhcFJlc3VsdC5kaXNwbGF5UmVxdWlyZW1lbnQpOworICAgIH0KIH0KIAogUmVmUHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyPiBSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3Rv
cmVDb2xsZWN0aW9uOjphbGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZShjb25zdCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjcyN2M1NGVjNTQ5OWFhYzM5MTcyYTYz
YWY0OTg3ZjhkNDY2OTY4Yy4uZTY4NzZjYTFlM2I2ZmFlZjE2NGFlZDYzODAwZGUxMzU1MzMyZDlj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yNjIzLDYgKzI2MjMsNyBAQAogCQkwRjVFMjAwMTE4RTc3MDUxMDAzRUMzRTUgLyogUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNUUyMDAyMThFNzcwNTEwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NTk1Njcy
N0RCMUQ1ODAwRUU4NzRCIC8qIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN3YXBCdWZmZXJzRGlzcGxheVJlcXVpcmVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNjU5NTZDMjdFMTBDMkMwMEVFODc0QiAvKiBQcmVwYXJlQmFja2lu
Z1N0b3JlQnVmZmVyc0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlcGFyZUJhY2tpbmdTdG9yZUJ1
ZmZlcnNEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzA3Qzc3MUExRkVF
ODMwMERBN0E0NSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVMYXllclRyZWVT
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNzA3Qzc5MUExRkVFQTMwMERBN0E0NSAvKiBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNzNCNzY3MjIyQjM4QzYwMDgwNTMxNiAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTkwMiw2ICs5OTAzLDcgQEAKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdG
MzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
LmggKi8sCiAJCQkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oICovLAorCQkJCTBGNjU5NTZDMjdFMTBDMkMwMEVFODc0QiAvKiBQcmVw
YXJlQmFja2luZ1N0b3JlQnVmZmVyc0RhdGEuaCAqLywKIAkJCQlGNDhCQjhERTI2Rjk2MzVEMDAx
QzFDNDAgLyogUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCAqLywKIAkJCQlGNDhC
QjhERDI2Rjk2MzVEMDAxQzFDNDAgLyogUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmgg
Ki8sCiAJCQkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9QcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc0RhdGEuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNEYXRh
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjQ0MjRjYzM3NWJiMjI0YTk1YjA2ZjNkNTZiNmI1ZGNlYzMyMjRhYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNEYXRhLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1
ZGUgIkJ1ZmZlcklkZW50aWZpZXJTZXQuaCIKKyNpbmNsdWRlICJTd2FwQnVmZmVyc0Rpc3BsYXlS
ZXF1aXJlbWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUHJlcGFyZUJhY2tpbmdTdG9y
ZUJ1ZmZlcnNJbnB1dERhdGEgeworICAgIEJ1ZmZlcklkZW50aWZpZXJTZXQgYnVmZmVyU2V0Owor
ICAgIGJvb2wgc3VwcG9ydHNQYXJ0aWFsUmVwYWludCB7IHRydWUgfTsKKyAgICBib29sIGhhc0Vt
cHR5RGlydHlSZWdpb24geyB0cnVlIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERhdGE+
IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQ
cmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc0lucHV0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBidWZmZXJTZXQ7CisgICAgZW5jb2RlciA8PCBz
dXBwb3J0c1BhcnRpYWxSZXBhaW50OworICAgIGVuY29kZXIgPDwgaGFzRW1wdHlEaXJ0eVJlZ2lv
bjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8UHJlcGFyZUJh
Y2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERhdGE+IFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzSW5w
dXREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEJ1
ZmZlcklkZW50aWZpZXJTZXQ+IGJ1ZmZlclNldDsKKyAgICBkZWNvZGVyID4+IGJ1ZmZlclNldDsK
KyAgICBpZiAoIWJ1ZmZlclNldCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNQYXJ0aWFsUmVwYWludDsKKyAgICBkZWNvZGVy
ID4+IHN1cHBvcnRzUGFydGlhbFJlcGFpbnQ7CisgICAgaWYgKCFzdXBwb3J0c1BhcnRpYWxSZXBh
aW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBoYXNFbXB0eURpcnR5UmVnaW9uOworICAgIGRlY29kZXIgPj4gaGFzRW1wdHlEaXJ0eVJl
Z2lvbjsKKyAgICBpZiAoIWhhc0VtcHR5RGlydHlSZWdpb24pCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNJbnB1dERh
dGEgeyBXVEZNb3ZlKCpidWZmZXJTZXQpLCAqc3VwcG9ydHNQYXJ0aWFsUmVwYWludCwgKmhhc0Vt
cHR5RGlydHlSZWdpb24gfTsKK30KKworCitzdHJ1Y3QgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZl
cnNPdXRwdXREYXRhIHsKKyAgICBCdWZmZXJJZGVudGlmaWVyU2V0IGJ1ZmZlclNldDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZnJvbnRCdWZmZXJIYW5kbGU7
CisgICAgU3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQgZGlzcGxheVJlcXVpcmVtZW50IHsg
U3dhcEJ1ZmZlcnNEaXNwbGF5UmVxdWlyZW1lbnQ6Ok5lZWRzTm9EaXNwbGF5IH07CisKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJlcGFyZUJhY2tp
bmdTdG9yZUJ1ZmZlcnNPdXRwdXREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUHJlcGFyZUJhY2tpbmdTdG9yZUJ1ZmZlcnNPdXRwdXRE
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGJ1
ZmZlclNldDsKKyAgICBlbmNvZGVyIDw8IGZyb250QnVmZmVySGFuZGxlOworICAgIGVuY29kZXIg
PDwgZGlzcGxheVJlcXVpcmVtZW50OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc091dHB1dERhdGE+IFByZXBhcmVC
YWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgc3RkOjpvcHRpb25hbDxCdWZmZXJJZGVudGlmaWVyU2V0PiBidWZmZXJTZXQ7CisgICAg
ZGVjb2RlciA+PiBidWZmZXJTZXQ7CisgICAgaWYgKCFidWZmZXJTZXQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlPj4gYnVmZmVySGFuZGxlOworICAgIGRlY29kZXIgPj4gYnVmZmVy
SGFuZGxlOworICAgIGlmICghYnVmZmVySGFuZGxlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudD4g
ZGlzcGxheVJlcXVpcmVtZW50OworICAgIGRlY29kZXIgPj4gZGlzcGxheVJlcXVpcmVtZW50Owor
ICAgIGlmICghZGlzcGxheVJlcXVpcmVtZW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFByZXBhcmVCYWNraW5nU3RvcmVCdWZmZXJzT3V0cHV0RGF0YSB7IFdU
Rk1vdmUoKmJ1ZmZlclNldCksIFdURk1vdmUoKmJ1ZmZlckhhbmRsZSksICpkaXNwbGF5UmVxdWly
ZW1lbnQgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5k
ZXggZDM2YjhjYjY0Y2U4ZjFjMjY4ZDViZTE5OGI1N2NmYjgwMmNiMmI0NC4uNmI5NDc4ZGVkNTIx
ZTMzYTQ4NTBjNmJkZGE4OWY0MDc3NmE2NjE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmCiAgICAgc2VuZFRvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpS
ZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7CiB9CiAK
LWF1dG8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwcmVwYXJlQnVmZmVyc0ZvckRpc3Bs
YXkoY29uc3QgQnVmZmVyU2V0JiBidWZmZXJzLCBib29sIHN1cHBvcnRzUGFydGlhbFJlcGFpbnQs
IGJvb2wgaGFzRW1wdHlEaXJ0eVJlZ2lvbikgLT4gU3dhcEJ1ZmZlcnNSZXN1bHQKK2F1dG8gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwcmVwYXJlQnVmZmVyc0ZvckRpc3BsYXkoY29uc3Qg
VmVjdG9yPExheWVyUHJlcGFyZUJ1ZmZlcnNEYXRhPiYgcHJlcGFyZUJ1ZmZlcnNJbnB1dCkgLT4g
VmVjdG9yPFN3YXBCdWZmZXJzUmVzdWx0PgogewogICAgIGF1dG8gYnVmZmVySWRlbnRpZmllciA9
IFtdKEltYWdlQnVmZmVyKiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiB7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMjg2LDI2ICsyODYsMzAg
QEAgYXV0byBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnByZXBhcmVCdWZmZXJzRm9yRGlz
cGxheShjb25zdCBCdWZmZXJTZXQmIGJ1ZmYKICAgICAgICAgfQogICAgIH07CiAKLSAgICAvLyBD
bGVhciBhbGwgdGhlIGJ1ZmZlcidzIE1hY2hTZW5kUmlnaHRzIHRvIGF2b2lkIGFsbCB0aGUgc3Vy
ZmFjZXMgYXBwZWFyaW5nIHRvIGJlIGluLXVzZS4KLSAgICAvLyBXZSBnZXQgYmFjayB0aGUgbmV3
IGZyb250IGJ1ZmZlcidzIE1hY2hTZW5kUmlnaHQgaW4gdGhlIHJlcGx5LgotICAgIGNsZWFyQmFj
a2VuZEhhbmRsZShidWZmZXJzLmZyb250LmdldCgpKTsKLSAgICBjbGVhckJhY2tlbmRIYW5kbGUo
YnVmZmVycy5iYWNrLmdldCgpKTsKLSAgICBjbGVhckJhY2tlbmRIYW5kbGUoYnVmZmVycy5zZWNv
bmRhcnlCYWNrLmdldCgpKTsKLQotICAgIGF1dG8gYnVmZmVyU2V0ID0gQnVmZmVySWRlbnRpZmll
clNldCB7Ci0gICAgICAgIGJ1ZmZlcklkZW50aWZpZXIoYnVmZmVycy5mcm9udC5nZXQoKSksCi0g
ICAgICAgIGJ1ZmZlcklkZW50aWZpZXIoYnVmZmVycy5iYWNrLmdldCgpKSwKLSAgICAgICAgYnVm
ZmVySWRlbnRpZmllcihidWZmZXJzLnNlY29uZGFyeUJhY2suZ2V0KCkpCi0gICAgfTsKLQotICAg
IEJ1ZmZlcklkZW50aWZpZXJTZXQgc3dhcHBlZEJ1ZmZlclNldDsKLSAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZnJvbnRCdWZmZXJIYW5kbGU7Ci0gICAgYXV0byBk
aXNwbGF5UmVxdWlyZW1lbnQgPSBTd2FwQnVmZmVyc0Rpc3BsYXlSZXF1aXJlbWVudDo6TmVlZHNO
b0Rpc3BsYXk7Ci0KLSAgICBzZW5kU3luY1RvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpQcmVwYXJlQnVmZmVyc0ZvckRpc3BsYXkoYnVmZmVyU2V0LCBzdXBwb3J0c1Bh
cnRpYWxSZXBhaW50LCBoYXNFbXB0eURpcnR5UmVnaW9uKSwKLSAgICAgICAgTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlByZXBhcmVCdWZmZXJzRm9yRGlzcGxheTo6UmVwbHkoc3dh
cHBlZEJ1ZmZlclNldCwgZnJvbnRCdWZmZXJIYW5kbGUsIGRpc3BsYXlSZXF1aXJlbWVudCkpOwor
ICAgIFZlY3RvcjxQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc0lucHV0RGF0YT4gaW5wdXREYXRh
OworICAgIGlucHV0RGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHByZXBhcmVCdWZmZXJzSW5w
dXQuc2l6ZSgpKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgcGVyTGF5ZXJEYXRhIDogcHJlcGFy
ZUJ1ZmZlcnNJbnB1dCkgeworICAgICAgICAvLyBDbGVhciBhbGwgdGhlIGJ1ZmZlcidzIE1hY2hT
ZW5kUmlnaHRzIHRvIGF2b2lkIGFsbCB0aGUgc3VyZmFjZXMgYXBwZWFyaW5nIHRvIGJlIGluLXVz
ZS4KKyAgICAgICAgLy8gV2UgZ2V0IGJhY2sgdGhlIG5ldyBmcm9udCBidWZmZXIncyBNYWNoU2Vu
ZFJpZ2h0IGluIHRoZSByZXBseS4KKyAgICAgICAgY2xlYXJCYWNrZW5kSGFuZGxlKHBlckxheWVy
RGF0YS5idWZmZXJzLmZyb250LmdldCgpKTsKKyAgICAgICAgY2xlYXJCYWNrZW5kSGFuZGxlKHBl
ckxheWVyRGF0YS5idWZmZXJzLmJhY2suZ2V0KCkpOworICAgICAgICBjbGVhckJhY2tlbmRIYW5k
bGUocGVyTGF5ZXJEYXRhLmJ1ZmZlcnMuc2Vjb25kYXJ5QmFjay5nZXQoKSk7CisKKyAgICAgICAg
aW5wdXREYXRhLnVuY2hlY2tlZEFwcGVuZCh7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgYnVmZmVySWRlbnRpZmllcihwZXJMYXllckRhdGEuYnVmZmVycy5mcm9udC5nZXQoKSksCisg
ICAgICAgICAgICAgICAgYnVmZmVySWRlbnRpZmllcihwZXJMYXllckRhdGEuYnVmZmVycy5iYWNr
LmdldCgpKSwKKyAgICAgICAgICAgICAgICBidWZmZXJJZGVudGlmaWVyKHBlckxheWVyRGF0YS5i
dWZmZXJzLnNlY29uZGFyeUJhY2suZ2V0KCkpCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
cGVyTGF5ZXJEYXRhLnN1cHBvcnRzUGFydGlhbFJlcGFpbnQsCisgICAgICAgICAgICBwZXJMYXll
ckRhdGEuaGFzRW1wdHlEaXJ0eVJlZ2lvbgorICAgICAgICB9KTsKKyAgICB9CiAKLSAgICBMT0df
V0lUSF9TVFJFQU0oUmVtb3RlUmVuZGVyaW5nQnVmZmVyVm9sYXRpbGl0eSwgc3RyZWFtIDw8ICJS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnByZXBhcmVCdWZmZXJzRm9yRGlzcGxheSBzd2Fw
cGVkIHRvICIgPDwgc3dhcHBlZEJ1ZmZlclNldC5mcm9udCA8PCAiICIgPDwgc3dhcHBlZEJ1ZmZl
clNldC5iYWNrIDw8ICIgIiA8PCBzd2FwcGVkQnVmZmVyU2V0LnNlY29uZGFyeUJhY2spOworICAg
IFZlY3RvcjxQcmVwYXJlQmFja2luZ1N0b3JlQnVmZmVyc091dHB1dERhdGE+IG91dHB1dERhdGE7
CisgICAgc2VuZFN5bmNUb1N0cmVhbShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UHJlcGFyZUJ1ZmZlcnNGb3JEaXNwbGF5KGlucHV0RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpQcmVwYXJlQnVmZmVyc0ZvckRpc3BsYXk6OlJlcGx5KG91dHB1dERhdGEp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChpbnB1dERhdGEuc2l6ZSgpID09IG91dHB1dERhdGEuc2l6
ZSgpKTsKIAogICAgIGF1dG8gZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllciA9IFsmXShzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+JiYgaGFuZGxlID0gc3RkOjpudWxsb3B0LCBi
b29sIGlzRnJvbnRCdWZmZXIgPSBmYWxzZSkgLT4gUmVmUHRyPEltYWdlQnVmZmVyPiB7CiAgICAg
ICAgIGlmICghaWRlbnRpZmllcikKQEAgLTMzMSwxNCArMzM1LDIxIEBAIGF1dG8gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpwcmVwYXJlQnVmZmVyc0ZvckRpc3BsYXkoY29uc3QgQnVmZmVy
U2V0JiBidWZmCiAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfTsKIAotICAgIHJldHVybiB7
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZldGNoQnVmZmVyV2l0aElkZW50aWZpZXIoc3dhcHBl
ZEJ1ZmZlclNldC5mcm9udCwgV1RGTW92ZShmcm9udEJ1ZmZlckhhbmRsZSksIHRydWUpLAotICAg
ICAgICAgICAgZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllcihzd2FwcGVkQnVmZmVyU2V0LmJhY2sp
LAotICAgICAgICAgICAgZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllcihzd2FwcGVkQnVmZmVyU2V0
LnNlY29uZGFyeUJhY2spCi0gICAgICAgIH0sCi0gICAgICAgIGRpc3BsYXlSZXF1aXJlbWVudAot
ICAgIH07CisgICAgVmVjdG9yPFN3YXBCdWZmZXJzUmVzdWx0PiByZXN1bHQ7CisgICAgcmVzdWx0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3V0cHV0RGF0YS5zaXplKCkpOworCisgICAgZm9yIChh
dXRvJiBwZXJMYXllck91dHB1dERhdGEgOiBvdXRwdXREYXRhKSB7CisgICAgICAgIHJlc3VsdC51
bmNoZWNrZWRBcHBlbmQoeworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZldGNoQnVm
ZmVyV2l0aElkZW50aWZpZXIocGVyTGF5ZXJPdXRwdXREYXRhLmJ1ZmZlclNldC5mcm9udCwgV1RG
TW92ZShwZXJMYXllck91dHB1dERhdGEuZnJvbnRCdWZmZXJIYW5kbGUpLCB0cnVlKSwKKyAgICAg
ICAgICAgICAgICBmZXRjaEJ1ZmZlcldpdGhJZGVudGlmaWVyKHBlckxheWVyT3V0cHV0RGF0YS5i
dWZmZXJTZXQuYmFjayksCisgICAgICAgICAgICAgICAgZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmll
cihwZXJMYXllck91dHB1dERhdGEuYnVmZmVyU2V0LnNlY29uZGFyeUJhY2spCisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgcGVyTGF5ZXJPdXRwdXREYXRhLmRpc3BsYXlSZXF1aXJlbWVudAor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWFya1N1cmZhY2VzVm9sYXRpbGUoVmVjdG9yPFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4mJiBpZGVudGlmaWVycywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDU2NjI5MzY4OTVjN2QxZGZiZWIxYjZlYTdjNTJk
Mjg2NTVmYTIzNWMuLmNiODU4OGM4M2UxNTk2Yjg5YzIxMTBhMmIzZTQzODRhZDEyMzg4NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMTAxLDExICsxMDEsMTgg
QEAgcHVibGljOgogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IHNlY29uZGFy
eUJhY2s7CiAgICAgfTsKICAgICAKKyAgICBzdHJ1Y3QgTGF5ZXJQcmVwYXJlQnVmZmVyc0RhdGEg
eworICAgICAgICBCdWZmZXJTZXQgYnVmZmVyczsKKyAgICAgICAgYm9vbCBzdXBwb3J0c1BhcnRp
YWxSZXBhaW50IHsgdHJ1ZSB9OworICAgICAgICBib29sIGhhc0VtcHR5RGlydHlSZWdpb24geyBm
YWxzZSB9OworICAgIH07CisgICAgCiAgICAgc3RydWN0IFN3YXBCdWZmZXJzUmVzdWx0IHsKICAg
ICAgICAgQnVmZmVyU2V0IGJ1ZmZlcnM7CiAgICAgICAgIFN3YXBCdWZmZXJzRGlzcGxheVJlcXVp
cmVtZW50IGRpc3BsYXlSZXF1aXJlbWVudDsKICAgICB9OwotICAgIFN3YXBCdWZmZXJzUmVzdWx0
IHByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShjb25zdCBCdWZmZXJTZXQmLCBib29sIHN1cHBvcnRz
UGFydGlhbFJlcGFpbnQsIGJvb2wgaGFzRW1wdHlEaXJ0eVJlZ2lvbik7CisKKyAgICBWZWN0b3I8
U3dhcEJ1ZmZlcnNSZXN1bHQ+IHByZXBhcmVCdWZmZXJzRm9yRGlzcGxheShjb25zdCBWZWN0b3I8
TGF5ZXJQcmVwYXJlQnVmZmVyc0RhdGE+Jik7CiAKICAgICB2b2lkIGZpbmFsaXplUmVuZGVyaW5n
VXBkYXRlKCk7CiAgICAgUmVuZGVyaW5nVXBkYXRlSUQgcmVuZGVyaW5nVXBkYXRlSUQoKSBjb25z
dCB7IHJldHVybiBtX3JlbmRlcmluZ1VwZGF0ZUlEOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>