<?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>215002</bug_id>
          
          <creation_ts>2020-07-30 19:19:26 -0700</creation_ts>
          <short_desc>It would be nice if the predicate taking functions in ParsingUtilities.h didn&apos;t require specifying the character type</short_desc>
          <delta_ts>2020-07-30 20:49:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mkwst</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676685</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-30 19:19:26 -0700</bug_when>
    <thetext>It would be nice if the predicate taking functions in ParsingUtilities.h didn&apos;t require specifying the character type. For example, instead of typing:

     skipUntil&lt;CharacterType, isASCII&gt;(buffer);

it would be nicer if we could write:

     skipUntil&lt;isASCII&gt;(buffer);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676686</commentid>
    <comment_count>1</comment_count>
      <attachid>405652</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-30 19:34:08 -0700</bug_when>
    <thetext>Created attachment 405652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676698</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-30 20:44:14 -0700</bug_when>
    <thetext>Committed r265129: &lt;https://trac.webkit.org/changeset/265129&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405652.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676699</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-30 20:45:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/66362301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676701</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-30 20:49:00 -0700</bug_when>
    <thetext>Wouldn&apos;t it be nice!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405652</attachid>
            <date>2020-07-30 19:34:08 -0700</date>
            <delta_ts>2020-07-30 20:44:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215002-20200730193407.patch</filename>
            <type>text/plain</type>
            <size>35127</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NTEyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA3LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBJdCB3b3VsZCBiZSBuaWNlIGlmIHRo
ZSBwcmVkaWNhdGUgdGFraW5nIGZ1bmN0aW9ucyBpbiBQYXJzaW5nVXRpbGl0aWVzLmggZGlkbid0
IHJlcXVpcmUgc3BlY2lmeWluZyB0aGUgY2hhcmFjdGVyIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTAwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgbmVlZCBmb3Igc3BlY2lm
eWluZyB0aGUgY2hhcmFjdGVyIHR5cGUgYnkgcHJvdmlkaW5nIG92ZXJsb2FkcyBmb3IgTENoYXIg
YW5kIFVDaGFyCisgICAgICAgIGV4cGxpY2l0bHkuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MU3Jjc2V0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSW1hZ2VDYW5kaWRh
dGVzRnJvbVNyY3NldEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvUGFyc2luZ1V0
aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVyUHJlZGljYXRlKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1ZUVFNjYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNoYXJhY3Rl
clByZWRpY2F0ZSk6CisgICAgICAgICogbG9hZGVyL0xpbmtIZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZFVSTEJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZFBh
cmFtZXRlckRlbGltaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVBhcmFtZXRlckRlbGlt
aXRlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVBhcmFtZXRlck5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6c2tpcFF1b3Rlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUGFy
YW1ldGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZE5leHRIZWFkZXIpOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0SW1wbCk6CisgICAgICAgICogbG9hZGVyL1N1
YnJlc291cmNlSW50ZWdyaXR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNwbGl0T25TcGFjZXMp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Qp
OgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6cGFyc2VEaXJlY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6cGFyc2VSZXBvcnRVUkkpOgorICAgICAgICAqIHBhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmU6OnBhcnNlKToKKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzU291cmNlTGlzdE5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTY2hlbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VI
b3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6
OnBhcnNlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0OjpwYXJzZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdDo6cGFyc2VOb25jZVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vRGF0
ZUNvbXBvbmVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291bnREaWdpdHMpOgorICAgICAg
ICAqIHN2Zy9TVkdMZW5ndGhMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExp
c3Q6OnBhcnNlKToKKyAgICAgICAgKiBzdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdlbmVyaWNQYXJzZU51bWJlcik6CisgICAgICAgICogc3ZnL1NWR1BhcnNl
clV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6c2tpcE9wdGlvbmFsU1ZHU3BhY2VzKToK
KwogMjAyMC0wNy0zMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
Q29udmVydCBEYXRlQ29tcG9uZW50cyB0byB1c2UgU3RyaW5nUGFyc2luZ0J1ZmZlcgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAJKHJl
dmlzaW9uIDI2NTEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIFZlY3Rv
cjxJbWFnZUNhbmRpZGF0ZT4gcGFyc2VJbWFnZQogCiAgICAgZm9yIChjb25zdCBDaGFyVHlwZSog
cG9zaXRpb24gPSBhdHRyaWJ1dGVTdGFydDsgcG9zaXRpb24gPCBhdHRyaWJ1dGVFbmQ7KSB7CiAg
ICAgICAgIC8vIDQuIFNwbGl0dGluZyBsb29wOiBDb2xsZWN0IGEgc2VxdWVuY2Ugb2YgY2hhcmFj
dGVycyB0aGF0IGFyZSBzcGFjZSBjaGFyYWN0ZXJzIG9yIFUrMDAyQyBDT01NQSBjaGFyYWN0ZXJz
LgotICAgICAgICBza2lwV2hpbGU8Q2hhclR5cGUsIGlzSFRNTFNwYWNlT3JDb21tYTxDaGFyVHlw
ZT4gPihwb3NpdGlvbiwgYXR0cmlidXRlRW5kKTsKKyAgICAgICAgc2tpcFdoaWxlPGlzSFRNTFNw
YWNlT3JDb21tYT4ocG9zaXRpb24sIGF0dHJpYnV0ZUVuZCk7CiAgICAgICAgIGlmIChwb3NpdGlv
biA9PSBhdHRyaWJ1dGVFbmQpIHsKICAgICAgICAgICAgIC8vIENvbnRyYXJ5IHRvIHNwZWMgbGFu
Z3VhZ2UgLSBkZXNjcmlwdG9yIHBhcnNpbmcgaGFwcGVucyBvbiBlYWNoIGNhbmRpZGF0ZSwgc28g
d2hlbiB3ZSByZWFjaCB0aGUgYXR0cmlidXRlRW5kLCB3ZSBjYW4gZXhpdC4KICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBWZWN0b3I8SW1hZ2VDYW5kaWRhdGU+
IHBhcnNlSW1hZ2UKICAgICAgICAgY29uc3QgQ2hhclR5cGUqIGltYWdlVVJMU3RhcnQgPSBwb3Np
dGlvbjsKICAgICAgICAgLy8gNi4gQ29sbGVjdCBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhh
dCBhcmUgbm90IHNwYWNlIGNoYXJhY3RlcnMsIGFuZCBsZXQgdGhhdCBiZSB1cmwuCiAKLSAgICAg
ICAgc2tpcFVudGlsPENoYXJUeXBlLCBpc0hUTUxTcGFjZTxDaGFyVHlwZT4gPihwb3NpdGlvbiwg
YXR0cmlidXRlRW5kKTsKKyAgICAgICAgc2tpcFVudGlsPGlzSFRNTFNwYWNlPihwb3NpdGlvbiwg
YXR0cmlidXRlRW5kKTsKICAgICAgICAgY29uc3QgQ2hhclR5cGUqIGltYWdlVVJMRW5kID0gcG9z
aXRpb247CiAKICAgICAgICAgRGVzY3JpcHRvclBhcnNpbmdSZXN1bHQgcmVzdWx0OwpAQCAtMTg3
LDEzICsxODcsMTMgQEAgc3RhdGljIFZlY3RvcjxJbWFnZUNhbmRpZGF0ZT4gcGFyc2VJbWFnZQog
ICAgICAgICBpZiAoaXNDb21tYSgqKHBvc2l0aW9uIC0gMSkpKSB7CiAgICAgICAgICAgICAvLyBS
ZW1vdmUgYWxsIHRyYWlsaW5nIFUrMDAyQyBDT01NQSBjaGFyYWN0ZXJzIGZyb20gdXJsLgogICAg
ICAgICAgICAgaW1hZ2VVUkxFbmQgPSBwb3NpdGlvbiAtIDE7Ci0gICAgICAgICAgICByZXZlcnNl
U2tpcFdoaWxlPENoYXJUeXBlLCBpc0NvbW1hPihpbWFnZVVSTEVuZCwgaW1hZ2VVUkxTdGFydCk7
CisgICAgICAgICAgICByZXZlcnNlU2tpcFdoaWxlPGlzQ29tbWE+KGltYWdlVVJMRW5kLCBpbWFn
ZVVSTFN0YXJ0KTsKICAgICAgICAgICAgICsraW1hZ2VVUkxFbmQ7CiAgICAgICAgICAgICAvLyBJ
ZiB1cmwgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgc3RlcCBsYWJlbGVkIHNwbGl0dGluZyBs
b29wLgogICAgICAgICAgICAgaWYgKGltYWdlVVJMU3RhcnQgPT0gaW1hZ2VVUkxFbmQpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBza2lw
V2hpbGU8Q2hhclR5cGUsIGlzSFRNTFNwYWNlPENoYXJUeXBlPj4ocG9zaXRpb24sIGF0dHJpYnV0
ZUVuZCk7CisgICAgICAgICAgICBza2lwV2hpbGU8aXNIVE1MU3BhY2U+KHBvc2l0aW9uLCBhdHRy
aWJ1dGVFbmQpOwogICAgICAgICAgICAgVmVjdG9yPFN0cmluZ1ZpZXc+IGRlc2NyaXB0b3JUb2tl
bnM7CiAgICAgICAgICAgICB0b2tlbml6ZURlc2NyaXB0b3JzKHBvc2l0aW9uLCBhdHRyaWJ1dGVF
bmQsIGRlc2NyaXB0b3JUb2tlbnMpOwogICAgICAgICAgICAgLy8gQ29udHJhcnkgdG8gc3BlYyBs
YW5ndWFnZSAtIGRlc2NyaXB0b3IgcGFyc2luZyBoYXBwZW5zIG9uIGVhY2ggY2FuZGlkYXRlLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFyc2luZ1V0aWxpdGllcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaAko
cmV2aXNpb24gMjY1MTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFyc2luZ1V0
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMwLDggKzMxLDggQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbW1v
bi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs1OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGUsIHR5cGVuYW0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGUsIGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKENoYXJhY3RlclR5cGUp
PiBib29sIHNraXBFeGFjdGx5KGNvbnN0IENoYXJhY3RlclR5cGUqJiBwb3NpdGlvbiwgY29uc3Qg
Q2hhcmFjdGVyVHlwZSogZW5kKQordGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoTENo
YXIpPiBib29sIHNraXBFeGFjdGx5KGNvbnN0IExDaGFyKiYgcG9zaXRpb24sIGNvbnN0IExDaGFy
KiBlbmQpCiB7CiAgICAgaWYgKHBvc2l0aW9uIDwgZW5kICYmIGNoYXJhY3RlclByZWRpY2F0ZSgq
cG9zaXRpb24pKSB7CiAgICAgICAgICsrcG9zaXRpb247CkBAIC02Nyw3ICs2OCwyNSBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBib29sIGNoCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBib29sIGNoYXJhY3RlclByZWRp
Y2F0ZShDaGFyYWN0ZXJUeXBlKT4gYm9vbCBza2lwRXhhY3RseShTdHJpbmdQYXJzaW5nQnVmZmVy
PENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit0ZW1wbGF0ZTxib29sIGNoYXJhY3RlclByZWRpY2F0
ZShVQ2hhcik+IGJvb2wgc2tpcEV4YWN0bHkoY29uc3QgVUNoYXIqJiBwb3NpdGlvbiwgY29uc3Qg
VUNoYXIqIGVuZCkKK3sKKyAgICBpZiAocG9zaXRpb24gPCBlbmQgJiYgY2hhcmFjdGVyUHJlZGlj
YXRlKCpwb3NpdGlvbikpIHsKKyAgICAgICAgKytwb3NpdGlvbjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGU8Ym9vbCBjaGFyYWN0
ZXJQcmVkaWNhdGUoTENoYXIpPiBib29sIHNraXBFeGFjdGx5KFN0cmluZ1BhcnNpbmdCdWZmZXI8
TENoYXI+JiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5n
KCkgJiYgY2hhcmFjdGVyUHJlZGljYXRlKCpidWZmZXIpKSB7CisgICAgICAgICsrYnVmZmVyOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1w
bGF0ZTxib29sIGNoYXJhY3RlclByZWRpY2F0ZShVQ2hhcik+IGJvb2wgc2tpcEV4YWN0bHkoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmhhc0No
YXJhY3RlcnNSZW1haW5pbmcoKSAmJiBjaGFyYWN0ZXJQcmVkaWNhdGUoKmJ1ZmZlcikpIHsKICAg
ICAgICAgKytidWZmZXI7CkBAIC04OCwzMSArMTA3LDYyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGUsIHR5cGVuYW0KICAgICAgICAgKytidWZmZXI7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGUsIGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKENoYXJhY3RlclR5
cGUpPiB2b2lkIHNraXBVbnRpbChjb25zdCBDaGFyYWN0ZXJUeXBlKiYgcG9zaXRpb24sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGVuZCkKK3RlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKExD
aGFyKT4gdm9pZCBza2lwVW50aWwoY29uc3QgTENoYXIqJiBwb3NpdGlvbiwgY29uc3QgTENoYXIq
IGVuZCkKK3sKKyAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQgJiYgIWNoYXJhY3RlclByZWRpY2F0
ZSgqcG9zaXRpb24pKQorICAgICAgICArK3Bvc2l0aW9uOworfQorCit0ZW1wbGF0ZTxib29sIGNo
YXJhY3RlclByZWRpY2F0ZShVQ2hhcik+IHZvaWQgc2tpcFVudGlsKGNvbnN0IFVDaGFyKiYgcG9z
aXRpb24sIGNvbnN0IFVDaGFyKiBlbmQpCiB7CiAgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kICYm
ICFjaGFyYWN0ZXJQcmVkaWNhdGUoKnBvc2l0aW9uKSkKICAgICAgICAgKytwb3NpdGlvbjsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgYm9vbCBjaGFyYWN0ZXJQcmVkaWNh
dGUoQ2hhcmFjdGVyVHlwZSk+IHZvaWQgc2tpcFVudGlsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hh
cmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3RlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKExD
aGFyKT4gdm9pZCBza2lwVW50aWwoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikK
IHsKICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiAhY2hhcmFj
dGVyUHJlZGljYXRlKCpidWZmZXIpKQogICAgICAgICArK2J1ZmZlcjsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgYm9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoQ2hhcmFjdGVy
VHlwZSk+IHZvaWQgc2tpcFdoaWxlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBwb3NpdGlvbiwgY29u
c3QgQ2hhcmFjdGVyVHlwZSogZW5kKQordGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUo
VUNoYXIpPiB2b2lkIHNraXBVbnRpbChTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVy
KQoreworICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpICYmICFjaGFy
YWN0ZXJQcmVkaWNhdGUoKmJ1ZmZlcikpCisgICAgICAgICsrYnVmZmVyOworfQorCit0ZW1wbGF0
ZTxib29sIGNoYXJhY3RlclByZWRpY2F0ZShMQ2hhcik+IHZvaWQgc2tpcFdoaWxlKGNvbnN0IExD
aGFyKiYgcG9zaXRpb24sIGNvbnN0IExDaGFyKiBlbmQpCiB7CiAgICAgd2hpbGUgKHBvc2l0aW9u
IDwgZW5kICYmIGNoYXJhY3RlclByZWRpY2F0ZSgqcG9zaXRpb24pKQogICAgICAgICArK3Bvc2l0
aW9uOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBib29sIGNoYXJhY3Rl
clByZWRpY2F0ZShDaGFyYWN0ZXJUeXBlKT4gdm9pZCBza2lwV2hpbGUoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQordGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVk
aWNhdGUoVUNoYXIpPiB2b2lkIHNraXBXaGlsZShjb25zdCBVQ2hhciomIHBvc2l0aW9uLCBjb25z
dCBVQ2hhciogZW5kKQoreworICAgIHdoaWxlIChwb3NpdGlvbiA8IGVuZCAmJiBjaGFyYWN0ZXJQ
cmVkaWNhdGUoKnBvc2l0aW9uKSkKKyAgICAgICAgKytwb3NpdGlvbjsKK30KKwordGVtcGxhdGU8
Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoTENoYXIpPiB2b2lkIHNraXBXaGlsZShTdHJpbmdQYXJz
aW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFj
dGVyc1JlbWFpbmluZygpICYmIGNoYXJhY3RlclByZWRpY2F0ZSgqYnVmZmVyKSkKICAgICAgICAg
KytidWZmZXI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIGJvb2wgY2hh
cmFjdGVyUHJlZGljYXRlKENoYXJhY3RlclR5cGUpPiB2b2lkIHJldmVyc2VTa2lwV2hpbGUoY29u
c3QgQ2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdGFydCkK
K3RlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKFVDaGFyKT4gdm9pZCBza2lwV2hpbGUo
U3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKK3sKKyAgICB3aGlsZSAoYnVmZmVy
Lmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiBjaGFyYWN0ZXJQcmVkaWNhdGUoKmJ1ZmZlcikp
CisgICAgICAgICsrYnVmZmVyOworfQorCisKK3RlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGlj
YXRlKExDaGFyKT4gdm9pZCByZXZlcnNlU2tpcFdoaWxlKGNvbnN0IExDaGFyKiYgcG9zaXRpb24s
IGNvbnN0IExDaGFyKiBzdGFydCkKK3sKKyAgICB3aGlsZSAocG9zaXRpb24gPj0gc3RhcnQgJiYg
Y2hhcmFjdGVyUHJlZGljYXRlKCpwb3NpdGlvbikpCisgICAgICAgIC0tcG9zaXRpb247Cit9CisK
K3RlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKFVDaGFyKT4gdm9pZCByZXZlcnNlU2tp
cFdoaWxlKGNvbnN0IFVDaGFyKiYgcG9zaXRpb24sIGNvbnN0IFVDaGFyKiBzdGFydCkKIHsKICAg
ICB3aGlsZSAocG9zaXRpb24gPj0gc3RhcnQgJiYgY2hhcmFjdGVyUHJlZGljYXRlKCpwb3NpdGlv
bikpCiAgICAgICAgIC0tcG9zaXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVFNjYW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VFNjYW5uZXIuaAkocmV2aXNpb24gMjY1MTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRTY2FubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NiwxOCArMTY2LDE4IEBAIHRlbXBs
YXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKFVDaGFyKT4KIGlubGluZSB2b2lkIFZUVFNjYW5u
ZXI6OnNraXBXaGlsZSgpCiB7CiAgICAgaWYgKG1faXM4Qml0KQotICAgICAgICBXZWJDb3JlOjpz
a2lwV2hpbGU8TENoYXIsIExDaGFyUHJlZGljYXRlQWRhcHRlcjxjaGFyYWN0ZXJQcmVkaWNhdGU+
ID4obV9kYXRhLmNoYXJhY3RlcnM4LCBtX2VuZC5jaGFyYWN0ZXJzOCk7CisgICAgICAgIFdlYkNv
cmU6OnNraXBXaGlsZTxMQ2hhclByZWRpY2F0ZUFkYXB0ZXI8Y2hhcmFjdGVyUHJlZGljYXRlPiA+
KG1fZGF0YS5jaGFyYWN0ZXJzOCwgbV9lbmQuY2hhcmFjdGVyczgpOwogICAgIGVsc2UKLSAgICAg
ICAgV2ViQ29yZTo6c2tpcFdoaWxlPFVDaGFyLCBjaGFyYWN0ZXJQcmVkaWNhdGU+KG1fZGF0YS5j
aGFyYWN0ZXJzMTYsIG1fZW5kLmNoYXJhY3RlcnMxNik7CisgICAgICAgIFdlYkNvcmU6OnNraXBX
aGlsZTxjaGFyYWN0ZXJQcmVkaWNhdGU+KG1fZGF0YS5jaGFyYWN0ZXJzMTYsIG1fZW5kLmNoYXJh
Y3RlcnMxNik7CiB9CiAKIHRlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKFVDaGFyKT4K
IGlubGluZSB2b2lkIFZUVFNjYW5uZXI6OnNraXBVbnRpbCgpCiB7CiAgICAgaWYgKG1faXM4Qml0
KQotICAgICAgICBXZWJDb3JlOjpza2lwVW50aWw8TENoYXIsIExDaGFyUHJlZGljYXRlQWRhcHRl
cjxjaGFyYWN0ZXJQcmVkaWNhdGU+ID4obV9kYXRhLmNoYXJhY3RlcnM4LCBtX2VuZC5jaGFyYWN0
ZXJzOCk7CisgICAgICAgIFdlYkNvcmU6OnNraXBVbnRpbDxMQ2hhclByZWRpY2F0ZUFkYXB0ZXI8
Y2hhcmFjdGVyUHJlZGljYXRlPiA+KG1fZGF0YS5jaGFyYWN0ZXJzOCwgbV9lbmQuY2hhcmFjdGVy
czgpOwogICAgIGVsc2UKLSAgICAgICAgV2ViQ29yZTo6c2tpcFVudGlsPFVDaGFyLCBjaGFyYWN0
ZXJQcmVkaWNhdGU+KG1fZGF0YS5jaGFyYWN0ZXJzMTYsIG1fZW5kLmNoYXJhY3RlcnMxNik7Cisg
ICAgICAgIFdlYkNvcmU6OnNraXBVbnRpbDxjaGFyYWN0ZXJQcmVkaWNhdGU+KG1fZGF0YS5jaGFy
YWN0ZXJzMTYsIG1fZW5kLmNoYXJhY3RlcnMxNik7CiB9CiAKIHRlbXBsYXRlPGJvb2wgY2hhcmFj
dGVyUHJlZGljYXRlKFVDaGFyKT4KQEAgLTE4NSwxMSArMTg1LDExIEBAIGlubGluZSBWVFRTY2Fu
bmVyOjpSdW4gVlRUU2Nhbm5lcjo6Y29sbGUKIHsKICAgICBpZiAobV9pczhCaXQpIHsKICAgICAg
ICAgY29uc3QgTENoYXIqIGN1cnJlbnQgPSBtX2RhdGEuY2hhcmFjdGVyczg7Ci0gICAgICAgIFdl
YkNvcmU6OnNraXBXaGlsZTxMQ2hhciwgTENoYXJQcmVkaWNhdGVBZGFwdGVyPGNoYXJhY3RlclBy
ZWRpY2F0ZT4gPihjdXJyZW50LCBtX2VuZC5jaGFyYWN0ZXJzOCk7CisgICAgICAgIFdlYkNvcmU6
OnNraXBXaGlsZTxMQ2hhclByZWRpY2F0ZUFkYXB0ZXI8Y2hhcmFjdGVyUHJlZGljYXRlPj4oY3Vy
cmVudCwgbV9lbmQuY2hhcmFjdGVyczgpOwogICAgICAgICByZXR1cm4gUnVuKHBvc2l0aW9uKCks
IGN1cnJlbnQsIG1faXM4Qml0KTsKICAgICB9CiAgICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSBt
X2RhdGEuY2hhcmFjdGVyczE2OwotICAgIFdlYkNvcmU6OnNraXBXaGlsZTxVQ2hhciwgY2hhcmFj
dGVyUHJlZGljYXRlPihjdXJyZW50LCBtX2VuZC5jaGFyYWN0ZXJzMTYpOworICAgIFdlYkNvcmU6
OnNraXBXaGlsZTxjaGFyYWN0ZXJQcmVkaWNhdGU+KGN1cnJlbnQsIG1fZW5kLmNoYXJhY3RlcnMx
Nik7CiAgICAgcmV0dXJuIFJ1bihwb3NpdGlvbigpLCByZWludGVycHJldF9jYXN0PFBvc2l0aW9u
PihjdXJyZW50KSwgbV9pczhCaXQpOwogfQogCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCBpbmxpbmUg
VlRUU2Nhbm5lcjo6UnVuIFZUVFNjYW5uZXI6OmNvbGxlCiB7CiAgICAgaWYgKG1faXM4Qml0KSB7
CiAgICAgICAgIGNvbnN0IExDaGFyKiBjdXJyZW50ID0gbV9kYXRhLmNoYXJhY3RlcnM4OwotICAg
ICAgICBXZWJDb3JlOjpza2lwVW50aWw8TENoYXIsIExDaGFyUHJlZGljYXRlQWRhcHRlcjxjaGFy
YWN0ZXJQcmVkaWNhdGU+ID4oY3VycmVudCwgbV9lbmQuY2hhcmFjdGVyczgpOworICAgICAgICBX
ZWJDb3JlOjpza2lwVW50aWw8TENoYXJQcmVkaWNhdGVBZGFwdGVyPGNoYXJhY3RlclByZWRpY2F0
ZT4gPihjdXJyZW50LCBtX2VuZC5jaGFyYWN0ZXJzOCk7CiAgICAgICAgIHJldHVybiBSdW4ocG9z
aXRpb24oKSwgY3VycmVudCwgbV9pczhCaXQpOwogICAgIH0KICAgICBjb25zdCBVQ2hhciogY3Vy
cmVudCA9IG1fZGF0YS5jaGFyYWN0ZXJzMTY7Ci0gICAgV2ViQ29yZTo6c2tpcFVudGlsPFVDaGFy
LCBjaGFyYWN0ZXJQcmVkaWNhdGU+KGN1cnJlbnQsIG1fZW5kLmNoYXJhY3RlcnMxNik7CisgICAg
V2ViQ29yZTo6c2tpcFVudGlsPGNoYXJhY3RlclByZWRpY2F0ZT4oY3VycmVudCwgbV9lbmQuY2hh
cmFjdGVyczE2KTsKICAgICByZXR1cm4gUnVuKHBvc2l0aW9uKCksIHJlaW50ZXJwcmV0X2Nhc3Q8
UG9zaXRpb24+KGN1cnJlbnQpLCBtX2lzOEJpdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rSGVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0hlYWRlci5jcHAJKHJldmlzaW9uIDI2NTEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rSGVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTYgKzg5LDE2IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIE9wdGlvbmFsPFN0cmluZz4g
ZmluZFVSTEJvdW5kYXJpZXMoQ2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBDaGFyYWN0ZXJUeXBl
KiBjb25zdCBlbmQpCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uIDw9IGVuZCk7Ci0gICAgc2tpcFdo
aWxlPENoYXJhY3RlclR5cGUsIGlzU3BhY2VPclRhYj4ocG9zaXRpb24sIGVuZCk7Ci0gICAgaWYg
KCFza2lwRXhhY3RseTxDaGFyYWN0ZXJUeXBlPihwb3NpdGlvbiwgZW5kLCAnPCcpKQorICAgIHNr
aXBXaGlsZTxpc1NwYWNlT3JUYWI+KHBvc2l0aW9uLCBlbmQpOworICAgIGlmICghc2tpcEV4YWN0
bHkocG9zaXRpb24sIGVuZCwgJzwnKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAg
ICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNTcGFjZU9yVGFiPihwb3NpdGlvbiwgZW5kKTsK
KyAgICBza2lwV2hpbGU8aXNTcGFjZU9yVGFiPihwb3NpdGlvbiwgZW5kKTsKIAogICAgIENoYXJh
Y3RlclR5cGUqIHVybFN0YXJ0ID0gcG9zaXRpb247Ci0gICAgc2tpcFdoaWxlPENoYXJhY3RlclR5
cGUsIGlzTm90VVJMVGVybWluYXRpbmdDaGFyPihwb3NpdGlvbiwgZW5kKTsKKyAgICBza2lwV2hp
bGU8aXNOb3RVUkxUZXJtaW5hdGluZ0NoYXI+KHBvc2l0aW9uLCBlbmQpOwogICAgIENoYXJhY3Rl
clR5cGUqIHVybEVuZCA9IHBvc2l0aW9uOwotICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlPihw
b3NpdGlvbiwgZW5kLCAnPicpOwotICAgIGlmICghc2tpcEV4YWN0bHk8Q2hhcmFjdGVyVHlwZT4o
cG9zaXRpb24sIGVuZCwgJz4nKSkKKyAgICBza2lwVW50aWwocG9zaXRpb24sIGVuZCwgJz4nKTsK
KyAgICBpZiAoIXNraXBFeGFjdGx5KHBvc2l0aW9uLCBlbmQsICc+JykpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gU3RyaW5nKHVybFN0YXJ0LCB1cmxFbmQgLSB1
cmxTdGFydCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CiBzdGF0aWMgYm9vbCBpbnZhbGlkUGFyYW1ldGVyRGVsaW1pdGVyKENoYXJhY3RlclR5
cGUqJiBwb3NpdGlvbiwgQ2hhcmFjdGVyVHlwZSogY29uc3QgZW5kKQogewogICAgIEFTU0VSVChw
b3NpdGlvbiA8PSBlbmQpOwotICAgIHJldHVybiAoIXNraXBFeGFjdGx5PENoYXJhY3RlclR5cGU+
KHBvc2l0aW9uLCBlbmQsICc7JykgJiYgKHBvc2l0aW9uIDwgZW5kKSAmJiAoKnBvc2l0aW9uICE9
ICcsJykpOworICAgIHJldHVybiAoIXNraXBFeGFjdGx5KHBvc2l0aW9uLCBlbmQsICc7JykgJiYg
KHBvc2l0aW9uIDwgZW5kKSAmJiAoKnBvc2l0aW9uICE9ICcsJykpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTEzNCwxMiArMTM0LDEyIEBAIHN0YXRpYyBib29s
IHBhcnNlUGFyYW1ldGVyRGVsaW1pdGVyKENoYXIKIHsKICAgICBBU1NFUlQocG9zaXRpb24gPD0g
ZW5kKTsKICAgICBpc1ZhbGlkID0gdHJ1ZTsKLSAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwg
aXNTcGFjZU9yVGFiPihwb3NpdGlvbiwgZW5kKTsKKyAgICBza2lwV2hpbGU8aXNTcGFjZU9yVGFi
Pihwb3NpdGlvbiwgZW5kKTsKICAgICBpZiAoaW52YWxpZFBhcmFtZXRlckRlbGltaXRlcihwb3Np
dGlvbiwgZW5kKSkgewogICAgICAgICBpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzU3BhY2VPclRhYj4o
cG9zaXRpb24sIGVuZCk7CisgICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4ocG9zaXRpb24sIGVu
ZCk7CiAgICAgaWYgKHZhbGlkRmllbGRFbmQocG9zaXRpb24sIGVuZCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4OCwxMSArMTg4LDExIEBAIHN0YXRpYyBi
b29sIHBhcnNlUGFyYW1ldGVyTmFtZShDaGFyYWN0ZXIKIHsKICAgICBBU1NFUlQocG9zaXRpb24g
PD0gZW5kKTsKICAgICBDaGFyYWN0ZXJUeXBlKiBuYW1lU3RhcnQgPSBwb3NpdGlvbjsKLSAgICBz
a2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNWYWxpZFBhcmFtZXRlck5hbWVDaGFyPihwb3NpdGlv
biwgZW5kKTsKKyAgICBza2lwV2hpbGU8aXNWYWxpZFBhcmFtZXRlck5hbWVDaGFyPihwb3NpdGlv
biwgZW5kKTsKICAgICBDaGFyYWN0ZXJUeXBlKiBuYW1lRW5kID0gcG9zaXRpb247Ci0gICAgc2tp
cFdoaWxlPENoYXJhY3RlclR5cGUsIGlzU3BhY2VPclRhYj4ocG9zaXRpb24sIGVuZCk7Ci0gICAg
Ym9vbCBoYXNFcXVhbCA9IHNraXBFeGFjdGx5PENoYXJhY3RlclR5cGU+KHBvc2l0aW9uLCBlbmQs
ICc9Jyk7Ci0gICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzU3BhY2VPclRhYj4ocG9zaXRp
b24sIGVuZCk7CisgICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4ocG9zaXRpb24sIGVuZCk7Cisg
ICAgYm9vbCBoYXNFcXVhbCA9IHNraXBFeGFjdGx5KHBvc2l0aW9uLCBlbmQsICc9Jyk7CisgICAg
c2tpcFdoaWxlPGlzU3BhY2VPclRhYj4ocG9zaXRpb24sIGVuZCk7CiAgICAgbmFtZSA9IHBhcmFt
dGVyTmFtZUZyb21TdHJpbmcoU3RyaW5nKG5hbWVTdGFydCwgbmFtZUVuZCAtIG5hbWVTdGFydCkp
OwogICAgIGlmIChoYXNFcXVhbCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTYsOSArMjE2
LDkgQEAgc3RhdGljIGJvb2wgc2tpcFF1b3Rlc0lmTmVlZGVkKENoYXJhY3RlcgogewogICAgIEFT
U0VSVChwb3NpdGlvbiA8PSBlbmQpOwogICAgIHVuc2lnbmVkIGNoYXIgcXVvdGU7Ci0gICAgaWYg
KHNraXBFeGFjdGx5PENoYXJhY3RlclR5cGU+KHBvc2l0aW9uLCBlbmQsICdcJycpKQorICAgIGlm
IChza2lwRXhhY3RseShwb3NpdGlvbiwgZW5kLCAnXCcnKSkKICAgICAgICAgcXVvdGUgPSAnXCcn
OwotICAgIGVsc2UgaWYgKHNraXBFeGFjdGx5PENoYXJhY3RlclR5cGU+KHBvc2l0aW9uLCBlbmQs
ICciJykpCisgICAgZWxzZSBpZiAoc2tpcEV4YWN0bHkocG9zaXRpb24sIGVuZCwgJyInKSkKICAg
ICAgICAgcXVvdGUgPSAnIic7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NTIsOSArMjUyLDkgQEAgc3RhdGljIGJvb2wgcGFyc2VQYXJhbWV0ZXJWYWx1ZShDaGFyYWN0ZQog
ICAgIGJvb2wgY29tcGxldGVRdW90ZXMgPSBmYWxzZTsKICAgICBib29sIGhhc1F1b3RlcyA9IHNr
aXBRdW90ZXNJZk5lZWRlZChwb3NpdGlvbiwgZW5kLCBjb21wbGV0ZVF1b3Rlcyk7CiAgICAgaWYg
KCFoYXNRdW90ZXMpCi0gICAgICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBlLCBpc1BhcmFtZXRl
clZhbHVlQ2hhcj4ocG9zaXRpb24sIGVuZCk7CisgICAgICAgIHNraXBXaGlsZTxpc1BhcmFtZXRl
clZhbHVlQ2hhcj4ocG9zaXRpb24sIGVuZCk7CiAgICAgdmFsdWVFbmQgPSBwb3NpdGlvbjsKLSAg
ICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNTcGFjZU9yVGFiPihwb3NpdGlvbiwgZW5kKTsK
KyAgICBza2lwV2hpbGU8aXNTcGFjZU9yVGFiPihwb3NpdGlvbiwgZW5kKTsKICAgICBpZiAoKCFj
b21wbGV0ZVF1b3RlcyAmJiB2YWx1ZVN0YXJ0ID09IHZhbHVlRW5kKSB8fCAocG9zaXRpb24gIT0g
ZW5kICYmICFpc1BhcmFtZXRlclZhbHVlRW5kKCpwb3NpdGlvbikpKSB7CiAgICAgICAgIHZhbHVl
ID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzEwLDggKzMxMCw4
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIHZvaWQgZmluZE5l
eHRIZWFkZXIoQ2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBDaGFyYWN0ZXJUeXBlKiBjb25zdCBl
bmQpCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uIDw9IGVuZCk7Ci0gICAgc2tpcFVudGlsPENoYXJh
Y3RlclR5cGU+KHBvc2l0aW9uLCBlbmQsICcsJyk7Ci0gICAgc2tpcEV4YWN0bHk8Q2hhcmFjdGVy
VHlwZT4ocG9zaXRpb24sIGVuZCwgJywnKTsKKyAgICBza2lwVW50aWwocG9zaXRpb24sIGVuZCwg
JywnKTsKKyAgICBza2lwRXhhY3RseShwb3NpdGlvbiwgZW5kLCAnLCcpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCShyZXZpc2lvbiAyNjUx
MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIGJlZ2luSGFzaFZhbHVlID0gYnVmZmVyLnBvc2l0aW9uKCk7Ci0gICAgc2tpcFdoaWxl
PENoYXJhY3RlclR5cGUsIGlzQmFzZTY0T3JCYXNlNjRVUkxDaGFyYWN0ZXI+KGJ1ZmZlcik7Cisg
ICAgc2tpcFdoaWxlPGlzQmFzZTY0T3JCYXNlNjRVUkxDaGFyYWN0ZXI+KGJ1ZmZlcik7CiAgICAg
c2tpcEV4YWN0bHkoYnVmZmVyLCAnPScpOwogICAgIHNraXBFeGFjdGx5KGJ1ZmZlciwgJz0nKTsK
IApAQCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyAKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVnaW5IYXNo
VmFsdWUgPSBidWZmZXIucG9zaXRpb24oKTsKLSAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwg
aXNCYXNlNjRPckJhc2U2NFVSTENoYXJhY3Rlcj4oYnVmZmVyKTsKKyAgICBza2lwV2hpbGU8aXNC
YXNlNjRPckJhc2U2NFVSTENoYXJhY3Rlcj4oYnVmZmVyKTsKICAgICBza2lwRXhhY3RseShidWZm
ZXIsICc9Jyk7CiAgICAgc2tpcEV4YWN0bHkoYnVmZmVyLCAnPScpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAJKHJldmlzaW9uIDI2
NTEyNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBzcGVj
aWZpYyBvcHRpb25zIGhhdmUgYmVlbiBzcGVjaWZpZWQuIFRodXMsIHdlIGp1c3QgcGFyc2UgYW5k
IGlnbm9yZQogICAgICAgICAvLyB0aGVtLiBUaGVpciBzeW50YXggaXMgYSAnPycgZm9sbG93IGJ5
IGFueSBudW1iZXIgb2YgVkNIQVJzLgogICAgICAgICBpZiAoc2tpcEV4YWN0bHkoYnVmZmVyLCAn
PycpKQotICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzVkNIQVI+KGJ1ZmZl
cik7CisgICAgICAgICAgICBza2lwV2hpbGU8aXNWQ0hBUj4oYnVmZmVyKTsKIAogICAgICAgICAv
LyBBZnRlciB0aGUgYmFzZTY0IHZhbHVlIGFuZCBvcHRpb25zLCB0aGUgY3VycmVudCBjaGFyYWN0
ZXIgcG9pbnRlZCB0byBieSBwb3NpdGlvbgogICAgICAgICAvLyBzaG91bGQgZWl0aGVyIGJlIHRo
ZSBlbmQgb3IgYSBzcGFjZS4KQEAgLTg3LDEyICs4NywxMiBAQCBwcml2YXRlOgogdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEZ1bmN0b3I+CiBzdGF0aWMgaW5saW5l
IHZvaWQgc3BsaXRPblNwYWNlcyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+IGJ1
ZmZlciwgRnVuY3RvciYmIGZ1bmN0b3IpCiB7Ci0gICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUs
IGlzSFRNTFNwYWNlPihidWZmZXIpOworICAgIHNraXBXaGlsZTxpc0hUTUxTcGFjZT4oYnVmZmVy
KTsKIAogICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpKSB7CiAgICAg
ICAgIGlmICghZnVuY3RvcihidWZmZXIpKQotICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3Rl
clR5cGUsIGlzTm90SFRNTFNwYWNlPihidWZmZXIpOwotICAgICAgICBza2lwV2hpbGU8Q2hhcmFj
dGVyVHlwZSwgaXNIVE1MU3BhY2U+KGJ1ZmZlcik7CisgICAgICAgICAgICBza2lwV2hpbGU8aXNO
b3RIVE1MU3BhY2U+KGJ1ZmZlcik7CisgICAgICAgIHNraXBXaGlsZTxpc0hUTUxTcGFjZT4oYnVm
ZmVyKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3Bw
CShyZXZpc2lvbiAyNjUxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTEg
Kzk2LDExIEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2UKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gU2tpcCB0byB0aGUgZW5k
IG9mIHRoZSBsaW5lLgotICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVz
dE5ld2xpbmU+KGJ1ZmZlcik7CisgICAgICAgIHNraXBVbnRpbDxpc01hbmlmZXN0TmV3bGluZT4o
YnVmZmVyKTsKIAogICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgLy8gU2tpcCB3aGl0
ZXNwYWNlCi0gICAgICAgICAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdo
aXRlc3BhY2VPck5ld2xpbmU+KGJ1ZmZlcik7CisgICAgICAgICAgICBza2lwV2hpbGU8aXNNYW5p
ZmVzdFdoaXRlc3BhY2VPck5ld2xpbmU+KGJ1ZmZlcik7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChidWZmZXIuYXRFbmQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwOCw3
ICsxMDgsNyBAQCBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlCiAgICAg
ICAgICAgICBhdXRvIGxpbmVTdGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICAvLyBGaW5kIHRoZSBlbmQgb2YgdGhlIGxpbmUKLSAgICAgICAgICAgIHNr
aXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0TmV3bGluZT4oYnVmZmVyKTsKKyAgICAg
ICAgICAgIHNraXBVbnRpbDxpc01hbmlmZXN0TmV3bGluZT4oYnVmZmVyKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gTGluZSBpcyBhIGNvbW1lbnQsIHNraXAgdG8gdGhlIG5leHQgbGlu
ZS4KICAgICAgICAgICAgIGlmICgqbGluZVN0YXJ0ID09ICcjJykKQEAgLTE0Nyw3ICsxNDcsNyBA
QCBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZVBhcnNlck1vZGU6OkV4cGxpY2l0OiB7
CiAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBV
UkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9yZWQgdG9rZW5zLgotICAgICAgICAgICAgICAgIHNraXBV
bnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZlcik7Cisg
ICAgICAgICAgICAgICAgc2tpcFVudGlsPGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5lQnVmZmVy
KTsKIAogICAgICAgICAgICAgICAgIGF1dG8gdXJsID0gbWFrZU1hbmlmZXN0VVJMKG1hbmlmZXN0
VVJMLCBsaW5lU3RhcnQsIGxpbmVCdWZmZXIucG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAg
aWYgKCF1cmwuaXNWYWxpZCgpKQpAQCAtMTY1LDcgKzE2NSw3IEBAIE9wdGlvbmFsPEFwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2UKIAogICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkNh
Y2hlUGFyc2VyTW9kZTo6T25saW5lQWxsb3dsaXN0OiB7CiAgICAgICAgICAgICAgICAgLy8gTG9v
ayBmb3Igd2hpdGVzcGFjZSBzZXBhcmF0aW5nIHRoZSBVUkwgZnJvbSBzdWJzZXF1ZW50IGlnbm9y
ZWQgdG9rZW5zLgotICAgICAgICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBlLCBpc01h
bmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZlcik7CisgICAgICAgICAgICAgICAgc2tpcFVudGls
PGlzTWFuaWZlc3RXaGl0ZXNwYWNlPihsaW5lQnVmZmVyKTsKIAogICAgICAgICAgICAgICAgIGlm
IChsaW5lQnVmZmVyLnBvc2l0aW9uKCkgLSBsaW5lU3RhcnQgPT0gMSAmJiAqbGluZVN0YXJ0ID09
ICcqJykgewogICAgICAgICAgICAgICAgICAgICAvLyBXaWxkY2FyZCB3YXMgZm91bmQuCkBAIC0x
ODYsNyArMTg2LDcgQEAgT3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0PiBwYXJzZQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQ2FjaGVQYXJzZXJNb2Rl
OjpGYWxsYmFjazogewogICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRlc3BhY2Ugc2Vw
YXJhdGluZyB0aGUgdHdvIFVSTHMKLSAgICAgICAgICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVy
VHlwZSwgaXNNYW5pZmVzdFdoaXRlc3BhY2U+KGxpbmVCdWZmZXIpOworICAgICAgICAgICAgICAg
IHNraXBVbnRpbDxpc01hbmlmZXN0V2hpdGVzcGFjZT4obGluZUJ1ZmZlcik7CiAKICAgICAgICAg
ICAgICAgICBpZiAobGluZUJ1ZmZlci5hdEVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IFRoZXJlIHdhcyBubyB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTHMuCkBAIC0yMDcsMTIg
KzIwNywxMiBAQCBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgLy8gU2tpcCB3aGl0
ZXNwYWNlIHNlcGFyYXRpbmcgZmFsbGJhY2sgbmFtZXNwYWNlIGZyb20gVVJMLgotICAgICAgICAg
ICAgICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBlLCBpc01hbmlmZXN0V2hpdGVzcGFjZT4obGlu
ZUJ1ZmZlcik7CisgICAgICAgICAgICAgICAgc2tpcFdoaWxlPGlzTWFuaWZlc3RXaGl0ZXNwYWNl
PihsaW5lQnVmZmVyKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZmFsbGJhY2tTdGFydCA9IGxp
bmVCdWZmZXIucG9zaXRpb24oKTsKIAogICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHdoaXRl
c3BhY2Ugc2VwYXJhdGluZyB0aGUgVVJMIGZyb20gc3Vic2VxdWVudCBpZ25vcmVkIHRva2Vucy4K
LSAgICAgICAgICAgICAgICBza2lwVW50aWw8Q2hhcmFjdGVyVHlwZSwgaXNNYW5pZmVzdFdoaXRl
c3BhY2U+KGxpbmVCdWZmZXIpOworICAgICAgICAgICAgICAgIHNraXBVbnRpbDxpc01hbmlmZXN0
V2hpdGVzcGFjZT4obGluZUJ1ZmZlcik7CiAKICAgICAgICAgICAgICAgICBhdXRvIGZhbGxiYWNr
VVJMID0gbWFrZU1hbmlmZXN0VVJMKG1hbmlmZXN0VVJMLCBmYWxsYmFja1N0YXJ0LCBsaW5lQnVm
ZmVyLnBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmICghZmFsbGJhY2tVUkwuaXNWYWxp
ZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAJKHJldmlzaW9uIDI2NTEyNikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzEsMTggKzM3MSwxOCBAQCB2b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6CiAvLwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gYXV0byBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpwYXJz
ZURpcmVjdGl2ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+IGJ1ZmZlcikgLT4g
T3B0aW9uYWw8UGFyc2VkRGlyZWN0aXZlPgogewotICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBl
LCBpc0FTQ0lJU3BhY2U+KGJ1ZmZlcik7CisgICAgc2tpcFdoaWxlPGlzQVNDSUlTcGFjZT4oYnVm
ZmVyKTsKIAogICAgIC8vIEVtcHR5IGRpcmVjdGl2ZSAoZS5nLiAiOzs7IikuIEV4aXQgZWFybHku
CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CiAgICAgYXV0byBuYW1lQmVnaW4gPSBidWZmZXIucG9zaXRpb24oKTsKLSAgICBza2lwV2hpbGU8
Q2hhcmFjdGVyVHlwZSwgaXNEaXJlY3RpdmVOYW1lQ2hhcmFjdGVyPihidWZmZXIpOworICAgIHNr
aXBXaGlsZTxpc0RpcmVjdGl2ZU5hbWVDaGFyYWN0ZXI+KGJ1ZmZlcik7CiAKICAgICAvLyBUaGUg
ZGlyZWN0aXZlLW5hbWUgbXVzdCBiZSBub24tZW1wdHkuCiAgICAgaWYgKG5hbWVCZWdpbiA9PSBi
dWZmZXIucG9zaXRpb24oKSkgewotICAgICAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNO
b3RBU0NJSVNwYWNlPihidWZmZXIpOworICAgICAgICBza2lwV2hpbGU8aXNOb3RBU0NJSVNwYWNl
PihidWZmZXIpOwogICAgICAgICBtX3BvbGljeS5yZXBvcnRVbnN1cHBvcnRlZERpcmVjdGl2ZShT
dHJpbmcobmFtZUJlZ2luLCBidWZmZXIucG9zaXRpb24oKSAtIG5hbWVCZWdpbikpOwogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KQEAgLTM5MiwxNiArMzkyLDE2IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGF1dG8gQ28KICAgICBpZiAoYnVmZmVyLmF0RW5k
KCkpCiAgICAgICAgIHJldHVybiBQYXJzZWREaXJlY3RpdmUgeyBXVEZNb3ZlKG5hbWUpLCB7IH0g
fTsKIAotICAgIGlmICghc2tpcEV4YWN0bHk8Q2hhcmFjdGVyVHlwZSwgaXNBU0NJSVNwYWNlPihi
dWZmZXIpKSB7Ci0gICAgICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBlLCBpc05vdEFTQ0lJU3Bh
Y2U+KGJ1ZmZlcik7CisgICAgaWYgKCFza2lwRXhhY3RseTxpc0FTQ0lJU3BhY2U+KGJ1ZmZlcikp
IHsKKyAgICAgICAgc2tpcFdoaWxlPGlzTm90QVNDSUlTcGFjZT4oYnVmZmVyKTsKICAgICAgICAg
bV9wb2xpY3kucmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUoU3RyaW5nKG5hbWVCZWdpbiwgYnVm
ZmVyLnBvc2l0aW9uKCkgLSBuYW1lQmVnaW4pKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICB9CiAKLSAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNBU0NJSVNwYWNlPihi
dWZmZXIpOworICAgIHNraXBXaGlsZTxpc0FTQ0lJU3BhY2U+KGJ1ZmZlcik7CiAKICAgICBhdXRv
IHZhbHVlQmVnaW4gPSBidWZmZXIucG9zaXRpb24oKTsKLSAgICBza2lwV2hpbGU8Q2hhcmFjdGVy
VHlwZSwgaXNEaXJlY3RpdmVWYWx1ZUNoYXJhY3Rlcj4oYnVmZmVyKTsKKyAgICBza2lwV2hpbGU8
aXNEaXJlY3RpdmVWYWx1ZUNoYXJhY3Rlcj4oYnVmZmVyKTsKIAogICAgIGlmICghYnVmZmVyLmF0
RW5kKCkpIHsKICAgICAgICAgbV9wb2xpY3kucmVwb3J0SW52YWxpZERpcmVjdGl2ZVZhbHVlQ2hh
cmFjdGVyKG5hbWUsIFN0cmluZyh2YWx1ZUJlZ2luLCBidWZmZXIuZW5kKCkgLSB2YWx1ZUJlZ2lu
KSk7CkBAIC00MjQsMTQgKzQyNCwxMiBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6CiAgICAgfQogCiAgICAgcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKGRpcmVjdGl2
ZS52YWx1ZSwgWyZdKGF1dG8gYnVmZmVyKSB7Ci0gICAgICAgIHVzaW5nIENoYXJhY3RlclR5cGUg
PSB0eXBlbmFtZSBkZWNsdHlwZShidWZmZXIpOjpDaGFyYWN0ZXJUeXBlOwotCiAgICAgICAgIGF1
dG8gYmVnaW4gPSBidWZmZXIucG9zaXRpb24oKTsKICAgICAgICAgd2hpbGUgKGJ1ZmZlci5oYXND
aGFyYWN0ZXJzUmVtYWluaW5nKCkpIHsKLSAgICAgICAgICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJU
eXBlLCBpc0FTQ0lJU3BhY2U+KGJ1ZmZlcik7CisgICAgICAgICAgICBza2lwV2hpbGU8aXNBU0NJ
SVNwYWNlPihidWZmZXIpOwogCiAgICAgICAgICAgICBhdXRvIHVybEJlZ2luID0gYnVmZmVyLnBv
c2l0aW9uKCk7Ci0gICAgICAgICAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNOb3RBU0NJ
SVNwYWNlPihidWZmZXIpOworICAgICAgICAgICAgc2tpcFdoaWxlPGlzTm90QVNDSUlTcGFjZT4o
YnVmZmVyKTsKIAogICAgICAgICAgICAgaWYgKHVybEJlZ2luIDwgYnVmZmVyLnBvc2l0aW9uKCkp
CiAgICAgICAgICAgICAgICAgbV9yZXBvcnRVUklzLmFwcGVuZChkaXJlY3RpdmUudmFsdWUuc3Vi
c3RyaW5nKHVybEJlZ2luIC0gYmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gdXJsQmVnaW4pKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlh
TGlzdERpcmVjdGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmNwcAkocmV2aXNpb24gMjY1
MTI2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVk
aWFMaXN0RGlyZWN0aXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNDYgKzYwLDQ0IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWMKICAgICB9CiAKICAgICByZWFk
Q2hhcmFjdGVyc0ZvclBhcnNpbmcodmFsdWUsIFsmXShhdXRvIGJ1ZmZlcikgewotICAgICAgICB1
c2luZyBDaGFyYWN0ZXJUeXBlID0gdHlwZW5hbWUgZGVjbHR5cGUoYnVmZmVyKTo6Q2hhcmFjdGVy
VHlwZTsKLQogICAgICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkg
ewogICAgICAgICAgICAgLy8gX19fX18gT1IgX19fX19taW1lMS9taW1lMQogICAgICAgICAgICAg
Ly8gXiAgICAgICAgXgotICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzQVND
SUlTcGFjZT4oYnVmZmVyKTsKKyAgICAgICAgICAgIHNraXBXaGlsZTxpc0FTQ0lJU3BhY2U+KGJ1
ZmZlcik7CiAgICAgICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgICAvLyBtaW1lMS9taW1lMSBtaW1lMi9taW1lMgogICAgICAg
ICAgICAgLy8gXgogICAgICAgICAgICAgYXV0byBiZWdpbiA9IGJ1ZmZlci5wb3NpdGlvbigpOwot
ICAgICAgICAgICAgaWYgKCFza2lwRXhhY3RseTxDaGFyYWN0ZXJUeXBlLCBpc01lZGlhVHlwZUNo
YXJhY3Rlcj4oYnVmZmVyKSkgewotICAgICAgICAgICAgICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJU
eXBlLCBpc05vdEFTQ0lJU3BhY2U+KGJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIXNraXBFeGFj
dGx5PGlzTWVkaWFUeXBlQ2hhcmFjdGVyPihidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgc2tp
cFdoaWxlPGlzTm90QVNDSUlTcGFjZT4oYnVmZmVyKTsKICAgICAgICAgICAgICAgICBkaXJlY3Rp
dmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwg
YnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbikpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTWVk
aWFUeXBlQ2hhcmFjdGVyPihidWZmZXIpOworICAgICAgICAgICAgc2tpcFdoaWxlPGlzTWVkaWFU
eXBlQ2hhcmFjdGVyPihidWZmZXIpOwogCiAgICAgICAgICAgICAvLyBtaW1lMS9taW1lMSBtaW1l
Mi9taW1lMgogICAgICAgICAgICAgLy8gICAgICBeCiAgICAgICAgICAgICBpZiAoIXNraXBFeGFj
dGx5KGJ1ZmZlciwgJy8nKSkgewotICAgICAgICAgICAgICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJU
eXBlLCBpc05vdEFTQ0lJU3BhY2U+KGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgc2tpcFdoaWxl
PGlzTm90QVNDSUlTcGFjZT4oYnVmZmVyKTsKICAgICAgICAgICAgICAgICBkaXJlY3RpdmVMaXN0
KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwgYnVmZmVy
LnBvc2l0aW9uKCkgLSBiZWdpbikpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAvLyBtaW1lMS9taW1lMSBtaW1lMi9taW1lMgogICAgICAg
ICAgICAgLy8gICAgICAgXgotICAgICAgICAgICAgaWYgKCFza2lwRXhhY3RseTxDaGFyYWN0ZXJU
eXBlLCBpc01lZGlhVHlwZUNoYXJhY3Rlcj4oYnVmZmVyKSkgewotICAgICAgICAgICAgICAgIHNr
aXBXaGlsZTxDaGFyYWN0ZXJUeXBlLCBpc05vdEFTQ0lJU3BhY2U+KGJ1ZmZlcik7CisgICAgICAg
ICAgICBpZiAoIXNraXBFeGFjdGx5PGlzTWVkaWFUeXBlQ2hhcmFjdGVyPihidWZmZXIpKSB7Cisg
ICAgICAgICAgICAgICAgc2tpcFdoaWxlPGlzTm90QVNDSUlTcGFjZT4oYnVmZmVyKTsKICAgICAg
ICAgICAgICAgICBkaXJlY3RpdmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5
cGVzKFN0cmluZyhiZWdpbiwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbikpOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2tpcFdoaWxlPENo
YXJhY3RlclR5cGUsIGlzTWVkaWFUeXBlQ2hhcmFjdGVyPihidWZmZXIpOworICAgICAgICAgICAg
c2tpcFdoaWxlPGlzTWVkaWFUeXBlQ2hhcmFjdGVyPihidWZmZXIpOwogCiAgICAgICAgICAgICAv
LyBtaW1lMS9taW1lMSBtaW1lMi9taW1lMiBPUiBtaW1lMS9taW1lMSAgT1IgbWltZTEvbWltZTEv
ZXJyb3IKICAgICAgICAgICAgIC8vICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAg
ICAgXiAgICAgICAgICAgICAgIF4KICAgICAgICAgICAgIGlmIChidWZmZXIuaGFzQ2hhcmFjdGVy
c1JlbWFpbmluZygpICYmIGlzTm90QVNDSUlTcGFjZSgqYnVmZmVyKSkgewotICAgICAgICAgICAg
ICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBlLCBpc05vdEFTQ0lJU3BhY2U+KGJ1ZmZlcik7Cisg
ICAgICAgICAgICAgICAgc2tpcFdoaWxlPGlzTm90QVNDSUlTcGFjZT4oYnVmZmVyKTsKICAgICAg
ICAgICAgICAgICBkaXJlY3RpdmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5
cGVzKFN0cmluZyhiZWdpbiwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbikpOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5j
cHAJKHJldmlzaW9uIDI2NTEyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQs
MTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIAogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgYm9vbCBpc1NvdXJjZUxpc3ROb25lKFN0
cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewotICAgIHNraXBXaGls
ZTxDaGFyYWN0ZXJUeXBlLCBpc0FTQ0lJU3BhY2U+KGJ1ZmZlcik7CisgICAgc2tpcFdoaWxlPGlz
QVNDSUlTcGFjZT4oYnVmZmVyKTsKIAogICAgIGlmICghc2tpcEV4YWN0bHlJZ25vcmluZ0FTQ0lJ
Q2FzZShidWZmZXIsICInbm9uZSciKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2tp
cFdoaWxlPENoYXJhY3RlclR5cGUsIGlzQVNDSUlTcGFjZT4oYnVmZmVyKTsKKyAgICBza2lwV2hp
bGU8aXNBU0NJSVNwYWNlPihidWZmZXIpOwogCiAgICAgcmV0dXJuIGJ1ZmZlci5hdEVuZCgpOwog
fQpAQCAtMTU5LDEyICsxNTksMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0OjptYQogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3Rl
clR5cGU+IGJ1ZmZlcikKIHsKICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5p
bmcoKSkgewotICAgICAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNBU0NJSVNwYWNlPihi
dWZmZXIpOworICAgICAgICBza2lwV2hpbGU8aXNBU0NJSVNwYWNlPihidWZmZXIpOwogICAgICAg
ICBpZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0
byBiZWdpblNvdXJjZSA9IGJ1ZmZlci5wb3NpdGlvbigpOwotICAgICAgICBza2lwV2hpbGU8Q2hh
cmFjdGVyVHlwZSwgaXNTb3VyY2VDaGFyYWN0ZXI+KGJ1ZmZlcik7CisgICAgICAgIHNraXBXaGls
ZTxpc1NvdXJjZUNoYXJhY3Rlcj4oYnVmZmVyKTsKIAogICAgICAgICBhdXRvIHNvdXJjZUJ1ZmZl
ciA9IFN0cmluZ1BhcnNpbmdCdWZmZXIgeyBiZWdpblNvdXJjZSwgYnVmZmVyLnBvc2l0aW9uKCkg
fTsKIApAQCAtMjMxLDcgKzIzMSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IE9wdGlvbmEKICAgICBhdXRvIGJlZ2luUGF0aCA9IGJ1ZmZlci5lbmQoKTsKICAgICBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBiZWdpblBvcnQgPSBudWxscHRyOwogCi0gICAgc2tpcFdoaWxlPENoYXJh
Y3RlclR5cGUsIGlzTm90Q29sb25PclNsYXNoPihidWZmZXIpOworICAgIHNraXBXaGlsZTxpc05v
dENvbG9uT3JTbGFzaD4oYnVmZmVyKTsKIAogICAgIGlmIChidWZmZXIuYXRFbmQoKSkgewogICAg
ICAgICAvLyBob3N0CkBAIC0yODcsNyArMjg3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gT3B0aW9uYQogICAgICAgICAgICAgc291cmNlLnNjaGVtZSA9IFdURk1vdmUoKnNj
aGVtZSk7CiAKICAgICAgICAgICAgIGJlZ2luSG9zdCA9IGJ1ZmZlci5wb3NpdGlvbigpOwotICAg
ICAgICAgICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzTm90Q29sb25PclNsYXNoPihidWZm
ZXIpOworICAgICAgICAgICAgc2tpcFdoaWxlPGlzTm90Q29sb25PclNsYXNoPihidWZmZXIpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkg
JiYgKmJ1ZmZlciA9PSAnOicpIHsKQEAgLTM0MywxMCArMzQzLDEwIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmEKIAogICAgIGF1dG8gYmVnaW4gPSBidWZmZXIucG9z
aXRpb24oKTsKIAotICAgIGlmICghc2tpcEV4YWN0bHk8Q2hhcmFjdGVyVHlwZSwgaXNBU0NJSUFs
cGhhPihidWZmZXIpKQorICAgIGlmICghc2tpcEV4YWN0bHk8aXNBU0NJSUFscGhhPihidWZmZXIp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgc2tpcFdoaWxlPENoYXJhY3Rl
clR5cGUsIGlzU2NoZW1lQ29udGludWF0aW9uQ2hhcmFjdGVyPihidWZmZXIpOworICAgIHNraXBX
aGlsZTxpc1NjaGVtZUNvbnRpbnVhdGlvbkNoYXJhY3Rlcj4oYnVmZmVyKTsKIAogICAgIGlmICgh
YnVmZmVyLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zODAsMTAg
KzM4MCwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hCiAgICAg
YXV0byBob3N0QmVnaW4gPSBidWZmZXIucG9zaXRpb24oKTsKIAogICAgIHdoaWxlIChidWZmZXIu
aGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpKSB7Ci0gICAgICAgIGlmICghc2tpcEV4YWN0bHk8Q2hh
cmFjdGVyVHlwZSwgaXNIb3N0Q2hhcmFjdGVyPihidWZmZXIpKQorICAgICAgICBpZiAoIXNraXBF
eGFjdGx5PGlzSG9zdENoYXJhY3Rlcj4oYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICAgICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlzSG9zdENoYXJh
Y3Rlcj4oYnVmZmVyKTsKKyAgICAgICAgc2tpcFdoaWxlPGlzSG9zdENoYXJhY3Rlcj4oYnVmZmVy
KTsKIAogICAgICAgICBpZiAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiAhc2tp
cEV4YWN0bHkoYnVmZmVyLCAnLicpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
QEAgLTM5OSw3ICszOTksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRp
b25hCiAgICAgQVNTRVJUKGJ1ZmZlci5wb3NpdGlvbigpIDw9IGJ1ZmZlci5lbmQoKSk7CiAgICAg
CiAgICAgYXV0byBiZWdpbiA9IGJ1ZmZlci5wb3NpdGlvbigpOwotICAgIHNraXBXaGlsZTxDaGFy
YWN0ZXJUeXBlLCBpc1BhdGhDb21wb25lbnRDaGFyYWN0ZXI+KGJ1ZmZlcik7CisgICAgc2tpcFdo
aWxlPGlzUGF0aENvbXBvbmVudENoYXJhY3Rlcj4oYnVmZmVyKTsKICAgICAvLyBwYXRoL3RvL2Zp
bGUuanM/cXVlcnk9c3RyaW5nIHx8IHBhdGgvdG8vZmlsZS5qcyNhbmNob3IKICAgICAvLyAgICAg
ICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KICAgICBpZiAoYnVm
ZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkKQEAgLTQzMCw3ICs0MzAsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hCiAgICAgfQogICAgIAogICAgIGF1dG8g
YmVnaW4gPSBidWZmZXIucG9zaXRpb24oKTsKLSAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwg
aXNBU0NJSURpZ2l0PihidWZmZXIpOworICAgIHNraXBXaGlsZTxpc0FTQ0lJRGlnaXQ+KGJ1ZmZl
cik7CiAgICAgCiAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKQEAgLTQ2MSw3ICs0NjEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBib29sIENvCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gYmVnaW5Ob25j
ZVZhbHVlID0gYnVmZmVyLnBvc2l0aW9uKCk7Ci0gICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUs
IGlzTm9uY2VDaGFyYWN0ZXI+KGJ1ZmZlcik7CisgICAgc2tpcFdoaWxlPGlzTm9uY2VDaGFyYWN0
ZXI+KGJ1ZmZlcik7CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpIHx8IGJ1ZmZlci5wb3NpdGlvbigp
ID09IGJlZ2luTm9uY2VWYWx1ZSB8fCAqYnVmZmVyICE9ICdcJycpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBtX25vbmNlcy5hZGQoU3RyaW5nKGJlZ2luTm9uY2VWYWx1ZSwgYnVmZmVyLnBv
c2l0aW9uKCkgLSBiZWdpbk5vbmNlVmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGVDb21wb25lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAJKHJldmlzaW9uIDI2NTEyNikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcg
KzEwOSw3IEBAIGludCBEYXRlQ29tcG9uZW50czo6bWF4V2Vla051bWJlckluWWVhcigKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyB1bnNpZ25lZCBjb3VudERpZ2l0cyhT
dHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+IGJ1ZmZlcikKIHsKICAgICBhdXRvIGJl
Z2luID0gYnVmZmVyLnBvc2l0aW9uKCk7Ci0gICAgc2tpcFdoaWxlPENoYXJhY3RlclR5cGUsIGlz
QVNDSUlEaWdpdD4oYnVmZmVyKTsKKyAgICBza2lwV2hpbGU8aXNBU0NJSURpZ2l0PihidWZmZXIp
OwogICAgIHJldHVybiBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCShyZXZpc2lvbiAyNjUxMjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICsz
NiwxMCBAQCBib29sIFNWR0xlbmd0aExpc3Q6OnBhcnNlKFN0cmluZ1ZpZXcgdmFsCiAgICAgY2xl
YXJJdGVtcygpOwogCiAgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyh2YWx1ZSwg
WyZdKGF1dG8gYnVmZmVyKSB7Ci0gICAgICAgIHVzaW5nIENoYXJhY3RlclR5cGUgPSB0eXBlbmFt
ZSBkZWNsdHlwZShidWZmZXIpOjpDaGFyYWN0ZXJUeXBlOwotCiAgICAgICAgIHdoaWxlIChidWZm
ZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpKSB7CiAgICAgICAgICAgICBhdXRvIHN0YXJ0ID0g
YnVmZmVyLnBvc2l0aW9uKCk7CiAKLSAgICAgICAgICAgIHNraXBVbnRpbDxDaGFyYWN0ZXJUeXBl
LCBpc1NWR1NwYWNlT3JDb21tYT4oYnVmZmVyKTsKKyAgICAgICAgICAgIHNraXBVbnRpbDxpc1NW
R1NwYWNlT3JDb21tYT4oYnVmZmVyKTsKIAogICAgICAgICAgICAgaWYgKGJ1ZmZlci5wb3NpdGlv
bigpID09IHN0YXJ0KQogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDI2NTEyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmEKICAg
ICBhdXRvIHB0clN0YXJ0SW50UGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgIAogICAgIC8v
IEFkdmFuY2UgdG8gZmlyc3Qgbm9uLWRpZ2l0LgotICAgIHNraXBXaGlsZTxDaGFyYWN0ZXJUeXBl
LCBpc0FTQ0lJRGlnaXQ+KGJ1ZmZlcik7CisgICAgc2tpcFdoaWxlPGlzQVNDSUlEaWdpdD4oYnVm
ZmVyKTsKIAogICAgIGlmIChidWZmZXIucG9zaXRpb24oKSAhPSBwdHJTdGFydEludFBhcnQpIHsK
ICAgICAgICAgYXV0byBwdHJTY2FuSW50UGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpIC0gMTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2NTEy
NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzAsMTMgKzcwLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGNvbnN0ZXgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJv
b2wgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGNvbnN0IENoYXJhY3RlclR5cGUqJiBwdHIsIGNvbnN0
IENoYXJhY3RlclR5cGUqIGVuZCkKIHsKLSAgICBza2lwV2hpbGU8Q2hhcmFjdGVyVHlwZSwgaXNT
VkdTcGFjZT4ocHRyLCBlbmQpOworICAgIHNraXBXaGlsZTxpc1NWR1NwYWNlPihwdHIsIGVuZCk7
CiAgICAgcmV0dXJuIHB0ciA8IGVuZDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gY29uc3RleHByIGJvb2wgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGNoYXJhY3RlcnMpCiB7Ci0gICAgc2tpcFdoaWxlPENoYXJh
Y3RlclR5cGUsIGlzU1ZHU3BhY2U+KGNoYXJhY3RlcnMpOworICAgIHNraXBXaGlsZTxpc1NWR1Nw
YWNlPihjaGFyYWN0ZXJzKTsKICAgICByZXR1cm4gY2hhcmFjdGVycy5oYXNDaGFyYWN0ZXJzUmVt
YWluaW5nKCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>