<?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>218726</bug_id>
          
          <creation_ts>2020-11-09 14:57:16 -0800</creation_ts>
          <short_desc>Remove another function that implicitly uses the composed tree (intersects with range)</short_desc>
          <delta_ts>2020-11-11 06:04:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218799</see_also>
          <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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1705899</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-09 14:57:16 -0800</bug_when>
    <thetext>Remove another function that implicitly uses the composed tree (intersects with range)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706111</commentid>
    <comment_count>1</comment_count>
      <attachid>413710</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-10 09:38:14 -0800</bug_when>
    <thetext>Created attachment 413710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706214</commentid>
    <comment_count>2</comment_count>
      <attachid>413737</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-10 14:00:54 -0800</bug_when>
    <thetext>Created attachment 413737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706287</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-10 16:41:45 -0800</bug_when>
    <thetext>Committed r269662: &lt;https://trac.webkit.org/changeset/269662&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413737.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706288</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-10 16:42:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/71261052&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413710</attachid>
            <date>2020-11-10 09:38:14 -0800</date>
            <delta_ts>2020-11-10 14:00:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218726-20201110093813.patch</filename>
            <type>text/plain</type>
            <size>37949</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EyZTc3Zjc0OTJjYTE1
NzIxZTc3ZGUxYTAyN2FmYWE4OGI1M2ZhNy4uOTEyZjZkYzAzYTkzNTFkYTYwMDEyZTU1NWVhODU1
YzgwNDA1MTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTExLTA5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYW5vdGhlciBmdW5j
dGlvbiB0aGF0IGltcGxpY2l0bHkgdXNlcyB0aGUgY29tcG9zZWQgdHJlZSAoaW50ZXJzZWN0cyB3
aXRoIHJhbmdlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDogQWRkZWQgQm91bmRhcnlQb2ludC5jcHAuCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb2N1bWVudEJhc2VkU2VsZWN0ZWRUZXh0UmFu
Z2UgY29uc3QpOgorICAgICAgICBVc2UgaW50ZXJzZWN0czxDb21wb3NlZFRyZWU+LgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAgICAgICAg
KHNlbGVjdGlvbkJlbG9uZ3NUb09iamVjdCk6IERpdHRvLgorCisgICAgICAgICogZG9tL0JvdW5k
YXJ5UG9pbnQuY3BwOiBBZGRlZC4KKworICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZTo6aXNQb2ludEluUmFuZ2UpOiBVc2UgY29udGFpbnMgaW5zdGVhZCBv
ZiBjb250YWluczxUcmVlPgorICAgICAgICBzaW5jZSB0aGUgbm9ybWFsIHRyZWUgaXMgbm93IGRl
ZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6aW50ZXJzZWN0c05vZGUgY29uc3QpOiBV
c2UgaW50ZXJzZWN0cyBpbnN0ZWFkIG9mCisgICAgICAgIGludGVyc2VjdHM8VHJlZT4gc2luY2Ug
dGhlIG5vcm1hbCB0cmVlIGlzIG5vdyBkZWZhdWx0LgorCisgICAgICAgICogZG9tL1NpbXBsZVJh
bmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZSk6
IE1vdmVkIHRvIEJvdW5kYXJ5UG9pbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6bWFrZUJvdW5k
YXJ5UG9pbnRBZnRlck5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzT2Zmc2V0QmVm
b3JlQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om9yZGVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjp0cmVlT3JkZXJGb3JUZXN0aW5nKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjppbnRlcnNlY3RzKTogRGVsZXRlZCB0d28gb2YgdGhlc2UgdGhhdCB3ZXJlIHVzaW5nIENv
bXBvc2VkVHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OmludGVyc2VjdGlvbik6IFVzZSBpbnRlcnNl
Y3RzPENvbXBvc2VkVHJlZT4uCisgICAgICAgIChXZWJDb3JlOjpjb250YWluc0Nyb3NzaW5nRG9j
dW1lbnRCb3VuZGFyaWVzKTogQWRkZWQuCisKKyAgICAgICAgKiBkb20vU2ltcGxlUmFuZ2UuaDog
TWFkZSB0aGUgY29udGFpbnMgZnVuY3Rpb25zIHRlbXBsYXRlIGFyZ3VtZW50cyBkZWZhdWx0Cisg
ICAgICAgIHRvIFRyZWUuIFJlbW92ZWQgaW50ZXJzZWN0cyBmdW5jdGlvbnMgdGhhdCB3ZXJlIGRl
cHJlY2F0ZWQgdXNpbmcgQ29tcG9zZWRUcmVlLgorICAgICAgICBBZGRlZCBjb250YWluc0Nyb3Nz
aW5nRG9jdW1lbnRCb3VuZGFyaWVzLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNGcmFtZUluUmFuZ2UpOiBVc2UgaW50ZXJzZWN0czxDb21wb3Nl
ZFRyZWU+LgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzY2FuU2VsZWN0aW9uRm9yVGVsZXBo
b25lTnVtYmVycyk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJlc3BvbmRUb05vZGVNb2RpZmlj
YXRpb24pOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VWaXNpYmxlUG9zaXRpb25SYW5nZSk6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmg6IEFkZGVkIG1ha2VWaXNpYmxlUG9zaXRp
b25SYW5nZSwgd2hpY2ggdGFrZXMKKyAgICAgICAgYW4gT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Lgor
CisgICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2VsZWN0aW9uOjphZGRSYW5nZSk6IFVzZSBpbnRlcnNlY3RzIGluc3RlYWQgb2YKKyAgICAgICAg
aW50ZXJzZWN0czxUcmVlPiBzaW5jZSB0aGUgbm9ybWFsIHRyZWUgaXMgbm93IGRlZmF1bHQuCisg
ICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmNvbnRhaW5zTm9kZSBjb25zdCk6IFVzZSBp
bnRlcnNlY3RzL2NvbnRhaW5zCisgICAgICAgIGluc3RlYWQgb2YgaW50ZXJzZWN0cy9jb250YWlu
czxUcmVlPiBzaW5jZSB0aGUgbm9ybWFsIHRyZWUgaXMgbm93IGRlZmF1bHQuCisKKworICAgICAg
ICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRy
b2xsZXI6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQpOgorICAgICAgICBV
c2UgaW50ZXJzZWN0czxDb21wb3NlZFRyZWU+LgorCiAyMDIwLTExLTA5ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBJbml0aWFsaXplIGJvcmRlciBz
dHlsZSBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzRlNGE3M2UxNDE2NWZhOTUyYjdjMDM0NmRhNjI2
N2ZiZjA3NmFiYi4uOWFjY2I3ZTMxYWE4ODVjMGQ5ZDE5ZWY2OWQzYTcyNzc0MTRkODczNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0xMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBpbXBsaWNp
dGx5IHVzZXMgdGhlIGNvbXBvc2VkIHRyZWUgKGludGVyc2VjdHMgd2l0aCByYW5nZSkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODcyNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1
ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6IFJlZmFjdG9yIHRvIHVzZSBWaXNpYmxlUG9zaXRp
b25SYW5nZSBhbmQKKyAgICAgICAgdG8gY2FsbCBpbnRlcnNlY3RzIG9uIHR3byBvZiB0aGVtLCB0
byBpbXByb3ZlIHRoZSBjb2RlIHJlYWRhYmlsaXR5IGFuZCBhbHNvIHNpZGVzdGVwIHRoZQorICAg
ICAgICBpc3N1ZSBvZiBjYWxsaW5nIHRoZSBpbnRlcnNlY3RzIHRlbXBsYXRlIGZ1bmN0aW9uIGZy
b20gb3V0c2lkZSBXZWJDb3JlLgorCiAyMDIwLTExLTA5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFNldCBwcmVmZXJlbmNlIGZvciBvdmVy
cmlkZGVuIGxhbmd1YWdlcyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGVudGVyaW5n
IHRoZSBzYW5kYm94LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGY4OTAxYWUxMDEw
NWQ3NzM0Yjc5NDNkYWJkYTY4ZWRhN2M1ZWI1ZWMuLmUyZmY5YWY0OWNkMGU1ZDBkNDE2MjljZWJj
NGUwYzc2MjcxZmNiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0xMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBpbXBsaWNpdGx5IHVzZXMgdGhlIGNvbXBv
c2VkIHRyZWUgKGludGVyc2VjdHMgd2l0aCByYW5nZSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3Lm1tOgorICAgICAg
ICAoaXNGcmFtZUluUmFuZ2UpOiBEZWxldGVkLiBUaGlzIGZ1bmN0aW9uIHVzZWQgaW50ZXJzZWN0
cywgYW5kIGRlbGV0aW5nIGl0IHNpZGUtc3RlcHMKKyAgICAgICAgdGhlIGlzc3VlIG9mIGNhbGxp
bmcgdGhlIGludGVyc2VjdHMgZnVuY3Rpb24gdGVtcGxhdGUgZnJvbSBvdXRzaWRlIFdlYkNvcmUu
CisgICAgICAgICgtW1dlYlBERlZpZXcgY291bnRNYXRjaGVzRm9yVGV4dDppbkRPTVJhbmdlOm9w
dGlvbnM6bGltaXQ6bWFya01hdGNoZXM6XSk6CisgICAgICAgIFVzZSBjb250YWluc0Nyb3NzaW5n
RG9jdW1lbnRCb3VuZGFyaWVzIGluc3RlYWQgb2YgaXNGcmFtZUluUmFuZ2UuCisKIDIwMjAtMTEt
MDYgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBQaVAgcmV0dXJu
IHRvIGVsZW1lbnQgZnVsbCBzY3JlZW4gaXMgbm90IHNtb290aCBvbiBzb21lIHdlYnNpdGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDQ4MTBjZjY3MWQyYjQ3MDg4YWQ1N2JjYzcxZTkzZjExZWFlMmIzNzYu
Ljc1NDc2N2UzYzMxNjM1ZTA4MDBlZjZmZTA1Y2FhYTk2NzMzZDFkMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC04NDQsNiArODQ0LDcgQEAgZG9tL0F0dHIuY3BwCiBkb20vQmVmb3JlTG9hZEV2ZW50LmNw
cAogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcAogZG9tL0JlZm9yZVVubG9hZEV2ZW50
LmNwcAorZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCiBkb20vQ0RBVEFTZWN0aW9uLmNwcAogZG9tL0No
YXJhY3RlckRhdGEuY3BwCiBkb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYmE2
Mzg1ZmVjNWNmZjFiMGM3NTg4MDVjNDYyN2YwZWExMDNjYzhhLi5kNDUwMDQzOTI5MmVkMTljNDFk
NDgyYWQ1OTI1MTEzNzU4NzExODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMzMSw2ICsxMTMzMSw3IEBACiAJCTkzNkRE
MDNBMDlDRUFDMjcwMDU2QUU4QyAvKiBSYW5nZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzcwOTE4QzE0MTZEODZC
MDA0NzczMzMgLyogdGV4dEFyZWFSZXNpemVDb3JuZXJAMngucG5nICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gInRleHRB
cmVhUmVzaXplQ29ybmVyQDJ4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
NzEwODBEMURCNzU0NTUwMDYwNzQ0RSAvKiBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3MkI1MjAyNTU5RTUxRTAwRTA1OENGIC8qIEJv
dW5kYXJ5UG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm91bmRhcnlQb2ludC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzdBQjlGMTVERUZFRUYwMDMxRkQwNCAvKiBQ
YWdpbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2luYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3RkYzRDQxQTEwMTJENjAwOEVCQTMx
IC8qIERpY3Rpb25hcnlMb29rdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGljdGlvbmFyeUxvb2t1cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzdGRjNE
NjFBMTAxMzFCMDA4RUJBMzEgLyogRGljdGlvbmFyeUxvb2t1cC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpY3Rpb25hcnlMb29rdXAubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yOTU3Nyw2ICsyOTU3OCw3IEBACiAJCQkJODUwMzFCMjYwQTQ0
RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyNzBB
NDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuaCAqLywKIAkJCQk3QzFFOENGRjFF
RDBDMkJFMDBCMUQ5ODMgLyogQmVmb3JlVW5sb2FkRXZlbnQuaWRsICovLAorCQkJCTkzNzJCNTIw
MjU1OUU1MUUwMEUwNThDRiAvKiBCb3VuZGFyeVBvaW50LmNwcCAqLywKIAkJCQk5MzE2RERGRTI0
MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovLAogCQkJCTdDMUU4RDAwMUVEMEMy
QkUwMEIxRDk4MyAvKiBDYWxsYmFja1Jlc3VsdC5oICovLAogCQkJCTY1NTBCNjkzMDk5REYwMjcw
MDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXgg
MzE3NWI2ZGFhZGIwYmMwN2VlZmFmZGIyNWFkMTFiZjkxYTRiODI3MS4uN2YyYmRhOGJlMTNjOTU4
ZTFhMDhhN2EwZmI4NTMyYmU5YzVjY2VkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNjA4
LDcgKzE2MDgsNyBAQCBQbGFpblRleHRSYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpk
b2N1bWVudEJhc2VkU2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdAogCiAgICAgYXV0byB2aXNpYmxl
U2VsZWN0aW9uID0gc2VsZWN0aW9uKCk7CiAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IHZpc2li
bGVTZWxlY3Rpb24uZmlyc3RSYW5nZSgpOwotICAgIGlmICghc2VsZWN0aW9uUmFuZ2UgfHwgIWlu
dGVyc2VjdHMoKnNlbGVjdGlvblJhbmdlLCAqbm9kZSkpCisgICAgaWYgKCFzZWxlY3Rpb25SYW5n
ZSB8fCAhaW50ZXJzZWN0czxDb21wb3NlZFRyZWU+KCpzZWxlY3Rpb25SYW5nZSwgKm5vZGUpKQog
ICAgICAgICByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsKIAogICAgIGludCBzdGFydCA9IGluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKHZpc2libGVTZWxlY3Rpb24uc3RhcnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRp
bC5jcHAKaW5kZXggNWRiYjUwZTQ0NTFhYjQ2NGRkZTllNmU0Mzg5NmE5ZmM4YmQ0NGI4ZS4uODRi
NmMyZDM5ZjNmMDNkYTg1ZjczZmUwOGVjYTVjNjllNzQ4YmZjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgc2VsZWN0aW9uQmVsb25nc1RvT2JqZWN0KEFjY2Vz
c2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIFZpc2libGVTZWxlY3Rpb24mCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGF1dG8gcmFuZ2UgPSBzZWxlY3Rpb24uZmlyc3RSYW5nZSgpOwot
ICAgIHJldHVybiByYW5nZSAmJiBpbnRlcnNlY3RzKCpyYW5nZSwgKmNvcmVPYmplY3QtPm5vZGUo
KSk7CisgICAgcmV0dXJuIHJhbmdlICYmIGludGVyc2VjdHM8Q29tcG9zZWRUcmVlPigqcmFuZ2Us
ICpjb3JlT2JqZWN0LT5ub2RlKCkpOwogfQogCiBBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRB
bmRDYXJldE9mZnNldFVuaWdub3JlZChBWENvcmVPYmplY3QqIHJlZmVyZW5jZU9iamVjdCwgaW50
JiBvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNh
NjVmYzkyNmRjNDliYjAwZjNjYzc2NTJmZjk5NmRiNGVmZWM3MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApAQCAtMCwwICsxLDEwOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCb3VuZGFyeVBvaW50
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFr
ZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlKE5vZGUmIG5vZGUpCit7CisgICAgYXV0byBwYXJlbnQg
PSBub2RlLnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gQm91bmRhcnlQb2ludCB7ICpwYXJlbnQsIG5vZGUuY29t
cHV0ZU5vZGVJbmRleCgpIH07Cit9CisKK09wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3Vu
ZGFyeVBvaW50QWZ0ZXJOb2RlKE5vZGUmIG5vZGUpCit7CisgICAgYXV0byBwYXJlbnQgPSBub2Rl
LnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gQm91bmRhcnlQb2ludCB7ICpwYXJlbnQsIG5vZGUuY29tcHV0ZU5v
ZGVJbmRleCgpICsgMSB9OworfQorCitzdGF0aWMgYm9vbCBpc09mZnNldEJlZm9yZUNoaWxkKENv
bnRhaW5lck5vZGUmIGNvbnRhaW5lciwgdW5zaWduZWQgb2Zmc2V0LCBOb2RlJiBjaGlsZCkKK3sK
KyAgICBpZiAoIW9mZnNldCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gSWYgdGhlIGNv
bnRhaW5lciBpcyBub3QgdGhlIHBhcmVudCwgdGhlIGNoaWxkIGlzIHBhcnQgb2YgYSBzaGFkb3cg
dHJlZSwgd2hpY2ggd2Ugc29ydCBiZXR3ZWVuIG9mZnNldCAwIGFuZCBvZmZzZXQgMS4KKyAgICBp
ZiAoY2hpbGQucGFyZW50Tm9kZSgpICE9ICZjb250YWluZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0ID0gMDsKKyAgICBmb3IgKGF1dG8gY3VycmVu
dENoaWxkID0gY29udGFpbmVyLmZpcnN0Q2hpbGQoKTsgY3VycmVudENoaWxkICYmIGN1cnJlbnRD
aGlsZCAhPSAmY2hpbGQ7IGN1cnJlbnRDaGlsZCA9IGN1cnJlbnRDaGlsZC0+bmV4dFNpYmxpbmco
KSkgeworICAgICAgICBpZiAob2Zmc2V0IDw9ICsrY3VycmVudE9mZnNldCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIEZJWE1FOiBP
bmNlIHdlIG1vdmUgdG8gQysrMjAsIHJlcGxhY2Ugd2l0aCB0aGUgQysrMjAgPD0+IG9wZXJhdG9y
LgorLy8gRklYTUU6IFRoaXMgY291bGQgcmV0dXJuIHN0ZDo6c3Ryb25nX29yZGVyaW5nIGlmIHdl
IGhhZCB0aGF0LCBvciB0aGUgZXF1aXZhbGVudC4KK3N0YXRpYyBQYXJ0aWFsT3JkZXJpbmcgb3Jk
ZXIodW5zaWduZWQgYSwgdW5zaWduZWQgYikKK3sKKyAgICBpZiAoYSA8IGIpCisgICAgICAgIHJl
dHVybiBQYXJ0aWFsT3JkZXJpbmc6Omxlc3M7CisgICAgaWYgKGEgPiBiKQorICAgICAgICByZXR1
cm4gUGFydGlhbE9yZGVyaW5nOjpncmVhdGVyOworICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6
OmVxdWl2YWxlbnQ7Cit9CisKK3RlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBQYXJ0aWFsT3Jk
ZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJvdW5kYXJ5UG9p
bnQmIGIpCit7CisgICAgaWYgKGEuY29udGFpbmVyLnB0cigpID09IGIuY29udGFpbmVyLnB0cigp
KQorICAgICAgICByZXR1cm4gb3JkZXIoYS5vZmZzZXQsIGIub2Zmc2V0KTsKKworICAgIGZvciAo
YXV0byBhbmNlc3RvciA9IGIuY29udGFpbmVyLnB0cigpOyBhbmNlc3RvcjsgKSB7CisgICAgICAg
IGF1dG8gbmV4dEFuY2VzdG9yID0gcGFyZW50PHRyZWVUeXBlPigqYW5jZXN0b3IpOworICAgICAg
ICBpZiAobmV4dEFuY2VzdG9yID09IGEuY29udGFpbmVyLnB0cigpKQorICAgICAgICAgICAgcmV0
dXJuIGlzT2Zmc2V0QmVmb3JlQ2hpbGQoKm5leHRBbmNlc3RvciwgYS5vZmZzZXQsICphbmNlc3Rv
cikgPyBQYXJ0aWFsT3JkZXJpbmc6Omxlc3MgOiBQYXJ0aWFsT3JkZXJpbmc6OmdyZWF0ZXI7Cisg
ICAgICAgIGFuY2VzdG9yID0gbmV4dEFuY2VzdG9yOworICAgIH0KKworICAgIGZvciAoYXV0byBh
bmNlc3RvciA9IGEuY29udGFpbmVyLnB0cigpOyBhbmNlc3RvcjsgKSB7CisgICAgICAgIGF1dG8g
bmV4dEFuY2VzdG9yID0gcGFyZW50PHRyZWVUeXBlPigqYW5jZXN0b3IpOworICAgICAgICBpZiAo
bmV4dEFuY2VzdG9yID09IGIuY29udGFpbmVyLnB0cigpKQorICAgICAgICAgICAgcmV0dXJuIGlz
T2Zmc2V0QmVmb3JlQ2hpbGQoKm5leHRBbmNlc3RvciwgYi5vZmZzZXQsICphbmNlc3RvcikgPyBQ
YXJ0aWFsT3JkZXJpbmc6OmdyZWF0ZXIgOiBQYXJ0aWFsT3JkZXJpbmc6Omxlc3M7CisgICAgICAg
IGFuY2VzdG9yID0gbmV4dEFuY2VzdG9yOworICAgIH0KKworICAgIHJldHVybiB0cmVlT3JkZXI8
dHJlZVR5cGU+KGEuY29udGFpbmVyLCBiLmNvbnRhaW5lcik7Cit9CisKK1BhcnRpYWxPcmRlcmlu
ZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlIHR5cGUsIGNvbnN0IEJvdW5kYXJ5UG9pbnQm
IGEsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGIpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBUcmVlOgorICAgICAgICByZXR1cm4gdHJlZU9yZGVyPFRyZWU+KGEsIGIpOworICAgIGNh
c2UgU2hhZG93SW5jbHVkaW5nVHJlZToKKyAgICAgICAgcmV0dXJuIHRyZWVPcmRlcjxTaGFkb3dJ
bmNsdWRpbmdUcmVlPihhLCBiKTsKKyAgICBjYXNlIENvbXBvc2VkVHJlZToKKyAgICAgICAgcmV0
dXJuIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGEsIGIpOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjp1bm9yZGVyZWQ7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IGU2M2YyZmJkYTY4MDYwMWQ5ZDAzMzg4OTFlYzAwMzc3
MjZjYTcxZTkuLjU4MzgwY2JiMGI4NzA0YjYyZDJmMTUwZmZhMGQ3ZTRkMzdhNTg1OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IFJhbmdl
Ojppc1BvaW50SW5SYW5nZShOb2RlJiBjb250YWluZXIsIHVuc2lnbmVkIG9mZnNldCkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnRhaW5zPFRyZWU+KG1ha2VTaW1wbGVS
YW5nZSgqdGhpcyksIHsgY29udGFpbmVyLCBvZmZzZXQgfSk7CisgICAgcmV0dXJuIGNvbnRhaW5z
KG1ha2VTaW1wbGVSYW5nZSgqdGhpcyksIHsgY29udGFpbmVyLCBvZmZzZXQgfSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHNob3J0PiBSYW5nZTo6Y29tcGFyZVBvaW50KE5vZGUmIGNvbnRhaW5lciwgdW5z
aWduZWQgb2Zmc2V0KSBjb25zdApAQCAtMjYwLDcgKzI2MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFJhbmdlOjpkZWxldGVDb250ZW50cygpCiAKIGJvb2wgUmFuZ2U6OmludGVyc2VjdHNOb2RlKE5v
ZGUmIG5vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGludGVyc2VjdHM8VHJlZT4obWFrZVNpbXBs
ZVJhbmdlKCp0aGlzKSwgbm9kZSk7CisgICAgcmV0dXJuIGludGVyc2VjdHMobWFrZVNpbXBsZVJh
bmdlKCp0aGlzKSwgbm9kZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgTm9kZSogaGlnaGVzdEFuY2Vz
dG9yVW5kZXJDb21tb25Sb290KE5vZGUqIG5vZGUsIE5vZGUqIGNvbW1vblJvb3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCA4YzNiZDc1ZWEzMjlmZTM0ZTEzZTdiM2NmNTU1MjA5
YjdmYTQyNjFhLi5lYjc4ZjhlODJjN2I3MDZkZWJkMGMwMzMzOGYxNGUzNjczMmE5ZmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJT
aW1wbGVSYW5nZS5oIgogCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgorI2luY2x1ZGUgIkhU
TUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTQ5LDkwICs1MCw2IEBAIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiAgICAgcmV0dXJuIGEu
c3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9PSBiLmVuZDsKIH0KIAotLy8gRklYTUU6IENyZWF0
ZSBCb3VuZGFyeVBvaW50LmNwcCBhbmQgbW92ZSB0aGlzIHRoZXJlLgotT3B0aW9uYWw8Qm91bmRh
cnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlKE5vZGUmIG5vZGUpCi17Ci0gICAg
YXV0byBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4gQm91bmRhcnlQb2ludCB7ICpwYXJl
bnQsIG5vZGUuY29tcHV0ZU5vZGVJbmRleCgpIH07Ci19Ci0KLS8vIEZJWE1FOiBDcmVhdGUgQm91
bmRhcnlQb2ludC5jcHAgYW5kIG1vdmUgdGhpcyB0aGVyZS4KLU9wdGlvbmFsPEJvdW5kYXJ5UG9p
bnQ+IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5vZGUmIG5vZGUpCi17Ci0gICAgYXV0byBw
YXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4gQm91bmRhcnlQb2ludCB7ICpwYXJlbnQsIG5v
ZGUuY29tcHV0ZU5vZGVJbmRleCgpICsgMSB9OwotfQotCi0vLyBGSVhNRTogQ3JlYXRlIEJvdW5k
YXJ5UG9pbnQuY3BwIGFuZCBtb3ZlIHRoaXMgdGhlcmUuCi1zdGF0aWMgYm9vbCBpc09mZnNldEJl
Zm9yZUNoaWxkKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lciwgdW5zaWduZWQgb2Zmc2V0LCBOb2Rl
JiBjaGlsZCkKLXsKLSAgICBpZiAoIW9mZnNldCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
Ly8gSWYgdGhlIGNvbnRhaW5lciBpcyBub3QgdGhlIHBhcmVudCwgdGhlIGNoaWxkIGlzIHBhcnQg
b2YgYSBzaGFkb3cgdHJlZSwgd2hpY2ggd2Ugc29ydCBiZXR3ZWVuIG9mZnNldCAwIGFuZCBvZmZz
ZXQgMS4KLSAgICBpZiAoY2hpbGQucGFyZW50Tm9kZSgpICE9ICZjb250YWluZXIpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0ID0gMDsKLSAgICBmb3Ig
KGF1dG8gY3VycmVudENoaWxkID0gY29udGFpbmVyLmZpcnN0Q2hpbGQoKTsgY3VycmVudENoaWxk
ICYmIGN1cnJlbnRDaGlsZCAhPSAmY2hpbGQ7IGN1cnJlbnRDaGlsZCA9IGN1cnJlbnRDaGlsZC0+
bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAob2Zmc2V0IDw9ICsrY3VycmVudE9mZnNldCkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LS8vIEZJWE1FOiBDcmVhdGUgQm91bmRhcnlQb2ludC5jcHAgYW5kIG1vdmUgdGhpcyB0aGVyZS4K
LS8vIEZJWE1FOiBPbmNlIHdlIG1vdmUgdG8gQysrMjAsIHJlcGxhY2Ugd2l0aCB0aGUgQysrMjAg
PD0+IG9wZXJhdG9yLgotLy8gRklYTUU6IFRoaXMgY291bGQgcmV0dXJuIHN0ZDo6c3Ryb25nX29y
ZGVyaW5nIGlmIHdlIGhhZCB0aGF0LCBvciB0aGUgZXF1aXZhbGVudC4KLXN0YXRpYyBQYXJ0aWFs
T3JkZXJpbmcgb3JkZXIodW5zaWduZWQgYSwgdW5zaWduZWQgYikKLXsKLSAgICBpZiAoYSA8IGIp
Ci0gICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6Omxlc3M7Ci0gICAgaWYgKGEgPiBiKQot
ICAgICAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjpncmVhdGVyOwotICAgIHJldHVybiBQYXJ0
aWFsT3JkZXJpbmc6OmVxdWl2YWxlbnQ7Ci19Ci0KLS8vIEZJWE1FOiBDcmVhdGUgQm91bmRhcnlQ
b2ludC5jcHAgYW5kIG1vdmUgdGhpcyB0aGVyZS4KLXRlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBl
PiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0
IEJvdW5kYXJ5UG9pbnQmIGIpCi17Ci0gICAgaWYgKGEuY29udGFpbmVyLnB0cigpID09IGIuY29u
dGFpbmVyLnB0cigpKQotICAgICAgICByZXR1cm4gb3JkZXIoYS5vZmZzZXQsIGIub2Zmc2V0KTsK
LQotICAgIGZvciAoYXV0byBhbmNlc3RvciA9IGIuY29udGFpbmVyLnB0cigpOyBhbmNlc3Rvcjsg
KSB7Ci0gICAgICAgIGF1dG8gbmV4dEFuY2VzdG9yID0gcGFyZW50PHRyZWVUeXBlPigqYW5jZXN0
b3IpOwotICAgICAgICBpZiAobmV4dEFuY2VzdG9yID09IGEuY29udGFpbmVyLnB0cigpKQotICAg
ICAgICAgICAgcmV0dXJuIGlzT2Zmc2V0QmVmb3JlQ2hpbGQoKm5leHRBbmNlc3RvciwgYS5vZmZz
ZXQsICphbmNlc3RvcikgPyBQYXJ0aWFsT3JkZXJpbmc6Omxlc3MgOiBQYXJ0aWFsT3JkZXJpbmc6
OmdyZWF0ZXI7Ci0gICAgICAgIGFuY2VzdG9yID0gbmV4dEFuY2VzdG9yOwotICAgIH0KLQotICAg
IGZvciAoYXV0byBhbmNlc3RvciA9IGEuY29udGFpbmVyLnB0cigpOyBhbmNlc3RvcjsgKSB7Ci0g
ICAgICAgIGF1dG8gbmV4dEFuY2VzdG9yID0gcGFyZW50PHRyZWVUeXBlPigqYW5jZXN0b3IpOwot
ICAgICAgICBpZiAobmV4dEFuY2VzdG9yID09IGIuY29udGFpbmVyLnB0cigpKQotICAgICAgICAg
ICAgcmV0dXJuIGlzT2Zmc2V0QmVmb3JlQ2hpbGQoKm5leHRBbmNlc3RvciwgYi5vZmZzZXQsICph
bmNlc3RvcikgPyBQYXJ0aWFsT3JkZXJpbmc6OmdyZWF0ZXIgOiBQYXJ0aWFsT3JkZXJpbmc6Omxl
c3M7Ci0gICAgICAgIGFuY2VzdG9yID0gbmV4dEFuY2VzdG9yOwotICAgIH0KLQotICAgIHJldHVy
biB0cmVlT3JkZXI8dHJlZVR5cGU+KGEuY29udGFpbmVyLCBiLmNvbnRhaW5lcik7Ci19Ci0KLS8v
IEZJWE1FOiBDcmVhdGUgQm91bmRhcnlQb2ludC5jcHAgYW5kIG1vdmUgdGhpcyB0aGVyZS4KLVBh
cnRpYWxPcmRlcmluZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlIHR5cGUsIGNvbnN0IEJv
dW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGIpCi17Ci0gICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBUcmVlOgotICAgICAgICByZXR1cm4gdHJlZU9yZGVyPFRyZWU+KGEs
IGIpOwotICAgIGNhc2UgU2hhZG93SW5jbHVkaW5nVHJlZToKLSAgICAgICAgcmV0dXJuIHRyZWVP
cmRlcjxTaGFkb3dJbmNsdWRpbmdUcmVlPihhLCBiKTsKLSAgICBjYXNlIENvbXBvc2VkVHJlZToK
LSAgICAgICAgcmV0dXJuIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGEsIGIpOwotICAgIH0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjp1bm9y
ZGVyZWQ7Ci19Ci0KIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
KE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0byBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKQEAg
LTI4OSwxMSArMjA2LDYgQEAgdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJvb2wgaW50ZXJz
ZWN0cyhjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmEKIAogdGVtcGxhdGUgYm9v
bCBpbnRlcnNlY3RzPFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2Um
KTsKIAotYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVS
YW5nZSYgYikKLXsKLSAgICByZXR1cm4gaW50ZXJzZWN0czxDb21wb3NlZFRyZWU+KGEsIGIpOwot
fQotCiBzdGF0aWMgYm9vbCBjb21wYXJlQnlDb21wb3NlZFRyZWVPcmRlcihjb25zdCBCb3VuZGFy
eVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBvaW50JiBiKQogewogICAgIHJldHVybiBpc19sdCh0
cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihhLCBiKSk7CkBAIC0zMDcsNyArMjE5LDcgQEAgU2ltcGxl
UmFuZ2UgdW5pb25SYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2Um
IGIpCiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gaW50ZXJzZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgYSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBiKQogewogICAgIC8v
IEZJWE1FOiBDYW4gdGhpcyBiZSBkb25lIG1vcmUgZWZmaWNpZW50bHksIHdpdGggZmV3ZXIgY2Fs
bHMgdG8gdHJlZU9yZGVyPwotICAgIGlmICghYSB8fCAhYiB8fCAhaW50ZXJzZWN0cygqYSwgKmIp
KQorICAgIGlmICghYSB8fCAhYiB8fCAhaW50ZXJzZWN0czxDb21wb3NlZFRyZWU+KCphLCAqYikp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBzdGQ6Om1heChh
LT5zdGFydCwgYi0+c3RhcnQsIGNvbXBhcmVCeUNvbXBvc2VkVHJlZU9yZGVyKSwgc3RkOjptaW4o
YS0+ZW5kLCBiLT5lbmQsIGNvbXBhcmVCeUNvbXBvc2VkVHJlZU9yZGVyKSB9IH07CiB9CkBAIC0z
NjEsMTEgKzI3MywxNyBAQCB0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gYm9vbCBpbnRlcnNl
Y3RzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgTm9kZQogfQogCiB0ZW1wbGF0ZSBi
b29sIGludGVyc2VjdHM8VHJlZT4oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7Cit0
ZW1wbGF0ZSBib29sIGludGVyc2VjdHM8Q29tcG9zZWRUcmVlPihjb25zdCBTaW1wbGVSYW5nZSYs
IGNvbnN0IE5vZGUmKTsKIAotYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZSwgY29uc3QgTm9kZSYgbm9kZSkKK2Jvb2wgY29udGFpbnNDcm9zc2luZ0RvY3VtZW50Qm91bmRh
cmllcyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIE5vZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJu
IGludGVyc2VjdHM8Q29tcG9zZWRUcmVlPihyYW5nZSwgbm9kZSk7Ci0KKyAgICBhdXRvKiBhbmNl
c3RvciA9ICZub2RlOworICAgIHdoaWxlICgmcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKSAhPSAmYW5j
ZXN0b3ItPmRvY3VtZW50KCkpIHsKKyAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+ZG9jdW1l
bnQoKS5vd25lckVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFhbmNlc3RvcikKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4o
cmFuZ2UsICphbmNlc3Rvcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW1wbGVSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXgg
MWEwZDIwOTNmODE1YTFkN2ZjNDI3YTFlYWZjYThmNjdmNmUwMWU5Yi4uMDBhZjE3ZTgyZjYyODIy
MjNkYjcwZTI3NGY4ZTBjZDZkNmRlMDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NpbXBsZVJhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAg
LTY3LDE0ICs2NywxNCBAQCB0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IE5vZGUqIGNvbW1vbklu
Y2x1c2l2ZUFuY2VzdG9yKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKIHRlbXBsYXRlPFRyZWVUeXBl
ID0gVHJlZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5
UG9pbnQmKTsKIHRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBjb250YWlucyhjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+Jik7Ci10ZW1wbGF0ZTxU
cmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29u
c3QgU2ltcGxlUmFuZ2UmIGlubmVyUmFuZ2UpOwotdGVtcGxhdGU8VHJlZVR5cGU+IGJvb2wgY29u
dGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7Cit0ZW1wbGF0ZTxUcmVlVHlw
ZSA9IFRyZWU+IGJvb2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIG91dGVyUmFuZ2UsIGNv
bnN0IFNpbXBsZVJhbmdlJiBpbm5lclJhbmdlKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4g
Ym9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKIAogV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb250YWluc0ZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IFNpbXBsZVJh
bmdlJiBvdXRlclJhbmdlLCBjb25zdCBTaW1wbGVSYW5nZSYgaW5uZXJSYW5nZSk7CiBXRUJDT1JF
X0VYUE9SVCBib29sIGNvbnRhaW5zRm9yVGVzdGluZyhUcmVlVHlwZSwgY29uc3QgU2ltcGxlUmFu
Z2UmLCBjb25zdCBOb2RlJik7CiAKLXRlbXBsYXRlPFRyZWVUeXBlPiBib29sIGludGVyc2VjdHMo
Y29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpOwotdGVtcGxhdGU8VHJlZVR5
cGU+IGJvb2wgaW50ZXJzZWN0cyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKK3Rl
bXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdl
JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBp
bnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwogCiAvLyBSZXR1cm5z
IGVxdWl2YWxlbnQgaWYgcG9pbnQgaXMgaW4gcmFuZ2UuCiB0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRy
ZWU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBC
b3VuZGFyeVBvaW50Jik7CkBAIC04OCw4ICs4OCw2IEBAIE9mZnNldFJhbmdlIGNoYXJhY3RlckRh
dGFPZmZzZXRSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKIAogLy8gRklY
TUU6IFN0YXJ0IG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZXByZWNhdGVkIHNpbmNlIHRoZXkgc2ls
ZW50bHkgZGVmYXVsdCB0byBDb21wb3NlZFRyZWUuCiAKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaW50
ZXJzZWN0cyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7Ci1XRUJDT1JF
X0VYUE9SVCBib29sIGludGVyc2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7
CiBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZSB1bmlvblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdl
JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBpbnRlcnNlY3Rpb24oY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CiAKQEAgLTk5LDYgKzk3LDggQEAgSW50ZXJzZWN0aW5nTm9k
ZVJhbmdlIGludGVyc2VjdGluZ05vZGVzKGNvbnN0IFNpbXBsZVJhbmdlJik7CiBjbGFzcyBJbnRl
cnNlY3RpbmdOb2RlUmFuZ2VXaXRoUXVpcms7CiBJbnRlcnNlY3RpbmdOb2RlUmFuZ2VXaXRoUXVp
cmsgaW50ZXJzZWN0aW5nTm9kZXNXaXRoRGVwcmVjYXRlZFplcm9PZmZzZXRTdGFydFF1aXJrKGNv
bnN0IFNpbXBsZVJhbmdlJik7CiAKK1dFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNDcm9zc2lu
Z0RvY3VtZW50Qm91bmRhcmllcyhjb25zdCBTaW1wbGVSYW5nZSYsIE5vZGUmKTsKKwogLy8gRklY
TUU6IEVuZCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgZGVwcmVjYXRlZCBzaW5jZSB0aGV5IHNpbGVu
dGx5IGRlZmF1bHQgdG8gQ29tcG9zZWRUcmVlLgogCiBjbGFzcyBJbnRlcnNlY3RpbmdOb2RlSXRl
cmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBO
b2RlPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZTYwMWE1ZmNkZTJlZmQxYzk1
NTBhNTM2MDQ5NWFhYzIyODRiMTYyOS4uNzY3ODc2YzAzNWI1NTZkZjZhMThkYWEyYWVmMmNlNDE0
MDgwYWUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzU0NSw3ICszNTQ1LDcg
QEAgc3RhdGljIGJvb2wgaXNGcmFtZUluUmFuZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UpCiB7CiAgICAgZm9yIChhdXRvKiBvd25lckVsZW1lbnQgPSBmcmFtZS5vd25l
ckVsZW1lbnQoKTsgb3duZXJFbGVtZW50OyBvd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQtPmRv
Y3VtZW50KCkub3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgaWYgKCZvd25lckVsZW1lbnQtPmRv
Y3VtZW50KCkgPT0gJnJhbmdlLnN0YXJ0LmRvY3VtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4g
aW50ZXJzZWN0cyhyYW5nZSwgKm93bmVyRWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gaW50
ZXJzZWN0czxDb21wb3NlZFRyZWU+KHJhbmdlLCAqb3duZXJFbGVtZW50KTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpAQCAtMzcwMyw3ICszNzAzLDcgQEAgdm9pZCBFZGl0b3I6OnNjYW5T
ZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKCkKICAgICAgICAgICAgIGFkZE1hcmtlcihyYW5n
ZSwgRG9jdW1lbnRNYXJrZXI6OlRlbGVwaG9uZU51bWJlcik7CiAKICAgICAgICAgICAgIC8vIE9u
bHkgY29uc2lkZXIgcmFuZ2VzIHdpdGggYSBkZXRlY3RlZCB0ZWxlcGhvbmUgbnVtYmVyIGlmIHRo
ZXkgb3ZlcmxhcCB3aXRoIHRoZSBzZWxlY3Rpb24uCi0gICAgICAgICAgICBpZiAoaW50ZXJzZWN0
cyhyYW5nZSwgc2VsZWN0ZWRSYW5nZSkpCisgICAgICAgICAgICBpZiAoaW50ZXJzZWN0czxDb21w
b3NlZFRyZWU+KHJhbmdlLCBzZWxlY3RlZFJhbmdlKSkKICAgICAgICAgICAgICAgICBtX2RldGVj
dGVkVGVsZXBob25lTnVtYmVyUmFuZ2VzLmFwcGVuZChyYW5nZSk7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDBkZTc1Mjgw
MzAwZmI1OWQzMWJlYTQ3ODhkOWJmZmY3YjA1OTM5NGQuLjliNjdkMjk3ZTE5MWYyZTRjYzZmM2Jk
ZGZlMzExZjJkNjUzNTAwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6cmVzcG9uZFRv
Tm9kZU1vZGlmaWNhdGlvbihOb2RlJiBub2RlLCBib29sIGJhc2VSZW1vdmVkLCBib28KICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9zZWxlY3Rpb24uc2V0V2l0aG91dFZhbGlkYXRpb24obV9z
ZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLnN0YXJ0KCkpOwogICAgIH0gZWxzZSBpZiAoaXNS
YW5nZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHJhbmdlID0gbV9zZWxlY3Rpb24uZmlyc3RSYW5n
ZSgpOyByYW5nZSAmJiBpbnRlcnNlY3RzKCpyYW5nZSwgbm9kZSkpIHsKKyAgICAgICAgaWYgKGF1
dG8gcmFuZ2UgPSBtX3NlbGVjdGlvbi5maXJzdFJhbmdlKCk7IHJhbmdlICYmIGludGVyc2VjdHM8
Q29tcG9zZWRUcmVlPigqcmFuZ2UsIG5vZGUpKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBkaWQg
bm90aGluZyBoZXJlLCB3aGVuIHRoaXMgbm9kZSdzIHJlbmRlcmVyIHdhcyBkZXN0cm95ZWQsIHRo
ZSByZWN0IHRoYXQgaXQKICAgICAgICAgICAgIC8vIG9jY3VwaWVkIHdvdWxkIGJlIGludmFsaWRh
dGVkLCBidXQsIHNlbGVjdGlvbiBnYXBzIHRoYXQgY2hhbmdlIGFzIGEgcmVzdWx0IG9mCiAgICAg
ICAgICAgICAvLyB0aGUgcmVtb3ZhbCB3b3VsZG4ndCBiZSBpbnZhbGlkYXRlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCAzYTg2NjY4NTk3OGZkOTU2
MWIzY2Y4ZTAyOTg4NTU4NDAzOThhNTkwLi45OThiMjAwYTJkNTI0YTU5OGVkNzdiNWM1ZjJjOTAz
ZmIzYjllYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
CkBAIC03ODcsNiArNzg3LDEzIEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFu
Z2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQogICAgIHJldHVybiBtYWtlU2lt
cGxlUmFuZ2UocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7CiB9CiAKK1Zpc2libGVQb3NpdGlvblJh
bmdlIG1ha2VWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlKQoreworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0
dXJuIHsgbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJhbmdlLT5zdGFydCksIG1ha2VDb250
YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS0+ZW5kKSB9OworfQorCiBQYXJ0aWFsT3JkZXJpbmcg
ZG9jdW1lbnRPcmRlcihjb25zdCBWaXNpYmxlUG9zaXRpb24mIGEsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgYikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHR3byBwb3NpdGlvbnMgd2l0aCBkaWZm
ZXJlbnQgYWZmaW5pdHkgYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50IG9yIG5vdD8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCmluZGV4IGU3NGNkMDY2ZmEzYzI1NjhmMWM1
MWYwYWFmMmYzZDk2MDQ1ZTJkYWMuLmYxNzMxYjI2MmU1NWZlNjRlYzYxMDY4Mzg5OTI1ODFhZDY3
N2IyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaApAQCAtMTM5
LDYgKzEzOSw3IEBAIHN0cnVjdCBWaXNpYmxlUG9zaXRpb25SYW5nZSB7CiB9OwogCiBXRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFZpc2li
bGVQb3NpdGlvblJhbmdlJik7CitXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb25SYW5nZSBt
YWtlVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CiAK
IE5vZGUqIGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdl
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCBmZWM3MWZhN2JlYjU4
YzliNmViNTZlY2M3Y2IzZDAwMzE1MjgyMjQ2Li4wZGY3ZDliNjEwNzc3YzY0ZGRhNzVhYTAyNjJm
NzQ5MmJhMDBhOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC0zOTEs
NyArMzkxLDcgQEAgdm9pZCBET01TZWxlY3Rpb246OmFkZFJhbmdlKFJhbmdlJiBsaXZlUmFuZ2Up
CiAgICAgfQogICAgIGF1dG8gcmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2UobGl2ZVJhbmdlKTsKICAg
ICBpZiAoYXV0byBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCkpIHsKLSAgICAgICAgaWYgKCFzZWxlY3RlZFJhbmdlLT5zdGFydC5jb250YWlu
ZXItPmNvbnRhaW5pbmdTaGFkb3dSb290KCkgJiYgaW50ZXJzZWN0czxUcmVlPigqc2VsZWN0ZWRS
YW5nZSwgcmFuZ2UpKQorICAgICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UtPnN0YXJ0LmNvbnRhaW5l
ci0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSAmJiBpbnRlcnNlY3RzKCpzZWxlY3RlZFJhbmdlLCBy
YW5nZSkpCiAgICAgICAgICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKHVuaW9uUmFuZ2UoKnNl
bGVjdGVkUmFuZ2UsIHJhbmdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzMsNyAr
NDMzLDcgQEAgYm9vbCBET01TZWxlY3Rpb246OmNvbnRhaW5zTm9kZShOb2RlJiBub2RlLCBib29s
IGFsbG93UGFydGlhbCkgY29uc3QKICAgICBpZiAobm9kZS5pc1RleHROb2RlKCkgJiYgIW5vZGUu
ZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxpdmVSYW5nZVNlbGVjdGlvbkVuYWJsZWQoKSkKICAgICAg
ICAgYWxsb3dQYXJ0aWFsID0gdHJ1ZTsKICAgICBhdXRvIHJhbmdlID0gdGhpcy0+cmFuZ2UoKTsK
LSAgICByZXR1cm4gcmFuZ2UgJiYgKGFsbG93UGFydGlhbCA/IGludGVyc2VjdHM8VHJlZT4oKnJh
bmdlLCBub2RlKSA6IGNvbnRhaW5zPFRyZWU+KCpyYW5nZSwgbm9kZSkpOworICAgIHJldHVybiBy
YW5nZSAmJiAoYWxsb3dQYXJ0aWFsID8gaW50ZXJzZWN0cygqcmFuZ2UsIG5vZGUpIDogY29udGFp
bnMoKnJhbmdlLCBub2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVNlbGVjdGlvbjo6
c2VsZWN0QWxsQ2hpbGRyZW4oTm9kZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKaW5kZXggY2RiZmQ4ZmM4NWE2YjhhOGFhZDVmZDNkMDE3MGRjNjlhNDY1MDg5MC4u
YTdjYWIxNDAzODJjY2NkODEyODc4ZDZkYWZjNmIwN2Q1OWQzMmMyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTE0NjgsNyArMTQ2OCw3IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVj
dG9yPEludFNpemU+CiAKICAgICBWZWN0b3I8UmVmPEhUTUxJbWFnZUVsZW1lbnQ+PiBwbGFjZWhv
bGRlcnM7CiAgICAgZm9yIChhdXRvJiBwbGFjZWhvbGRlciA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhU
TUxJbWFnZUVsZW1lbnQ+KGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpjb250YWluZXIpKSkgewot
ICAgICAgICBpZiAoaW50ZXJzZWN0cygqaW5zZXJ0ZWRDb250ZW50UmFuZ2UsIHBsYWNlaG9sZGVy
KSkKKyAgICAgICAgaWYgKGludGVyc2VjdHM8Q29tcG9zZWRUcmVlPigqaW5zZXJ0ZWRDb250ZW50
UmFuZ2UsIHBsYWNlaG9sZGVyKSkKICAgICAgICAgICAgIHBsYWNlaG9sZGVycy5hcHBlbmQocGxh
Y2Vob2xkZXIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwZjJjN2I3NTk0ODljMDE1OThkNzlmNGQ3NTQ1
Y2IwODJlMTk5MzUyLi5lNTc1ZmNhMDE5ZjZiMTJhOGY0ZGFlNWNiMWQ2ODJkYTRlNDM2ZWI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtNDE1NSwxMCArNDE1NSw4IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50
RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAgICAg
UmVmPEZyYW1lPiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCk7CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gcmFuZ2VPZkludGVyZXN0
U3RhcnQ7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHJhbmdlT2ZJbnRlcmVzdEVuZDsKLSAgICBWaXNp
YmxlUG9zaXRpb24gc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCk7
CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgcmFuZ2VPZkludGVyZXN0OworICAgIGF1dG8gc2Vs
ZWN0aW9uUmFuZ2UgPSBWaXNpYmxlUG9zaXRpb25SYW5nZSB7IHNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKSwgc2VsZWN0aW9uLnZpc2libGVFbmQoKSB9OwogCiAgICAgYm9vbCBpc1NwYXRpYWxSZXF1
ZXN0ID0gcmVxdWVzdC5vcHRpb25zLmNvbnRhaW5zQW55KHsgRG9jdW1lbnRFZGl0aW5nQ29udGV4
dFJlcXVlc3Q6Ok9wdGlvbnM6OlNwYXRpYWwsIERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0
OjpPcHRpb25zOjpTcGF0aWFsQW5kQ3VycmVudFNlbGVjdGlvbiB9KTsKICAgICBib29sIHdhbnRz
UmVjdHMgPSByZXF1ZXN0Lm9wdGlvbnMuY29udGFpbnMoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJl
cXVlc3Q6Ok9wdGlvbnM6OlJlY3RzKTsKQEAgLTQxNzIsNDIgKzQxNzAsNDAgQEAgdm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0
UmVxdWVzdCByZXF1ZXMKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcmVxdWVzdC5yZWN0Lmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgcmFuZ2VPZkludGVyZXN0U3RhcnQgPSBjbG9zZXN0RWRp
dGFibGVQb3NpdGlvbkluRWxlbWVudEZvckFic29sdXRlUG9pbnQoKmVsZW1lbnQsIHJvdW5kZWRJ
bnRQb2ludChyZXF1ZXN0LnJlY3QubWluWE1pbllDb3JuZXIoKSkpOwotICAgICAgICAgICAgcmFu
Z2VPZkludGVyZXN0RW5kID0gY2xvc2VzdEVkaXRhYmxlUG9zaXRpb25JbkVsZW1lbnRGb3JBYnNv
bHV0ZVBvaW50KCplbGVtZW50LCByb3VuZGVkSW50UG9pbnQocmVxdWVzdC5yZWN0Lm1heFhNYXhZ
Q29ybmVyKCkpKTsKKyAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdC5zdGFydCA9IGNsb3Nlc3RF
ZGl0YWJsZVBvc2l0aW9uSW5FbGVtZW50Rm9yQWJzb2x1dGVQb2ludCgqZWxlbWVudCwgcm91bmRl
ZEludFBvaW50KHJlcXVlc3QucmVjdC5taW5YTWluWUNvcm5lcigpKSk7CisgICAgICAgICAgICBy
YW5nZU9mSW50ZXJlc3QuZW5kID0gY2xvc2VzdEVkaXRhYmxlUG9zaXRpb25JbkVsZW1lbnRGb3JB
YnNvbHV0ZVBvaW50KCplbGVtZW50LCByb3VuZGVkSW50UG9pbnQocmVxdWVzdC5yZWN0Lm1heFhN
YXhZQ29ybmVyKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oZWxlbWVudCkpIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRGb3JtQ29udHJvbEVs
ZW1lbnQgPSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKmVsZW1lbnQpOwot
ICAgICAgICAgICAgcmFuZ2VPZkludGVyZXN0U3RhcnQgPSB0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LnZpc2libGVQb3NpdGlvbkZvckluZGV4KDApOwotICAgICAgICAgICAgcmFuZ2VPZkludGVyZXN0
RW5kID0gdGV4dEZvcm1Db250cm9sRWxlbWVudC52aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh0ZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LnZhbHVlKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgcmFuZ2VP
ZkludGVyZXN0LnN0YXJ0ID0gdGV4dEZvcm1Db250cm9sRWxlbWVudC52aXNpYmxlUG9zaXRpb25G
b3JJbmRleCgwKTsKKyAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdC5lbmQgPSB0ZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LnZpc2libGVQb3NpdGlvbkZvckluZGV4KHRleHRGb3JtQ29udHJvbEVsZW1l
bnQudmFsdWUoKS5sZW5ndGgoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByYW5n
ZU9mSW50ZXJlc3RTdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShlbGVtZW50Lmdl
dCgpKTsKLSAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdEVuZCA9IGxhc3RQb3NpdGlvbkluT3JB
ZnRlck5vZGUoZWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICByYW5nZU9mSW50ZXJlc3Quc3Rh
cnQgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoZWxlbWVudC5nZXQoKSk7CisgICAgICAg
ICAgICByYW5nZU9mSW50ZXJlc3QuZW5kID0gbGFzdFBvc2l0aW9uSW5PckFmdGVyTm9kZShlbGVt
ZW50LmdldCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoaXNTcGF0aWFsUmVxdWVzdCkg
ewogICAgICAgICAvLyBGSVhNRTogV2UgbWlnaHQgbmVlZCB0byBiZSBhIGJpdCBtb3JlIGNhcmVm
dWwgdGhhdCB3ZSBnZXQgc29tZXRoaW5nIHVzZWZ1bCAodGVzdCB0aGUgb3RoZXIgY29ybmVycz8p
LgotICAgICAgICByYW5nZU9mSW50ZXJlc3RTdGFydCA9IHZpc2libGVQb3NpdGlvbkZvclBvaW50
SW5Sb290Vmlld0Nvb3JkaW5hdGVzKGZyYW1lLmdldCgpLCByZXF1ZXN0LnJlY3QubWluWE1pbllD
b3JuZXIoKSk7Ci0gICAgICAgIHJhbmdlT2ZJbnRlcmVzdEVuZCA9IHZpc2libGVQb3NpdGlvbkZv
clBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzKGZyYW1lLmdldCgpLCByZXF1ZXN0LnJlY3QubWF4
WE1heFlDb3JuZXIoKSk7Ci0gICAgfSBlbHNlIGlmICghc2VsZWN0aW9uLmlzTm9uZSgpKSB7Ci0g
ICAgICAgIHJhbmdlT2ZJbnRlcmVzdFN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQ7Ci0gICAgICAgIHJh
bmdlT2ZJbnRlcmVzdEVuZCA9IHNlbGVjdGlvbkVuZDsKLSAgICB9CisgICAgICAgIHJhbmdlT2ZJ
bnRlcmVzdC5zdGFydCA9IHZpc2libGVQb3NpdGlvbkZvclBvaW50SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKGZyYW1lLmdldCgpLCByZXF1ZXN0LnJlY3QubWluWE1pbllDb3JuZXIoKSk7CisgICAgICAg
IHJhbmdlT2ZJbnRlcmVzdC5lbmQgPSB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludEluUm9vdFZpZXdD
b29yZGluYXRlcyhmcmFtZS5nZXQoKSwgcmVxdWVzdC5yZWN0Lm1heFhNYXhZQ29ybmVyKCkpOwor
ICAgIH0gZWxzZSBpZiAoIXNlbGVjdGlvbi5pc05vbmUoKSkKKyAgICAgICAgcmFuZ2VPZkludGVy
ZXN0ID0gc2VsZWN0aW9uUmFuZ2U7CiAKLSAgICBpZiAocmFuZ2VPZkludGVyZXN0RW5kIDwgcmFu
Z2VPZkludGVyZXN0U3RhcnQpCi0gICAgICAgIHN0ZDo6ZXhjaGFuZ2UocmFuZ2VPZkludGVyZXN0
U3RhcnQsIHJhbmdlT2ZJbnRlcmVzdEVuZCk7CisgICAgaWYgKHJhbmdlT2ZJbnRlcmVzdC5lbmQg
PCByYW5nZU9mSW50ZXJlc3Quc3RhcnQpCisgICAgICAgIHN0ZDo6ZXhjaGFuZ2UocmFuZ2VPZklu
dGVyZXN0LnN0YXJ0LCByYW5nZU9mSW50ZXJlc3QuZW5kKTsKIAogICAgIGlmIChyZXF1ZXN0Lm9w
dGlvbnMuY29udGFpbnMoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q6Ok9wdGlvbnM6OlNw
YXRpYWxBbmRDdXJyZW50U2VsZWN0aW9uKSkgewotICAgICAgICBpZiAoc2VsZWN0aW9uU3RhcnQg
PCByYW5nZU9mSW50ZXJlc3RTdGFydCkKLSAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdFN0YXJ0
ID0gc2VsZWN0aW9uU3RhcnQ7Ci0gICAgICAgIGlmIChzZWxlY3Rpb25FbmQgPiByYW5nZU9mSW50
ZXJlc3RFbmQpCi0gICAgICAgICAgICByYW5nZU9mSW50ZXJlc3RFbmQgPSBzZWxlY3Rpb25FbmQ7
CisgICAgICAgIGlmIChzZWxlY3Rpb25SYW5nZS5zdGFydCA8IHJhbmdlT2ZJbnRlcmVzdC5zdGFy
dCkKKyAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdC5zdGFydCA9IHNlbGVjdGlvblJhbmdlLnN0
YXJ0OworICAgICAgICBpZiAoc2VsZWN0aW9uUmFuZ2UuZW5kID4gcmFuZ2VPZkludGVyZXN0LmVu
ZCkKKyAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdC5lbmQgPSBzZWxlY3Rpb25SYW5nZS5lbmQ7
CiAgICAgfQogCi0gICAgaWYgKHJhbmdlT2ZJbnRlcmVzdFN0YXJ0LmlzTnVsbCgpIHx8IHJhbmdl
T2ZJbnRlcmVzdFN0YXJ0LmlzT3JwaGFuKCkgfHwgcmFuZ2VPZkludGVyZXN0RW5kLmlzTnVsbCgp
IHx8IHJhbmdlT2ZJbnRlcmVzdEVuZC5pc09ycGhhbigpKSB7CisgICAgaWYgKHJhbmdlT2ZJbnRl
cmVzdC5zdGFydC5pc051bGwoKSB8fCByYW5nZU9mSW50ZXJlc3Quc3RhcnQuaXNPcnBoYW4oKSB8
fCByYW5nZU9mSW50ZXJlc3QuZW5kLmlzTnVsbCgpIHx8IHJhbmdlT2ZJbnRlcmVzdC5lbmQuaXNP
cnBoYW4oKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gVGhlIHN1YnNldCBvZiB0aGUgc2VsZWN0aW9uIHRoYXQgaXMg
aW5zaWRlIHRoZSByYW5nZSBvZiBpbnRlcmVzdC4KLSAgICBhdXRvIHJhbmdlT2ZJbnRlcmVzdElu
U2VsZWN0aW9uID0gY29uc3RyYWluUmFuZ2VUb1NlbGVjdGlvbihzZWxlY3Rpb24sIHsgcmFuZ2VP
ZkludGVyZXN0U3RhcnQsIHJhbmdlT2ZJbnRlcmVzdEVuZCB9KTsKKyAgICBhdXRvIHJhbmdlT2ZJ
bnRlcmVzdEluU2VsZWN0aW9uID0gY29uc3RyYWluUmFuZ2VUb1NlbGVjdGlvbihzZWxlY3Rpb24s
IHJhbmdlT2ZJbnRlcmVzdCk7CiAgICAgaWYgKHJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uLmlz
TnVsbCgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQyMTcsMTEgKzQyMTMsMTEgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXMKICAgICBW
aXNpYmxlUG9zaXRpb24gY29udGV4dEFmdGVyRW5kOwogICAgIGF1dG8gY29tcG9zaXRpb25SYW5n
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCk7CiAgICAgaWYgKHJlcXVlc3Qu
Z3JhbnVsYXJpdHlDb3VudCkgewotICAgICAgICBjb250ZXh0QmVmb3JlU3RhcnQgPSBtb3ZlQnlH
cmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRhcnkocmFuZ2VPZkludGVyZXN0U3RhcnQsIHJl
cXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVzdC5ncmFudWxhcml0eUNvdW50LCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKLSAgICAgICAgY29udGV4dEFmdGVyRW5kID0g
bW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5KHJhbmdlT2ZJbnRlcmVzdEVu
ZCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1ZXN0LmdyYW51bGFyaXR5Q291
bnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CisgICAgICAgIGNvbnRleHRCZWZvcmVT
dGFydCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFyeShyYW5nZU9mSW50
ZXJlc3Quc3RhcnQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVzdC5ncmFu
dWxhcml0eUNvdW50LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKKyAgICAgICAgY29u
dGV4dEFmdGVyRW5kID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5KHJh
bmdlT2ZJbnRlcmVzdC5lbmQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVz
dC5ncmFudWxhcml0eUNvdW50LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGNvbnRleHRCZWZvcmVTdGFydCA9IHJhbmdlT2ZJbnRlcmVzdFN0YXJ0
OwotICAgICAgICBjb250ZXh0QWZ0ZXJFbmQgPSByYW5nZU9mSW50ZXJlc3RFbmQ7CisgICAgICAg
IGNvbnRleHRCZWZvcmVTdGFydCA9IHJhbmdlT2ZJbnRlcmVzdC5zdGFydDsKKyAgICAgICAgY29u
dGV4dEFmdGVyRW5kID0gcmFuZ2VPZkludGVyZXN0LmVuZDsKICAgICAgICAgaWYgKHdhbnRzTWFy
a2VkVGV4dFJlY3RzICYmIGNvbXBvc2l0aW9uUmFuZ2UpIHsKICAgICAgICAgICAgIC8vIEluIHRo
ZSBjYXNlIHdoZXJlIHRoZSBjbGllbnQgaGFzIHJlcXVlc3RlZCBtYXJrZWQgdGV4dCByZWN0cyBt
YWtlIHN1cmUgdGhhdCB0aGUgY29udGV4dAogICAgICAgICAgICAgLy8gcmFuZ2UgZW5jb21wYXNz
ZXMgdGhlIGVudGlyZSBtYXJrZWQgdGV4dCByYW5nZSBzbyB0aGF0IHdlIGRvbid0IHJldHVybiBh
IHRydW5jYXRlZCByZXN1bHQuCkBAIC00MjQ2LDExICs0MjQyLDkgQEAgdm9pZCBXZWJQYWdlOjpy
ZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVz
dCByZXF1ZXMKICAgICBjb250ZXh0LmNvbnRleHRCZWZvcmUgPSBtYWtlU3RyaW5nKGNvbnRleHRC
ZWZvcmVTdGFydCwgcmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24uc3RhcnQpOwogICAgIGNvbnRl
eHQuc2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmluZyhyYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbi5z
dGFydCwgcmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24uZW5kKTsKICAgICBjb250ZXh0LmNvbnRl
eHRBZnRlciA9IG1ha2VTdHJpbmcocmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24uZW5kLCBjb250
ZXh0QWZ0ZXJFbmQpOwotICAgIGlmIChjb21wb3NpdGlvblJhbmdlICYmIGludGVyc2VjdHMoKm1h
a2VTaW1wbGVSYW5nZShyYW5nZU9mSW50ZXJlc3RTdGFydCwgcmFuZ2VPZkludGVyZXN0RW5kKSwg
KmNvbXBvc2l0aW9uUmFuZ2UpKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBjb21wb3NpdGlv
blN0YXJ0KG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY29tcG9zaXRpb25SYW5nZS0+c3Rh
cnQpKTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGNvbXBvc2l0aW9uRW5kKG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24oY29tcG9zaXRpb25SYW5nZS0+ZW5kKSk7Ci0gICAgICAgIGNvbnRl
eHQubWFya2VkVGV4dCA9IG1ha2VTdHJpbmcoY29tcG9zaXRpb25TdGFydCwgY29tcG9zaXRpb25F
bmQpOwotICAgICAgICBjb250ZXh0LnNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQubG9jYXRpb24g
PSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24uc3Rh
cnQsIGNvbXBvc2l0aW9uU3RhcnQpOworICAgIGlmIChhdXRvIGNvbXBvc2l0aW9uVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgPSBtYWtlVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29tcG9zaXRpb25SYW5nZSk7
IGludGVyc2VjdHMocmFuZ2VPZkludGVyZXN0LCBjb21wb3NpdGlvblZpc2libGVQb3NpdGlvblJh
bmdlKSkgeworICAgICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSBtYWtlU3RyaW5nKGNvbXBvc2l0
aW9uVmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQsIGNvbXBvc2l0aW9uVmlzaWJsZVBvc2l0aW9u
UmFuZ2UuZW5kKTsKKyAgICAgICAgY29udGV4dC5zZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Lmxv
Y2F0aW9uID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKHJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0
aW9uLnN0YXJ0LCBjb21wb3NpdGlvblZpc2libGVQb3NpdGlvblJhbmdlLnN0YXJ0KTsKICAgICAg
ICAgY29udGV4dC5zZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Lmxlbmd0aCA9IFtjb250ZXh0LnNl
bGVjdGVkVGV4dC5zdHJpbmcgbGVuZ3RoXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCBmYjc0MjA4Zjk5OGMzY2FiNGY1YWY3
ZWMzYzdhNDZjMjI5OTIyMWYzLi5mN2YzZTMxNTgwNzE1YTdkMjMyZjU2MzBjYmZlZTQ5MTMyNWFm
OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
CkBAIC02MzYsMjMgKzYzNiwxNCBAQCAtIChCT09MKW1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxp
Z2h0ZWQKICAgICByZXR1cm4gTk87CiB9CiAKLXN0YXRpYyBib29sIGlzRnJhbWVJblJhbmdlKFdl
YkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIHJhbmdlKQot
ewotICAgIGZvciAoYXV0byogb3duZXJFbGVtZW50ID0gZnJhbWUub3duZXJFbGVtZW50KCk7IG93
bmVyRWxlbWVudDsgb3duZXJFbGVtZW50ID0gb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLm93bmVy
RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmICgmb3duZXJFbGVtZW50LT5kb2N1bWVudCgpID09ICZy
YW5nZS5zdGFydC5kb2N1bWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIGludGVyc2VjdHMocmFu
Z2UsICpvd25lckVsZW1lbnQpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIC0gKE5T
VUludGVnZXIpY291bnRNYXRjaGVzRm9yVGV4dDooTlNTdHJpbmcgKilzdHJpbmcgaW5ET01SYW5n
ZTooRE9NUmFuZ2UgKilyYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zIGxpbWl0
OihOU1VJbnRlZ2VyKWxpbWl0IG1hcmtNYXRjaGVzOihCT09MKW1hcmtNYXRjaGVzCiB7Ci0gICAg
aWYgKHJhbmdlICYmICFpc0ZyYW1lSW5SYW5nZSgqY29yZShbZGF0YVNvdXJjZSB3ZWJGcmFtZV0p
LCBtYWtlU2ltcGxlUmFuZ2UoKmNvcmUocmFuZ2UpKSkpCisgICAgaWYgKHJhbmdlICYmICFjb250
YWluc0Nyb3NzaW5nRG9jdW1lbnRCb3VuZGFyaWVzKG1ha2VTaW1wbGVSYW5nZSgqY29yZShyYW5n
ZSkpLCAqY29yZShbZGF0YVNvdXJjZSB3ZWJGcmFtZV0pLT5kb2N1bWVudCgpKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBQREZTZWxlY3Rpb24gKnByZXZpb3VzTWF0Y2ggPSBuaWw7CiAgICAg
TlNNdXRhYmxlQXJyYXkgKm1hdGNoZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OmxpbWl0XTsKLSAgICAKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgUERGU2Vs
ZWN0aW9uICpuZXh0TWF0Y2ggPSBbc2VsZiBfbmV4dE1hdGNoRm9yOnN0cmluZyBkaXJlY3Rpb246
WUVTIGNhc2VTZW5zaXRpdmU6IShvcHRpb25zICYgV2ViRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRp
dmUpIHdyYXA6Tk8gZnJvbVNlbGVjdGlvbjpwcmV2aW91c01hdGNoIHN0YXJ0SW5TZWxlY3Rpb246
Tk9dOwogICAgICAgICBpZiAoIW5leHRNYXRjaCkKQEAgLTY2NCw3ICs2NTUsNyBAQCAtIChOU1VJ
bnRlZ2VyKWNvdW50TWF0Y2hlc0ZvclRleHQ6KE5TU3RyaW5nICopc3RyaW5nIGluRE9NUmFuZ2U6
KERPTVJhbmdlICopcmFuZwogICAgICAgICBpZiAoW21hdGNoZXMgY291bnRdID49IGxpbWl0KQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIAorCiAgICAgW3NlbGYgX3NldFRleHRNYXRj
aGVzOm1hdGNoZXNdOwogICAgIFttYXRjaGVzIHJlbGVhc2VdOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413737</attachid>
            <date>2020-11-10 14:00:54 -0800</date>
            <delta_ts>2020-11-10 16:41:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218726-20201110140053.patch</filename>
            <type>text/plain</type>
            <size>75019</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzNDM2Yjk5MmEyNDk2
NGIxNzIxZmE4ODFlYjAxYWM4ODI4MDFiMi4uOWJjNTA5ZTk2Nzc0NTA0MmRhYWIxMTg2MWUzMTY0
OGU0NzU5NGQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTExLTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYW5vdGhlciBmdW5j
dGlvbiB0aGF0IGltcGxpY2l0bHkgdXNlcyB0aGUgY29tcG9zZWQgdHJlZSAoaW50ZXJzZWN0cyB3
aXRoIHJhbmdlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE4NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvZG9tL3JhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL3JhbmdlSW50ZXJzZWN0c05vZGUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9kb20vcmFuZ2VJbnRlcnNlY3RzUmFuZ2UuaHRtbAorCisgICAgICAgICogU291cmNl
cy50eHQ6IEFkZGVkIEJvdW5kYXJ5UG9pbnQuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZG9jdW1lbnRCYXNlZFNlbGVjdGVkVGV4dFJhbmdlIGNvbnN0KToK
KyAgICAgICAgVXNlIGludGVyc2VjdHM8Q29tcG9zZWRUcmVlPi4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHA6CisgICAgICAgIChzZWxlY3Rpb25C
ZWxvbmdzVG9PYmplY3QpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Cb3VuZGFyeVBvaW50LmNw
cDogQWRkZWQuCisKKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2U6OmlzUG9pbnRJblJhbmdlKTogVXNlIGNvbnRhaW5zIGluc3RlYWQgb2YgY29udGFpbnM8
VHJlZT4KKyAgICAgICAgc2luY2UgdGhlIG5vcm1hbCB0cmVlIGlzIG5vdyBkZWZhdWx0LgorICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2U6OmludGVyc2VjdHNOb2RlIGNvbnN0KTogVXNlIGludGVyc2Vj
dHMgaW5zdGVhZCBvZgorICAgICAgICBpbnRlcnNlY3RzPFRyZWU+IHNpbmNlIHRoZSBub3JtYWwg
dHJlZSBpcyBub3cgZGVmYXVsdC4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjptYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUpOiBNb3ZlZCB0byBC
b3VuZGFyeVBvaW50LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Om1ha2VCb3VuZGFyeVBvaW50QWZ0
ZXJOb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc09mZnNldEJlZm9yZUNoaWxkKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpvcmRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6dHJlZU9yZGVyRm9yVGVzdGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29udGFp
bnNGb3JUZXN0aW5nKTogQWRkZWQgYW4gb3ZlcmxvYWQgZm9yIHJhbmdlIGFuZCBib3VuZGFyeSBw
b2ludC4KKyAgICAgICAgKFdlYkNvcmU6OmludGVyc2VjdHMpOiBEZWxldGVkIHR3byBvZiB0aGVz
ZSB0aGF0IHdlcmUgdXNpbmcgQ29tcG9zZWRUcmVlLgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJz
ZWN0c0ZvclRlc3RpbmcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmludGVyc2VjdGlvbik6
IFVzZSBpbnRlcnNlY3RzPENvbXBvc2VkVHJlZT4uCisgICAgICAgIChXZWJDb3JlOjpjb250YWlu
cyk6IEltcGxlbWVudGVkIHRoaXMgdGVtcGxhdGUgZnVuY3Rpb24gYW5kIHVzZSBpdCB0byByZXBs
YWMKKyAgICAgICAgdGhlIGluY29ycmVjdCBzcGVjaWFsaXphdGlvbiB3ZSBoYWQgZm9yIENvbXBv
c2VkVHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zQ3Jvc3NpbmdEb2N1bWVudEJvdW5k
YXJpZXMpOiBBZGRlZC4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5oOiBNYWRlIHRoZSBj
b250YWlucyBmdW5jdGlvbnMgdGVtcGxhdGUgYXJndW1lbnRzIGRlZmF1bHQKKyAgICAgICAgdG8g
VHJlZS4gQWRkZWQgYW5vdGhlciBvdmVybG9hZCBvZiBjb250YWluc0ZvclRlc3RpbmcgYW5kIGFk
ZGVkIGludGVyc2VjdHNGb3JUZXN0aW5nLgorICAgICAgICBSZW1vdmVkIGludGVyc2VjdHMgZnVu
Y3Rpb25zIHRoYXQgd2VyZSBkZXByZWNhdGVkOyB0aGUgb25lcyB0aGF0IHVzZWQgQ29tcG9zZWRU
cmVlLgorICAgICAgICBBZGRlZCBjb250YWluc0Nyb3NzaW5nRG9jdW1lbnRCb3VuZGFyaWVzLgor
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNGcmFt
ZUluUmFuZ2UpOiBVc2UgaW50ZXJzZWN0czxDb21wb3NlZFRyZWU+LgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpzY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVtYmVycyk6IERpdHRvLgorICAg
ICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OnJlc3BvbmRUb05vZGVNb2RpZmljYXRpb24pOiBEaXR0by4KKworICAgICAg
ICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VW
aXNpYmxlUG9zaXRpb25SYW5nZSk6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmg6IEFkZGVkIG1ha2VWaXNpYmxlUG9zaXRpb25SYW5nZSwgd2hpY2ggdGFrZXMKKyAg
ICAgICAgYW4gT3B0aW9uYWw8U2ltcGxlUmFuZ2U+LgorCisgICAgICAgICogcGFnZS9ET01TZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjphZGRSYW5nZSk6IFVz
ZSBpbnRlcnNlY3RzIGluc3RlYWQgb2YKKyAgICAgICAgaW50ZXJzZWN0czxUcmVlPiBzaW5jZSB0
aGUgbm9ybWFsIHRyZWUgaXMgbm93IGRlZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpET01TZWxl
Y3Rpb246OmNvbnRhaW5zTm9kZSBjb25zdCk6IFVzZSBpbnRlcnNlY3RzL2NvbnRhaW5zCisgICAg
ICAgIGluc3RlYWQgb2YgaW50ZXJzZWN0cy9jb250YWluczxUcmVlPiBzaW5jZSB0aGUgbm9ybWFs
IHRyZWUgaXMgbm93IGRlZmF1bHQuCisKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlcnNBdENhcmV0KToKKyAgICAgICAgVXNlIGludGVyc2VjdHM8Q29tcG9zZWRUcmVl
Pi4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6cmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6cmFuZ2VJbnRlcnNlY3RzTm9kZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUludGVyc2VjdHNSYW5nZSk6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IERpdHRvLgorCiAyMDIwLTExLTEwICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0g
QWxsb3cgb2JqZWN0LWZpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMjM4OTEzZjQ5MGVjMGU3OWI1ZWNjNjQ2YmM0
YWY4NzBhZGNjMDg2Li4yNjc2YzcwMTYyYTJlYTcwNThkMzFjZDJiMzkyNmY1ZDdiZDMyYjk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTExLTA5ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGltcGxp
Y2l0bHkgdXNlcyB0aGUgY29tcG9zZWQgdHJlZSAoaW50ZXJzZWN0cyB3aXRoIHJhbmdlKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NzI2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJl
cXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KTogUmVmYWN0b3IgdG8gdXNlIFZpc2libGVQb3Np
dGlvblJhbmdlIGFuZAorICAgICAgICB0byBjYWxsIGludGVyc2VjdHMgb24gdHdvIG9mIHRoZW0s
IHRvIGltcHJvdmUgdGhlIGNvZGUgcmVhZGFiaWxpdHkgYW5kIGFsc28gc2lkZXN0ZXAgdGhlCisg
ICAgICAgIGlzc3VlIG9mIGNhbGxpbmcgdGhlIGludGVyc2VjdHMgdGVtcGxhdGUgZnVuY3Rpb24g
ZnJvbSBvdXRzaWRlIFdlYkNvcmUuCisKIDIwMjAtMTEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEs0XSBXZWJWaWV3IGlzIGZsaXBw
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA4YWZlMWMzODM2ZjE2ZmY1MzRhMmZh
NGVmMDg5N2JkNzk4ZmU1NTQ3Li40ODQyY2E2NGNlNDJkZDdhMWJhMjU0NzcyMzZjNDEwNjYyNjgx
ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAt
MTEtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBh
bm90aGVyIGZ1bmN0aW9uIHRoYXQgaW1wbGljaXRseSB1c2VzIHRoZSBjb21wb3NlZCB0cmVlIChp
bnRlcnNlY3RzIHdpdGggcmFuZ2UpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKGlzRnJhbWVJ
blJhbmdlKTogRGVsZXRlZC4gVGhpcyBmdW5jdGlvbiB1c2VkIGludGVyc2VjdHMsIGFuZCBkZWxl
dGluZyBpdCBzaWRlLXN0ZXBzCisgICAgICAgIHRoZSBpc3N1ZSBvZiBjYWxsaW5nIHRoZSBpbnRl
cnNlY3RzIGZ1bmN0aW9uIHRlbXBsYXRlIGZyb20gb3V0c2lkZSBXZWJDb3JlLgorICAgICAgICAo
LVtXZWJQREZWaWV3IGNvdW50TWF0Y2hlc0ZvclRleHQ6aW5ET01SYW5nZTpvcHRpb25zOmxpbWl0
Om1hcmtNYXRjaGVzOl0pOgorICAgICAgICBVc2UgY29udGFpbnNDcm9zc2luZ0RvY3VtZW50Qm91
bmRhcmllcyBpbnN0ZWFkIG9mIGlzRnJhbWVJblJhbmdlLgorCiAyMDIwLTExLTA5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29u
dHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3Mg
bmFtZWQgTmF0aXZlSW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjk1YWZmNjdjOTQ1NjM0MjYyYWMz
OWExYjM5YzgwNDE3OTRjNDZkYi4uMWVhYmViNzg2Y2FmNzk0NmZmNTNmMjYyM2U3MzA2NjkzMjFj
NmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTg0NCw2ICs4NDQsNyBAQCBkb20vQXR0ci5jcHAKIGRv
bS9CZWZvcmVMb2FkRXZlbnQuY3BwCiBkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwCiBk
b20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwCitkb20vQm91bmRhcnlQb2ludC5jcHAKIGRvbS9DREFU
QVNlY3Rpb24uY3BwCiBkb20vQ2hhcmFjdGVyRGF0YS5jcHAKIGRvbS9DaGlsZExpc3RNdXRhdGlv
blNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGJiODI0ODZmYjk0ZTY1Yzc5NWE2Nzc3NjZhZGYxMzQxOGY5ZmU3M2Yu
LjQyYTBiMDY4MTVkMjY3ZWJmNDExYTBkMmZlOGU1YzZjODg4YjRiNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMzI5LDYg
KzExMzI5LDcgQEAKIAkJOTM2REQwM0EwOUNFQUMyNzAwNTZBRThDIC8qIFJhbmdlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSYW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzNzA5MThDMTQxNkQ4NkIwMDQ3NzMzMyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeC5w
bmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFn
ZS5wbmc7IHBhdGggPSAidGV4dEFyZWFSZXNpemVDb3JuZXJAMngucG5nIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM3MTA4MEQxREI3NTQ1NTAwNjA3NDRFIC8qIFdpbmRvd09yV29y
a2VyR2xvYmFsU2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdpbmRvd09yV29ya2Vy
R2xvYmFsU2NvcGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzcyQjUyMDI1
NTlFNTFFMDBFMDU4Q0YgLyogQm91bmRhcnlQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
b3VuZGFyeVBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3N0FCOUYx
NURFRkVFRjAwMzFGRDA0IC8qIFBhZ2luYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFnaW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzdG
RjNENDFBMTAxMkQ2MDA4RUJBMzEgLyogRGljdGlvbmFyeUxvb2t1cC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0aW9uYXJ5TG9va3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzN0ZGM0Q2MUExMDEzMUIwMDhFQkEzMSAvKiBEaWN0aW9uYXJ5TG9va3Vw
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGljdGlvbmFyeUxv
b2t1cC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5NTc1LDYgKzI5NTc2LDcg
QEAKIAkJCQk4NTAzMUIyNjBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuY3Bw
ICovLAogCQkJCTg1MDMxQjI3MEE0NEVGQzcwMEY5OTJFMCAvKiBCZWZvcmVVbmxvYWRFdmVudC5o
ICovLAogCQkJCTdDMUU4Q0ZGMUVEMEMyQkUwMEIxRDk4MyAvKiBCZWZvcmVVbmxvYWRFdmVudC5p
ZGwgKi8sCisJCQkJOTM3MkI1MjAyNTU5RTUxRTAwRTA1OENGIC8qIEJvdW5kYXJ5UG9pbnQuY3Bw
ICovLAogCQkJCTkzMTZEREZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggKi8s
CiAJCQkJN0MxRThEMDAxRUQwQzJCRTAwQjFEOTgzIC8qIENhbGxiYWNrUmVzdWx0LmggKi8sCiAJ
CQkJNjU1MEI2OTMwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAppbmRleCAzMTc1YjZkYWFkYjBiYzA3ZWVmYWZkYjI1YWQxMWJmOTFhNGI4
MjcxLi43ZjJiZGE4YmUxM2M5NThlMWEwOGE3YTBmYjg1MzJiZTljNWNjZWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKQEAgLTE2MDgsNyArMTYwOCw3IEBAIFBsYWluVGV4dFJhbmdlIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmRvY3VtZW50QmFzZWRTZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0
CiAKICAgICBhdXRvIHZpc2libGVTZWxlY3Rpb24gPSBzZWxlY3Rpb24oKTsKICAgICBhdXRvIHNl
bGVjdGlvblJhbmdlID0gdmlzaWJsZVNlbGVjdGlvbi5maXJzdFJhbmdlKCk7Ci0gICAgaWYgKCFz
ZWxlY3Rpb25SYW5nZSB8fCAhaW50ZXJzZWN0cygqc2VsZWN0aW9uUmFuZ2UsICpub2RlKSkKKyAg
ICBpZiAoIXNlbGVjdGlvblJhbmdlIHx8ICFpbnRlcnNlY3RzPENvbXBvc2VkVHJlZT4oKnNlbGVj
dGlvblJhbmdlLCAqbm9kZSkpCiAgICAgICAgIHJldHVybiBQbGFpblRleHRSYW5nZSgpOwogCiAg
ICAgaW50IHN0YXJ0ID0gaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVNlbGVjdGlvbi5z
dGFydCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAppbmRleCA1ZGJiNTBlNDQ1MWFiNDY0ZGRlOWU2ZTQz
ODk2YTlmYzhiZDQ0YjhlLi44NGI2YzJkMzlmM2YwM2RhODVmNzNmZTA4ZWNhNWM2OWU3NDhiZmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVV0aWwuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBzZWxlY3Rpb25C
ZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgVmlzaWJsZVNl
bGVjdGlvbiYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byByYW5nZSA9IHNlbGVj
dGlvbi5maXJzdFJhbmdlKCk7Ci0gICAgcmV0dXJuIHJhbmdlICYmIGludGVyc2VjdHMoKnJhbmdl
LCAqY29yZU9iamVjdC0+bm9kZSgpKTsKKyAgICByZXR1cm4gcmFuZ2UgJiYgaW50ZXJzZWN0czxD
b21wb3NlZFRyZWU+KCpyYW5nZSwgKmNvcmVPYmplY3QtPm5vZGUoKSk7CiB9CiAKIEFYQ29yZU9i
amVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKEFYQ29yZU9iamVjdCog
cmVmZXJlbmNlT2JqZWN0LCBpbnQmIG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Cb3VuZGFyeVBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yM2E2NWZjOTI2ZGM0OWJiMDBmM2NjNzY1MmZmOTk2ZGI0ZWZlYzcy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3Bw
CkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkJvdW5kYXJ5UG9pbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitPcHRpb25h
bDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoTm9kZSYgbm9kZSkK
K3sKKyAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBCb3VuZGFyeVBvaW50
IHsgKnBhcmVudCwgbm9kZS5jb21wdXRlTm9kZUluZGV4KCkgfTsKK30KKworT3B0aW9uYWw8Qm91
bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUoTm9kZSYgbm9kZSkKK3sKKyAg
ICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBCb3VuZGFyeVBvaW50IHsgKnBh
cmVudCwgbm9kZS5jb21wdXRlTm9kZUluZGV4KCkgKyAxIH07Cit9CisKK3N0YXRpYyBib29sIGlz
T2Zmc2V0QmVmb3JlQ2hpbGQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCB1bnNpZ25lZCBvZmZz
ZXQsIE5vZGUmIGNoaWxkKQoreworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAvLyBJZiB0aGUgY29udGFpbmVyIGlzIG5vdCB0aGUgcGFyZW50LCB0aGUgY2hpbGQg
aXMgcGFydCBvZiBhIHNoYWRvdyB0cmVlLCB3aGljaCB3ZSBzb3J0IGJldHdlZW4gb2Zmc2V0IDAg
YW5kIG9mZnNldCAxLgorICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKCkgIT0gJmNvbnRhaW5lcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQgPSAwOwor
ICAgIGZvciAoYXV0byBjdXJyZW50Q2hpbGQgPSBjb250YWluZXIuZmlyc3RDaGlsZCgpOyBjdXJy
ZW50Q2hpbGQgJiYgY3VycmVudENoaWxkICE9ICZjaGlsZDsgY3VycmVudENoaWxkID0gY3VycmVu
dENoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0gKytjdXJyZW50
T2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworLy8gRklYTUU6IE9uY2Ugd2UgbW92ZSB0byBDKysyMCwgcmVwbGFjZSB3aXRoIHRo
ZSBDKysyMCA8PT4gb3BlcmF0b3IuCisvLyBGSVhNRTogVGhpcyBjb3VsZCByZXR1cm4gc3RkOjpz
dHJvbmdfb3JkZXJpbmcgaWYgd2UgaGFkIHRoYXQsIG9yIHRoZSBlcXVpdmFsZW50Lgorc3RhdGlj
IFBhcnRpYWxPcmRlcmluZyBvcmRlcih1bnNpZ25lZCBhLCB1bnNpZ25lZCBiKQoreworICAgIGlm
IChhIDwgYikKKyAgICAgICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6bGVzczsKKyAgICBpZiAo
YSA+IGIpCisgICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OmdyZWF0ZXI7CisgICAgcmV0
dXJuIFBhcnRpYWxPcmRlcmluZzo6ZXF1aXZhbGVudDsKK30KKwordGVtcGxhdGU8VHJlZVR5cGUg
dHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgQm91bmRhcnlQb2ludCYg
YSwgY29uc3QgQm91bmRhcnlQb2ludCYgYikKK3sKKyAgICBpZiAoYS5jb250YWluZXIucHRyKCkg
PT0gYi5jb250YWluZXIucHRyKCkpCisgICAgICAgIHJldHVybiBvcmRlcihhLm9mZnNldCwgYi5v
ZmZzZXQpOworCisgICAgZm9yIChhdXRvIGFuY2VzdG9yID0gYi5jb250YWluZXIucHRyKCk7IGFu
Y2VzdG9yOyApIHsKKyAgICAgICAgYXV0byBuZXh0QW5jZXN0b3IgPSBwYXJlbnQ8dHJlZVR5cGU+
KCphbmNlc3Rvcik7CisgICAgICAgIGlmIChuZXh0QW5jZXN0b3IgPT0gYS5jb250YWluZXIucHRy
KCkpCisgICAgICAgICAgICByZXR1cm4gaXNPZmZzZXRCZWZvcmVDaGlsZCgqbmV4dEFuY2VzdG9y
LCBhLm9mZnNldCwgKmFuY2VzdG9yKSA/IFBhcnRpYWxPcmRlcmluZzo6bGVzcyA6IFBhcnRpYWxP
cmRlcmluZzo6Z3JlYXRlcjsKKyAgICAgICAgYW5jZXN0b3IgPSBuZXh0QW5jZXN0b3I7CisgICAg
fQorCisgICAgZm9yIChhdXRvIGFuY2VzdG9yID0gYS5jb250YWluZXIucHRyKCk7IGFuY2VzdG9y
OyApIHsKKyAgICAgICAgYXV0byBuZXh0QW5jZXN0b3IgPSBwYXJlbnQ8dHJlZVR5cGU+KCphbmNl
c3Rvcik7CisgICAgICAgIGlmIChuZXh0QW5jZXN0b3IgPT0gYi5jb250YWluZXIucHRyKCkpCisg
ICAgICAgICAgICByZXR1cm4gaXNPZmZzZXRCZWZvcmVDaGlsZCgqbmV4dEFuY2VzdG9yLCBiLm9m
ZnNldCwgKmFuY2VzdG9yKSA/IFBhcnRpYWxPcmRlcmluZzo6Z3JlYXRlciA6IFBhcnRpYWxPcmRl
cmluZzo6bGVzczsKKyAgICAgICAgYW5jZXN0b3IgPSBuZXh0QW5jZXN0b3I7CisgICAgfQorCisg
ICAgcmV0dXJuIHRyZWVPcmRlcjx0cmVlVHlwZT4oYS5jb250YWluZXIsIGIuY29udGFpbmVyKTsK
K30KKworUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwg
Y29uc3QgQm91bmRhcnlQb2ludCYgYSwgY29uc3QgQm91bmRhcnlQb2ludCYgYikKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFRyZWU6CisgICAgICAgIHJldHVybiB0cmVlT3JkZXI8
VHJlZT4oYSwgYik7CisgICAgY2FzZSBTaGFkb3dJbmNsdWRpbmdUcmVlOgorICAgICAgICByZXR1
cm4gdHJlZU9yZGVyPFNoYWRvd0luY2x1ZGluZ1RyZWU+KGEsIGIpOworICAgIGNhc2UgQ29tcG9z
ZWRUcmVlOgorICAgICAgICByZXR1cm4gdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oYSwgYik7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBQYXJ0aWFsT3JkZXJp
bmc6OnVub3JkZXJlZDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggZTYzZjJmYmRhNjgw
NjAxZDlkMDMzODg5MWVjMDAzNzcyNmNhNzFlOS4uNTgzODBjYmIwYjg3MDRiNjJkMmYxNTBmZmEw
ZDdlNGQzN2E1ODU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgRXhj
ZXB0aW9uT3I8Ym9vbD4gUmFuZ2U6OmlzUG9pbnRJblJhbmdlKE5vZGUmIGNvbnRhaW5lciwgdW5z
aWduZWQgb2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4g
Y2hlY2tSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIH0KLSAgICByZXR1cm4gY29udGFp
bnM8VHJlZT4obWFrZVNpbXBsZVJhbmdlKCp0aGlzKSwgeyBjb250YWluZXIsIG9mZnNldCB9KTsK
KyAgICByZXR1cm4gY29udGFpbnMobWFrZVNpbXBsZVJhbmdlKCp0aGlzKSwgeyBjb250YWluZXIs
IG9mZnNldCB9KTsKIH0KIAogRXhjZXB0aW9uT3I8c2hvcnQ+IFJhbmdlOjpjb21wYXJlUG9pbnQo
Tm9kZSYgY29udGFpbmVyLCB1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CkBAIC0yNjAsNyArMjYwLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gUmFuZ2U6OmRlbGV0ZUNvbnRlbnRzKCkKIAogYm9vbCBSYW5n
ZTo6aW50ZXJzZWN0c05vZGUoTm9kZSYgbm9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaW50ZXJz
ZWN0czxUcmVlPihtYWtlU2ltcGxlUmFuZ2UoKnRoaXMpLCBub2RlKTsKKyAgICByZXR1cm4gaW50
ZXJzZWN0cyhtYWtlU2ltcGxlUmFuZ2UoKnRoaXMpLCBub2RlKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBOb2RlKiBoaWdoZXN0QW5jZXN0b3JVbmRlckNvbW1vblJvb3QoTm9kZSogbm9kZSwgTm9kZSog
Y29tbW9uUm9vdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCmluZGV4IDhjM2JkNzVlYTMy
OWZlMzRlMTNlN2IzY2Y1NTUyMDliN2ZhNDI2MWEuLjJmNmRiZDNlNzFjNjg0MzBiOTkxMWJiYzE0
ZTIyMGQxMDllZGM5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5n
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIlNpbXBsZVJhbmdlLmgiCiAKICNpbmNsdWRlICJDaGFyYWN0ZXJE
YXRhLmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9k
ZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIApAQCAtNDksOTAgKzUwLDYg
QEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVSYW5n
ZSYgYikKICAgICByZXR1cm4gYS5zdGFydCA9PSBiLnN0YXJ0ICYmIGEuZW5kID09IGIuZW5kOwog
fQogCi0vLyBGSVhNRTogQ3JlYXRlIEJvdW5kYXJ5UG9pbnQuY3BwIGFuZCBtb3ZlIHRoaXMgdGhl
cmUuCi1PcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUo
Tm9kZSYgbm9kZSkKLXsKLSAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwotICAg
IGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBC
b3VuZGFyeVBvaW50IHsgKnBhcmVudCwgbm9kZS5jb21wdXRlTm9kZUluZGV4KCkgfTsKLX0KLQot
Ly8gRklYTUU6IENyZWF0ZSBCb3VuZGFyeVBvaW50LmNwcCBhbmQgbW92ZSB0aGlzIHRoZXJlLgot
T3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUoTm9kZSYg
bm9kZSkKLXsKLSAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwotICAgIGlmICgh
cGFyZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBCb3VuZGFy
eVBvaW50IHsgKnBhcmVudCwgbm9kZS5jb21wdXRlTm9kZUluZGV4KCkgKyAxIH07Ci19Ci0KLS8v
IEZJWE1FOiBDcmVhdGUgQm91bmRhcnlQb2ludC5jcHAgYW5kIG1vdmUgdGhpcyB0aGVyZS4KLXN0
YXRpYyBib29sIGlzT2Zmc2V0QmVmb3JlQ2hpbGQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCB1
bnNpZ25lZCBvZmZzZXQsIE5vZGUmIGNoaWxkKQotewotICAgIGlmICghb2Zmc2V0KQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAvLyBJZiB0aGUgY29udGFpbmVyIGlzIG5vdCB0aGUgcGFyZW50
LCB0aGUgY2hpbGQgaXMgcGFydCBvZiBhIHNoYWRvdyB0cmVlLCB3aGljaCB3ZSBzb3J0IGJldHdl
ZW4gb2Zmc2V0IDAgYW5kIG9mZnNldCAxLgotICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKCkgIT0g
JmNvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIGN1cnJlbnRP
ZmZzZXQgPSAwOwotICAgIGZvciAoYXV0byBjdXJyZW50Q2hpbGQgPSBjb250YWluZXIuZmlyc3RD
aGlsZCgpOyBjdXJyZW50Q2hpbGQgJiYgY3VycmVudENoaWxkICE9ICZjaGlsZDsgY3VycmVudENo
aWxkID0gY3VycmVudENoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChvZmZzZXQg
PD0gKytjdXJyZW50T2Zmc2V0KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotLy8gRklYTUU6IENyZWF0ZSBCb3VuZGFyeVBvaW50LmNwcCBh
bmQgbW92ZSB0aGlzIHRoZXJlLgotLy8gRklYTUU6IE9uY2Ugd2UgbW92ZSB0byBDKysyMCwgcmVw
bGFjZSB3aXRoIHRoZSBDKysyMCA8PT4gb3BlcmF0b3IuCi0vLyBGSVhNRTogVGhpcyBjb3VsZCBy
ZXR1cm4gc3RkOjpzdHJvbmdfb3JkZXJpbmcgaWYgd2UgaGFkIHRoYXQsIG9yIHRoZSBlcXVpdmFs
ZW50Lgotc3RhdGljIFBhcnRpYWxPcmRlcmluZyBvcmRlcih1bnNpZ25lZCBhLCB1bnNpZ25lZCBi
KQotewotICAgIGlmIChhIDwgYikKLSAgICAgICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6bGVz
czsKLSAgICBpZiAoYSA+IGIpCi0gICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OmdyZWF0
ZXI7Ci0gICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6ZXF1aXZhbGVudDsKLX0KLQotLy8gRklY
TUU6IENyZWF0ZSBCb3VuZGFyeVBvaW50LmNwcCBhbmQgbW92ZSB0aGlzIHRoZXJlLgotdGVtcGxh
dGU8VHJlZVR5cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgQm91
bmRhcnlQb2ludCYgYSwgY29uc3QgQm91bmRhcnlQb2ludCYgYikKLXsKLSAgICBpZiAoYS5jb250
YWluZXIucHRyKCkgPT0gYi5jb250YWluZXIucHRyKCkpCi0gICAgICAgIHJldHVybiBvcmRlcihh
Lm9mZnNldCwgYi5vZmZzZXQpOwotCi0gICAgZm9yIChhdXRvIGFuY2VzdG9yID0gYi5jb250YWlu
ZXIucHRyKCk7IGFuY2VzdG9yOyApIHsKLSAgICAgICAgYXV0byBuZXh0QW5jZXN0b3IgPSBwYXJl
bnQ8dHJlZVR5cGU+KCphbmNlc3Rvcik7Ci0gICAgICAgIGlmIChuZXh0QW5jZXN0b3IgPT0gYS5j
b250YWluZXIucHRyKCkpCi0gICAgICAgICAgICByZXR1cm4gaXNPZmZzZXRCZWZvcmVDaGlsZCgq
bmV4dEFuY2VzdG9yLCBhLm9mZnNldCwgKmFuY2VzdG9yKSA/IFBhcnRpYWxPcmRlcmluZzo6bGVz
cyA6IFBhcnRpYWxPcmRlcmluZzo6Z3JlYXRlcjsKLSAgICAgICAgYW5jZXN0b3IgPSBuZXh0QW5j
ZXN0b3I7Ci0gICAgfQotCi0gICAgZm9yIChhdXRvIGFuY2VzdG9yID0gYS5jb250YWluZXIucHRy
KCk7IGFuY2VzdG9yOyApIHsKLSAgICAgICAgYXV0byBuZXh0QW5jZXN0b3IgPSBwYXJlbnQ8dHJl
ZVR5cGU+KCphbmNlc3Rvcik7Ci0gICAgICAgIGlmIChuZXh0QW5jZXN0b3IgPT0gYi5jb250YWlu
ZXIucHRyKCkpCi0gICAgICAgICAgICByZXR1cm4gaXNPZmZzZXRCZWZvcmVDaGlsZCgqbmV4dEFu
Y2VzdG9yLCBiLm9mZnNldCwgKmFuY2VzdG9yKSA/IFBhcnRpYWxPcmRlcmluZzo6Z3JlYXRlciA6
IFBhcnRpYWxPcmRlcmluZzo6bGVzczsKLSAgICAgICAgYW5jZXN0b3IgPSBuZXh0QW5jZXN0b3I7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRyZWVPcmRlcjx0cmVlVHlwZT4oYS5jb250YWluZXIsIGIu
Y29udGFpbmVyKTsKLX0KLQotLy8gRklYTUU6IENyZWF0ZSBCb3VuZGFyeVBvaW50LmNwcCBhbmQg
bW92ZSB0aGlzIHRoZXJlLgotUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJl
ZVR5cGUgdHlwZSwgY29uc3QgQm91bmRhcnlQb2ludCYgYSwgY29uc3QgQm91bmRhcnlQb2ludCYg
YikKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFRyZWU6Ci0gICAgICAgIHJldHVy
biB0cmVlT3JkZXI8VHJlZT4oYSwgYik7Ci0gICAgY2FzZSBTaGFkb3dJbmNsdWRpbmdUcmVlOgot
ICAgICAgICByZXR1cm4gdHJlZU9yZGVyPFNoYWRvd0luY2x1ZGluZ1RyZWU+KGEsIGIpOwotICAg
IGNhc2UgQ29tcG9zZWRUcmVlOgotICAgICAgICByZXR1cm4gdHJlZU9yZGVyPENvbXBvc2VkVHJl
ZT4oYSwgYik7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBQ
YXJ0aWFsT3JkZXJpbmc6OnVub3JkZXJlZDsKLX0KLQogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1h
a2VSYW5nZVNlbGVjdGluZ05vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5v
ZGUucGFyZW50Tm9kZSgpOwpAQCAtMjM5LDYgKzE1NiwyMCBAQCB0ZW1wbGF0ZTxUcmVlVHlwZSB0
cmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IE9w
dGlvbgogCiB0ZW1wbGF0ZSBib29sIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4oY29uc3QgU2ltcGxl
UmFuZ2UmLCBjb25zdCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiYpOwogCitib29sIGNvbnRhaW5z
Rm9yVGVzdGluZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0
IEJvdW5kYXJ5UG9pbnQmIHBvaW50KQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
VHJlZToKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5zPFRyZWU+KHJhbmdlLCBwb2ludCk7CisgICAg
Y2FzZSBTaGFkb3dJbmNsdWRpbmdUcmVlOgorICAgICAgICByZXR1cm4gY29udGFpbnM8U2hhZG93
SW5jbHVkaW5nVHJlZT4ocmFuZ2UsIHBvaW50KTsKKyAgICBjYXNlIENvbXBvc2VkVHJlZToKKyAg
ICAgICAgcmV0dXJuIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4ocmFuZ2UsIHBvaW50KTsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB0ZW1w
bGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBT
aW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIHBvaW50KQogewogICAgIGlm
IChhdXRvIG9yZGVyID0gdHJlZU9yZGVyPHRyZWVUeXBlPihyYW5nZS5zdGFydCwgcG9pbnQpOyAh
aXNfbHQob3JkZXIpKQpAQCAtMjg4LDEwICsyMTksMjAgQEAgdGVtcGxhdGU8VHJlZVR5cGUgdHJl
ZVR5cGU+IGJvb2wgaW50ZXJzZWN0cyhjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxl
UmEKIH0KIAogdGVtcGxhdGUgYm9vbCBpbnRlcnNlY3RzPFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdl
JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKK3RlbXBsYXRlIGJvb2wgaW50ZXJzZWN0czxDb21wb3Nl
ZFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAotYm9vbCBp
bnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJiBhLCBjb25zdCBTaW1wbGVSYW5nZSYgYikKK2Jv
b2wgaW50ZXJzZWN0c0ZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgU2ltcGxlUmFuZ2Um
IGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBiKQogewotICAgIHJldHVybiBpbnRlcnNlY3RzPENvbXBv
c2VkVHJlZT4oYSwgYik7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUcmVlOgorICAg
ICAgICByZXR1cm4gaW50ZXJzZWN0czxUcmVlPihhLCBiKTsKKyAgICBjYXNlIFNoYWRvd0luY2x1
ZGluZ1RyZWU6CisgICAgICAgIHJldHVybiBpbnRlcnNlY3RzPFNoYWRvd0luY2x1ZGluZ1RyZWU+
KGEsIGIpOworICAgIGNhc2UgQ29tcG9zZWRUcmVlOgorICAgICAgICByZXR1cm4gaW50ZXJzZWN0
czxDb21wb3NlZFRyZWU+KGEsIGIpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29sIGNvbXBhcmVCeUNvbXBvc2VkVHJl
ZU9yZGVyKGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGIpCkBA
IC0zMDcsNyArMjQ4LDcgQEAgU2ltcGxlUmFuZ2UgdW5pb25SYW5nZShjb25zdCBTaW1wbGVSYW5n
ZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gaW50ZXJz
ZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgYSwgY29uc3QgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+JiBiKQogewogICAgIC8vIEZJWE1FOiBDYW4gdGhpcyBiZSBkb25lIG1vcmUgZWZm
aWNpZW50bHksIHdpdGggZmV3ZXIgY2FsbHMgdG8gdHJlZU9yZGVyPwotICAgIGlmICghYSB8fCAh
YiB8fCAhaW50ZXJzZWN0cygqYSwgKmIpKQorICAgIGlmICghYSB8fCAhYiB8fCAhaW50ZXJzZWN0
czxDb21wb3NlZFRyZWU+KCphLCAqYikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHsgeyBzdGQ6Om1heChhLT5zdGFydCwgYi0+c3RhcnQsIGNvbXBhcmVCeUNvbXBv
c2VkVHJlZU9yZGVyKSwgc3RkOjptaW4oYS0+ZW5kLCBiLT5lbmQsIGNvbXBhcmVCeUNvbXBvc2Vk
VHJlZU9yZGVyKSB9IH07CiB9CkBAIC0zMzcsMTYgKzI3OCwxOCBAQCBib29sIGNvbnRhaW5zRm9y
VGVzdGluZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IE5v
ZGUmIG5vZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5
cGU+IGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSYgb3V0ZXIsIGNvbnN0IE5vZGUmIGlubmVyKTsK
LQotdGVtcGxhdGU8PiBib29sIGNvbnRhaW5zPFRyZWU+KGNvbnN0IE5vZGUmIG91dGVyLCBjb25z
dCBOb2RlJiBpbm5lcikKK3RlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBib29sIGNvbnRhaW5z
KGNvbnN0IE5vZGUmIG91dGVyLCBjb25zdCBOb2RlJiBpbm5lcikKIHsKLSAgICByZXR1cm4gb3V0
ZXIuY29udGFpbnMoaW5uZXIpOworICAgIGZvciAoYXV0byBpbmNsdXNpdmVBbmNlc3RvciA9ICZp
bm5lcjsgaW5jbHVzaXZlQW5jZXN0b3I7IGluY2x1c2l2ZUFuY2VzdG9yID0gcGFyZW50PHRyZWVU
eXBlPigqaW5jbHVzaXZlQW5jZXN0b3IpKSB7CisgICAgICAgIGlmIChpbmNsdXNpdmVBbmNlc3Rv
ciA9PSAmb3V0ZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCi10ZW1wbGF0ZTw+IGJvb2wgY29udGFpbnM8Q29tcG9zZWRUcmVlPihjb25z
dCBOb2RlJiBvdXRlciwgY29uc3QgTm9kZSYgaW5uZXIpCit0ZW1wbGF0ZTw+IGJvb2wgY29udGFp
bnM8VHJlZT4oY29uc3QgTm9kZSYgb3V0ZXIsIGNvbnN0IE5vZGUmIGlubmVyKQogewotICAgIC8v
IEZJWE1FOiBUaGlzIGlzIHdoYXQgdGhlIGNvZGUgZGlkIGJlZm9yZSwgYnV0IGl0IGlzIG5vdCBj
b3JyZWN0IQorICAgIC8vIFdlIHNwZWNpYWxpemUgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gdGFr
ZSBhZHZhbnRhZ2Ugb2Ygb3B0aW1pemF0aW9ucyBpbiBOb2RlOjppc0Rlc2NlbmRhbnRPZi4KICAg
ICByZXR1cm4gb3V0ZXIuY29udGFpbnMoaW5uZXIpOwogfQogCkBAIC0zNjEsMTEgKzMwNCwzMSBA
QCB0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSwgY29uc3QgTm9kZQogfQogCiB0ZW1wbGF0ZSBib29sIGludGVyc2VjdHM8
VHJlZT4oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7Cit0ZW1wbGF0ZSBib29sIGlu
dGVyc2VjdHM8Q29tcG9zZWRUcmVlPihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsK
IAotYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgTm9kZSYg
bm9kZSkKK2Jvb2wgaW50ZXJzZWN0c0ZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBOb2RlJiBub2RlKQogewotICAgIHJldHVybiBpbnRlcnNl
Y3RzPENvbXBvc2VkVHJlZT4ocmFuZ2UsIG5vZGUpOworICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgVHJlZToKKyAgICAgICAgcmV0dXJuIGludGVyc2VjdHM8VHJlZT4ocmFuZ2UsIG5vZGUp
OworICAgIGNhc2UgU2hhZG93SW5jbHVkaW5nVHJlZToKKyAgICAgICAgcmV0dXJuIGludGVyc2Vj
dHM8U2hhZG93SW5jbHVkaW5nVHJlZT4ocmFuZ2UsIG5vZGUpOworICAgIGNhc2UgQ29tcG9zZWRU
cmVlOgorICAgICAgICByZXR1cm4gaW50ZXJzZWN0czxDb21wb3NlZFRyZWU+KHJhbmdlLCBub2Rl
KTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQogCitib29sIGNvbnRhaW5zQ3Jvc3NpbmdEb2N1bWVudEJvdW5kYXJpZXMoY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlLCBOb2RlJiBub2RlKQoreworICAgIGF1dG8qIGFuY2VzdG9yID0gJm5vZGU7
CisgICAgd2hpbGUgKCZyYW5nZS5zdGFydC5kb2N1bWVudCgpICE9ICZhbmNlc3Rvci0+ZG9jdW1l
bnQoKSkgeworICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLT5kb2N1bWVudCgpLm93bmVyRWxl
bWVudCgpOworICAgICAgICBpZiAoIWFuY2VzdG9yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gY29udGFpbnM8Q29tcG9zZWRUcmVlPihyYW5nZSwgKmFuY2Vz
dG9yKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCAxYTBkMjA5M2Y4MTVh
MWQ3ZmM0MjdhMWVhZmNhOGY2N2Y2ZTAxZTliLi5iYjQ0YjFiODNlMGNlODZkODM0NjA4OTk1Mjk2
NWQ1MzNlY2M1ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtNjcsMTQgKzY3LDE4
IEBAIHRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gTm9kZSogY29tbW9uSW5jbHVzaXZlQW5jZXN0
b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29s
IGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwogdGVt
cGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwg
Y29uc3QgT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mKTsKLXRlbXBsYXRlPFRyZWVUeXBlPiBib29s
IGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiBvdXRlclJhbmdlLCBjb25zdCBTaW1wbGVSYW5n
ZSYgaW5uZXJSYW5nZSk7Ci10ZW1wbGF0ZTxUcmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9v
bCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29uc3QgU2ltcGxlUmFu
Z2UmIGlubmVyUmFuZ2UpOwordGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRhaW5z
KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwogCiBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRhaW5zRm9yVGVzdGluZyhUcmVlVHlwZSwgY29uc3QgU2ltcGxlUmFuZ2UmIG91dGVyUmFu
Z2UsIGNvbnN0IFNpbXBsZVJhbmdlJiBpbm5lclJhbmdlKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y29udGFpbnNGb3JUZXN0aW5nKFRyZWVUeXBlLCBjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5v
ZGUmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNGb3JUZXN0aW5nKFRyZWVUeXBlLCBj
b25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAotdGVtcGxhdGU8VHJl
ZVR5cGU+IGJvb2wgaW50ZXJzZWN0cyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJh
bmdlJik7Ci10ZW1wbGF0ZTxUcmVlVHlwZT4gYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJh
bmdlJiwgY29uc3QgTm9kZSYpOwordGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGludGVy
c2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpOwordGVtcGxhdGU8
VHJlZVR5cGUgPSBUcmVlPiBib29sIGludGVyc2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25z
dCBOb2RlJik7CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaW50ZXJzZWN0c0ZvclRlc3RpbmcoVHJl
ZVR5cGUsIGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKK1dFQkNPUkVf
RVhQT1JUIGJvb2wgaW50ZXJzZWN0c0ZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IFNpbXBsZVJh
bmdlJiwgY29uc3QgTm9kZSYpOwogCiAvLyBSZXR1cm5zIGVxdWl2YWxlbnQgaWYgcG9pbnQgaXMg
aW4gcmFuZ2UuCiB0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IFBhcnRpYWxPcmRlcmluZyB0cmVl
T3JkZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7CkBAIC04OCw4
ICs5Miw2IEBAIE9mZnNldFJhbmdlIGNoYXJhY3RlckRhdGFPZmZzZXRSYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKIAogLy8gRklYTUU6IFN0YXJ0IG9mIGZ1bmN0aW9ucyB0
aGF0IGFyZSBkZXByZWNhdGVkIHNpbmNlIHRoZXkgc2lsZW50bHkgZGVmYXVsdCB0byBDb21wb3Nl
ZFRyZWUuCiAKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaW50ZXJzZWN0cyhjb25zdCBTaW1wbGVSYW5n
ZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGludGVyc2VjdHMo
Y29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBTaW1wbGVS
YW5nZSB1bmlvblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsK
IFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rpb24oY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CiAK
QEAgLTk5LDYgKzEwMSw4IEBAIEludGVyc2VjdGluZ05vZGVSYW5nZSBpbnRlcnNlY3RpbmdOb2Rl
cyhjb25zdCBTaW1wbGVSYW5nZSYpOwogY2xhc3MgSW50ZXJzZWN0aW5nTm9kZVJhbmdlV2l0aFF1
aXJrOwogSW50ZXJzZWN0aW5nTm9kZVJhbmdlV2l0aFF1aXJrIGludGVyc2VjdGluZ05vZGVzV2l0
aERlcHJlY2F0ZWRaZXJvT2Zmc2V0U3RhcnRRdWlyayhjb25zdCBTaW1wbGVSYW5nZSYpOwogCitX
RUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zQ3Jvc3NpbmdEb2N1bWVudEJvdW5kYXJpZXMoY29u
c3QgU2ltcGxlUmFuZ2UmLCBOb2RlJik7CisKIC8vIEZJWE1FOiBFbmQgb2YgZnVuY3Rpb25zIHRo
YXQgYXJlIGRlcHJlY2F0ZWQgc2luY2UgdGhleSBzaWxlbnRseSBkZWZhdWx0IHRvIENvbXBvc2Vk
VHJlZS4KIAogY2xhc3MgSW50ZXJzZWN0aW5nTm9kZUl0ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRl
cmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgTm9kZT4gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDgyY2Q5NjVjYjg0ZGZkNmNlNjAyM2I5ZjdhNjQwODVhNzJjYTEyYTcu
LmYyNzA2NjFiMWYwOTZjMmI0MmIzYzIxMjRhY2IxMmRlYzQ5MzkwYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTM1NDUsNyArMzU0NSw3IEBAIHN0YXRpYyBib29sIGlzRnJhbWVJ
blJhbmdlKEZyYW1lJiBmcmFtZSwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIGZv
ciAoYXV0byogb3duZXJFbGVtZW50ID0gZnJhbWUub3duZXJFbGVtZW50KCk7IG93bmVyRWxlbWVu
dDsgb3duZXJFbGVtZW50ID0gb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgp
KSB7CiAgICAgICAgIGlmICgmb3duZXJFbGVtZW50LT5kb2N1bWVudCgpID09ICZyYW5nZS5zdGFy
dC5kb2N1bWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIGludGVyc2VjdHMocmFuZ2UsICpvd25l
ckVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIGludGVyc2VjdHM8Q29tcG9zZWRUcmVlPihy
YW5nZSwgKm93bmVyRWxlbWVudCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTM3
MDMsNyArMzcwMyw3IEBAIHZvaWQgRWRpdG9yOjpzY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVt
YmVycygpCiAgICAgICAgICAgICBhZGRNYXJrZXIocmFuZ2UsIERvY3VtZW50TWFya2VyOjpUZWxl
cGhvbmVOdW1iZXIpOwogCiAgICAgICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIHJhbmdlcyB3aXRo
IGEgZGV0ZWN0ZWQgdGVsZXBob25lIG51bWJlciBpZiB0aGV5IG92ZXJsYXAgd2l0aCB0aGUgc2Vs
ZWN0aW9uLgotICAgICAgICAgICAgaWYgKGludGVyc2VjdHMocmFuZ2UsIHNlbGVjdGVkUmFuZ2Up
KQorICAgICAgICAgICAgaWYgKGludGVyc2VjdHM8Q29tcG9zZWRUcmVlPihyYW5nZSwgc2VsZWN0
ZWRSYW5nZSkpCiAgICAgICAgICAgICAgICAgbV9kZXRlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdl
cy5hcHBlbmQocmFuZ2UpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCAwZGU3NTI4MDMwMGZiNTlkMzFiZWE0Nzg4ZDliZmZm
N2IwNTkzOTRkLi45YjY3ZDI5N2UxOTFmMmU0Y2M2ZjNiZGRmZTMxMWYyZDY1MzUwMDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtNTU1LDcgKzU1NSw3
IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJlc3BvbmRUb05vZGVNb2RpZmljYXRpb24oTm9kZSYg
bm9kZSwgYm9vbCBiYXNlUmVtb3ZlZCwgYm9vCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
c2VsZWN0aW9uLnNldFdpdGhvdXRWYWxpZGF0aW9uKG1fc2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVj
dGlvbi5zdGFydCgpKTsKICAgICB9IGVsc2UgaWYgKGlzUmFuZ2UoKSkgewotICAgICAgICBpZiAo
YXV0byByYW5nZSA9IG1fc2VsZWN0aW9uLmZpcnN0UmFuZ2UoKTsgcmFuZ2UgJiYgaW50ZXJzZWN0
cygqcmFuZ2UsIG5vZGUpKSB7CisgICAgICAgIGlmIChhdXRvIHJhbmdlID0gbV9zZWxlY3Rpb24u
Zmlyc3RSYW5nZSgpOyByYW5nZSAmJiBpbnRlcnNlY3RzPENvbXBvc2VkVHJlZT4oKnJhbmdlLCBu
b2RlKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgZGlkIG5vdGhpbmcgaGVyZSwgd2hlbiB0aGlz
IG5vZGUncyByZW5kZXJlciB3YXMgZGVzdHJveWVkLCB0aGUgcmVjdCB0aGF0IGl0CiAgICAgICAg
ICAgICAvLyBvY2N1cGllZCB3b3VsZCBiZSBpbnZhbGlkYXRlZCwgYnV0LCBzZWxlY3Rpb24gZ2Fw
cyB0aGF0IGNoYW5nZSBhcyBhIHJlc3VsdCBvZgogICAgICAgICAgICAgLy8gdGhlIHJlbW92YWwg
d291bGRuJ3QgYmUgaW52YWxpZGF0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQ
b3NpdGlvbi5jcHAKaW5kZXggM2E4NjY2ODU5NzhmZDk1NjFiM2NmOGUwMjk4ODU1ODQwMzk4YTU5
MC4uOTk4YjIwMGEyZDUyNGE1OThlZDc3YjVjNWYyYzkwM2ZiM2I5ZWMwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNzg3LDYgKzc4NywxMyBAQCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlv
blJhbmdlJiByYW5nZSkKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHJhbmdlLnN0YXJ0LCBy
YW5nZS5lbmQpOwogfQogCitWaXNpYmxlUG9zaXRpb25SYW5nZSBtYWtlVmlzaWJsZVBvc2l0aW9u
UmFuZ2UoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAgICBpZiAoIXJh
bmdlKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiB7IG1ha2VDb250YWluZXJPZmZz
ZXRQb3NpdGlvbihyYW5nZS0+c3RhcnQpLCBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmFu
Z2UtPmVuZCkgfTsKK30KKwogUGFydGlhbE9yZGVyaW5nIGRvY3VtZW50T3JkZXIoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCiB7CiAgICAgLy8gRklY
TUU6IFNob3VsZCB0d28gcG9zaXRpb25zIHdpdGggZGlmZmVyZW50IGFmZmluaXR5IGJlIGNvbnNp
ZGVyZWQgZXF1aXZhbGVudCBvciBub3Q/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uaAppbmRleCBlNzRjZDA2NmZhM2MyNTY4ZjFjNTFmMGFhZjJmM2Q5NjA0NWUyZGFjLi5m
MTczMWIyNjJlNTVmZTY0ZWM2MTA2ODM4OTkyNTgxYWQ2NzdiMjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBzdHJ1Y3QgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UgewogfTsKIAogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpOworV0VC
Q09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbWFrZVZpc2libGVQb3NpdGlvblJhbmdl
KGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOwogCiBOb2RlKiBjb21tb25JbmNsdXNpdmVB
bmNlc3Rvcihjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAKaW5kZXggZmVjNzFmYTdiZWI1OGM5YjZlYjU2ZWNjN2NiM2QwMDMxNTI4
MjI0Ni4uMGRmN2Q5YjYxMDc3N2M2NGRkYTc1YWEwMjYyZjc0OTJiYTAwYTkyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgRE9NU2Vs
ZWN0aW9uOjphZGRSYW5nZShSYW5nZSYgbGl2ZVJhbmdlKQogICAgIH0KICAgICBhdXRvIHJhbmdl
ID0gbWFrZVNpbXBsZVJhbmdlKGxpdmVSYW5nZSk7CiAgICAgaWYgKGF1dG8gc2VsZWN0ZWRSYW5n
ZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7Ci0gICAgICAg
IGlmICghc2VsZWN0ZWRSYW5nZS0+c3RhcnQuY29udGFpbmVyLT5jb250YWluaW5nU2hhZG93Um9v
dCgpICYmIGludGVyc2VjdHM8VHJlZT4oKnNlbGVjdGVkUmFuZ2UsIHJhbmdlKSkKKyAgICAgICAg
aWYgKCFzZWxlY3RlZFJhbmdlLT5zdGFydC5jb250YWluZXItPmNvbnRhaW5pbmdTaGFkb3dSb290
KCkgJiYgaW50ZXJzZWN0cygqc2VsZWN0ZWRSYW5nZSwgcmFuZ2UpKQogICAgICAgICAgICAgc2Vs
ZWN0aW9uLnNldFNlbGVjdGlvbih1bmlvblJhbmdlKCpzZWxlY3RlZFJhbmdlLCByYW5nZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDMzLDcgKzQzMyw3IEBAIGJvb2wgRE9NU2VsZWN0
aW9uOjpjb250YWluc05vZGUoTm9kZSYgbm9kZSwgYm9vbCBhbGxvd1BhcnRpYWwpIGNvbnN0CiAg
ICAgaWYgKG5vZGUuaXNUZXh0Tm9kZSgpICYmICFub2RlLmRvY3VtZW50KCkuc2V0dGluZ3MoKS5s
aXZlUmFuZ2VTZWxlY3Rpb25FbmFibGVkKCkpCiAgICAgICAgIGFsbG93UGFydGlhbCA9IHRydWU7
CiAgICAgYXV0byByYW5nZSA9IHRoaXMtPnJhbmdlKCk7Ci0gICAgcmV0dXJuIHJhbmdlICYmIChh
bGxvd1BhcnRpYWwgPyBpbnRlcnNlY3RzPFRyZWU+KCpyYW5nZSwgbm9kZSkgOiBjb250YWluczxU
cmVlPigqcmFuZ2UsIG5vZGUpKTsKKyAgICByZXR1cm4gcmFuZ2UgJiYgKGFsbG93UGFydGlhbCA/
IGludGVyc2VjdHMoKnJhbmdlLCBub2RlKSA6IGNvbnRhaW5zKCpyYW5nZSwgbm9kZSkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBET01TZWxlY3Rpb246OnNlbGVjdEFsbENoaWxkcmVuKE5vZGUm
IG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGNkYmZkOGZj
ODVhNmI4YThhYWQ1ZmQzZDAxNzBkYzY5YTQ2NTA4OTAuLmE3Y2FiMTQwMzgyY2NjZDgxMjg3OGQ2
ZGFmYzZiMDdkNTlkMzJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CkBAIC0xNDY4LDcgKzE0NjgsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPgogCiAgICAgVmVj
dG9yPFJlZjxIVE1MSW1hZ2VFbGVtZW50Pj4gcGxhY2Vob2xkZXJzOwogICAgIGZvciAoYXV0byYg
cGxhY2Vob2xkZXIgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MSW1hZ2VFbGVtZW50Pihkb3duY2Fz
dDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSkpIHsKLSAgICAgICAgaWYgKGludGVyc2VjdHMo
Kmluc2VydGVkQ29udGVudFJhbmdlLCBwbGFjZWhvbGRlcikpCisgICAgICAgIGlmIChpbnRlcnNl
Y3RzPENvbXBvc2VkVHJlZT4oKmluc2VydGVkQ29udGVudFJhbmdlLCBwbGFjZWhvbGRlcikpCiAg
ICAgICAgICAgICBwbGFjZWhvbGRlcnMuYXBwZW5kKHBsYWNlaG9sZGVyKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4NTNiNjk3ZjdhMzBjYjAxODgxNjhk
MGY1MWM3MGI1ODVkYzZkNDU3Li4wZmZiYWFlM2FhMjA4ZDYxNzU4OGZjYmM0ZjAzZTc0MTRjZDE1
Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MDQ2LDkgKzYwNDYs
MjQgQEAgYm9vbCBJbnRlcm5hbHM6OnJhbmdlQ29udGFpbnNOb2RlKGNvbnN0IEFic3RyYWN0UmFu
Z2UmIHJhbmdlLCBOb2RlJiBub2RlLCBUcmVlVHkKICAgICByZXR1cm4gY29udGFpbnNGb3JUZXN0
aW5nKGNvbnZlcnRUeXBlKHR5cGUpLCBtYWtlU2ltcGxlUmFuZ2UocmFuZ2UpLCBub2RlKTsKIH0K
IAorYm9vbCBJbnRlcm5hbHM6OnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50KGNvbnN0IEFic3Ry
YWN0UmFuZ2UmIHJhbmdlLCBOb2RlJiBjb250YWluZXIsIHVuc2lnbmVkIG9mZnNldCwgVHJlZVR5
cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gY29udGFpbnNGb3JUZXN0aW5nKGNvbnZlcnRUeXBlKHR5
cGUpLCBtYWtlU2ltcGxlUmFuZ2UocmFuZ2UpLCB7IGNvbnRhaW5lciwgb2Zmc2V0IH0pOworfQor
CiBib29sIEludGVybmFsczo6cmFuZ2VDb250YWluc1JhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2Um
IG91dGVyUmFuZ2UsIGNvbnN0IEFic3RyYWN0UmFuZ2UmIGlubmVyUmFuZ2UsIFRyZWVUeXBlIHR5
cGUpCiB7CiAgICAgcmV0dXJuIGNvbnRhaW5zRm9yVGVzdGluZyhjb252ZXJ0VHlwZSh0eXBlKSwg
bWFrZVNpbXBsZVJhbmdlKG91dGVyUmFuZ2UpLCBtYWtlU2ltcGxlUmFuZ2UoaW5uZXJSYW5nZSkp
OwogfQogCitib29sIEludGVybmFsczo6cmFuZ2VJbnRlcnNlY3RzTm9kZShjb25zdCBBYnN0cmFj
dFJhbmdlJiByYW5nZSwgTm9kZSYgbm9kZSwgVHJlZVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4g
aW50ZXJzZWN0c0ZvclRlc3RpbmcoY29udmVydFR5cGUodHlwZSksIG1ha2VTaW1wbGVSYW5nZShy
YW5nZSksIG5vZGUpOworfQorCitib29sIEludGVybmFsczo6cmFuZ2VJbnRlcnNlY3RzUmFuZ2Uo
Y29uc3QgQWJzdHJhY3RSYW5nZSYgYSwgY29uc3QgQWJzdHJhY3RSYW5nZSYgYiwgVHJlZVR5cGUg
dHlwZSkKK3sKKyAgICByZXR1cm4gaW50ZXJzZWN0c0ZvclRlc3RpbmcoY29udmVydFR5cGUodHlw
ZSksIG1ha2VTaW1wbGVSYW5nZShhKSwgbWFrZVNpbXBsZVJhbmdlKGIpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYmI3ZDU1
ZTIwZmRlYjVhMWQ1OGIwOTljZjk3YWJlZTU5NTg0NGExOC4uMmQxYTI4MDk3Y2ZlODU2ZjBlMjZl
MzQ3Mzc2MjY5ZDAyNzA4MDI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0x
MDY5LDYgKzEwNjksOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRyZWVPcmRlckJvdW5kYXJ5UG9p
bnRzKE5vZGUmIGNvbnRhaW5lckEsIHVuc2lnbmVkIG9mZnNldEEsIE5vZGUmIGNvbnRhaW5lckIs
IHVuc2lnbmVkIG9mZnNldEIsIFRyZWVUeXBlKTsKICAgICBib29sIHJhbmdlQ29udGFpbnNOb2Rl
KGNvbnN0IEFic3RyYWN0UmFuZ2UmLCBOb2RlJiwgVHJlZVR5cGUpOwogICAgIGJvb2wgcmFuZ2VD
b250YWluc1JhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2UmLCBjb25zdCBBYnN0cmFjdFJhbmdlJiwg
VHJlZVR5cGUpOworICAgIGJvb2wgcmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQoY29uc3QgQWJz
dHJhY3RSYW5nZSYsIE5vZGUmLCB1bnNpZ25lZCBvZmZzZXQsIFRyZWVUeXBlKTsKKyAgICBib29s
IHJhbmdlSW50ZXJzZWN0c05vZGUoY29uc3QgQWJzdHJhY3RSYW5nZSYsIE5vZGUmLCBUcmVlVHlw
ZSk7CisgICAgYm9vbCByYW5nZUludGVyc2VjdHNSYW5nZShjb25zdCBBYnN0cmFjdFJhbmdlJiwg
Y29uc3QgQWJzdHJhY3RSYW5nZSYsIFRyZWVUeXBlKTsKIAogICAgIHZvaWQgc3lzdGVtQmVlcCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYmRiOWVlMmNiNmNhMjE1
YThlOGRjYzJkMDBhMmZlNWQwODViZDY3MC4uN2EzNWRlMGNjOGEzNWZiZTcwZjRjNDc2NTFiNDIw
YzE0MmRlYmJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtOTY5LDYg
Kzk2OSw5IEBAIGVudW0gVHJlZVR5cGUgewogICAgIERPTVN0cmluZyB0cmVlT3JkZXJCb3VuZGFy
eVBvaW50cyhOb2RlIGNvbnRhaW5lckEsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0QSwgTm9kZSBjb250
YWluZXJCLCB1bnNpZ25lZCBsb25nIG9mZnNldEIsIG9wdGlvbmFsIFRyZWVUeXBlIHRyZWUgPSAi
VHJlZSIpOwogICAgIGJvb2xlYW4gcmFuZ2VDb250YWluc05vZGUoQWJzdHJhY3RSYW5nZSByYW5n
ZSwgTm9kZSBub2RlLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0gIlRyZWUiKTsKICAgICBib29s
ZWFuIHJhbmdlQ29udGFpbnNSYW5nZShBYnN0cmFjdFJhbmdlIG91dGVyUmFuZ2UsIEFic3RyYWN0
UmFuZ2UgaW5uZXJSYW5nZSwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7CisgICAg
Ym9vbGVhbiByYW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludChBYnN0cmFjdFJhbmdlIG91dGVyUmFu
Z2UsIE5vZGUgY29udGFpbmVyLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgb3B0aW9uYWwgVHJlZVR5
cGUgdHJlZSA9ICJUcmVlIik7CisgICAgYm9vbGVhbiByYW5nZUludGVyc2VjdHNOb2RlKEFic3Ry
YWN0UmFuZ2UgcmFuZ2UsIE5vZGUgbm9kZSwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVl
Iik7CisgICAgYm9vbGVhbiByYW5nZUludGVyc2VjdHNSYW5nZShBYnN0cmFjdFJhbmdlIG91dGVy
UmFuZ2UsIEFic3RyYWN0UmFuZ2UgaW5uZXJSYW5nZSwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9
ICJUcmVlIik7CiAKICAgICB1bmRlZmluZWQgc3lzdGVtQmVlcCgpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMGYy
YzdiNzU5NDg5YzAxNTk4ZDc5ZjRkNzU0NWNiMDgyZTE5OTM1Mi4uZTU3NWZjYTAxOWY2YjEyYThm
NGRhZTVjYjFkNjgyZGE0ZTQzNmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQxNTUsMTAgKzQxNTUsOCBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KERvY3VtZW50RWRpdGluZ0Nv
bnRleHRSZXF1ZXN0IHJlcXVlcwogICAgIFJlZjxGcmFtZT4gZnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogCi0gICAgVmlzaWJs
ZVBvc2l0aW9uIHJhbmdlT2ZJbnRlcmVzdFN0YXJ0OwotICAgIFZpc2libGVQb3NpdGlvbiByYW5n
ZU9mSW50ZXJlc3RFbmQ7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvblN0YXJ0ID0gc2Vs
ZWN0aW9uLnZpc2libGVTdGFydCgpOwotICAgIFZpc2libGVQb3NpdGlvbiBzZWxlY3Rpb25FbmQg
PSBzZWxlY3Rpb24udmlzaWJsZUVuZCgpOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHJhbmdl
T2ZJbnRlcmVzdDsKKyAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgeyBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIHNlbGVjdGlvbi52aXNpYmxlRW5kKCkgfTsK
IAogICAgIGJvb2wgaXNTcGF0aWFsUmVxdWVzdCA9IHJlcXVlc3Qub3B0aW9ucy5jb250YWluc0Fu
eSh7IERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0OjpPcHRpb25zOjpTcGF0aWFsLCBEb2N1
bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdDo6T3B0aW9uczo6U3BhdGlhbEFuZEN1cnJlbnRTZWxl
Y3Rpb24gfSk7CiAgICAgYm9vbCB3YW50c1JlY3RzID0gcmVxdWVzdC5vcHRpb25zLmNvbnRhaW5z
KERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0OjpPcHRpb25zOjpSZWN0cyk7CkBAIC00MTcy
LDQyICs0MTcwLDQwIEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRl
eHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXJlcXVlc3QucmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJhbmdlT2ZJ
bnRlcmVzdFN0YXJ0ID0gY2xvc2VzdEVkaXRhYmxlUG9zaXRpb25JbkVsZW1lbnRGb3JBYnNvbHV0
ZVBvaW50KCplbGVtZW50LCByb3VuZGVkSW50UG9pbnQocmVxdWVzdC5yZWN0Lm1pblhNaW5ZQ29y
bmVyKCkpKTsKLSAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdEVuZCA9IGNsb3Nlc3RFZGl0YWJs
ZVBvc2l0aW9uSW5FbGVtZW50Rm9yQWJzb2x1dGVQb2ludCgqZWxlbWVudCwgcm91bmRlZEludFBv
aW50KHJlcXVlc3QucmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgICAgICAgICByYW5nZU9m
SW50ZXJlc3Quc3RhcnQgPSBjbG9zZXN0RWRpdGFibGVQb3NpdGlvbkluRWxlbWVudEZvckFic29s
dXRlUG9pbnQoKmVsZW1lbnQsIHJvdW5kZWRJbnRQb2ludChyZXF1ZXN0LnJlY3QubWluWE1pbllD
b3JuZXIoKSkpOworICAgICAgICAgICAgcmFuZ2VPZkludGVyZXN0LmVuZCA9IGNsb3Nlc3RFZGl0
YWJsZVBvc2l0aW9uSW5FbGVtZW50Rm9yQWJzb2x1dGVQb2ludCgqZWxlbWVudCwgcm91bmRlZElu
dFBvaW50KHJlcXVlc3QucmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICBhdXRvJiB0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ+KCplbGVtZW50KTsKLSAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdFN0YXJ0
ID0gdGV4dEZvcm1Db250cm9sRWxlbWVudC52aXNpYmxlUG9zaXRpb25Gb3JJbmRleCgwKTsKLSAg
ICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdEVuZCA9IHRleHRGb3JtQ29udHJvbEVsZW1lbnQudmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgodGV4dEZvcm1Db250cm9sRWxlbWVudC52YWx1ZSgpLmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIHJhbmdlT2ZJbnRlcmVzdC5zdGFydCA9IHRleHRGb3JtQ29udHJv
bEVsZW1lbnQudmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoMCk7CisgICAgICAgICAgICByYW5nZU9m
SW50ZXJlc3QuZW5kID0gdGV4dEZvcm1Db250cm9sRWxlbWVudC52aXNpYmxlUG9zaXRpb25Gb3JJ
bmRleCh0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LnZhbHVlKCkubGVuZ3RoKCkpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgcmFuZ2VPZkludGVyZXN0U3RhcnQgPSBmaXJzdFBvc2l0aW9u
SW5PckJlZm9yZU5vZGUoZWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICByYW5nZU9mSW50ZXJl
c3RFbmQgPSBsYXN0UG9zaXRpb25Jbk9yQWZ0ZXJOb2RlKGVsZW1lbnQuZ2V0KCkpOworICAgICAg
ICAgICAgcmFuZ2VPZkludGVyZXN0LnN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2Rl
KGVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgcmFuZ2VPZkludGVyZXN0LmVuZCA9IGxhc3RQ
b3NpdGlvbkluT3JBZnRlck5vZGUoZWxlbWVudC5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKGlzU3BhdGlhbFJlcXVlc3QpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5l
ZWQgdG8gYmUgYSBiaXQgbW9yZSBjYXJlZnVsIHRoYXQgd2UgZ2V0IHNvbWV0aGluZyB1c2VmdWwg
KHRlc3QgdGhlIG90aGVyIGNvcm5lcnM/KS4KLSAgICAgICAgcmFuZ2VPZkludGVyZXN0U3RhcnQg
PSB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludEluUm9vdFZpZXdDb29yZGluYXRlcyhmcmFtZS5nZXQo
KSwgcmVxdWVzdC5yZWN0Lm1pblhNaW5ZQ29ybmVyKCkpOwotICAgICAgICByYW5nZU9mSW50ZXJl
c3RFbmQgPSB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludEluUm9vdFZpZXdDb29yZGluYXRlcyhmcmFt
ZS5nZXQoKSwgcmVxdWVzdC5yZWN0Lm1heFhNYXhZQ29ybmVyKCkpOwotICAgIH0gZWxzZSBpZiAo
IXNlbGVjdGlvbi5pc05vbmUoKSkgewotICAgICAgICByYW5nZU9mSW50ZXJlc3RTdGFydCA9IHNl
bGVjdGlvblN0YXJ0OwotICAgICAgICByYW5nZU9mSW50ZXJlc3RFbmQgPSBzZWxlY3Rpb25FbmQ7
Ci0gICAgfQorICAgICAgICByYW5nZU9mSW50ZXJlc3Quc3RhcnQgPSB2aXNpYmxlUG9zaXRpb25G
b3JQb2ludEluUm9vdFZpZXdDb29yZGluYXRlcyhmcmFtZS5nZXQoKSwgcmVxdWVzdC5yZWN0Lm1p
blhNaW5ZQ29ybmVyKCkpOworICAgICAgICByYW5nZU9mSW50ZXJlc3QuZW5kID0gdmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoZnJhbWUuZ2V0KCksIHJlcXVlc3Qu
cmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKKyAgICB9IGVsc2UgaWYgKCFzZWxlY3Rpb24uaXNOb25l
KCkpCisgICAgICAgIHJhbmdlT2ZJbnRlcmVzdCA9IHNlbGVjdGlvblJhbmdlOwogCi0gICAgaWYg
KHJhbmdlT2ZJbnRlcmVzdEVuZCA8IHJhbmdlT2ZJbnRlcmVzdFN0YXJ0KQotICAgICAgICBzdGQ6
OmV4Y2hhbmdlKHJhbmdlT2ZJbnRlcmVzdFN0YXJ0LCByYW5nZU9mSW50ZXJlc3RFbmQpOworICAg
IGlmIChyYW5nZU9mSW50ZXJlc3QuZW5kIDwgcmFuZ2VPZkludGVyZXN0LnN0YXJ0KQorICAgICAg
ICBzdGQ6OmV4Y2hhbmdlKHJhbmdlT2ZJbnRlcmVzdC5zdGFydCwgcmFuZ2VPZkludGVyZXN0LmVu
ZCk7CiAKICAgICBpZiAocmVxdWVzdC5vcHRpb25zLmNvbnRhaW5zKERvY3VtZW50RWRpdGluZ0Nv
bnRleHRSZXF1ZXN0OjpPcHRpb25zOjpTcGF0aWFsQW5kQ3VycmVudFNlbGVjdGlvbikpIHsKLSAg
ICAgICAgaWYgKHNlbGVjdGlvblN0YXJ0IDwgcmFuZ2VPZkludGVyZXN0U3RhcnQpCi0gICAgICAg
ICAgICByYW5nZU9mSW50ZXJlc3RTdGFydCA9IHNlbGVjdGlvblN0YXJ0OwotICAgICAgICBpZiAo
c2VsZWN0aW9uRW5kID4gcmFuZ2VPZkludGVyZXN0RW5kKQotICAgICAgICAgICAgcmFuZ2VPZklu
dGVyZXN0RW5kID0gc2VsZWN0aW9uRW5kOworICAgICAgICBpZiAoc2VsZWN0aW9uUmFuZ2Uuc3Rh
cnQgPCByYW5nZU9mSW50ZXJlc3Quc3RhcnQpCisgICAgICAgICAgICByYW5nZU9mSW50ZXJlc3Qu
c3RhcnQgPSBzZWxlY3Rpb25SYW5nZS5zdGFydDsKKyAgICAgICAgaWYgKHNlbGVjdGlvblJhbmdl
LmVuZCA+IHJhbmdlT2ZJbnRlcmVzdC5lbmQpCisgICAgICAgICAgICByYW5nZU9mSW50ZXJlc3Qu
ZW5kID0gc2VsZWN0aW9uUmFuZ2UuZW5kOwogICAgIH0KIAotICAgIGlmIChyYW5nZU9mSW50ZXJl
c3RTdGFydC5pc051bGwoKSB8fCByYW5nZU9mSW50ZXJlc3RTdGFydC5pc09ycGhhbigpIHx8IHJh
bmdlT2ZJbnRlcmVzdEVuZC5pc051bGwoKSB8fCByYW5nZU9mSW50ZXJlc3RFbmQuaXNPcnBoYW4o
KSkgeworICAgIGlmIChyYW5nZU9mSW50ZXJlc3Quc3RhcnQuaXNOdWxsKCkgfHwgcmFuZ2VPZklu
dGVyZXN0LnN0YXJ0LmlzT3JwaGFuKCkgfHwgcmFuZ2VPZkludGVyZXN0LmVuZC5pc051bGwoKSB8
fCByYW5nZU9mSW50ZXJlc3QuZW5kLmlzT3JwaGFuKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFRoZSBzdWJzZXQg
b2YgdGhlIHNlbGVjdGlvbiB0aGF0IGlzIGluc2lkZSB0aGUgcmFuZ2Ugb2YgaW50ZXJlc3QuCi0g
ICAgYXV0byByYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IGNvbnN0cmFpblJhbmdlVG9TZWxl
Y3Rpb24oc2VsZWN0aW9uLCB7IHJhbmdlT2ZJbnRlcmVzdFN0YXJ0LCByYW5nZU9mSW50ZXJlc3RF
bmQgfSk7CisgICAgYXV0byByYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiA9IGNvbnN0cmFpblJh
bmdlVG9TZWxlY3Rpb24oc2VsZWN0aW9uLCByYW5nZU9mSW50ZXJlc3QpOwogICAgIGlmIChyYW5n
ZU9mSW50ZXJlc3RJblNlbGVjdGlvbi5pc051bGwoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CkBAIC00MjE3LDExICs0MjEzLDExIEBAIHZvaWQg
V2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29u
dGV4dFJlcXVlc3QgcmVxdWVzCiAgICAgVmlzaWJsZVBvc2l0aW9uIGNvbnRleHRBZnRlckVuZDsK
ICAgICBhdXRvIGNvbXBvc2l0aW9uUmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25S
YW5nZSgpOwogICAgIGlmIChyZXF1ZXN0LmdyYW51bGFyaXR5Q291bnQpIHsKLSAgICAgICAgY29u
dGV4dEJlZm9yZVN0YXJ0ID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5
KHJhbmdlT2ZJbnRlcmVzdFN0YXJ0LCByZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHksIHJl
cXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7Ci0g
ICAgICAgIGNvbnRleHRBZnRlckVuZCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRC
b3VuZGFyeShyYW5nZU9mSW50ZXJlc3RFbmQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0
eSwgcmVxdWVzdC5ncmFudWxhcml0eUNvdW50LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQp
OworICAgICAgICBjb250ZXh0QmVmb3JlU3RhcnQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3Rp
bmdXb3JkQm91bmRhcnkocmFuZ2VPZkludGVyZXN0LnN0YXJ0LCByZXF1ZXN0LnN1cnJvdW5kaW5n
R3JhbnVsYXJpdHksIHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpCYWNrd2FyZCk7CisgICAgICAgIGNvbnRleHRBZnRlckVuZCA9IG1vdmVCeUdyYW51bGFyaXR5
UmVzcGVjdGluZ1dvcmRCb3VuZGFyeShyYW5nZU9mSW50ZXJlc3QuZW5kLCByZXF1ZXN0LnN1cnJv
dW5kaW5nR3JhbnVsYXJpdHksIHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb250ZXh0QmVmb3JlU3Rh
cnQgPSByYW5nZU9mSW50ZXJlc3RTdGFydDsKLSAgICAgICAgY29udGV4dEFmdGVyRW5kID0gcmFu
Z2VPZkludGVyZXN0RW5kOworICAgICAgICBjb250ZXh0QmVmb3JlU3RhcnQgPSByYW5nZU9mSW50
ZXJlc3Quc3RhcnQ7CisgICAgICAgIGNvbnRleHRBZnRlckVuZCA9IHJhbmdlT2ZJbnRlcmVzdC5l
bmQ7CiAgICAgICAgIGlmICh3YW50c01hcmtlZFRleHRSZWN0cyAmJiBjb21wb3NpdGlvblJhbmdl
KSB7CiAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGUgY2xpZW50IGhhcyByZXF1
ZXN0ZWQgbWFya2VkIHRleHQgcmVjdHMgbWFrZSBzdXJlIHRoYXQgdGhlIGNvbnRleHQKICAgICAg
ICAgICAgIC8vIHJhbmdlIGVuY29tcGFzc2VzIHRoZSBlbnRpcmUgbWFya2VkIHRleHQgcmFuZ2Ug
c28gdGhhdCB3ZSBkb24ndCByZXR1cm4gYSB0cnVuY2F0ZWQgcmVzdWx0LgpAQCAtNDI0NiwxMSAr
NDI0Miw5IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9j
dW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAgICAgY29udGV4dC5jb250ZXh0QmVm
b3JlID0gbWFrZVN0cmluZyhjb250ZXh0QmVmb3JlU3RhcnQsIHJhbmdlT2ZJbnRlcmVzdEluU2Vs
ZWN0aW9uLnN0YXJ0KTsKICAgICBjb250ZXh0LnNlbGVjdGVkVGV4dCA9IG1ha2VTdHJpbmcocmFu
Z2VPZkludGVyZXN0SW5TZWxlY3Rpb24uc3RhcnQsIHJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9u
LmVuZCk7CiAgICAgY29udGV4dC5jb250ZXh0QWZ0ZXIgPSBtYWtlU3RyaW5nKHJhbmdlT2ZJbnRl
cmVzdEluU2VsZWN0aW9uLmVuZCwgY29udGV4dEFmdGVyRW5kKTsKLSAgICBpZiAoY29tcG9zaXRp
b25SYW5nZSAmJiBpbnRlcnNlY3RzKCptYWtlU2ltcGxlUmFuZ2UocmFuZ2VPZkludGVyZXN0U3Rh
cnQsIHJhbmdlT2ZJbnRlcmVzdEVuZCksICpjb21wb3NpdGlvblJhbmdlKSkgewotICAgICAgICBW
aXNpYmxlUG9zaXRpb24gY29tcG9zaXRpb25TdGFydChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0
aW9uKGNvbXBvc2l0aW9uUmFuZ2UtPnN0YXJ0KSk7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBj
b21wb3NpdGlvbkVuZChtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKGNvbXBvc2l0aW9uUmFu
Z2UtPmVuZCkpOwotICAgICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSBtYWtlU3RyaW5nKGNvbXBv
c2l0aW9uU3RhcnQsIGNvbXBvc2l0aW9uRW5kKTsKLSAgICAgICAgY29udGV4dC5zZWxlY3RlZFJh
bmdlSW5NYXJrZWRUZXh0LmxvY2F0aW9uID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKHJhbmdl
T2ZJbnRlcmVzdEluU2VsZWN0aW9uLnN0YXJ0LCBjb21wb3NpdGlvblN0YXJ0KTsKKyAgICBpZiAo
YXV0byBjb21wb3NpdGlvblZpc2libGVQb3NpdGlvblJhbmdlID0gbWFrZVZpc2libGVQb3NpdGlv
blJhbmdlKGNvbXBvc2l0aW9uUmFuZ2UpOyBpbnRlcnNlY3RzKHJhbmdlT2ZJbnRlcmVzdCwgY29t
cG9zaXRpb25WaXNpYmxlUG9zaXRpb25SYW5nZSkpIHsKKyAgICAgICAgY29udGV4dC5tYXJrZWRU
ZXh0ID0gbWFrZVN0cmluZyhjb21wb3NpdGlvblZpc2libGVQb3NpdGlvblJhbmdlLnN0YXJ0LCBj
b21wb3NpdGlvblZpc2libGVQb3NpdGlvblJhbmdlLmVuZCk7CisgICAgICAgIGNvbnRleHQuc2Vs
ZWN0ZWRSYW5nZUluTWFya2VkVGV4dC5sb2NhdGlvbiA9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9u
cyhyYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbi5zdGFydCwgY29tcG9zaXRpb25WaXNpYmxlUG9z
aXRpb25SYW5nZS5zdGFydCk7CiAgICAgICAgIGNvbnRleHQuc2VsZWN0ZWRSYW5nZUluTWFya2Vk
VGV4dC5sZW5ndGggPSBbY29udGV4dC5zZWxlY3RlZFRleHQuc3RyaW5nIGxlbmd0aF07CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KaW5k
ZXggZmI3NDIwOGY5OThjM2NhYjRmNWFmN2VjM2M3YTQ2YzIyOTkyMjFmMy4uZjdmM2UzMTU4MDcx
NWE3ZDIzMmY1NjMwY2JmZWU0OTEzMjVhZjkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQpAQCAtNjM2LDIzICs2MzYsMTQgQEAgLSAoQk9PTClt
YXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkCiAgICAgcmV0dXJuIE5POwogfQogCi1zdGF0
aWMgYm9vbCBpc0ZyYW1lSW5SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNv
cmU6OlNpbXBsZVJhbmdlJiByYW5nZSkKLXsKLSAgICBmb3IgKGF1dG8qIG93bmVyRWxlbWVudCA9
IGZyYW1lLm93bmVyRWxlbWVudCgpOyBvd25lckVsZW1lbnQ7IG93bmVyRWxlbWVudCA9IG93bmVy
RWxlbWVudC0+ZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBpZiAoJm93bmVy
RWxlbWVudC0+ZG9jdW1lbnQoKSA9PSAmcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBpbnRlcnNlY3RzKHJhbmdlLCAqb3duZXJFbGVtZW50KTsKLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCiAtIChOU1VJbnRlZ2VyKWNvdW50TWF0Y2hlc0ZvclRleHQ6KE5T
U3RyaW5nICopc3RyaW5nIGluRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2Ugb3B0aW9uczooV2Vi
RmluZE9wdGlvbnMpb3B0aW9ucyBsaW1pdDooTlNVSW50ZWdlcilsaW1pdCBtYXJrTWF0Y2hlczoo
Qk9PTCltYXJrTWF0Y2hlcwogewotICAgIGlmIChyYW5nZSAmJiAhaXNGcmFtZUluUmFuZ2UoKmNv
cmUoW2RhdGFTb3VyY2Ugd2ViRnJhbWVdKSwgbWFrZVNpbXBsZVJhbmdlKCpjb3JlKHJhbmdlKSkp
KQorICAgIGlmIChyYW5nZSAmJiAhY29udGFpbnNDcm9zc2luZ0RvY3VtZW50Qm91bmRhcmllcyht
YWtlU2ltcGxlUmFuZ2UoKmNvcmUocmFuZ2UpKSwgKmNvcmUoW2RhdGFTb3VyY2Ugd2ViRnJhbWVd
KS0+ZG9jdW1lbnQoKSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUERGU2VsZWN0aW9uICpw
cmV2aW91c01hdGNoID0gbmlsOwogICAgIE5TTXV0YWJsZUFycmF5ICptYXRjaGVzID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpsaW1pdF07Ci0gICAgCisKICAgICBm
b3IgKDs7KSB7CiAgICAgICAgIFBERlNlbGVjdGlvbiAqbmV4dE1hdGNoID0gW3NlbGYgX25leHRN
YXRjaEZvcjpzdHJpbmcgZGlyZWN0aW9uOllFUyBjYXNlU2Vuc2l0aXZlOiEob3B0aW9ucyAmIFdl
YkZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKSB3cmFwOk5PIGZyb21TZWxlY3Rpb246cHJldmlv
dXNNYXRjaCBzdGFydEluU2VsZWN0aW9uOk5PXTsKICAgICAgICAgaWYgKCFuZXh0TWF0Y2gpCkBA
IC02NjQsNyArNjU1LDcgQEAgLSAoTlNVSW50ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihOU1N0
cmluZyAqKXN0cmluZyBpbkRPTVJhbmdlOihET01SYW5nZSAqKXJhbmcKICAgICAgICAgaWYgKFtt
YXRjaGVzIGNvdW50XSA+PSBsaW1pdCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAK
KwogICAgIFtzZWxmIF9zZXRUZXh0TWF0Y2hlczptYXRjaGVzXTsKICAgICBbbWF0Y2hlcyByZWxl
YXNlXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA1ZjY1YjRlMmEwNWE5MjM3MmYzY2M2Y2JiNDkzMjQ3M2NlMjk3MzA1Li5jYjE1YzYy
N2FmNWVlMGM5NDA2OTI0NWMyNjVjZWY1OThjMDgzY2FmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTEtMTAg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBhbm90aGVy
IGZ1bmN0aW9uIHRoYXQgaW1wbGljaXRseSB1c2VzIHRoZSBjb21wb3NlZCB0cmVlIChpbnRlcnNl
Y3RzIHdpdGggcmFuZ2UpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTg3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VCb3VuZGFyeVBvaW50KTogRGVsZXRlZC4KKyAg
ICAgICAgRGVsZXRlZCB0aGUgRG9jdW1lbnRPcmRlci5Jc1BvaW50SW5SYW5nZSwgRG9jdW1lbnRP
cmRlci5SYW5nZUludGVyc2VjdHNSYW5nZSBhbmQKKyAgICAgICAgRG9jdW1lbnRPcmRlci5SYW5n
ZUludGVyc2VjdHNOb2RlIHRlc3RzLCBlYWNoIHJlcGxhY2VkIGJ5IGFuIGludGVybmFscy1iYXNl
ZCB0ZXN0LgorCiAyMDIwLTExLTEwICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3Bl
ekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFtSRUdSRVNTU0lPTihyMjY5MzkwKSBTZXZl
cmFsIGVkaXRpbmcvIHRlc3RzIGFyZSBmbGFreQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwCmluZGV4IDQ3Yzk3MDJkOGZkMDdkNDMz
MGEwYTQ5OWMxZGIyNjEwNTU0OTY1NDYuLjU3YTBkYTBhMjM1ZGM0YWY1MjVhNDhjYTY3YTRiY2Ew
Mjg2MjA0ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9E
b2N1bWVudE9yZGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RG9jdW1lbnRPcmRlci5jcHAKQEAgLTQ0LDEwICs0NCw2IEBACiAjZGVmaW5lIEVYUEVDVF9MRVNT
KGEsIGIpIEVYUEVDVF9CT1RIKGEsIGIsICJsZXNzIiwgImdyZWF0ZXIiKQogI2RlZmluZSBFWFBF
Q1RfVU5PUkRFUkVEKGEsIGIpIEVYUEVDVF9CT1RIKGEsIGIsICJ1bm9yZGVyZWQiLCAidW5vcmRl
cmVkIikKIAotI2RlZmluZSBFWFBFQ1RfSU5URVJTRUNUU19TRUxGKGEpIEVYUEVDVF9UUlVFKGlu
dGVyc2VjdHMoYSwgYSkpCi0jZGVmaW5lIEVYUEVDVF9JTlRFUlNFQ1RTX0JPVEhfV0FZUyhhLCBi
KSBkbyB7IEVYUEVDVF9UUlVFKGludGVyc2VjdHMoYSwgYikpOyBFWFBFQ1RfVFJVRShpbnRlcnNl
Y3RzKGIsIGEpKTsgfSB3aGlsZSAoMCkKLSNkZWZpbmUgRVhQRUNUX05PVF9JTlRFUlNFQ1RJTkdf
Qk9USF9XQVlTKGEsIGIpIGRvIHsgRVhQRUNUX0ZBTFNFKGludGVyc2VjdHMoYSwgYikpOyBFWFBF
Q1RfRkFMU0UoaW50ZXJzZWN0cyhiLCBhKSk7IH0gd2hpbGUgKDApCi0KIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02NCwxMiArNjAsNyBA
QCBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudCgpCiAgICAgcmV0dXJuIGRvY3Vt
ZW50OwogfQogCi1zdGF0aWMgQm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2ludChOb2RlJiBu
b2RlLCB1bnNpZ25lZCBvZmZzZXQpCi17Ci0gICAgcmV0dXJuIHsgbm9kZSwgb2Zmc2V0IH07Ci19
Ci0KLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBzdHJpbmcoUGFydGlhbE9yZGVyaW5nIG9yZGVyaW5n
KQorc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBzdHJpbmcoUGFydGlhbE9yZGVyaW5nIG9y
ZGVyaW5nKQogewogICAgIGlmIChpc19sdChvcmRlcmluZykpCiAgICAgICAgIHJldHVybiAibGVz
cyI7CkBAIC0xMTUsNyArMTA2LDcgQEAgc3RhdGljIFZlY3RvcjxQb3NpdGlvbj4gYWxsUG9zaXRp
b25UeXBlcyhOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQpCiAgICAgcmV0dXJuIHBvc2l0aW9u
czsKIH0KIAotY29uc3RleHByIGNvbnN0IGNoYXIqIHR5cGVTdHJpbmdTdWZmaXgoY29uc3QgUG9z
aXRpb24mIHBvc2l0aW9uKQorc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiB0eXBlU3RyaW5n
U3VmZml4KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBzd2l0Y2ggKHBvc2l0aW9u
LmFuY2hvclR5cGUoKSkgewogICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvcjoKQEAgLTMwMCwxNjEgKzI5MSw0IEBAIFRFU1QoRG9jdW1lbnRPcmRlciwgUG9zaXRpb25z
KQogICAgIC8vIEZJWE1FOiBBZGQgdGVzdHMgdGhhdCBjb3ZlciBzaGFkb3cgdHJlZXMuCiB9CiAK
LS8vIERpc2FibGVkIHRoaXMgdGVzdCBzaW5jZSBpc1BvaW50SW5SYW5nZSBpcyBub3cgYSB0ZW1w
bGF0ZSBmdW5jdGlvbiBuYW1lZCBjb250YWlucy4KLS8vIEtlZXBpbmcgdGhlIGNvZGUgYXJvdW5k
IHRvIHVzZSBhcyBhIHJlZmVyZW5jZSB3aGVuIHJld3JpdGluZyBpbiBKYXZhU2NyaXB0Ci0jaWYg
MAotCi1URVNUKERvY3VtZW50T3JkZXIsIElzUG9pbnRJblJhbmdlKQotewotICAgIGF1dG8gZG9j
dW1lbnQgPSBjcmVhdGVEb2N1bWVudCgpOwotICAgIGF1dG8mIGRvY3VtZW50RWxlbWVudCA9ICpk
b2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgYXV0byYgYm9keSA9ICpkb2N1bWVudC0+
Ym9keSgpOwotCi0gICAgRVhQRUNUX1RSVUUoaXNQb2ludEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNQb2ludEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDEpKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzUG9pbnRJblJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cyhkb2N1bWVudCksIG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAyKSkpOwotICAgIEVY
UEVDVF9UUlVFKGlzUG9pbnRJblJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhk
b2N1bWVudCksIG1ha2VCb3VuZGFyeVBvaW50KGJvZHksIDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
aXNQb2ludEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSwg
bWFrZUJvdW5kYXJ5UG9pbnQoYm9keSwgMSkpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1BvaW50SW5S
YW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpLCBtYWtlQm91bmRh
cnlQb2ludChib2R5LCAyKSkpOwotICAgIEVYUEVDVF9GQUxTRShpc1BvaW50SW5SYW5nZShtYWtl
U2ltcGxlUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQ
b2ludChkb2N1bWVudEVsZW1lbnQsIDApKSwgbWFrZUJvdW5kYXJ5UG9pbnQoYm9keSwgMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShpc1BvaW50SW5SYW5nZShtYWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5k
YXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQb2ludChib2R5LCAwKSksIG1ha2VC
b3VuZGFyeVBvaW50KGJvZHksIDApKSk7Ci0KLSAgICBhdXRvIGEgPSBIVE1MRGl2RWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNQb2ludEluUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZUJvdW5kYXJ5UG9pbnQoYSwg
MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNQb2ludEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKGJvZHkpLCBtYWtlQm91bmRhcnlQb2ludChhLCAwKSkpOwotCi0gICAgYm9k
eS5hcHBlbmRDaGlsZChhKTsKLSAgICBFWFBFQ1RfVFJVRShpc1BvaW50SW5SYW5nZShtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpLCBtYWtlQm91bmRhcnlQb2ludChhLCAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKGlzUG9pbnRJblJhbmdlKG1ha2VTaW1wbGVSYW5nZShtYWtl
Qm91bmRhcnlQb2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGEsIDApKSwgbWFr
ZUJvdW5kYXJ5UG9pbnQoYSwgMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNQb2ludEluUmFuZ2Uo
bWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAwKSwgbWFrZUJvdW5k
YXJ5UG9pbnQoYm9keSwgMCkpLCBtYWtlQm91bmRhcnlQb2ludChhLCAwKSkpOwotICAgIEVYUEVD
VF9UUlVFKGlzUG9pbnRJblJhbmdlKG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2ludChk
b2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGJvZHksIDEpKSwgbWFrZUJvdW5kYXJ5UG9p
bnQoYSwgMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNQb2ludEluUmFuZ2UobWFrZVNpbXBsZVJh
bmdlKG1ha2VCb3VuZGFyeVBvaW50KGJvZHksIDEpLCBtYWtlQm91bmRhcnlQb2ludChkb2N1bWVu
dCwgMSkpLCBtYWtlQm91bmRhcnlQb2ludChhLCAwKSkpOwotICAgIEVYUEVDVF9UUlVFKGlzUG9p
bnRJblJhbmdlKG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2ludChib2R5LCAwKSwgbWFr
ZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDEpKSwgbWFrZUJvdW5kYXJ5UG9pbnQoYSwgMCkpKTsK
LQotICAgIGF1dG8gYiA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGJv
ZHkuYXBwZW5kQ2hpbGQoYik7Ci0KLSAgICBhdXRvIGMgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKLSAgICBiLT5hcHBlbmRDaGlsZChjKTsKLQotICAgIGF1dG8gZCA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGEtPmFwcGVuZENoaWxkKGQpOwotCi0g
ICAgYXV0byBlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYXV0byBm
ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgZS0+YXBwZW5kQ2hpbGQo
Zik7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzUG9pbnRJblJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05v
ZGVDb250ZW50cyhib2R5KSwgbWFrZUJvdW5kYXJ5UG9pbnQoZiwgMCkpKTsKLQotICAgIGF1dG8g
ZyA9IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYXV0byYgaCA9
ICpnLT5pbm5lclRleHRFbGVtZW50KCk7Ci0gICAgYy0+YXBwZW5kQ2hpbGQoZyk7Ci0gICAgRVhQ
RUNUX1RSVUUoaXNQb2ludEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGJv
ZHkpLCBtYWtlQm91bmRhcnlQb2ludChoLCAwKSkpOwotCi0gICAgLy8gRklYTUU6IEFkZCB0ZXN0
cyB0aGF0IGNvdmVyIHNoYWRvdyB0cmVlcy4KLX0KLQotI2VuZGlmCi0KLVRFU1QoRG9jdW1lbnRP
cmRlciwgUmFuZ2VJbnRlcnNlY3RzUmFuZ2UpCi17Ci0gICAgYXV0byBkb2N1bWVudCA9IGNyZWF0
ZURvY3VtZW50KCk7Ci0gICAgYXV0byYgZG9jdW1lbnRFbGVtZW50ID0gKmRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKTsKLSAgICBhdXRvJiBib2R5ID0gKmRvY3VtZW50LT5ib2R5KCk7Ci0KLSAg
ICBFWFBFQ1RfSU5URVJTRUNUU19TRUxGKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhk
b2N1bWVudCkpOwotICAgIEVYUEVDVF9JTlRFUlNFQ1RTX1NFTEYobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKGRvY3VtZW50RWxlbWVudCkpOwotICAgIEVYUEVDVF9JTlRFUlNFQ1RTX1NF
TEYobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGJvZHkpKTsKLQotICAgIEVYUEVDVF9J
TlRFUlNFQ1RTX0JPVEhfV0FZUyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1l
bnQpLCBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnRFbGVtZW50KSk7Ci0g
ICAgRVhQRUNUX0lOVEVSU0VDVFNfQk9USF9XQVlTKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cyhkb2N1bWVudCksIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhib2R5KSk7Ci0g
ICAgRVhQRUNUX0lOVEVSU0VDVFNfQk9USF9XQVlTKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cyhkb2N1bWVudEVsZW1lbnQpLCBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoYm9k
eSkpOwotCi0gICAgRVhQRUNUX0lOVEVSU0VDVFNfQk9USF9XQVlTKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cyhkb2N1bWVudCksIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhk
b2N1bWVudEVsZW1lbnQpKTsKLQotICAgIEVYUEVDVF9JTlRFUlNFQ1RTX0JPVEhfV0FZUyhtYWtl
UmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnRFbGVtZW50KSwgbWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZUNvbnRlbnRzKGJvZHkpKTsKLQotICAgIEVYUEVDVF9JTlRFUlNFQ1RTX0JPVEhf
V0FZUyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpLCBtYWtlU2ltcGxl
UmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDApKSk7Ci0gICAgRVhQRUNUX0lOVEVS
U0VDVFNfQk9USF9XQVlTKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCks
IG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudCwgMSkpKTsKLSAgICBF
WFBFQ1RfTk9UX0lOVEVSU0VDVElOR19CT1RIX1dBWVMobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKGRvY3VtZW50KSwgbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGRvY3Vt
ZW50LCAyKSkpOwotCi0gICAgRVhQRUNUX0lOVEVSU0VDVFNfQk9USF9XQVlTKG1ha2VTaW1wbGVS
YW5nZShtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGRv
Y3VtZW50LCAyKSksIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCkpOwot
ICAgIEVYUEVDVF9JTlRFUlNFQ1RTX0JPVEhfV0FZUyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoZG9jdW1lbnQpLCBtYWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1l
bnQsIDEpLCBtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudCwgMikpKTsKLQotICAgIEVYUEVDVF9O
T1RfSU5URVJTRUNUSU5HX0JPVEhfV0FZUyhtYWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5kYXJ5UG9p
bnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudEVsZW1lbnQsIDApKSwg
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGJvZHkpKTsKLSAgICBFWFBFQ1RfSU5URVJT
RUNUU19CT1RIX1dBWVMobWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50
LCAwKSwgbWFrZUJvdW5kYXJ5UG9pbnQoYm9keSwgMCkpLCBtYWtlU2ltcGxlUmFuZ2UobWFrZUJv
dW5kYXJ5UG9pbnQoYm9keSwgMCkpKTsKLQotICAgIGF1dG8gYSA9IEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgIEVYUEVDVF9OT1RfSU5URVJTRUNUSU5HX0JPVEhfV0FZUyht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpLCBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlQ29udGVudHMoYSkpOwotCi0gICAgYm9keS5hcHBlbmRDaGlsZChhKTsKLQotICAgIGF1
dG8gYiA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGJvZHkuYXBwZW5k
Q2hpbGQoYik7Ci0KLSAgICBhdXRvIGMgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKLSAgICBiLT5hcHBlbmRDaGlsZChjKTsKLQotICAgIGF1dG8gZCA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGEtPmFwcGVuZENoaWxkKGQpOwotCi0gICAgYXV0byBl
ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYXV0byBmID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgZS0+YXBwZW5kQ2hpbGQoZik7Ci0gICAg
RVhQRUNUX05PVF9JTlRFUlNFQ1RJTkdfQk9USF9XQVlTKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyhib2R5KSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGYpKTsKLQotICAg
IGF1dG8gZyA9IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYXV0
byYgaCA9ICpnLT5pbm5lclRleHRFbGVtZW50KCk7Ci0gICAgYy0+YXBwZW5kQ2hpbGQoZyk7Ci0g
ICAgRVhQRUNUX0lOVEVSU0VDVFNfQk9USF9XQVlTKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cyhib2R5KSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGgpKTsKLQotICAgIC8v
IEZJWE1FOiBBZGQgdGVzdHMgdGhhdCBjb3ZlciBzaGFkb3cgdHJlZXMuCi19Ci0KLVRFU1QoRG9j
dW1lbnRPcmRlciwgUmFuZ2VJbnRlcnNlY3RzTm9kZSkKLXsKLSAgICBhdXRvIGRvY3VtZW50ID0g
Y3JlYXRlRG9jdW1lbnQoKTsKLSAgICBhdXRvJiBkb2N1bWVudEVsZW1lbnQgPSAqZG9jdW1lbnQt
PmRvY3VtZW50RWxlbWVudCgpOwotICAgIGF1dG8mIGJvZHkgPSAqZG9jdW1lbnQtPmJvZHkoKTsK
LQotICAgIEVYUEVDVF9UUlVFKGludGVyc2VjdHMobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKGRvY3VtZW50KSwgZG9jdW1lbnRFbGVtZW50KSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50ZXJz
ZWN0cyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpLCBib2R5KSk7Ci0g
ICAgRVhQRUNUX1RSVUUoaW50ZXJzZWN0cyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
ZG9jdW1lbnRFbGVtZW50KSwgYm9keSkpOwotCi0gICAgRVhQRUNUX1RSVUUoaW50ZXJzZWN0cyht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpLCBkb2N1bWVudCkpOwotICAg
IEVYUEVDVF9UUlVFKGludGVyc2VjdHMobWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50
KGRvY3VtZW50LCAwKSwgbWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDIpKSwgZG9jdW1lbnQp
KTsKLSAgICBFWFBFQ1RfRkFMU0UoaW50ZXJzZWN0cyhtYWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5k
YXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudEVsZW1lbnQs
IDApKSwgYm9keSkpOwotICAgIEVYUEVDVF9GQUxTRShpbnRlcnNlY3RzKG1ha2VTaW1wbGVSYW5n
ZShtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudEVsZW1lbnQsIDEpLCBtYWtlQm91bmRhcnlQb2lu
dChkb2N1bWVudCwgMSkpLCBib2R5KSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50ZXJzZWN0cyhtYWtl
U2ltcGxlUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQ
b2ludChib2R5LCAwKSksIGJvZHkpKTsKLSAgICBFWFBFQ1RfVFJVRShpbnRlcnNlY3RzKG1ha2VT
aW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBv
aW50KGJvZHksIDEpKSwgYm9keSkpOwotICAgIEVYUEVDVF9UUlVFKGludGVyc2VjdHMobWFrZVNp
bXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAwKSwgbWFrZUJvdW5kYXJ5UG9p
bnQoZG9jdW1lbnRFbGVtZW50LCAxKSksIGJvZHkpKTsKLQotICAgIGF1dG8gYSA9IEhUTUxEaXZF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIEVYUEVDVF9GQUxTRShpbnRlcnNlY3RzKG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIGEpKTsKLQotICAgIGJvZHku
YXBwZW5kQ2hpbGQoYSk7Ci0KLSAgICBhdXRvIGIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKLSAgICBib2R5LmFwcGVuZENoaWxkKGIpOwotCi0gICAgYXV0byBjID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYi0+YXBwZW5kQ2hpbGQoYyk7Ci0KLSAg
ICBhdXRvIGQgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBhLT5hcHBl
bmRDaGlsZChkKTsKLQotICAgIGF1dG8gZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwotICAgIGF1dG8gZiA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAg
IGUtPmFwcGVuZENoaWxkKGYpOwotICAgIEVYUEVDVF9GQUxTRShpbnRlcnNlY3RzKG1ha2VSYW5n
ZVNlbGVjdGluZ05vZGVDb250ZW50cyhib2R5KSwgZSkpOwotICAgIEVYUEVDVF9UUlVFKGludGVy
c2VjdHMobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGYpLCBlKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKGludGVyc2VjdHMobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGJvZHkpLCBm
KSk7Ci0KLSAgICBhdXRvIGcgPSBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgIGF1dG8mIGggPSAqZy0+aW5uZXJUZXh0RWxlbWVudCgpOwotICAgIGMtPmFwcGVuZENo
aWxkKGcpOwotICAgIEVYUEVDVF9UUlVFKGludGVyc2VjdHMobWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKGJvZHkpLCBoKSk7Ci0KLSAgICAvLyBGSVhNRTogQWRkIHRlc3RzIHRoYXQgY292
ZXIgc2hhZG93IHRyZWVzLgotfQotCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMzNlODMwMWUwYmU1NjA5NmQxZGJlZGUyYjQzZmU2OTY4YjQ1ZmRhNi4uY2NhMDM4ZWY4ODIy
ZDllZDZlYzY0NzM2MmQ5MWMwYTc0MjAyMjlkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIw
LTExLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
YW5vdGhlciBmdW5jdGlvbiB0aGF0IGltcGxpY2l0bHkgdXNlcyB0aGUgY29tcG9zZWQgdHJlZSAo
aW50ZXJzZWN0cyB3aXRoIHJhbmdlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9yYW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3JhbmdlQ29udGFpbnNCb3VuZGFy
eVBvaW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3JhbmdlSW50ZXJzZWN0c05v
ZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yYW5nZUludGVyc2Vj
dHNOb2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3JhbmdlSW50ZXJzZWN0c1Jh
bmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmFuZ2VJbnRlcnNl
Y3RzUmFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgIFRoZXNlIHRlc3RzIHdlcmUgZm9ybWVybHkg
cGFydCBvZiBUZXN0V2ViS2l0QVBJLiBNb3ZpbmcgdG8gaW50ZXJuYWxzLXN0eWxlIHRlc3RzIGF0
CisgICAgICAgIFJ5b3N1a2UncyBzdWdnZXN0aW9uIHNpbmNlIHRoZXNlIGFyZSBub3Qgc29tZXRo
aW5nIGV4cG9zZWQgYXMgQVBJIG9yIFNQSS4KKwogMjAyMC0xMS0xMCAgUnlhbiBIYWRkYWQgIDxy
eWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBbRGVidWddIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9wYXRoLW9iamVjdHMvMmQucGF0aC5l
bGxpcHNlLmJhc2ljcy5odG1sIGlzIGFzc2VydGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vcmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJmNTg3ODQwMmY1YjJhNDJkM2M4ZWYzNzZkNzM2N2NlNjBmOGIxYjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yYW5nZUNvbnRhaW5zQm91bmRhcnlQ
b2ludC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGVzdCB0aGUgY29udGFpbnMgZnVu
Y3Rpb24gdGhhdCBjaGVja3MgaWYgYSByYW5nZSBjb250YWlucyBhIGJvdW5kYXJ5IHBvaW50Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBib2R5LmNoaWxkTm9kZXMubGVu
Z3RoIGlzIDQKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50KGNvbnRl
bnRzUmFuZ2UoZG9jdW1lbnQpLCBkb2N1bWVudCwgMCwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUK
K1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50KGNvbnRlbnRzUmFuZ2Uo
ZG9jdW1lbnQpLCBkb2N1bWVudCwgMSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50
ZXJuYWxzLnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50KGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQp
LCBkb2N1bWVudCwgMiwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5y
YW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludChjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgYm9keSwg
MCwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNC
b3VuZGFyeVBvaW50KGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBib2R5LCAxLCAnQ29tcG9zZWRU
cmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQo
Y29udGVudHNSYW5nZShkb2N1bWVudCksIGJvZHksIDEwLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1
ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQocmFuZ2UoZG9jdW1l
bnQsIDAsIGRvY3VtZW50RWxlbWVudCwgMCksIGJvZHksIDAsICdDb21wb3NlZFRyZWUnKSBpcyBm
YWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQocmFuZ2UoZG9j
dW1lbnQsIDAsIGJvZHksIDApLCBib2R5LCAwLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFT
UyBpbnRlcm5hbHMucmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQoY29udGVudHNSYW5nZShkb2N1
bWVudCksIGEsIDAsICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFu
Z2VDb250YWluc0JvdW5kYXJ5UG9pbnQoY29udGVudHNSYW5nZShib2R5KSwgYSwgMCwgJ0NvbXBv
c2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRhcnlQ
b2ludChjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgYSwgMCwgJ0NvbXBvc2VkVHJlZScpIGlzIHRy
dWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50KHJhbmdlKGRvY3Vt
ZW50LCAwLCBhLCAwKSwgYSwgMCwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJu
YWxzLnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50KHJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAw
KSwgYSwgMCwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNv
bnRhaW5zQm91bmRhcnlQb2ludChyYW5nZShkb2N1bWVudCwgMCwgYm9keSwgNSksIGEsIDAsICdD
b21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRh
cnlQb2ludChyYW5nZShib2R5LCA1LCBkb2N1bWVudCwgMSksIGEsIDAsICdDb21wb3NlZFRyZWUn
KSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQocmFu
Z2UoYm9keSwgMCwgZG9jdW1lbnQsIDEpLCBhLCAwLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQor
UEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQoY29udGVudHNSYW5nZShi
b2R5KSwgZiwgMCwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5n
ZUNvbnRhaW5zQm91bmRhcnlQb2ludChjb250ZW50c1JhbmdlKGJvZHkpLCBoLCAwLCAnQ29tcG9z
ZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFp
bnNCb3VuZGFyeVBvaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yYW5nZUNvbnRhaW5z
Qm91bmRhcnlQb2ludC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2Yzg4NjdiYjZmMTQ3MTIyOGYxNDUyZjFk
YWZhYzA2ODA2NjdlZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9y
YW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludC5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzxodG1sPjxi
b2R5PjxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+PHNj
cmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgdGhlIGNvbnRhaW5zIGZ1bmN0aW9uIHRoYXQgY2hl
Y2tzIGlmIGEgcmFuZ2UgY29udGFpbnMgYSBib3VuZGFyeSBwb2ludC4iKQorCitmdW5jdGlvbiBy
YW5nZShzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0
KQoreworICAgIHJldHVybiBuZXcgU3RhdGljUmFuZ2UoeyBzdGFydENvbnRhaW5lcjogc3RhcnRD
b250YWluZXIsIHN0YXJ0T2Zmc2V0OiBzdGFydE9mZnNldCwgZW5kQ29udGFpbmVyOiBlbmRDb250
YWluZXIsIGVuZE9mZnNldDogZW5kT2Zmc2V0IH0pCit9CisKK2Z1bmN0aW9uIGNvbnRlbnRzUmFu
Z2Uobm9kZSkKK3sKKyAgICByZXR1cm4gcmFuZ2Uobm9kZSwgMCwgbm9kZSwgbm9kZS5jaGlsZE5v
ZGVzLmxlbmd0aCkKK30KKworbGV0IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudDsKK2xldCBib2R5ID0gZG9jdW1lbnQuYm9keTsKKworc2hvdWxkQmUoImJvZHkuY2hp
bGROb2Rlcy5sZW5ndGgiLCAiNCIpCisKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29u
dGFpbnNCb3VuZGFyeVBvaW50KGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBkb2N1bWVudCwgMCwg
J0NvbXBvc2VkVHJlZScpIikKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNC
b3VuZGFyeVBvaW50KGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBkb2N1bWVudCwgMSwgJ0NvbXBv
c2VkVHJlZScpIikKK3Nob3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRh
cnlQb2ludChjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgZG9jdW1lbnQsIDIsICdDb21wb3NlZFRy
ZWUnKSIpCitzaG91bGRCZVRydWUoImludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRhcnlQb2lu
dChjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgYm9keSwgMCwgJ0NvbXBvc2VkVHJlZScpIik7Citz
aG91bGRCZVRydWUoImludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludChjb250ZW50
c1JhbmdlKGRvY3VtZW50KSwgYm9keSwgMSwgJ0NvbXBvc2VkVHJlZScpIik7CitzaG91bGRCZVRy
dWUoImludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludChjb250ZW50c1JhbmdlKGRv
Y3VtZW50KSwgYm9keSwgMTAsICdDb21wb3NlZFRyZWUnKSIpOworc2hvdWxkQmVGYWxzZSgiaW50
ZXJuYWxzLnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50KHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1
bWVudEVsZW1lbnQsIDApLCBib2R5LCAwLCAnQ29tcG9zZWRUcmVlJykiKTsKK3Nob3VsZEJlVHJ1
ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50KHJhbmdlKGRvY3VtZW50LCAw
LCBib2R5LCAwKSwgYm9keSwgMCwgJ0NvbXBvc2VkVHJlZScpIik7CisKK2xldCBhID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK3Nob3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNv
bnRhaW5zQm91bmRhcnlQb2ludChjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgYSwgMCwgJ0NvbXBv
c2VkVHJlZScpIikKK3Nob3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRh
cnlQb2ludChjb250ZW50c1JhbmdlKGJvZHkpLCBhLCAwLCAnQ29tcG9zZWRUcmVlJykiKQorCiti
b2R5LmFwcGVuZENoaWxkKGEpCitzaG91bGRCZVRydWUoImludGVybmFscy5yYW5nZUNvbnRhaW5z
Qm91bmRhcnlQb2ludChjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgYSwgMCwgJ0NvbXBvc2VkVHJl
ZScpIikKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNCb3VuZGFyeVBvaW50
KHJhbmdlKGRvY3VtZW50LCAwLCBhLCAwKSwgYSwgMCwgJ0NvbXBvc2VkVHJlZScpIikKK3Nob3Vs
ZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludChyYW5nZShkb2N1
bWVudCwgMCwgYm9keSwgMCksIGEsIDAsICdDb21wb3NlZFRyZWUnKSIpCitzaG91bGRCZVRydWUo
ImludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludChyYW5nZShkb2N1bWVudCwgMCwg
Ym9keSwgNSksIGEsIDAsICdDb21wb3NlZFRyZWUnKSIpCitzaG91bGRCZUZhbHNlKCJpbnRlcm5h
bHMucmFuZ2VDb250YWluc0JvdW5kYXJ5UG9pbnQocmFuZ2UoYm9keSwgNSwgZG9jdW1lbnQsIDEp
LCBhLCAwLCAnQ29tcG9zZWRUcmVlJykiKQorc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMucmFuZ2VD
b250YWluc0JvdW5kYXJ5UG9pbnQocmFuZ2UoYm9keSwgMCwgZG9jdW1lbnQsIDEpLCBhLCAwLCAn
Q29tcG9zZWRUcmVlJykiKQorCitsZXQgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
Citib2R5LmFwcGVuZENoaWxkKGIpCisKK2xldCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikKK2IuYXBwZW5kQ2hpbGQoYykKKworbGV0IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKQorYS5hcHBlbmRDaGlsZChkKQorCitsZXQgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpCitsZXQgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCitlLmFwcGVu
ZENoaWxkKGYpCitzaG91bGRCZUZhbHNlKCJpbnRlcm5hbHMucmFuZ2VDb250YWluc0JvdW5kYXJ5
UG9pbnQoY29udGVudHNSYW5nZShib2R5KSwgZiwgMCwgJ0NvbXBvc2VkVHJlZScpIikKKworbGV0
IGcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpOworYy5hcHBlbmRDaGlsZChn
KQorbGV0IGggPSBpbnRlcm5hbHMuZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdChnKS5maXJzdENo
aWxkCitzaG91bGRCZVRydWUoImludGVybmFscy5yYW5nZUNvbnRhaW5zQm91bmRhcnlQb2ludChj
b250ZW50c1JhbmdlKGJvZHkpLCBoLCAwLCAnQ29tcG9zZWRUcmVlJykiKQorCis8L3NjcmlwdD4K
KzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yYW5nZUlu
dGVyc2VjdHNOb2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlSW50
ZXJzZWN0c05vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExNWFlYzlkODA0ZWQ1MjczZjY3
ZDQzYmM5YTkxMGUyNmM5NzMzODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9yYW5nZUludGVyc2VjdHNOb2RlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitU
ZXN0IHRoZSBpbnRlcnNlY3RzIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGEgcmFuZ2UgaW50ZXJz
ZWN0cyBhIG5vZGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVy
bmFscy5yYW5nZUludGVyc2VjdHNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBkb2N1bWVu
dEVsZW1lbnQsICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUlu
dGVyc2VjdHNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBib2R5LCAnQ29tcG9zZWRUcmVl
JykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzTm9kZShjb250ZW50c1Jh
bmdlKGRvY3VtZW50RWxlbWVudCksIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNT
IGludGVybmFscy5yYW5nZUludGVyc2VjdHNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBk
b2N1bWVudCwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50
ZXJzZWN0c05vZGUocmFuZ2UoZG9jdW1lbnQsIDAsIGRvY3VtZW50LCAyKSwgZG9jdW1lbnQsICdD
b21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNOb2Rl
KHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudEVsZW1lbnQsIDApLCBib2R5LCAnQ29tcG9zZWRU
cmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c05vZGUocmFuZ2Uo
ZG9jdW1lbnQsIDAsIGRvY3VtZW50RWxlbWVudCwgMSksIGJvZHksICdDb21wb3NlZFRyZWUnKSBp
cyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzTm9kZShyYW5nZShkb2N1bWVu
dCwgMCwgYm9keSwgMCksIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVy
bmFscy5yYW5nZUludGVyc2VjdHNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAxKSwgYm9k
eSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0
c05vZGUocmFuZ2UoZG9jdW1lbnQsIDAsIGRvY3VtZW50RWxlbWVudCwgMiksIGJvZHksICdDb21w
b3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNOb2RlKGNv
bnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBhLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1Mg
aW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c05vZGUoY29udGVudHNSYW5nZShib2R5KSwgZSwgJ0Nv
bXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNOb2Rl
KGNvbnRlbnRzUmFuZ2UoZiksIGUsICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVy
bmFscy5yYW5nZUludGVyc2VjdHNOb2RlKGNvbnRlbnRzUmFuZ2UoYm9keSksIGYsICdDb21wb3Nl
ZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzTm9kZShjb250
ZW50c1JhbmdlKGJvZHkpLCBoLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3JhbmdlSW50ZXJzZWN0c05vZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3JhbmdlSW50ZXJzZWN0c05vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTEwMjdlYzg4MjE5
MDNkMWM5ZmZlZGQyMDkwOGU5OGQwYzE5NTA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmFuZ2VJbnRlcnNlY3RzTm9kZS5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzxo
dG1sPjxoZWFkPjwvaGVhZD48Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCB0aGUgaW50
ZXJzZWN0cyBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBhIHJhbmdlIGludGVyc2VjdHMgYSBub2Rl
LiIpCisKK2Z1bmN0aW9uIHJhbmdlKHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCwgZW5kQ29u
dGFpbmVyLCBlbmRPZmZzZXQpCit7CisgICAgcmV0dXJuIG5ldyBTdGF0aWNSYW5nZSh7IHN0YXJ0
Q29udGFpbmVyOiBzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQ6IHN0YXJ0T2Zmc2V0LCBlbmRD
b250YWluZXI6IGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0OiBlbmRPZmZzZXQgfSkKK30KKworZnVu
Y3Rpb24gY29udGVudHNSYW5nZShub2RlKQoreworICAgIHJldHVybiByYW5nZShub2RlLCAwLCBu
b2RlLCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKQorfQorCitsZXQgZG9jdW1lbnRFbGVtZW50ID0g
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworbGV0IGJvZHkgPSBkb2N1bWVudC5ib2R5OworCitz
aG91bGRCZVRydWUoImludGVybmFscy5yYW5nZUludGVyc2VjdHNOb2RlKGNvbnRlbnRzUmFuZ2Uo
ZG9jdW1lbnQpLCBkb2N1bWVudEVsZW1lbnQsICdDb21wb3NlZFRyZWUnKSIpCitzaG91bGRCZVRy
dWUoImludGVybmFscy5yYW5nZUludGVyc2VjdHNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQp
LCBib2R5LCAnQ29tcG9zZWRUcmVlJykiKTsKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdl
SW50ZXJzZWN0c05vZGUoY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1lbnQpLCBib2R5LCAnQ29t
cG9zZWRUcmVlJykiKTsKKworc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3Rz
Tm9kZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgZG9jdW1lbnQsICdDb21wb3NlZFRyZWUnKSIp
Oworc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzTm9kZShyYW5nZShkb2N1
bWVudCwgMCwgZG9jdW1lbnQsIDIpLCBkb2N1bWVudCwgJ0NvbXBvc2VkVHJlZScpIik7CitzaG91
bGRCZUZhbHNlKCJpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzTm9kZShyYW5nZShkb2N1bWVudCwg
MCwgZG9jdW1lbnRFbGVtZW50LCAwKSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIik7CitzaG91bGRC
ZUZhbHNlKCJpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzTm9kZShyYW5nZShkb2N1bWVudCwgMCwg
ZG9jdW1lbnRFbGVtZW50LCAxKSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIik7CitzaG91bGRCZVRy
dWUoImludGVybmFscy5yYW5nZUludGVyc2VjdHNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBib2R5
LCAwKSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIik7CitzaG91bGRCZVRydWUoImludGVybmFscy5y
YW5nZUludGVyc2VjdHNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAxKSwgYm9keSwgJ0Nv
bXBvc2VkVHJlZScpIik7CitzaG91bGRCZVRydWUoImludGVybmFscy5yYW5nZUludGVyc2VjdHNO
b2RlKHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudEVsZW1lbnQsIDIpLCBib2R5LCAnQ29tcG9z
ZWRUcmVlJykiKTsKKworbGV0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorc2hv
dWxkQmVGYWxzZSgiaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c05vZGUoY29udGVudHNSYW5nZShk
b2N1bWVudCksIGEsICdDb21wb3NlZFRyZWUnKSIpCisKK2JvZHkuYXBwZW5kQ2hpbGQoYSkKKwor
bGV0IGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorYm9keS5hcHBlbmRDaGlsZChi
KQorCitsZXQgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCitiLmFwcGVuZENoaWxk
KGMpCisKK2xldCBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2EuYXBwZW5kQ2hp
bGQoZCkKKworbGV0IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorbGV0IGYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorZS5hcHBlbmRDaGlsZChmKQorc2hvdWxkQmVG
YWxzZSgiaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c05vZGUoY29udGVudHNSYW5nZShib2R5KSwg
ZSwgJ0NvbXBvc2VkVHJlZScpIikKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlSW50ZXJz
ZWN0c05vZGUoY29udGVudHNSYW5nZShmKSwgZSwgJ0NvbXBvc2VkVHJlZScpIikKK3Nob3VsZEJl
RmFsc2UoImludGVybmFscy5yYW5nZUludGVyc2VjdHNOb2RlKGNvbnRlbnRzUmFuZ2UoYm9keSks
IGYsICdDb21wb3NlZFRyZWUnKSIpCisKK2xldCBnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dGV4dGFyZWEiKTsKK2MuYXBwZW5kQ2hpbGQoZykKK2xldCBoID0gaW50ZXJuYWxzLmVuc3VyZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoZykuZmlyc3RDaGlsZAorc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMu
cmFuZ2VJbnRlcnNlY3RzTm9kZShjb250ZW50c1JhbmdlKGJvZHkpLCBoLCAnQ29tcG9zZWRUcmVl
JykiKQorCis8L3NjcmlwdD4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9yYW5nZUludGVyc2VjdHNSYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9yYW5nZUludGVyc2VjdHNSYW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzhiNDNjNGQ3ZjZjMDc3NDFhZWZkZjc1MmU5NTUyZDIzNDhjMTg1NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlSW50ZXJzZWN0c1JhbmdlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQyIEBACitUZXN0IHRoZSBpbnRlcnNlY3RzIGZ1bmN0aW9uIHRoYXQgY2hl
Y2tzIGlmIGEgcmFuZ2UgaW50ZXJzZWN0cyBhbm90aGVyIHJhbmdlLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoY29u
dGVudHNSYW5nZShkb2N1bWVudCksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRU
cmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoY29udGVu
dHNSYW5nZShkb2N1bWVudEVsZW1lbnQpLCBjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCks
ICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNS
YW5nZShjb250ZW50c1JhbmdlKGJvZHkpLCBjb250ZW50c1JhbmdlKGJvZHkpLCAnQ29tcG9zZWRU
cmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoY29udGVu
dHNSYW5nZShkb2N1bWVudCksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50KSwgJ0NvbXBv
c2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1JhbmdlKGNv
bnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50KSwgY29udGVudHNSYW5nZShkb2N1bWVudCksICdD
b21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNSYW5n
ZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgY29udGVudHNSYW5nZShib2R5KSwgJ0NvbXBvc2Vk
VHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1JhbmdlKGNvbnRl
bnRzUmFuZ2UoYm9keSksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRUcmVlJykg
aXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoY29udGVudHNSYW5n
ZShkb2N1bWVudEVsZW1lbnQpLCBjb250ZW50c1JhbmdlKGJvZHkpLCAnQ29tcG9zZWRUcmVlJykg
aXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoY29udGVudHNSYW5n
ZShib2R5KSwgY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1lbnQpLCAnQ29tcG9zZWRUcmVlJykg
aXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoY29udGVudHNSYW5n
ZShkb2N1bWVudCksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50KSwgJ0NvbXBvc2VkVHJl
ZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1JhbmdlKGNvbnRlbnRz
UmFuZ2UoZG9jdW1lbnRFbGVtZW50KSwgY29udGVudHNSYW5nZShkb2N1bWVudCksICdDb21wb3Nl
ZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNSYW5nZShjb250
ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCksIGNvbnRlbnRzUmFuZ2UoYm9keSksICdDb21wb3Nl
ZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNSYW5nZShjb250
ZW50c1JhbmdlKGJvZHkpLCBjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCksICdDb21wb3Nl
ZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNSYW5nZShjb250
ZW50c1JhbmdlKGRvY3VtZW50KSwgY29sbGFwc2VkUmFuZ2UoZG9jdW1lbnQsIDApLCAnQ29tcG9z
ZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoY29s
bGFwc2VkUmFuZ2UoZG9jdW1lbnQsIDApLCBjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgJ0NvbXBv
c2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1JhbmdlKGNv
bnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwgMSksICdDb21w
b3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNSYW5nZShj
b2xsYXBzZWRSYW5nZShkb2N1bWVudCwgMSksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29t
cG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2Uo
Y29udGVudHNSYW5nZShkb2N1bWVudCksIGNvbGxhcHNlZFJhbmdlKGRvY3VtZW50LCAyKSwgJ0Nv
bXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNSYW5n
ZShjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwgMiksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAn
Q29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1Jh
bmdlKHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudCwgMiksIGNvbnRlbnRzUmFuZ2UoZG9jdW1l
bnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNl
Y3RzUmFuZ2UoY29udGVudHNSYW5nZShkb2N1bWVudCksIHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1
bWVudCwgMiksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUlu
dGVyc2VjdHNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgcmFuZ2UoZG9jdW1lbnQsIDEs
IGRvY3VtZW50LCAyKSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJh
bmdlSW50ZXJzZWN0c1JhbmdlKHJhbmdlKGRvY3VtZW50LCAxLCBkb2N1bWVudCwgMiksIGNvbnRl
bnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5h
bHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UocmFuZ2UoZG9jdW1lbnQsIDAsIGRvY3VtZW50RWxlbWVu
dCwgMCksIGNvbnRlbnRzUmFuZ2UoYm9keSksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFT
UyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoY29udGVudHNSYW5nZShib2R5KSwgcmFu
Z2UoZG9jdW1lbnQsIDAsIGRvY3VtZW50RWxlbWVudCwgMCksICdDb21wb3NlZFRyZWUnKSBpcyBm
YWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UocmFuZ2UoZG9jdW1lbnQs
IDAsIGJvZHksIDApLCBjb2xsYXBzZWRSYW5nZShib2R5LCAwKSwgJ0NvbXBvc2VkVHJlZScpIGlz
IHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1JhbmdlKGNvbGxhcHNlZFJhbmdl
KGJvZHksIDApLCByYW5nZShkb2N1bWVudCwgMCwgYm9keSwgMCksICdDb21wb3NlZFRyZWUnKSBp
cyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNSYW5nZShjb250ZW50c1Jhbmdl
KGRvY3VtZW50KSwgY29udGVudHNSYW5nZShhKSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQ
QVNTIGludGVybmFscy5yYW5nZUludGVyc2VjdHNSYW5nZShjb250ZW50c1JhbmdlKGEpLCBjb250
ZW50c1JhbmdlKGRvY3VtZW50KSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVy
bmFscy5yYW5nZUludGVyc2VjdHNSYW5nZShjb250ZW50c1JhbmdlKGJvZHkpLCBjb250ZW50c1Jh
bmdlKGYpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50
ZXJzZWN0c1JhbmdlKGNvbnRlbnRzUmFuZ2UoZiksIGNvbnRlbnRzUmFuZ2UoYm9keSksICdDb21w
b3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2Uo
Y29udGVudHNSYW5nZShib2R5KSwgY29udGVudHNSYW5nZShoKSwgJ0NvbXBvc2VkVHJlZScpIGlz
IHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1JhbmdlKGNvbnRlbnRzUmFuZ2Uo
aCksIGNvbnRlbnRzUmFuZ2UoYm9keSksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vcmFuZ2VJbnRlcnNlY3RzUmFuZ2UuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3JhbmdlSW50ZXJzZWN0c1JhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY3NzM0
YTZjMjAwNTFlNTNlNDJjNzcyOGJiZjZkMzZhNGIwYzliOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlSW50ZXJzZWN0c1JhbmdlLmh0bWwKQEAgLTAsMCArMSw4
OSBAQAorPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IHRoZSBpbnRlcnNlY3RzIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGEgcmFuZ2UgaW50ZXJzZWN0
cyBhbm90aGVyIHJhbmdlLiIpCisKK2Z1bmN0aW9uIHJhbmdlKHN0YXJ0Q29udGFpbmVyLCBzdGFy
dE9mZnNldCwgZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQpCit7CisgICAgcmV0dXJuIG5ldyBTdGF0
aWNSYW5nZSh7IHN0YXJ0Q29udGFpbmVyOiBzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQ6IHN0
YXJ0T2Zmc2V0LCBlbmRDb250YWluZXI6IGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0OiBlbmRPZmZz
ZXQgfSkKK30KKworZnVuY3Rpb24gY29sbGFwc2VkUmFuZ2UoY29udGFpbmVyLCBvZmZzZXQpCit7
CisgICAgcmV0dXJuIHJhbmdlKGNvbnRhaW5lciwgb2Zmc2V0LCBjb250YWluZXIsIG9mZnNldCkK
K30KKworZnVuY3Rpb24gY29udGVudHNSYW5nZShub2RlKQoreworICAgIHJldHVybiByYW5nZShu
b2RlLCAwLCBub2RlLCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKQorfQorCitmdW5jdGlvbiBzaG91
bGRJbnRlcnNlY3RTZWxmKGEpCit7CisgICAgc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMucmFuZ2VJ
bnRlcnNlY3RzUmFuZ2UoIiArIGEgKyAiLCAiICsgYSArICIsICdDb21wb3NlZFRyZWUnKSIpCit9
CisKK2Z1bmN0aW9uIHNob3VsZEludGVyc2VjdChhLCBiKQoreworICAgIHNob3VsZEJlVHJ1ZSgi
aW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1JhbmdlKCIgKyBhICsgIiwgIiArIGIgKyAiLCAnQ29t
cG9zZWRUcmVlJykiKQorICAgIHNob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0
c1JhbmdlKCIgKyBiICsgIiwgIiArIGEgKyAiLCAnQ29tcG9zZWRUcmVlJykiKQorfQorCitmdW5j
dGlvbiBzaG91bGROb3RJbnRlcnNlY3QoYSwgYikKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJpbnRl
cm5hbHMucmFuZ2VJbnRlcnNlY3RzUmFuZ2UoIiArIGEgKyAiLCAiICsgYiArICIsICdDb21wb3Nl
ZFRyZWUnKSIpCisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLnJhbmdlSW50ZXJzZWN0c1Jh
bmdlKCIgKyBiICsgIiwgIiArIGEgKyAiLCAnQ29tcG9zZWRUcmVlJykiKQorfQorCitsZXQgZG9j
dW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworbGV0IGJvZHkgPSBkb2N1
bWVudC5ib2R5OworCitzaG91bGRJbnRlcnNlY3RTZWxmKCJjb250ZW50c1JhbmdlKGRvY3VtZW50
KSIpCitzaG91bGRJbnRlcnNlY3RTZWxmKCJjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCki
KQorc2hvdWxkSW50ZXJzZWN0U2VsZigiY29udGVudHNSYW5nZShib2R5KSIpCisKK3Nob3VsZElu
dGVyc2VjdCgiY29udGVudHNSYW5nZShkb2N1bWVudCkiLCAiY29udGVudHNSYW5nZShkb2N1bWVu
dEVsZW1lbnQpIikKK3Nob3VsZEludGVyc2VjdCgiY29udGVudHNSYW5nZShkb2N1bWVudCkiLCAi
Y29udGVudHNSYW5nZShib2R5KSIpCitzaG91bGRJbnRlcnNlY3QoImNvbnRlbnRzUmFuZ2UoZG9j
dW1lbnRFbGVtZW50KSIsICJjb250ZW50c1JhbmdlKGJvZHkpIikKKworc2hvdWxkSW50ZXJzZWN0
KCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVu
dCkiKQorCitzaG91bGRJbnRlcnNlY3QoImNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50KSIs
ICJjb250ZW50c1JhbmdlKGJvZHkpIikKKworc2hvdWxkSW50ZXJzZWN0KCJjb250ZW50c1Jhbmdl
KGRvY3VtZW50KSIsICJjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwgMCkiKQorc2hvdWxkSW50ZXJz
ZWN0KCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwg
MSkiKQorc2hvdWxkTm90SW50ZXJzZWN0KCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb2xs
YXBzZWRSYW5nZShkb2N1bWVudCwgMikiKQorCitzaG91bGRJbnRlcnNlY3QoInJhbmdlKGRvY3Vt
ZW50LCAwLCBkb2N1bWVudCwgMikiLCAiY29udGVudHNSYW5nZShkb2N1bWVudCkiKQorc2hvdWxk
SW50ZXJzZWN0KCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJyYW5nZShkb2N1bWVudCwgMSwg
ZG9jdW1lbnQsIDIpIikKKworc2hvdWxkTm90SW50ZXJzZWN0KCJyYW5nZShkb2N1bWVudCwgMCwg
ZG9jdW1lbnRFbGVtZW50LCAwKSIsICJjb250ZW50c1JhbmdlKGJvZHkpIikKK3Nob3VsZEludGVy
c2VjdCgicmFuZ2UoZG9jdW1lbnQsIDAsIGJvZHksIDApIiwgImNvbGxhcHNlZFJhbmdlKGJvZHks
IDApIikKKworbGV0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorc2hvdWxkTm90
SW50ZXJzZWN0KCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb250ZW50c1JhbmdlKGEpIikK
KworYm9keS5hcHBlbmRDaGlsZChhKQorCitsZXQgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpCitib2R5LmFwcGVuZENoaWxkKGIpCisKK2xldCBjID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IikKK2IuYXBwZW5kQ2hpbGQoYykKKworbGV0IGQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKQorYS5hcHBlbmRDaGlsZChkKQorCitsZXQgZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpCitsZXQgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCitl
LmFwcGVuZENoaWxkKGYpCitzaG91bGROb3RJbnRlcnNlY3QoImNvbnRlbnRzUmFuZ2UoYm9keSki
LCAiY29udGVudHNSYW5nZShmKSIpCisKK2xldCBnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dGV4dGFyZWEiKTsKK2MuYXBwZW5kQ2hpbGQoZykKK2xldCBoID0gaW50ZXJuYWxzLmVuc3VyZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoZykuZmlyc3RDaGlsZAorc2hvdWxkSW50ZXJzZWN0KCJjb250ZW50
c1JhbmdlKGJvZHkpIiwgImNvbnRlbnRzUmFuZ2UoaCkiKQorCis8L3NjcmlwdD4KKzwvYm9keT48
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>