<?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>221149</bug_id>
          
          <creation_ts>2021-01-29 12:57:38 -0800</creation_ts>
          <short_desc>SourceParseMode should be a member of the JSC::Parser</short_desc>
          <delta_ts>2021-01-29 16:37:13 -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>New Bugs</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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1723840</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-01-29 12:57:38 -0800</bug_when>
    <thetext>SourceParseMode should be a member of the JSC::Parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723842</commentid>
    <comment_count>1</comment_count>
      <attachid>418762</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-01-29 12:59:51 -0800</bug_when>
    <thetext>Created attachment 418762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723877</commentid>
    <comment_count>2</comment_count>
      <attachid>418762</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-01-29 14:06:57 -0800</bug_when>
    <thetext>Comment on attachment 418762
Patch

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

LGTM overall.

&gt; Source/JavaScriptCore/parser/Parser.h:1172
&gt; +    using ParseModeScope = SetForScope&lt;SourceParseMode&gt;;

I think this might be more confusing than helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723879</commentid>
    <comment_count>3</comment_count>
      <attachid>418771</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-01-29 14:15:43 -0800</bug_when>
    <thetext>Created attachment 418771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723880</commentid>
    <comment_count>4</comment_count>
      <attachid>418772</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-01-29 14:16:57 -0800</bug_when>
    <thetext>Created attachment 418772
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723947</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-29 16:36:12 -0800</bug_when>
    <thetext>Committed r272086: &lt;https://trac.webkit.org/changeset/272086&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418772.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723949</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-29 16:37:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73777391&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418762</attachid>
            <date>2021-01-29 12:59:51 -0800</date>
            <delta_ts>2021-01-29 14:15:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221149-20210129125950.patch</filename>
            <type>text/plain</type>
            <size>45023</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MjI1YjA3ZTc0YzJiOWYxYmE5YmU2OWQ2NWMzYWY4M2QyNjY1MTk0Li4yYmE1MWRlOGI5ZDM3ODBj
YmY0NzliZDgxOTg5OGNhNzQ3YzA1ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0wMS0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgc2hvdWxkIGJlIGEgbWVtYmVyIG9mIHRo
ZSBKU0M6OlBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmlnaHQgbm93IHdlIHBhc3MgdGhlIFNvdXJjZVBhcnNlTW9kZSBhcyBhIGFyZ3VtZW50
IHRvIG1hbnkgb2YgdGhlCisgICAgICAgIGZ1bmN0aW9ucyBpbiB0aGUgcGFyc2VyLiBUaGlzIHBh
dGNoIG1vdmUgaXQgaW50byBhIG1lbWJlciBvbiB0aGUKKyAgICAgICAgY2xhc3MuIFRoaXMgd2ls
bCBtYWtlIGl0IGF2YWlsYWJsZSBkZWVwZXIgaW4gdGhlIHBhcnNlciwgd2hpY2ggaXMKKyAgICAg
ICAgaW1wb3J0YW50IGZvciBpbXBsZW1lbnRpbmcgdG9wIGxldmVsIGF3YWl0LgorCisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5
bmNHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUdldHRlclNldHRlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzb3VyY2VQYXJzZU1vZGUgY29u
c3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAo
SlNDOjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlRnVuY3Rpb25Gb3JGdW5jdGlvbkNvbnN0
cnVjdG9yKToKKwogMjAyMS0wMS0yOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIFdlYkFzc2VtYmx5Lkdsb2JhbCBzaG91bGQgc3Vw
cG9ydCBGdW5jcmVmIGFuZCBFeHRlcm5yZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCA3MDY3NGM0OGI2MjMyNzQ1MTUwYzk3MTAyODczMjIwZGExMzA3NTdjLi4x
YWM5ZjY1NWJhZDg5ZmE2ZTU0YWJhZmNmNDkzOTRlZGYwOWE5Yzg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgUGFyc2VyPExleGVy
VHlwZT46OlBhcnNlcihWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJC
dWlsdGluTW9kZQogICAgICwgbV9hbGxvd3NJbih0cnVlKQogICAgICwgbV9zdGF0ZW1lbnREZXB0
aCgwKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpCdWlsdGluKQorICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgICwgbV9z
Y3JpcHRNb2RlKHNjcmlwdE1vZGUpCiAgICAgLCBtX3N1cGVyQmluZGluZyhzdXBlckJpbmRpbmcp
CiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uKGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uKQpAQCAtMjA5LDkgKzIxMCwxMCBA
QCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+Ci1FeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5l
clJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVu
dGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29u
dGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFy
YW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0Zp
ZWxkTG9jYXRpb25zKQorRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNl
SW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3Qg
SWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9w
dGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29u
c3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBB
U1RCdWlsZGVyIGNvbnRleHQoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBj
b25zdF9jYXN0PFNvdXJjZUNvZGUqPihtX3NvdXJjZSkpOworICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBzb3VyY2VQYXJzZU1vZGUoKTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJl
bnRTY29wZSgpOwogICAgIHNjb3BlLT5zZXRJc0xleGljYWxTY29wZSgpOwogICAgIFNldEZvclNj
b3BlPEZ1bmN0aW9uUGFyc2VQaGFzZT4gZnVuY3Rpb25QYXJzZVBoYXNlUG9pc29uZXIobV9wYXJz
ZXJTdGF0ZS5mdW5jdGlvblBhcnNlUGhhc2UsIEZ1bmN0aW9uUGFyc2VQaGFzZTo6Qm9keSk7CkBA
IC0yMjUsNyArMjI3LDcgQEAgRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBh
cnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT4KICAgICAgICAgZWxzZSBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9k
ZSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFyYW1ldGVycyA9IHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAg
ICAgICAgIHBhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBmdW5j
dGlvbkluZm8pOwogCiAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Nb2RlKS5jb250YWlucyhwYXJzZU1vZGUpICYmICFoYXNFcnJvcigpKSB7CiAgICAgICAgICAg
ICAvLyBUaGUgb25seSB3YXkgd2UgY291bGQgaGF2ZSBhbiBlcnJvciB3aGlsZSByZXBhcnNpbmcg
aXMgaWYgd2UgcnVuIG91dCBvZiBzdGFjayBzcGFjZS4KQEAgLTI0NSwxNSArMjQ3LDE1IEBAIEV4
cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJp
bmc+IFBhcnNlcjxMZXhlclR5cGU+CiAgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiBlcnJvciB0
aGlzIGVhcmx5IGlzIGlmIHdlIHJlcGFyc2UgYSBmdW5jdGlvbiBhbmQgd2UgcnVuIG91dCBvZiBz
dGFjayBzcGFjZS4KICAgICBpZiAoIWhhc0Vycm9yKCkpIHsKICAgICAgICAgaWYgKGlzQXN5bmNG
dW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSkKLSAgICAgICAgICAgIHNvdXJjZUVs
ZW1lbnRzID0gcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VN
b2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsK
KyAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxl
bWVudHMoY29udGV4dCwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIENoZWNrRm9yU3Ry
aWN0TW9kZSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVF
eHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlmIChp
c01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUpKQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMg
PSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7CisgICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCk7
CiAgICAgICAgIGVsc2UgaWYgKGlzR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUp
KQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291
cmNlRWxlbWVudHMoY29udGV4dCwgY2FsbGVlTmFtZSwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKICAg
ICAgICAgZWxzZSBpZiAoaXNBc3luY0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2Rl
KSkKLSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0
aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIHNvdXJjZUVsZW1l
bnRzID0gcGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAg
ICAgIGVsc2UgaWYgKHBhcnNpbmdDb250ZXh0ID09IFBhcnNpbmdDb250ZXh0OjpGdW5jdGlvbkNv
bnN0cnVjdG9yKQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNpbmdsZUZ1bmN0
aW9uKGNvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwog
ICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXJNb2RlKSB7CkBAIC00MDksNyArNDExLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291
cmNlRWwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU1vZHVsZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRz
ID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwogICAgIFN5bnRheENoZWNrZXIgc3lu
dGF4Q2hlY2tlcihjb25zdF9jYXN0PFZNJj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwpAQCAtNDQy
LDcgKzQ0NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvCiAgICAgICAgIGRlZmF1bHQ6IHsK
ICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IG51bGxwdHI7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMDsKLSAgICAgICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSkgewor
ICAgICAgICAgICAgaWYgKHNvdXJjZVBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6TW9k
dWxlQW5hbHl6ZU1vZGUpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlU3RhdGVtZW50TGlz
dEl0ZW0oc3ludGF4Q2hlY2tlciwgZGlyZWN0aXZlLCAmZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkp
CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtNTIwLDkgKzUyMiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9uU291
cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIFNvdXJjZUVsZW1lbnRzTW9k
ZSBtb2RlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3Vy
Y2VFbGVtZW50c01vZGUgbW9kZSkKIHsKLSAgICBBU1NFUlQoaXNBc3luY0Z1bmN0aW9uT3JBc3lu
Y0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSk7CisgICAgQVNTRVJUKGlzQXN5
bmNGdW5jdGlvbk9yQXN5bmNHZW5lcmF0b3JXcmFwcGVyUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9k
ZSgpKSk7CiAgICAgYXV0byBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxl
bWVudHMoKTsKIAogICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFy
dCgpOwpAQCAtNTM4LDExICs1NDAsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KICAgICBp
bmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0g
dG9rZW5MaW5lKCk7CiAKLSAgICBTb3VyY2VQYXJzZU1vZGUgaW5uZXJQYXJzZU1vZGUgPSBnZXRB
c3luRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSk7Ci0KKyAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gZ2V0QXN5bkZ1bmN0aW9uQm9keVBhcnNlTW9kZShzb3VyY2VQYXJzZU1v
ZGUoKSk7CisgICAgUGFyc2VNb2RlU2NvcGUgaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIHBh
cnNlTW9kZSk7CiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgYXN5bmNGdW5jdGlvbkJv
ZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7Ci0gICAgICAgIGFzeW5jRnVuY3Rpb25Cb2R5U2Nv
cGUtPnNldFNvdXJjZVBhcnNlTW9kZShpbm5lclBhcnNlTW9kZSk7CisgICAgICAgIGFzeW5jRnVu
Y3Rpb25Cb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSk7CiAg
ICAgICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tlcihjb25zdF9jYXN0PFZNJj4obV92bSks
IG1fbGV4ZXIuZ2V0KCkpOwogICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pIHsKICAgICAgICAgICAgIGlmIChtX2RlYnVnZ2VyUGFyc2VEYXRhKQpAQCAtNTU3LDEzICs1
NTksMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KICAgICAgICAgfQogICAgICAgICBwb3BT
Y29wZShhc3luY0Z1bmN0aW9uQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFi
bGVJbmZvKTsKICAgICB9Ci0gICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2Vu
Q29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1l
dGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJp
bmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIGlubmVyUGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbik7CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRv
a2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBl
ckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUo
KTsKICAgICBpbmZvLmVuZE9mZnNldCA9IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID8g
dG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCA6IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKICAgICBp
bmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwogCi0gICAgYXV0byBmdW5j
dGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24s
IGluZm8sIGlubmVyUGFyc2VNb2RlKTsKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQu
Y3JlYXRlQXN5bmNGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgaW5mbywgcGFyc2VNb2RlKTsK
ICAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFydExv
Y2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUp
OwogICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQp
OwogCkBAIC01NzEsOSArNTczLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jR2VuZXJhdG9y
RnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNl
RWxlbWVudHNNb2RlIG1vZGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0aW9u
U291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24sIFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlKQogewotICAgIEFTU0VSVF9V
TlVTRUQocGFyc2VNb2RlLCBpc0FzeW5jR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZShwYXJzZU1v
ZGUpKTsKKyAgICBBU1NFUlQoaXNBc3luY0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUoc291cmNl
UGFyc2VNb2RlKCkpKTsKICAgICBhdXRvIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVT
b3VyY2VFbGVtZW50cygpOwogICAgICAgICAKICAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRT
dGFydCA9IHRva2VuU3RhcnQoKTsKQEAgLTU4OCwxMCArNTkwLDEyIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUFzeW5jR2VuCiAgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBh
cmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0Owog
ICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgU291cmNlUGFyc2VNb2RlIGlu
bmVyUGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlOwor
CisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNH
ZW5lcmF0b3JCb2R5TW9kZTsKKyAgICBQYXJzZU1vZGVTY29wZSBpbm5lclBhcnNlTW9kZShtX3Bh
cnNlTW9kZSwgcGFyc2VNb2RlKTsKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBhc3lu
Y0Z1bmN0aW9uQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKLSAgICAgICAgYXN5bmNGdW5j
dGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKGlubmVyUGFyc2VNb2RlKTsKKyAgICAg
ICAgYXN5bmNGdW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKHNvdXJjZVBhcnNl
TW9kZSgpKTsKICAgICAgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8
Vk0mPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CiAgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbikgewogICAgICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCkBA
IC02MDYsMTMgKzYxMCwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0dlbgogICAgICAgICB9CiAg
ICAgICAgIHBvcFNjb3BlKGFzeW5jRnVuY3Rpb25Cb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVk
c0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0KLSAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENv
bHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgaW5uZXJQYXJzZU1vZGUsIGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFy
dENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxp
bmUoKTsKICAgICBpbmZvLmVuZE9mZnNldCA9IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
ID8gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCA6IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKICAg
ICBpbmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwogCi0gICAgYXV0byBm
dW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRp
b24sIGluZm8sIGlubmVyUGFyc2VNb2RlKTsKKyAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRl
eHQuY3JlYXRlQXN5bmNGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgaW5mbywgcGFyc2VNb2Rl
KTsKICAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFy
dExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxp
bmUpOwogICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1l
bnQpOwogICAgICAgICAKQEAgLTIxMzIsNyArMjEzNiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRy
ZWVCCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
Qm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgU3ludGF4Q2hlY2tlciYgc3ludGF4Q2hl
Y2tlciwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1
bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQorICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIEZ1
bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50KQogewogICAg
IFNldEZvclNjb3BlPGJvb2w+IG92ZXJyaWRlUGFyc2luZ0NsYXNzRmllbGRJbml0aWFsaXplciht
X3BhcnNlclN0YXRlLmlzUGFyc2luZ0NsYXNzRmllbGRJbml0aWFsaXplciwgYm9keVR5cGUgPT0g
U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/IGZhbHNlIDogbV9wYXJzZXJTdGF0ZS5pc1BhcnNp
bmdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24gPSBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247CkBAIC0y
MTQxLDcgKzIxNDUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlv
bkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgICAgICBpZiAobWF0
Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7CiAgICAgICAgICAgICBTdXBlckJpbmRpbmcgZnVuY3Rpb25TdXBlckJpbmRpbmcg
PSBhZGp1c3RTdXBlckJpbmRpbmdGb3JCYXNlQ29uc3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBz
dXBlckJpbmRpbmcsIGN1cnJlbnRTY29wZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBz
dGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIGZ1
bmN0aW9uU3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvblN1
cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxNjAsNyArMjE2
NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgfQogICAgIHVuc2lnbmVkIGVuZENv
bHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgU3VwZXJCaW5kaW5nIGZ1bmN0aW9uU3VwZXJCaW5k
aW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFzZUNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2lu
ZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUoKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rp
b25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVt
biwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywg
cGFyYW1ldGVyQ291bnQsIHNvdXJjZVBhcnNlTW9kZSgpLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdBcnRpY2xlRm9yRnVuY3Rp
b25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpAQCAtMjIzNyw4ICsyMjQxLDkgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4g
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZVBhcnNl
TW9kZSBtb2RlLCBGdW5jdGlvbkluZm9UeXBlJiBmdW5jdGlvbkluZm8pCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0
aW9uSW5mb1R5cGU+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29u
dGV4dCwgRnVuY3Rpb25JbmZvVHlwZSYgZnVuY3Rpb25JbmZvKQogeworICAgIGF1dG8gbW9kZSA9
IHNvdXJjZVBhcnNlTW9kZSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEoU291cmNlUGFyc2VNb2Rl
U2V0KFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
QW5hbHl6ZU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKS5jb250YWlu
cyhtb2RlKSkpOwogICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlckxpc3QgPSBj
b250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKICAgICBTZXRGb3JTY29wZTxGdW5j
dGlvblBhcnNlUGhhc2U+IGZ1bmN0aW9uUGFyc2VQaGFzZVBvaXNvbmVyKG1fcGFyc2VyU3RhdGUu
ZnVuY3Rpb25QYXJzZVBoYXNlLCBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMpOwpAQCAt
MjMzOSw4ICsyMzQ0LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGUKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQs
IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBt
b2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25J
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlv
bmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikKK3RlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyBy
ZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBm
dW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlw
ZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9u
KQogeworICAgIGF1dG8gbW9kZSA9IHNvdXJjZVBhcnNlTW9kZSgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkpOwogCiAgICAgU2NvcGVSZWYgcGFyZW50U2Nv
cGUgPSBjdXJyZW50U2NvcGUoKTsKQEAgLTI0NTYsNyArMjQ2Miw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8o
VHJlZUJ1aWxkCiAgICAgICAgICAgICAvLyBpbiBBcnJvd0Zvcm1hbFBhcmFtZXRlcnMsIHBlciBF
UzYgI3NlYy1hcnJvdy1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5
LWVycm9ycy4KICAgICAgICAgICAgIFNjb3BlOjpNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29w
ZSBwYXJzZUFzR2VuZXJhdG9yKGZ1bmN0aW9uU2NvcGUsIHBhcmVudFNjb3BlLT5pc0dlbmVyYXRv
cigpKTsKICAgICAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IG92ZXJyaWRlQWxsb3dBd2FpdCht
X3BhcnNlclN0YXRlLmFsbG93QXdhaXQsICFwYXJlbnRTY29wZS0+aXNBc3luY0Z1bmN0aW9uKCkg
JiYgIWlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7Ci0gICAgICAgICAgICBwYXJzZUZ1
bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbkluZm8pOworICAg
ICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoc3ludGF4Q2hlY2tlciwgZnVuY3Rpb25J
bmZvKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgIH0KIApAQCAtMjUz
MCw3ICsyNTM2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB7CiAgICAgICAgICAgICBTZXRGb3JTY29wZTxib29sPiBvdmVycmlk
ZUFsbG93QXdhaXQobV9wYXJzZXJTdGF0ZS5hbGxvd0F3YWl0LCAhaXNBc3luY0Z1bmN0aW9uUGFy
c2VNb2RlKG1vZGUpKTsKLSAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKHN5bnRh
eENoZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7CisgICAgICAgICAgICBwYXJzZUZ1bmN0aW9u
UGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBmdW5jdGlvbkluZm8pOwogICAgICAgICAgICAgcHJv
cGFnYXRlRXJyb3IoKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI1ODAsNyArMjU4Niw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgfSk7CiAKICAgICBhdXRvIHBlcmZvcm1QYXJz
aW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5
KGNvbnRleHQsIHN5bnRheENoZWNrZXIsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5j
dGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29u
c3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVu
Y3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVu
Y3Rpb25Cb2R5KGNvbnRleHQsIHN5bnRheENoZWNrZXIsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29s
dW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNT
dGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5
VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICB9OwogCiAgICAgaWYgKGlz
R2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkgewpAQCAtMjY5
NSw2ICsyNzAxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGEKICAgICAgICAgbmV4dCgpOwog
ICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5j
dGlvbk1vZGU7CiAgICAgfQorICAgIFBhcnNlTW9kZVNjb3BlIGlubmVyUGFyc2VNb2RlKG1fcGFy
c2VNb2RlLCBwYXJzZU1vZGUpOwogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiBmdW5jdGlvbkluZm87CiAgICAgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50
cyA9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6TmFtZWQ7CkBAIC0yNzIzLDcgKzI3MzAsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYQogICAgICAgICBmdW5jdGlvbkluZm8ubmFtZSA9ICZt
X3ZtLnByb3BlcnR5TmFtZXMtPnN0YXJEZWZhdWx0UHJpdmF0ZU5hbWU7CiAgICAgfQogCi0gICAg
ZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIHJlcXVpcmVtZW50cywgcGFy
c2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRp
b25UeXBlOjpEZWNsYXJhdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbikpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVuY3Rpb24iKTsKKyAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgcmVxdWlyZW1lbnRzLCB0cnVlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbiwgZnVu
Y3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRo
aXMgZnVuY3Rpb24iKTsKICAgICBBU1NFUlQoZnVuY3Rpb25JbmZvLm5hbWUpOwogCiAgICAgc3Rk
OjpwYWlyPERlY2xhcmF0aW9uUmVzdWx0TWFzaywgU2NvcGVSZWY+IGZ1bmN0aW9uRGVjbGFyYXRp
b24gPSBkZWNsYXJlRnVuY3Rpb24oZnVuY3Rpb25JbmZvLm5hbWUpOwpAQCAtMjc1NCw2ICsyNzYx
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb24KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlID0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZTsKICAgICBpZiAoY29uc3Vt
ZShUSU1FUykpCiAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5l
cmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOworICAgIFBhcnNlTW9kZVNjb3BlIGlubmVyUGFyc2VN
b2RlKG1fcGFyc2VNb2RlLCBwYXJzZU1vZGUpOwogCiAgICAgRnVuY3Rpb25OYW1lUmVxdWlyZW1l
bnRzIHJlcXVpcmVtZW50cyA9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6TmFtZWQ7CiAgICAg
aWYgKGRlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPT0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4
dDo6RXhwb3J0RGVmYXVsdCkgewpAQCAtMjc4MSw3ICsyNzg5LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5j
RnVuY3Rpb24KICAgICAgICAgZnVuY3Rpb25JbmZvLm5hbWUgPSAmbV92bS5wcm9wZXJ0eU5hbWVz
LT5zdGFyRGVmYXVsdFByaXZhdGVOYW1lOwogICAgIH0KIAotICAgIGZhaWxJZkZhbHNlKChwYXJz
ZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCByZXF1aXJlbWVudHMsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRp
b24sIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pKSwgIkNhbm5vdCBw
YXJzZSB0aGlzIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvKGNvbnRleHQsIHJlcXVpcmVtZW50cywgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
SW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RGVjbGFyYXRpb24sIGZ1bmN0aW9uQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGFzeW5jIGZ1
bmN0aW9uIik7CiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJBc3luYyBmdW5j
dGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKIAogICAgIHN0ZDo6cGFpcjxEZWNs
YXJhdGlvblJlc3VsdE1hc2ssIFNjb3BlUmVmPiBmdW5jdGlvbkRlY2xhcmF0aW9uID0gZGVjbGFy
ZUZ1bmN0aW9uKGZ1bmN0aW9uSW5mby5uYW1lKTsKQEAgLTMwNDcsNyArMzA1NSw4IEBAIHBhcnNl
TWV0aG9kOgogICAgICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSAiLCBzdHJpbmdBcnRpY2xl
Rm9yRnVuY3Rpb25Nb2RlKHBhcnNlTW9kZSksIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShwYXJzZU1v
ZGUpLCAiIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKIAogICAgICAgICAgICAgbWV0aG9kSW5mby5u
YW1lID0gaXNDb25zdHJ1Y3RvciA/IGluZm8uY2xhc3NOYW1lIDogaWRlbnQ7Ci0gICAgICAgICAg
ICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVx
dWlyZW1lbnRzOjpVbm5hbWVkLCBwYXJzZU1vZGUsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29u
c3RydWN0b3JLaW5kIDogQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhv
ZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CisgICAgICAgICAgICBQYXJzZU1vZGVT
Y29wZSBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1
aXJlbWVudHM6OlVubmFtZWQsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5k
IDogQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3Rh
cnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90
IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG1ldGhv
ZCA9IGNvbnRleHQuY3JlYXRlTWV0aG9kRGVmaW5pdGlvbihtZXRob2RMb2NhdGlvbiwgbWV0aG9k
SW5mbyk7CiAgICAgICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcikgewpAQCAtNDI2Myw3ICs0Mjcy
LDggQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtYXRjaChPUEVO
UEFSRU4pKSB7Ci0gICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2Qo
Y29udGV4dCwgaWRlbnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICBQYXJzZU1vZGVTY29wZSBp
bm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIGF1dG8g
bWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChjb250ZXh0LCBpZGVudCk7CiAgICAgICAgICAg
ICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJv
cGVydHkoaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgU3VwZXJCaW5kaW5n
OjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAg
ICAgIH0KQEAgLTQzMDIsOCArNDMxMiw5IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIG5leHQo
KTsKIAogICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgeworICAgICAgICAgICAgUGFyc2VN
b2RlU2NvcGUgaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIHBhcnNlTW9kZSk7CiAgICAgICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IG1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFy
ZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgcHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChj
b250ZXh0LCAmaWRlbnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBh
cnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwgJmlkZW50KTsKICAgICAgICAgICAgIHByb3BhZ2F0
ZUVycm9yKCk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eSgmaWRl
bnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQs
IEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0KQEAg
LTQzMjAsNyArNDMzMSw4IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIG5leHQoKTsKIAogICAg
ICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewotICAgICAgICAgICAgYXV0byBtZXRob2QgPSBw
YXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsIGlkZW50LCBwYXJzZU1vZGUpOworICAgICAgICAg
ICAgUGFyc2VNb2RlU2NvcGUgaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIHBhcnNlTW9kZSk7
CisgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwg
aWRlbnQpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5Tm9kZTo6Q29u
c3RhbnQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxl
bWVudFRhZzo6Tm8pOwogICAgICAgICB9CkBAIC00MzM5LDcgKzQzNTEsOCBAQCBuYW1lZFByb3Bl
cnR5OgogICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAi
ZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKIAogICAgICAgICBpZiAobWF0Y2goT1BF
TlBBUkVOKSkgewotICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9k
KGNvbnRleHQsICZtX3ZtLnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBwYXJzZU1vZGUp
OworICAgICAgICAgICAgUGFyc2VNb2RlU2NvcGUgaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUs
IHBhcnNlTW9kZSk7CisgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRo
b2QoY29udGV4dCwgJm1fdm0ucHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpOwogICAgICAg
ICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbWV0aG9kLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6
OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwg
U3VwZXJCaW5kaW5nOjpOZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgICAgICB9CkBA
IC00MzY5LDE0ICs0MzgyLDE0IEBAIG5hbWVkUHJvcGVydHk6CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwg
Y29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSkKIHsKLSAgICBBU1NFUlQoaXNNZXRob2RQYXJz
ZU1vZGUocGFyc2VNb2RlKSk7CisgICAgQVNTRVJUKGlzTWV0aG9kUGFyc2VNb2RlKHNvdXJjZVBh
cnNlTW9kZSgpKSk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgdW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAg
UGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwogICAgIG1ldGhvZElu
Zm8ubmFtZSA9IG1ldGhvZE5hbWU7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZv
KGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgcGFyc2VNb2RlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9k
U3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fu
bm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25J
bmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2UsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIG1ldGhvZFN0YXJ0LCBt
ZXRob2RJbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJz
ZSB0aGlzIG1ldGhvZCIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU1ldGhvZERlZmluaXRp
b24obWV0aG9kTG9jYXRpb24sIG1ldGhvZEluZm8pOwogfQogCkBAIC00NDE0LDEwICs0NDI3LDEy
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVC
dWlsZGVyPiBpbmZvOwogICAgIGlmICh0eXBlICYgUHJvcGVydHlOb2RlOjpHZXR0ZXIpIHsKICAg
ICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVy
IGxpc3QgZm9yIGdldHRlciBkZWZpbml0aW9uIik7Ci0gICAgICAgIGZhaWxJZkZhbHNlKChwYXJz
ZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQs
IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0
aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIGdldHRlciBkZWZpbml0
aW9uIik7CisgICAgICAgIFBhcnNlTW9kZVNjb3BlIGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2Rl
LCBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUpOworICAgICAgICBmYWlsSWZGYWxzZSgocGFy
c2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVk
LCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JT
ZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSks
ICJDYW5ub3QgcGFyc2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgbGlz
dCBmb3Igc2V0dGVyIGRlZmluaXRpb24iKTsKLSAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVu
Y3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgU291
cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJp
bmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25E
ZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24i
KTsKKyAgICAgICAgUGFyc2VNb2RlU2NvcGUgaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIFNv
dXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSk7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIGZh
bHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRl
clN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNh
bm5vdCBwYXJzZSBzZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgIH0KIAogICAgIGlmIChzdHJpbmdQ
cm9wZXJ0eU5hbWUpCkBAIC00NTk3LDcgKzQ2MTIsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRXhw
cgogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1h
bEZ1bmN0aW9uTW9kZTsKICAgICBpZiAoY29uc3VtZShUSU1FUykpCiAgICAgICAgIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTsKLSAgICBm
YWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWly
ZW1lbnRzOjpOb25lLCBwYXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVu
Y3Rpb24gZXhwcmVzc2lvbiIpOworICAgIFBhcnNlTW9kZVNjb3BlIHNldElubmVyUGFyc2VNb2Rl
KG1fcGFyc2VNb2RlLCBwYXJzZU1vZGUpOworICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9u
SW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6Ok5vbmUsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9u
KSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKIH0KIApAQCAt
NDYxMiwxMCArNDYyOCwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuY3RpbwogCiAgICAgaWYgKGNv
bnN1bWUoVElNRVMpKQogICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTsKKyAgICBQYXJzZU1vZGVTY29wZSBzZXRJbm5l
clBhcnNlTW9kZShtX3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsKIAogICAgIFBhcnNlckZ1bmN0aW9u
SW5mbzxUcmVlQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgIGZ1bmN0aW9uSW5mby5uYW1lID0g
Jm1fdm0ucHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgZmFpbElmRmFsc2UocGFy
c2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpOb25lLCBw
YXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmlu
aXRpb25UeXBlOjpFeHByZXNzaW9uKSwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNGdW5jdGlvbk1vZGUgPyAiQ2Fubm90IHBhcnNlIGFzeW5jIGZ1bmN0aW9uIGV4cHJlc3Npb24i
IDogIkNhbm5vdCBwYXJzZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwor
ICAgIGZhaWxJZkZhbHNlKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJl
cXVpcmVtZW50czo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0
aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pLCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpBc3luY0Z1bmN0aW9uTW9kZSA/ICJDYW5ub3QgcGFyc2UgYXN5bmMgZnVuY3Rpb24gZXhw
cmVzc2lvbiIgOiAiQ2Fubm90IHBhcnNlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBleHByZXNz
aW9uIik7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBm
dW5jdGlvbkluZm8pOwogfQogCkBAIC01MTk4LDggKzUyMTUsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93
RnVuY3RpbwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICBp
bmZvLm5hbWUgPSAmbV92bS5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKIAotICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBpc0FzeW5jID8gU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0Fycm93RnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsK
LSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1l
UmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgYXJy
b3cgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOworICAgIFBhcnNlTW9kZVNjb3BlIGlubmVyUGFyc2VN
b2RlKG1fcGFyc2VNb2RlLCBpc0FzeW5jID8gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVu
Y3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CisgICAgZmFp
bElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVt
ZW50czo6VW5uYW1lZCwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlv
blR5cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNz
aW9uIik7CiAKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihsb2Nh
dGlvbiwgaW5mbyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBi
ZTMzYzFiZTk1ZTlkYTQ1MDBiYWYxYjgwNTliYTM1MDg0N2E4ODYxLi5jZTY4ZjcwZmIzYjc4ODIy
NWRmNzZhMTk3NTYyNWM0NmNhMTVhMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKQEAgLTk0NCw3ICs5NDQsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9k
ZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFt
ZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0
IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0g
bnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9
CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMTE2OSw2ICsxMTY5LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHVzaW5nIFBhcnNlTW9kZVNjb3Bl
ID0gU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPjsKKworICAgIEFMV0FZU19JTkxJTkUgU291
cmNlUGFyc2VNb2RlIHNvdXJjZVBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2Rl
OyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRXZhbE9yQXJndW1lbnRzKGNvbnN0IElkZW50
aWZpZXIqIGlkZW50KSB7IHJldHVybiBpc0V2YWxPckFyZ3VtZW50c0lkZW50aWZpZXIobV92bSwg
aWRlbnQpOyB9CiAKICAgICBTY29wZVJlZiB1cHBlclNjb3BlKGludCBuKQpAQCAtMTQ2Myw3ICsx
NDY2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzOwogICAgICAg
ICBpbnQgbnVtQ29uc3RhbnRzOwogICAgIH07Ci0gICAgRXhwZWN0ZWQ8UGFyc2VJbm5lclJlc3Vs
dCwgU3RyaW5nPiBwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUs
IFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlv
bj4qID0gbnVsbHB0cik7CisgICAgRXhwZWN0ZWQ8UGFyc2VJbm5lclJlc3VsdCwgU3RyaW5nPiBw
YXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0
LCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwogCiAgICAgLy8gVXNl
ZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0
aW9uTWV0YWRhdGFOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNjkxLDgg
KzE2OTQsOCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJj
ZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU291cmNlRWxlbWVudHNNb2RlKTsKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFzeW5j
RnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVudHNNb2RlKTsKLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFz
eW5jR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZVBh
cnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVu
dHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBwYXJzZUFzeW5jRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIFNvdXJjZUVsZW1lbnRzTW9kZSk7CisgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU2luZ2xlRnVu
Y3Rpb24oVHJlZUJ1aWxkZXImLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24pOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVNvdXJjZUVsZW1lbnRzIHBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMo
VHJlZUJ1aWxkZXImLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+Jik7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0
ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCog
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CkBAIC0xNzQzLDkgKzE3NDYsOSBAQCBwcml2YXRlOgog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlQXJndW1l
bnRzIHBhcnNlQXJndW1lbnRzKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlQXJndW1lbnQoVHJl
ZUJ1aWxkZXImLCBBcmd1bWVudFR5cGUmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9k
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBTb3Vy
Y2VQYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRl
bnRpZmllciogbWV0aG9kTmFtZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlUHJvcGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBQcm9wZXJ0eU5vZGU6
OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2lu
ZCwgQ2xhc3NFbGVtZW50VGFnKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFM
V0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRl
ciYsIFN5bnRheENoZWNrZXImLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgRnVuY3Rpb25Cb2R5VHlwZSwgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1
aWxkZXImLCBTeW50YXhDaGVja2VyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRl
cnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUs
IHVuc2lnbmVkKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJ
TkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFy
YW1ldGVyTGlzdCwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNNZXRob2QsIHVuc2lnbmVk
Jik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQs
IFZhckRlY2xhcmF0aW9uQ29udGV4dCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRl
ciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIGxhc3RQYXR0
ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRl
bnRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRF
bmQsIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQsIERlY2xhcmF0aW9uVHlwZSwgRXhwb3J0VHlw
ZSwgYm9vbCYgZm9yTG9vcENvbnN0RG9lc05vdEhhdmVJbml0aWFsaXplcik7CkBAIC0xNzYxLDcg
KzE3NjQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXJzZURlc3RydWN0dXJpbmdQYXR0
ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1Y3R1cmluZ0tpbmQsIEV4cG9ydFR5cGUsIGNvbnN0IElk
ZW50aWZpZXIqKiBkdXBsaWNhdGVJZGVudGlmaWVyID0gbnVsbHB0ciwgYm9vbCogaGFzRGVzdHJ1
Y3R1cmluZ1BhdHRlcm4gPSBudWxscHRyLCBBc3NpZ25tZW50Q29udGV4dCA9IEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCwgaW50IGRlcHRoID0gMCk7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0dXJpbmdQYXR0
ZXJuIHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKFRyZWVCdWlsZGVyJiwg
QXNzaWdubWVudENvbnRleHQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlRGVmYXVsdFZhbHVlRm9yRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm4oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVy
JiwgU291cmNlUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7
CiAgICAgZW51bSBjbGFzcyBJbXBvcnRTcGVjaWZpZXJUeXBlIHsgTmFtZXNwYWNlSW1wb3J0LCBO
YW1lZEltcG9ydCwgRGVmYXVsdEltcG9ydCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmllciBwYXJzZUltcG9ydENs
YXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJbXBvcnRTcGVjaWZpZXJUeXBlKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVOYW1lIHBh
cnNlTW9kdWxlTmFtZShUcmVlQnVpbGRlciYpOwpAQCAtMTc3MiwxMSArMTc3NSwxMSBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVl
RXhwcmVzc2lvbiBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoVHJlZUJ1aWxkZXImLCBjb25z
dCBJZGVudGlmaWVyKiwgYm9vbCBpc0V2YWwsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBlbnVtIGNsYXNzIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGUgeyBFeHByZXNzaW9uLCBEZWNsYXJhdGlvbiwgTWV0aG9kIH07Ci0gICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVl
QnVpbGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlLCBib29s
IG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywg
aW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+
JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRy
ZWVCdWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFp
bmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZp
bml0aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0KTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJik7CiAgICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFz
cyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZv
cm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBT
b3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IE5FVkVSX0lOTElORSB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVy
cyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWdu
ZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYp
OwpAQCAtMjA2Miw2ICsyMDY1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zdGF0ZW1lbnREZXB0
aDsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAg
IGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKKyAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7
CiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIG1fc2NyaXB0TW9kZTsKICAgICBTdXBlckJpbmRpbmcg
bV9zdXBlckJpbmRpbmc7CiAgICAgQ29uc3RydWN0b3JLaW5kIG1fZGVmYXVsdENvbnN0cnVjdG9y
S2luZEZvclRvcExldmVsRnVuY3Rpb247CkBAIC0yMDc4LDEwICsyMDgyLDExIEBAIHByaXZhdGU6
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2Vk
Tm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgY29uc3QgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKK3N0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9y
LCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29u
dGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywg
Y29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKICAg
ICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOworICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBzb3VyY2VQYXJzZU1vZGUoKTsKIAogICAgIGlmIChQYXJzZWROb2RlOjpzY29w
ZUlzRnVuY3Rpb24pCiAgICAgICAgIG1fbGV4ZXItPnNldElzUmVwYXJzaW5nRnVuY3Rpb24oKTsK
QEAgLTIwOTgsNyArMjEwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgICAgIHBh
cmVudFNjb3BlUHJpdmF0ZU5hbWVzLT5jb3B5UHJpdmF0ZU5hbWVzVG8oY3VycmVudFNjb3BlKCkt
PmxleGljYWxWYXJpYWJsZXMoKSk7CiAgICAgfQogCi0gICAgYXV0byBwYXJzZVJlc3VsdCA9IHBh
cnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJzaW5nQ29udGV4dCwgZnVuY3Rpb25D
b25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY2xhc3NGaWVsZExvY2F0aW9ucyk7Cisg
ICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2luZ0NvbnRl
eHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNsYXNzRmllbGRM
b2NhdGlvbnMpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7
CiAgICAgYm9vbCBsZXhFcnJvciA9IG1fbGV4ZXItPnNhd0Vycm9yKCk7CkBAIC0yMTk1LDcgKzIy
MDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNv
dXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2
bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2Rl
LCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9u
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRl
eHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAg
ICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJz
ZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDog
UGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgcGFyZW50U2NvcGVQcml2YXRl
TmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBh
cnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9w
dCwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOwogICAgICAg
ICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAg
ICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsK
QEAgLTIyMDgsNyArMjIxMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgK
ICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1
aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3JzIHNob3VsZCBhbHdheXMgdXNl
IGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2
bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2Rl
LCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9u
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRl
eHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAg
ICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJz
ZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDog
UGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgcGFyZW50U2NvcGVQcml2YXRl
TmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBh
cnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9w
dCwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOwogICAgICAg
ICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAg
ICB9CkBAIC0yMjM4LDEyICsyMjQzLDEyIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3Jh
bU5vZGU+IHBhcnNlRnVuY3Rpb25Gb3JGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnByb3Zp
ZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+
IHBhcnNlcih2bSwgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzRXZhbE5vZGUs
IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0cik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNl
ci5wYXJzZTxQcm9ncmFtTm9kZT4oZXJyb3IsIG5hbWUsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIFBhcnNpbmdDb250ZXh0OjpGdW5jdGlvbkNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBh
cnNlPFByb2dyYW1Ob2RlPihlcnJvciwgbmFtZSwgUGFyc2luZ0NvbnRleHQ6OkZ1bmN0aW9uQ29u
c3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwogICAg
ICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNv
dXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBpc0V2YWxOb2RlLCBFdmFsQ29udGV4dFR5
cGU6Ok5vbmUsIG51bGxwdHIpOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UHJvZ3Jh
bU5vZGU+KGVycm9yLCBuYW1lLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBQYXJzaW5n
Q29udGV4dDo6RnVuY3Rpb25Db25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQcm9ncmFtTm9k
ZT4oZXJyb3IsIG5hbWUsIFBhcnNpbmdDb250ZXh0OjpGdW5jdGlvbkNvbnN0cnVjdG9yLCBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418771</attachid>
            <date>2021-01-29 14:15:43 -0800</date>
            <delta_ts>2021-01-29 14:16:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221149-20210129141542.patch</filename>
            <type>text/plain</type>
            <size>45159</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MjI1YjA3ZTc0YzJiOWYxYmE5YmU2OWQ2NWMzYWY4M2QyNjY1MTk0Li4yYmE1MWRlOGI5ZDM3ODBj
YmY0NzliZDgxOTg5OGNhNzQ3YzA1ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0wMS0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgc2hvdWxkIGJlIGEgbWVtYmVyIG9mIHRo
ZSBKU0M6OlBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmlnaHQgbm93IHdlIHBhc3MgdGhlIFNvdXJjZVBhcnNlTW9kZSBhcyBhIGFyZ3VtZW50
IHRvIG1hbnkgb2YgdGhlCisgICAgICAgIGZ1bmN0aW9ucyBpbiB0aGUgcGFyc2VyLiBUaGlzIHBh
dGNoIG1vdmUgaXQgaW50byBhIG1lbWJlciBvbiB0aGUKKyAgICAgICAgY2xhc3MuIFRoaXMgd2ls
bCBtYWtlIGl0IGF2YWlsYWJsZSBkZWVwZXIgaW4gdGhlIHBhcnNlciwgd2hpY2ggaXMKKyAgICAg
ICAgaW1wb3J0YW50IGZvciBpbXBsZW1lbnRpbmcgdG9wIGxldmVsIGF3YWl0LgorCisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5
bmNHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUdldHRlclNldHRlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzb3VyY2VQYXJzZU1vZGUgY29u
c3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAo
SlNDOjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlRnVuY3Rpb25Gb3JGdW5jdGlvbkNvbnN0
cnVjdG9yKToKKwogMjAyMS0wMS0yOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIFdlYkFzc2VtYmx5Lkdsb2JhbCBzaG91bGQgc3Vw
cG9ydCBGdW5jcmVmIGFuZCBFeHRlcm5yZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCA3MDY3NGM0OGI2MjMyNzQ1MTUwYzk3MTAyODczMjIwZGExMzA3NTdjLi5h
YmZmNDQwNDNmYmM0OWVjZTk2M2MzNGRiZWVmNjNiMWYxZWY0NTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgUGFyc2VyPExleGVy
VHlwZT46OlBhcnNlcihWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJC
dWlsdGluTW9kZQogICAgICwgbV9hbGxvd3NJbih0cnVlKQogICAgICwgbV9zdGF0ZW1lbnREZXB0
aCgwKQogICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpCdWlsdGluKQorICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQogICAgICwgbV9z
Y3JpcHRNb2RlKHNjcmlwdE1vZGUpCiAgICAgLCBtX3N1cGVyQmluZGluZyhzdXBlckJpbmRpbmcp
CiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uKGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uKQpAQCAtMjA5LDkgKzIxMCwxMCBA
QCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+Ci1FeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5l
clJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVu
dGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29u
dGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFy
YW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0Zp
ZWxkTG9jYXRpb25zKQorRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNl
SW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3Qg
SWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9w
dGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29u
c3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKICAgICBB
U1RCdWlsZGVyIGNvbnRleHQoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBj
b25zdF9jYXN0PFNvdXJjZUNvZGUqPihtX3NvdXJjZSkpOworICAgIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBzb3VyY2VQYXJzZU1vZGUoKTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJl
bnRTY29wZSgpOwogICAgIHNjb3BlLT5zZXRJc0xleGljYWxTY29wZSgpOwogICAgIFNldEZvclNj
b3BlPEZ1bmN0aW9uUGFyc2VQaGFzZT4gZnVuY3Rpb25QYXJzZVBoYXNlUG9pc29uZXIobV9wYXJz
ZXJTdGF0ZS5mdW5jdGlvblBhcnNlUGhhc2UsIEZ1bmN0aW9uUGFyc2VQaGFzZTo6Qm9keSk7CkBA
IC0yMjUsNyArMjI3LDcgQEAgRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBh
cnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT4KICAgICAgICAgZWxzZSBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9k
ZSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFyYW1ldGVycyA9IHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAg
ICAgICAgIHBhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBmdW5j
dGlvbkluZm8pOwogCiAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Nb2RlKS5jb250YWlucyhwYXJzZU1vZGUpICYmICFoYXNFcnJvcigpKSB7CiAgICAgICAgICAg
ICAvLyBUaGUgb25seSB3YXkgd2UgY291bGQgaGF2ZSBhbiBlcnJvciB3aGlsZSByZXBhcnNpbmcg
aXMgaWYgd2UgcnVuIG91dCBvZiBzdGFjayBzcGFjZS4KQEAgLTI0NSwxNSArMjQ3LDE1IEBAIEV4
cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJp
bmc+IFBhcnNlcjxMZXhlclR5cGU+CiAgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiBlcnJvciB0
aGlzIGVhcmx5IGlzIGlmIHdlIHJlcGFyc2UgYSBmdW5jdGlvbiBhbmQgd2UgcnVuIG91dCBvZiBz
dGFjayBzcGFjZS4KICAgICBpZiAoIWhhc0Vycm9yKCkpIHsKICAgICAgICAgaWYgKGlzQXN5bmNG
dW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSkKLSAgICAgICAgICAgIHNvdXJjZUVs
ZW1lbnRzID0gcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VN
b2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsK
KyAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxl
bWVudHMoY29udGV4dCwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIENoZWNrRm9yU3Ry
aWN0TW9kZSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVF
eHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlIGlmIChp
c01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUpKQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMg
PSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIHBhcnNlTW9kZSk7CisgICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCk7
CiAgICAgICAgIGVsc2UgaWYgKGlzR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUp
KQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291
cmNlRWxlbWVudHMoY29udGV4dCwgY2FsbGVlTmFtZSwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKICAg
ICAgICAgZWxzZSBpZiAoaXNBc3luY0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2Rl
KSkKLSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0
aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIHNvdXJjZUVsZW1l
bnRzID0gcGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAg
ICAgIGVsc2UgaWYgKHBhcnNpbmdDb250ZXh0ID09IFBhcnNpbmdDb250ZXh0OjpGdW5jdGlvbkNv
bnN0cnVjdG9yKQogICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNpbmdsZUZ1bmN0
aW9uKGNvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwog
ICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXJNb2RlKSB7CkBAIC00MDksNyArNDExLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291
cmNlRWwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU1vZHVsZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRz
ID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwogICAgIFN5bnRheENoZWNrZXIgc3lu
dGF4Q2hlY2tlcihjb25zdF9jYXN0PFZNJj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwpAQCAtNDQy
LDcgKzQ0NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvCiAgICAgICAgIGRlZmF1bHQ6IHsK
ICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IG51bGxwdHI7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMDsKLSAgICAgICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSkgewor
ICAgICAgICAgICAgaWYgKHNvdXJjZVBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6TW9k
dWxlQW5hbHl6ZU1vZGUpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlU3RhdGVtZW50TGlz
dEl0ZW0oc3ludGF4Q2hlY2tlciwgZGlyZWN0aXZlLCAmZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkp
CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtNTIwLDkgKzUyMiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9uU291
cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIFNvdXJjZUVsZW1lbnRzTW9k
ZSBtb2RlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3Vy
Y2VFbGVtZW50c01vZGUgbW9kZSkKIHsKLSAgICBBU1NFUlQoaXNBc3luY0Z1bmN0aW9uT3JBc3lu
Y0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSk7CisgICAgQVNTRVJUKGlzQXN5
bmNGdW5jdGlvbk9yQXN5bmNHZW5lcmF0b3JXcmFwcGVyUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9k
ZSgpKSk7CiAgICAgYXV0byBzb3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxl
bWVudHMoKTsKIAogICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFy
dCgpOwpAQCAtNTM4LDExICs1NDAsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KICAgICBp
bmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0g
dG9rZW5MaW5lKCk7CiAKLSAgICBTb3VyY2VQYXJzZU1vZGUgaW5uZXJQYXJzZU1vZGUgPSBnZXRB
c3luRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSk7Ci0KKyAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlID0gZ2V0QXN5bkZ1bmN0aW9uQm9keVBhcnNlTW9kZShzb3VyY2VQYXJzZU1v
ZGUoKSk7CisgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZSht
X3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBh
c3luY0Z1bmN0aW9uQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKLSAgICAgICAgYXN5bmNG
dW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKGlubmVyUGFyc2VNb2RlKTsKKyAg
ICAgICAgYXN5bmNGdW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKHNvdXJjZVBh
cnNlTW9kZSgpKTsKICAgICAgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nh
c3Q8Vk0mPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CiAgICAgICAgIGlmIChpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbikgewogICAgICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJzZURhdGEp
CkBAIC01NTcsMTMgKzU1OSwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bgogICAgICAgICB9
CiAgICAgICAgIHBvcFNjb3BlKGFzeW5jRnVuY3Rpb25Cb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpO
ZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0KLSAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFy
dENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgaW5uZXJQYXJzZU1vZGUs
IGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICBpbmZvLmJvZHkgPSBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBz
dGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0ZXJDb3VudCwgc291cmNlUGFyc2VN
b2RlKCksIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgIGluZm8uZW5kTGlu
ZSA9IHRva2VuTGluZSgpOwogICAgIGluZm8uZW5kT2Zmc2V0ID0gaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24gPyB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IDogbV90b2tlbi5tX2RhdGEu
b2Zmc2V0OwogICAgIGluZm8ucGFyYW1ldGVyc1N0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAK
LSAgICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQuY3JlYXRlQXN5bmNGdW5jdGlvbkJvZHko
c3RhcnRMb2NhdGlvbiwgaW5mbywgaW5uZXJQYXJzZU1vZGUpOworICAgIGF1dG8gZnVuY3Rpb25F
eHByID0gY29udGV4dC5jcmVhdGVBc3luY0Z1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCBpbmZv
LCBwYXJzZU1vZGUpOwogICAgIGF1dG8gc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVFeHByU3Rh
dGVtZW50KHN0YXJ0TG9jYXRpb24sIGZ1bmN0aW9uRXhwciwgc3RhcnQsIG1fbGFzdFRva2VuRW5k
UG9zaXRpb24ubGluZSk7CiAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVu
dHMsIHN0YXRlbWVudCk7CiAKQEAgLTU3MSw5ICs1NzMsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3lu
Y0Z1bgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
QXN5bmNHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uLCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCiB7
Ci0gICAgQVNTRVJUX1VOVVNFRChwYXJzZU1vZGUsIGlzQXN5bmNHZW5lcmF0b3JXcmFwcGVyUGFy
c2VNb2RlKHBhcnNlTW9kZSkpOworICAgIEFTU0VSVChpc0FzeW5jR2VuZXJhdG9yV3JhcHBlclBh
cnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkpOwogICAgIGF1dG8gc291cmNlRWxlbWVudHMgPSBj
b250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CiAgICAgICAgIAogICAgIHVuc2lnbmVkIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwpAQCAtNTg4LDEwICs1OTAsMTIgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXN5bmNHZW4KICAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNv
bnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJh
bWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBTb3Vy
Y2VQYXJzZU1vZGUgaW5uZXJQYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJh
dG9yQm9keU1vZGU7CisKKyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlOworICAgIFNldEZvclNjb3BlPFNvdXJjZVBh
cnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIHBhcnNlTW9kZSk7CiAgICAgewog
ICAgICAgICBBdXRvUG9wU2NvcGVSZWYgYXN5bmNGdW5jdGlvbkJvZHlTY29wZSh0aGlzLCBwdXNo
U2NvcGUoKSk7Ci0gICAgICAgIGFzeW5jRnVuY3Rpb25Cb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNl
TW9kZShpbm5lclBhcnNlTW9kZSk7CisgICAgICAgIGFzeW5jRnVuY3Rpb25Cb2R5U2NvcGUtPnNl
dFNvdXJjZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSk7CiAgICAgICAgIFN5bnRheENoZWNr
ZXIgc3ludGF4Q2hlY2tlcihjb25zdF9jYXN0PFZNJj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwog
ICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgICAg
IGlmIChtX2RlYnVnZ2VyUGFyc2VEYXRhKQpAQCAtNjA2LDEzICs2MTAsMTMgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQXN5bmNHZW4KICAgICAgICAgfQogICAgICAgICBwb3BTY29wZShhc3luY0Z1bmN0aW9u
Qm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICB9Ci0g
ICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RN
b2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1l
dGVyQ291bnQsIGlubmVyUGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7
CisgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9j
YXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJp
Y3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFy
YW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwog
CiAgICAgaW5mby5lbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW5mby5lbmRPZmZzZXQgPSBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA/IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQg
OiBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CiAgICAgaW5mby5wYXJhbWV0ZXJzU3RhcnRDb2x1bW4g
PSBzdGFydENvbHVtbjsKIAotICAgIGF1dG8gZnVuY3Rpb25FeHByID0gY29udGV4dC5jcmVhdGVB
c3luY0Z1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCBpbmZvLCBpbm5lclBhcnNlTW9kZSk7Cisg
ICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KHN0
YXJ0TG9jYXRpb24sIGluZm8sIHBhcnNlTW9kZSk7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjb250
ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoc3RhcnRMb2NhdGlvbiwgZnVuY3Rpb25FeHByLCBzdGFy
dCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsKICAgICBjb250ZXh0LmFwcGVuZFN0YXRl
bWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKICAgICAgICAgCkBAIC0yMTMyLDcgKzIx
MzYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkoCiAgICAgVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIFN5bnRheENoZWNrZXImIHN5bnRheENoZWNrZXIsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwKLSAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5j
dGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNp
Z25lZCBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBTZXRGb3JTY29wZTxib29sPiBvdmVycmlkZVBh
cnNpbmdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIobV9wYXJzZXJTdGF0ZS5pc1BhcnNpbmdDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXIsIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyBm
YWxzZSA6IG1fcGFyc2VyU3RhdGUuaXNQYXJzaW5nQ2xhc3NGaWVsZEluaXRpYWxpemVyKTsKICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUgPT0gQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uOwpAQCAtMjE0MSw3ICsyMTQ1LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uQm8KICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAgICAgICAgU3VwZXJC
aW5kaW5nIGZ1bmN0aW9uU3VwZXJCaW5kaW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFzZUNv
bnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0
TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVy
Q291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCks
IGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBz
b3VyY2VQYXJzZU1vZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yMTYwLDcgKzIxNjQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25C
bwogICAgIH0KICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIFN1
cGVyQmluZGluZyBmdW5jdGlvblN1cGVyQmluZGluZyA9IGFkanVzdFN1cGVyQmluZGluZ0ZvckJh
c2VDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywgY3VycmVudFNjb3Bl
KCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uU3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3Vu
dCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0
aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9y
S2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBzb3VyY2VQYXJzZU1v
ZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogfQogCiBzdGF0aWMgY29uc3Qg
Y2hhciogc3RyaW5nQXJ0aWNsZUZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkK
QEAgLTIyMzcsOCArMjI0MSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwg
Y2xhc3MgRnVuY3Rpb25JbmZvVHlwZT4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFt
ZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgRnVuY3Rpb25JbmZvVHlwZSYg
ZnVuY3Rpb25JbmZvKQordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
blBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uSW5mb1R5cGUmIGZ1bmN0
aW9uSW5mbykKIHsKKyAgICBhdXRvIG1vZGUgPSBzb3VyY2VQYXJzZU1vZGUoKTsKICAgICBSRUxF
QVNFX0FTU0VSVCghKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1N
b2RlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTb3VyY2VQYXJzZU1vZGU6
Ok1vZHVsZUV2YWx1YXRlTW9kZSkuY29udGFpbnMobW9kZSkpKTsKICAgICBUcmVlRm9ybWFsUGFy
YW1ldGVyTGlzdCBwYXJhbWV0ZXJMaXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KCk7CiAgICAgU2V0Rm9yU2NvcGU8RnVuY3Rpb25QYXJzZVBoYXNlPiBmdW5jdGlvblBhcnNl
UGhhc2VQb2lzb25lcihtX3BhcnNlclN0YXRlLmZ1bmN0aW9uUGFyc2VQaGFzZSwgRnVuY3Rpb25Q
YXJzZVBoYXNlOjpQYXJhbWV0ZXJzKTsKQEAgLTIzMzksOCArMjM0NCw5IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgUGFyc2VyPExlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMgcmVx
dWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdT
Y29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVj
dGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9u
SW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSBm
dW5jdGlvbkRlZmluaXRpb25UeXBlLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzRW5kUG9zaXRpb24pCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29u
dGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRp
bmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRp
b25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25z
dHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikKIHsKKyAgICBhdXRvIG1vZGUgPSBzb3VyY2VQ
YXJzZU1vZGUoKTsKICAgICBSRUxFQVNFX0FTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUp
KTsKIAogICAgIFNjb3BlUmVmIHBhcmVudFNjb3BlID0gY3VycmVudFNjb3BlKCk7CkBAIC0yNDU2
LDcgKzI0NjIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICAgICAgLy8gaW4g
QXJyb3dGb3JtYWxQYXJhbWV0ZXJzLCBwZXIgRVM2ICNzZWMtYXJyb3ctZnVuY3Rpb24tZGVmaW5p
dGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMuCiAgICAgICAgICAgICBTY29wZTo6
TWF5YmVQYXJzZUFzR2VuZXJhdG9yRm9yU2NvcGUgcGFyc2VBc0dlbmVyYXRvcihmdW5jdGlvblNj
b3BlLCBwYXJlbnRTY29wZS0+aXNHZW5lcmF0b3IoKSk7CiAgICAgICAgICAgICBTZXRGb3JTY29w
ZTxib29sPiBvdmVycmlkZUFsbG93QXdhaXQobV9wYXJzZXJTdGF0ZS5hbGxvd0F3YWl0LCAhcGFy
ZW50U2NvcGUtPmlzQXN5bmNGdW5jdGlvbigpICYmICFpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUo
bW9kZSkpOwotICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoc3ludGF4Q2hlY2tl
ciwgbW9kZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0
ZXJzKHN5bnRheENoZWNrZXIsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgICAgICBwcm9wYWdhdGVF
cnJvcigpOwogICAgICAgICB9CiAKQEAgLTI1MzAsNyArMjUzNiw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8o
VHJlZUJ1aWxkCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgewogICAgICAgICAg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gb3ZlcnJpZGVBbGxvd0F3YWl0KG1fcGFyc2VyU3RhdGUuYWxs
b3dBd2FpdCwgIWlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7Ci0gICAgICAgICAgICBw
YXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbkluZm8p
OworICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoc3ludGF4Q2hlY2tlciwgZnVu
Y3Rpb25JbmZvKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC0yNTgwLDcgKzI1ODYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAg
IH0pOwogCiAgICAgYXV0byBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSA9IFsmXSB7Ci0gICAg
ICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzeW50YXhDaGVja2VyLCBzdGFy
dExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0ZWRTdXBlckJp
bmRpbmcsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCwgbW9k
ZSk7CisgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzeW50YXhDaGVj
a2VyLCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZXhwZWN0
ZWRTdXBlckJpbmRpbmcsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJD
b3VudCk7CiAgICAgfTsKIAogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbldyYXBw
ZXJQYXJzZU1vZGUobW9kZSkpIHsKQEAgLTI2OTUsNiArMjcwMSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkRlY2xhCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOwogICAgIH0KKyAgICBTZXRGb3JT
Y29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBwYXJzZU1v
ZGUpOwogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBmdW5jdGlvbkluZm87
CiAgICAgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cyA9IEZ1bmN0aW9uTmFt
ZVJlcXVpcmVtZW50czo6TmFtZWQ7CkBAIC0yNzIzLDcgKzI3MzAsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVu
Y3Rpb25EZWNsYQogICAgICAgICBmdW5jdGlvbkluZm8ubmFtZSA9ICZtX3ZtLnByb3BlcnR5TmFt
ZXMtPnN0YXJEZWZhdWx0UHJpdmF0ZU5hbWU7CiAgICAgfQogCi0gICAgZmFpbElmRmFsc2UoKHBh
cnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIHJlcXVpcmVtZW50cywgcGFyc2VNb2RlLCB0cnVlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJh
dGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikpLCAiQ2Fubm90
IHBhcnNlIHRoaXMgZnVuY3Rpb24iKTsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgcmVxdWlyZW1lbnRzLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbiwgZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVuY3Rpb24iKTsK
ICAgICBBU1NFUlQoZnVuY3Rpb25JbmZvLm5hbWUpOwogCiAgICAgc3RkOjpwYWlyPERlY2xhcmF0
aW9uUmVzdWx0TWFzaywgU2NvcGVSZWY+IGZ1bmN0aW9uRGVjbGFyYXRpb24gPSBkZWNsYXJlRnVu
Y3Rpb24oZnVuY3Rpb25JbmZvLm5hbWUpOwpAQCAtMjc1NCw2ICsyNzYxLDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUFzeW5jRnVuY3Rpb24KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZTsKICAgICBpZiAoY29uc3VtZShUSU1FUykpCiAgICAg
ICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVu
Y3Rpb25Nb2RlOworICAgIFNldEZvclNjb3BlPFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJzZU1v
ZGUobV9wYXJzZU1vZGUsIHBhcnNlTW9kZSk7CiAKICAgICBGdW5jdGlvbk5hbWVSZXF1aXJlbWVu
dHMgcmVxdWlyZW1lbnRzID0gRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpOYW1lZDsKICAgICBp
ZiAoZGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9PSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0
OjpFeHBvcnREZWZhdWx0KSB7CkBAIC0yNzgxLDcgKzI3ODksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNG
dW5jdGlvbgogICAgICAgICBmdW5jdGlvbkluZm8ubmFtZSA9ICZtX3ZtLnByb3BlcnR5TmFtZXMt
PnN0YXJEZWZhdWx0UHJpdmF0ZU5hbWU7CiAgICAgfQogCi0gICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIHJlcXVpcmVtZW50cywgcGFyc2VNb2RlLCB0cnVlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlv
biwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgYXN5bmMgZnVuY3Rpb24iKTsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlv
bkluZm8oY29udGV4dCwgcmVxdWlyZW1lbnRzLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25J
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpEZWNsYXJhdGlvbiwgZnVuY3Rpb25Db25zdHJ1
Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbikpLCAiQ2Fubm90IHBhcnNlIHRoaXMgYXN5bmMgZnVu
Y3Rpb24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkFzeW5jIGZ1bmN0
aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwogCiAgICAgc3RkOjpwYWlyPERlY2xh
cmF0aW9uUmVzdWx0TWFzaywgU2NvcGVSZWY+IGZ1bmN0aW9uRGVjbGFyYXRpb24gPSBkZWNsYXJl
RnVuY3Rpb24oZnVuY3Rpb25JbmZvLm5hbWUpOwpAQCAtMzA0Nyw3ICszMDU1LDggQEAgcGFyc2VN
ZXRob2Q6CiAgICAgICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlICIsIHN0cmluZ0FydGljbGVG
b3JGdW5jdGlvbk1vZGUocGFyc2VNb2RlKSwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKHBhcnNlTW9k
ZSksICIgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOwogCiAgICAgICAgICAgICBtZXRob2RJbmZvLm5h
bWUgPSBpc0NvbnN0cnVjdG9yID8gaW5mby5jbGFzc05hbWUgOiBpZGVudDsKLSAgICAgICAgICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1
aXJlbWVudHM6OlVubmFtZWQsIHBhcnNlTW9kZSwgZmFsc2UsIGlzQ29uc3RydWN0b3IgPyBjb25z
dHJ1Y3RvcktpbmQgOiBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6TmVlZGVk
LCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9k
KSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKKyAgICAgICAgICAgIFNldEZvclNjb3Bl
PFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIHBhcnNlTW9kZSk7
CisgICAgICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVu
Y3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBmYWxzZSwgaXNDb25zdHJ1Y3RvciA/IGNv
bnN0cnVjdG9yS2luZCA6IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVk
ZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRo
b2QpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogCiAgICAgICAgICAgICBUcmVlRXhw
cmVzc2lvbiBtZXRob2QgPSBjb250ZXh0LmNyZWF0ZU1ldGhvZERlZmluaXRpb24obWV0aG9kTG9j
YXRpb24sIG1ldGhvZEluZm8pOwogICAgICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IpIHsKQEAg
LTQyNjMsNyArNDI3Miw4IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAobWF0Y2goT1BFTlBBUkVOKSkgewotICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVBy
b3BlcnR5TWV0aG9kKGNvbnRleHQsIGlkZW50LCBwYXJzZU1vZGUpOworICAgICAgICAgICAgU2V0
Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgcGFy
c2VNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChj
b250ZXh0LCBpZGVudCk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlO
b2RlOjpDb25zdGFudCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwg
Q2xhc3NFbGVtZW50VGFnOjpObyk7CiAgICAgICAgIH0KQEAgLTQzMDIsOCArNDMxMiw5IEBAIG5h
bWVkUHJvcGVydHk6CiAgICAgICAgIG5leHQoKTsKIAogICAgICAgICBpZiAobWF0Y2goT1BFTlBB
UkVOKSkgeworICAgICAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBh
cnNlTW9kZShtX3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsKICAgICAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50ID0gbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJp
Y0lkZW50aWZpZXIoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCBwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsICZpZGVudCwg
cGFyc2VNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhv
ZChjb250ZXh0LCAmaWRlbnQpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KCZpZGVudCwgbWV0aG9kLCBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxv
d2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQpAQCAtNDMyMCw3ICs0MzMxLDgg
QEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgbmV4dCgpOwogCiAgICAgICAgIGlmIChtYXRjaChP
UEVOUEFSRU4pKSB7Ci0gICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRo
b2QoY29udGV4dCwgaWRlbnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICBTZXRGb3JTY29wZTxT
b3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBwYXJzZU1vZGUpOwor
ICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsIGlk
ZW50KTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0aG9kLCBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1l
bnRUYWc6Ok5vKTsKICAgICAgICAgfQpAQCAtNDMzOSw3ICs0MzUxLDggQEAgbmFtZWRQcm9wZXJ0
eToKICAgICAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJdIiwgImVu
ZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAKICAgICAgICAgaWYgKG1hdGNoKE9QRU5Q
QVJFTikpIHsKLSAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChj
b250ZXh0LCAmbV92bS5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgcGFyc2VNb2RlKTsK
KyAgICAgICAgICAgIFNldEZvclNjb3BlPFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUo
bV9wYXJzZU1vZGUsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNl
UHJvcGVydHlNZXRob2QoY29udGV4dCwgJm1fdm0ucHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZp
ZXIpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbWV0aG9kLCBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6
OkNvbXB1dGVkKSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwog
ICAgICAgICB9CkBAIC00MzY5LDE0ICs0MzgyLDE0IEBAIG5hbWVkUHJvcGVydHk6CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lLCBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSkKIHsKLSAgICBBU1NFUlQo
aXNNZXRob2RQYXJzZU1vZGUocGFyc2VNb2RlKSk7CisgICAgQVNTRVJUKGlzTWV0aG9kUGFyc2VN
b2RlKHNvdXJjZVBhcnNlTW9kZSgpKSk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIG1ldGhvZExvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgbWV0aG9kU3RhcnQgPSB0b2tlblN0
YXJ0KCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwog
ICAgIG1ldGhvZEluZm8ubmFtZSA9IG1ldGhvZE5hbWU7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwg
cGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5l
ZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1l
dGhvZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CisgICAgZmFpbElmRmFsc2UoKHBh
cnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1l
ZCwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIG1l
dGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwg
IkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU1l
dGhvZERlZmluaXRpb24obWV0aG9kTG9jYXRpb24sIG1ldGhvZEluZm8pOwogfQogCkBAIC00NDE0
LDEwICs0NDI3LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGlmICh0eXBlICYgUHJvcGVydHlOb2RlOjpH
ZXR0ZXIpIHsKICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVk
IGEgcGFyYW1ldGVyIGxpc3QgZm9yIGdldHRlciBkZWZpbml0aW9uIik7Ci0gICAgICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVu
dHM6OlVubmFtZWQsIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSwgZmFsc2UsIGNvbnN0cnVj
dG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQs
IGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIGdl
dHRlciBkZWZpbml0aW9uIik7CisgICAgICAgIFNldEZvclNjb3BlPFNvdXJjZVBhcnNlTW9kZT4g
aW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSk7
CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlv
bk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVy
QmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlv
bkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBnZXR0ZXIgZGVmaW5pdGlv
biIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiks
ICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIpOwotICAg
ICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1l
UmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUsIGZhbHNl
LCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0
YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5v
dCBwYXJzZSBzZXR0ZXIgZGVmaW5pdGlvbiIpOworICAgICAgICBTZXRGb3JTY29wZTxTb3VyY2VQ
YXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJzZU1vZGU6OlNl
dHRlck1vZGUpOworICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4
dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBmYWxzZSwgY29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5m
bywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVy
IGRlZmluaXRpb24iKTsKICAgICB9CiAKICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1lKQpAQCAt
NDU5Nyw3ICs0NjEyLDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkV4cHIKICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU7CiAg
ICAgaWYgKGNvbnN1bWUoVElNRVMpKQogICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6Tm9uZSwgcGFy
c2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24i
KTsKKyAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IHNldElubmVyUGFyc2VNb2RlKG1f
cGFyc2VNb2RlLCBwYXJzZU1vZGUpOworICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5m
byhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSks
ICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKIH0KIApAQCAtNDYx
MiwxMCArNDYyOCwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuY3RpbwogCiAgICAgaWYgKGNvbnN1
bWUoVElNRVMpKQogICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2Vu
ZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTsKKyAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1v
ZGU+IHNldElubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBwYXJzZU1vZGUpOwogCiAgICAgUGFy
c2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBmdW5jdGlvbkluZm87CiAgICAgZnVuY3Rpb25J
bmZvLm5hbWUgPSAmbV92bS5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBmYWls
SWZGYWxzZShwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVu
dHM6Ok5vbmUsIHBhcnNlTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1
bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pLCBwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSA/ICJDYW5ub3QgcGFyc2UgYXN5bmMgZnVuY3Rpb24g
ZXhwcmVzc2lvbiIgOiAiQ2Fubm90IHBhcnNlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBleHBy
ZXNzaW9uIik7CisgICAgZmFpbElmRmFsc2UocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVu
Y3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpOb25lLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
SW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbiksIHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlID8gIkNhbm5vdCBwYXJzZSBhc3luYyBm
dW5jdGlvbiBleHByZXNzaW9uIiA6ICJDYW5ub3QgcGFyc2UgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0
aW9uIGV4cHJlc3Npb24iKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIo
bG9jYXRpb24sIGZ1bmN0aW9uSW5mbyk7CiB9CiAKQEAgLTUxOTgsOCArNTIxNSw4IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQXJyb3dGdW5jdGlvCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBp
bmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVy
OwogCi0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGlzQXN5bmMgPyBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUgOiBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVu
Y3Rpb25Nb2RlOwotICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBG
dW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIHBhcnNlTW9kZSwgdHJ1ZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5v
dCBwYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNzaW9uIik7CisgICAgU2V0Rm9yU2NvcGU8U291
cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgaXNBc3luYyA/IFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGUpOworICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250
ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIHRydWUsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFy
c2UgYXJyb3cgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogCiAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlQXJyb3dGdW5jdGlvbkV4cHIobG9jYXRpb24sIGluZm8pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYmUzM2MxYmU5NWU5ZGE0NTAwYmFmMWI4MDU5YmEzNTA4
NDdhODg2MS4uOTA1NjViYTQ0MDI3NDFlN2Y5NDc0YzI5OTY2NDUzOTQwOTI1NTQ3MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC05NDQsNyArOTQ0LDcgQEAgcHVibGlj
OgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElk
ZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+
IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPEpTVGV4
dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
cGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIE9w
dGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdU
Rjo6bnVsbG9wdCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBW
ZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24g
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJl
Zm9yZUxhc3RUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9u
KCk7IH0KQEAgLTExNjksNiArMTE2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZVBhcnNlTW9kZSBzb3VyY2VQYXJzZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0V2YWxP
ckFyZ3VtZW50cyhjb25zdCBJZGVudGlmaWVyKiBpZGVudCkgeyByZXR1cm4gaXNFdmFsT3JBcmd1
bWVudHNJZGVudGlmaWVyKG1fdm0sIGlkZW50KTsgfQogCiAgICAgU2NvcGVSZWYgdXBwZXJTY29w
ZShpbnQgbikKQEAgLTE0NjMsNyArMTQ2NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIENvZGVGZWF0
dXJlcyBmZWF0dXJlczsKICAgICAgICAgaW50IG51bUNvbnN0YW50czsKICAgICB9OwotICAgIEV4
cGVjdGVkPFBhcnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVudGlm
aWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25z
dCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAgIEV4cGVjdGVkPFBhcnNl
SW5uZXJSZXN1bHQsIFN0cmluZz4gcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgUGFyc2lu
Z0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBu
dWxscHRyKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVw
b3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbk1ldGFkYXRhTm9kZShTY29wZU5vZGUqKSB7IHJldHVy
biBmYWxzZTsgfQpAQCAtMTY5MSw4ICsxNjkyLDggQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVu
dHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25T
b3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFNvdXJj
ZUVsZW1lbnRzTW9kZSk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXIm
LCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIFNv
dXJjZUVsZW1lbnRzTW9kZSk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U291cmNlRWxlbWVudHMgcGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMo
VHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24sIFNvdXJjZUVsZW1lbnRzTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVu
dHMoVHJlZUJ1aWxkZXImLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3Vy
Y2VFbGVtZW50c01vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIHBhcnNlQXN5bmNHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRy
ZWVCdWlsZGVyJiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxl
bWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VF
bGVtZW50cyBwYXJzZVNpbmdsZUZ1bmN0aW9uKFRyZWVCdWlsZGVyJiwgT3B0aW9uYWw8aW50PiBm
dW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUNsYXNzRmllbGRJbml0
aWFsaXplclNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgY29uc3QgVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciom
IGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwpAQCAtMTc0Myw5
ICsxNzQ0LDkgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFM
V0FZU19JTkxJTkUgVHJlZUFyZ3VtZW50cyBwYXJzZUFyZ3VtZW50cyhUcmVlQnVpbGRlciYpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVz
c2lvbiBwYXJzZUFyZ3VtZW50KFRyZWVCdWlsZGVyJiwgQXJndW1lbnRUeXBlJik7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQcm9wZXJ0eShUcmVl
QnVpbGRlciYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRp
ZmllciogbWV0aG9kTmFtZSwgU291cmNlUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlR2V0dGVyU2V0dGVyKFRyZWVC
dWlsZGVyJiwgUHJvcGVydHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0
T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQsIENsYXNzRWxlbWVudFRhZyk7Ci0gICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VG
dW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBTeW50YXhDaGVja2VyJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVT
dGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcs
IEZ1bmN0aW9uQm9keVR5cGUsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBh
cnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgU3ludGF4Q2hlY2tlciYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25O
YW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5k
aW5nLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uLCBi
b29sIGlzTWV0aG9kLCB1bnNpZ25lZCYpOwogICAgIGVudW0gVmFyRGVjbGFyYXRpb25MaXN0Q29u
dGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJEZWNsYXJhdGlvbkNvbnRleHQgfTsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlVmFyaWFibGVEZWNs
YXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURlc3RydWN0
dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXpl
ciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQs
IEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0LCBEZWNs
YXJhdGlvblR5cGUsIEV4cG9ydFR5cGUsIGJvb2wmIGZvckxvb3BDb25zdERvZXNOb3RIYXZlSW5p
dGlhbGl6ZXIpOwpAQCAtMTc2MSw3ICsxNzYyLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4g
cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIERlc3RydWN0dXJpbmdLaW5k
LCBFeHBvcnRUeXBlLCBjb25zdCBJZGVudGlmaWVyKiogZHVwbGljYXRlSWRlbnRpZmllciA9IG51
bGxwdHIsIGJvb2wqIGhhc0Rlc3RydWN0dXJpbmdQYXR0ZXJuID0gbnVsbHB0ciwgQXNzaWdubWVu
dENvbnRleHQgPSBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQsIGludCBk
ZXB0aCA9IDApOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5F
IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhw
cmVzc2lvbihUcmVlQnVpbGRlciYsIEFzc2lnbm1lbnRDb250ZXh0KTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZURlZmF1
bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VNb2R1bGVTb3Vy
Y2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VNb2R1bGVTb3VyY2VF
bGVtZW50cyhUcmVlQnVpbGRlciYpOwogICAgIGVudW0gY2xhc3MgSW1wb3J0U3BlY2lmaWVyVHlw
ZSB7IE5hbWVzcGFjZUltcG9ydCwgTmFtZWRJbXBvcnQsIERlZmF1bHRJbXBvcnQgfTsKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpJbXBvcnRT
cGVjaWZpZXIgcGFyc2VJbXBvcnRDbGF1c2VJdGVtKFRyZWVCdWlsZGVyJiwgSW1wb3J0U3BlY2lm
aWVyVHlwZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6TW9kdWxlTmFtZSBwYXJzZU1vZHVsZU5hbWUoVHJlZUJ1aWxkZXImKTsKQEAgLTE3
NzIsMTEgKzE3NzMsMTEgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gY3JlYXRlUmVzb2x2ZUFuZFVzZVZhcmlh
YmxlKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciosIGJvb2wgaXNFdmFsLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgZW51bSBjbGFz
cyBGdW5jdGlvbkRlZmluaXRpb25UeXBlIHsgRXhwcmVzc2lvbiwgRGVjbGFyYXRpb24sIE1ldGhv
ZCB9OwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wg
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMs
IFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVu
Y3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVs
bG9wdCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9v
bCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50
cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJp
bmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVC
dWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25D
b25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCk7CiAgICAgCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOwogICAgIAotICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7
CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBl
PiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3Qg
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBGdW5jdGlvbkluZm9UeXBlJik7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBh
cnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIFBhcnNlckNs
YXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKQEAgLTIwNjIsNiArMjA2Myw3IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fc3RhdGVtZW50RGVwdGg7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+
IG1fZnVuY3Rpb25DYWNoZTsKICAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CisgICAgU291cmNl
UGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBtX3NjcmlwdE1v
ZGU7CiAgICAgU3VwZXJCaW5kaW5nIG1fc3VwZXJCaW5kaW5nOwogICAgIENvbnN0cnVjdG9yS2lu
ZCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uOwpAQCAtMjA3OCwx
MCArMjA4MCwxMSBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
dGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci1zdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRp
ZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRl
eHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFt
ZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVQ
cml2YXRlTmFtZXMsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2Nh
dGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgUGFy
c2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1
Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFy
ZW50U2NvcGVQcml2YXRlTmFtZXMsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNz
RmllbGRMb2NhdGlvbnMpCiB7CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVyck1zZzsK
KyAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gc291cmNlUGFyc2VNb2RlKCk7CiAKICAg
ICBpZiAoUGFyc2VkTm9kZTo6c2NvcGVJc0Z1bmN0aW9uKQogICAgICAgICBtX2xleGVyLT5zZXRJ
c1JlcGFyc2luZ0Z1bmN0aW9uKCk7CkBAIC0yMDk4LDcgKzIxMDEsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJv
ciwgY29uc3QgSQogICAgICAgICBwYXJlbnRTY29wZVByaXZhdGVOYW1lcy0+Y29weVByaXZhdGVO
YW1lc1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFibGVzKCkpOwogICAgIH0KIAotICAg
IGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFy
c2luZ0NvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNs
YXNzRmllbGRMb2NhdGlvbnMpOworICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZUlubmVyKGNh
bGxlZU5hbWUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKIAogICAgIGludCBsaW5lTnVtYmVyID0g
bV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3IgPSBtX2xleGVyLT5zYXdF
cnJvcigpOwpAQCAtMjE5NSw3ICsyMTk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHBhcnNlKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAgaWYg
KHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewogICAgICAgICBQYXJzZXI8
TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBh
cnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEsIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWRO
b2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQ
YXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxv
cHQsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKKyAgICAg
ICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBpc0V2YWxO
b2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0
OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0Zp
ZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAg
ICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0yMjA4LDcgKzIyMTEsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXMncyBzcGVjaWFsIGNvbnN0cnVj
dG9ycyBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwogICAgICAgICBQYXJzZXI8
TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBh
cnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEsIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWRO
b2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQ
YXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxv
cHQsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKKyAgICAg
ICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBpc0V2YWxO
b2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0
OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0Zp
ZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAg
ICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpAQCAtMjIzOCwxMiArMjI0MSwxMiBAQCBpbmxpbmUg
c3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwYXJzZUZ1bmN0aW9uRm9yRnVuY3Rpb25Db25z
dHJ1Y3RvcihWTSYgdm0sCiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiByZXN1bHQ7
CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewogICAgICAg
ICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGlu
TW9kZTo6Tm90QnVpbHRpbiwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6Q2xhc3NpYywgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLCBpc0V2YWxOb2RlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIpOwot
ICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UHJvZ3JhbU5vZGU+KGVycm9yLCBuYW1lLCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBQYXJzaW5nQ29udGV4dDo6RnVuY3Rpb25Db25z
dHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CisgICAg
ICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQcm9ncmFtTm9kZT4oZXJyb3IsIG5hbWUsIFBhcnNp
bmdDb250ZXh0OjpGdW5jdGlvbkNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUp
CiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUGFyc2VyPExleGVy
PFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNs
YXNzaWMsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgaXNF
dmFsTm9kZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyKTsKLSAgICAgICAgcmVzdWx0
ID0gcGFyc2VyLnBhcnNlPFByb2dyYW1Ob2RlPihlcnJvciwgbmFtZSwgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZSwgUGFyc2luZ0NvbnRleHQ6OkZ1bmN0aW9uQ29uc3RydWN0b3IsIGZ1bmN0
aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOworICAgICAgICByZXN1bHQgPSBw
YXJzZXIucGFyc2U8UHJvZ3JhbU5vZGU+KGVycm9yLCBuYW1lLCBQYXJzaW5nQ29udGV4dDo6RnVu
Y3Rpb25Db25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlv
bik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAg
KnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSgpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418772</attachid>
            <date>2021-01-29 14:16:57 -0800</date>
            <delta_ts>2021-01-29 16:36:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221149-20210129141657.patch</filename>
            <type>text/plain</type>
            <size>45158</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MjI1YjA3ZTc0YzJiOWYxYmE5YmU2OWQ2NWMzYWY4M2QyNjY1MTk0Li44YzBlOTUwNmNjNjU3MGZl
MjJiOTM4NTllYmZkMGY2ZmIzMmRhOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0wMS0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgc2hvdWxkIGJlIGEgbWVtYmVyIG9mIHRo
ZSBKU0M6OlBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9zcyBLaXJzbGluZy4KKworICAg
ICAgICBSaWdodCBub3cgd2UgcGFzcyB0aGUgU291cmNlUGFyc2VNb2RlIGFzIGEgYXJndW1lbnQg
dG8gbWFueSBvZiB0aGUKKyAgICAgICAgZnVuY3Rpb25zIGluIHRoZSBwYXJzZXIuIFRoaXMgcGF0
Y2ggbW92ZSBpdCBpbnRvIGEgbWVtYmVyIG9uIHRoZQorICAgICAgICBjbGFzcy4gVGhpcyB3aWxs
IG1ha2UgaXQgYXZhaWxhYmxlIGRlZXBlciBpbiB0aGUgcGFyc2VyLCB3aGljaCBpcworICAgICAg
ICBpbXBvcnRhbnQgZm9yIGltcGxlbWVudGluZyB0b3AgbGV2ZWwgYXdhaXQuCisKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBh
cnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9uU291
cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQXN5bmNGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnNvdXJjZVBhcnNlTW9kZSBjb25z
dCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChK
U0M6OnBhcnNlKToKKyAgICAgICAgKEpTQzo6cGFyc2VGdW5jdGlvbkZvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IpOgorCiAyMDIxLTAxLTI5ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGln
YWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gV2ViQXNzZW1ibHkuR2xvYmFsIHNob3VsZCBzdXBw
b3J0IEZ1bmNyZWYgYW5kIEV4dGVybnJlZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDcwNjc0YzQ4YjYyMzI3NDUxNTBjOTcxMDI4NzMyMjBkYTEzMDc1N2MuLmFi
ZmY0NDA0M2ZiYzQ5ZWNlOTYzYzM0ZGJlZWY2M2IxZjFlZjQ1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTEzNCw2ICsxMzQsNyBAQCBQYXJzZXI8TGV4ZXJU
eXBlPjo6UGFyc2VyKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlCiAgICAgLCBtX2FsbG93c0luKHRydWUpCiAgICAgLCBtX3N0YXRlbWVudERlcHRo
KDApCiAgICAgLCBtX3BhcnNpbmdCdWlsdGluKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRp
bk1vZGU6OkJ1aWx0aW4pCisgICAgLCBtX3BhcnNlTW9kZShwYXJzZU1vZGUpCiAgICAgLCBtX3Nj
cmlwdE1vZGUoc2NyaXB0TW9kZSkKICAgICAsIG1fc3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZykK
ICAgICAsIG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24oZGVmYXVs
dENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24pCkBAIC0yMDksOSArMjEwLDEwIEBA
IFBhcnNlcjxMZXhlclR5cGU+Ojp+UGFyc2VyKCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KLUV4cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVy
UmVzdWx0LCBTdHJpbmc+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50
aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250
ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmll
bGRMb2NhdGlvbnMpCitFeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJ
bm5lclJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJ
ZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25z
dCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQogewogICAgIEFT
VEJ1aWxkZXIgY29udGV4dChjb25zdF9jYXN0PFZNJj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNv
bnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7CisgICAgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSA9IHNvdXJjZVBhcnNlTW9kZSgpOwogICAgIFNjb3BlUmVmIHNjb3BlID0gY3VycmVu
dFNjb3BlKCk7CiAgICAgc2NvcGUtPnNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAgU2V0Rm9yU2Nv
cGU8RnVuY3Rpb25QYXJzZVBoYXNlPiBmdW5jdGlvblBhcnNlUGhhc2VQb2lzb25lcihtX3BhcnNl
clN0YXRlLmZ1bmN0aW9uUGFyc2VQaGFzZSwgRnVuY3Rpb25QYXJzZVBoYXNlOjpCb2R5KTsKQEAg
LTIyNSw3ICsyMjcsNyBAQCBFeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFy
c2VJbm5lclJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPgogICAgICAgICBlbHNlIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2Rl
KQogICAgICAgICAgICAgcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVy
TGlzdCgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAg
ICAgICAgcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0
aW9uSW5mbyk7CiAKICAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlv
bk1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgJiYgIWhhc0Vycm9yKCkpIHsKICAgICAgICAgICAg
IC8vIFRoZSBvbmx5IHdheSB3ZSBjb3VsZCBoYXZlIGFuIGVycm9yIHdoaWxlIHJlcGFyc2luZyBp
cyBpZiB3ZSBydW4gb3V0IG9mIHN0YWNrIHNwYWNlLgpAQCAtMjQ1LDE1ICsyNDcsMTUgQEAgRXhw
ZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJSZXN1bHQsIFN0cmlu
Zz4gUGFyc2VyPExleGVyVHlwZT4KICAgICAvLyBUaGUgb25seSB3YXkgd2UgY2FuIGVycm9yIHRo
aXMgZWFybHkgaXMgaWYgd2UgcmVwYXJzZSBhIGZ1bmN0aW9uIGFuZCB3ZSBydW4gb3V0IG9mIHN0
YWNrIHNwYWNlLgogICAgIGlmICghaGFzRXJyb3IoKSkgewogICAgICAgICBpZiAoaXNBc3luY0Z1
bmN0aW9uV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpKQotICAgICAgICAgICAgc291cmNlRWxl
bWVudHMgPSBwYXJzZUFzeW5jRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1v
ZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBDaGVja0ZvclN0cmljdE1vZGUpOwor
ICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFzeW5jRnVuY3Rpb25Tb3VyY2VFbGVt
ZW50cyhjb250ZXh0LCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgQ2hlY2tGb3JTdHJp
Y3RNb2RlKTsKICAgICAgICAgZWxzZSBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
CiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4
cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAgICAgICAgIGVsc2UgaWYgKGlz
TW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9
IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlKTsKKyAgICAgICAg
ICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsK
ICAgICAgICAgZWxzZSBpZiAoaXNHZW5lcmF0b3JXcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkp
CiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3Vy
Y2VFbGVtZW50cyhjb250ZXh0LCBjYWxsZWVOYW1lLCBDaGVja0ZvclN0cmljdE1vZGUpOwogICAg
ICAgICBlbHNlIGlmIChpc0FzeW5jR2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUp
KQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZUFzeW5jR2VuZXJhdG9yRnVuY3Rp
b25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uLCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAgICAgc291cmNlRWxlbWVu
dHMgPSBwYXJzZUFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0LCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICAg
ICAgZWxzZSBpZiAocGFyc2luZ0NvbnRleHQgPT0gUGFyc2luZ0NvbnRleHQ6OkZ1bmN0aW9uQ29u
c3RydWN0b3IpCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU2luZ2xlRnVuY3Rp
b24oY29udGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CiAg
ICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkNsYXNzRmllbGRJ
bml0aWFsaXplck1vZGUpIHsKQEAgLTQwOSw3ICs0MTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTb3Vy
Y2VFbAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
TW9kdWxlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhUcmVlQnVp
bGRlciYgY29udGV4dCkKIHsKICAgICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMg
PSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CiAgICAgU3ludGF4Q2hlY2tlciBzeW50
YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CkBAIC00NDIs
NyArNDQ0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU28KICAgICAgICAgZGVmYXVsdDogewog
ICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwOwotICAgICAgICAgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlKSB7Cisg
ICAgICAgICAgICBpZiAoc291cmNlUGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpNb2R1
bGVBbmFseXplTW9kZSkgewogICAgICAgICAgICAgICAgIGlmICghcGFyc2VTdGF0ZW1lbnRMaXN0
SXRlbShzeW50YXhDaGVja2VyLCBkaXJlY3RpdmUsICZkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKSkK
ICAgICAgICAgICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CkBAIC01MjAsOSArNTIyLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG8KIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb25Tb3Vy
Y2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVudHNNb2Rl
IG1vZGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1
aWxkZXImIGNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIFNvdXJj
ZUVsZW1lbnRzTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChpc0FzeW5jRnVuY3Rpb25PckFzeW5j
R2VuZXJhdG9yV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpKTsKKyAgICBBU1NFUlQoaXNBc3lu
Y0Z1bmN0aW9uT3JBc3luY0dlbmVyYXRvcldyYXBwZXJQYXJzZU1vZGUoc291cmNlUGFyc2VNb2Rl
KCkpKTsKICAgICBhdXRvIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVt
ZW50cygpOwogCiAgICAgdW5zaWduZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0
KCk7CkBAIC01MzgsMTEgKzU0MCwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bgogICAgIGlu
Zm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0
b2tlbkxpbmUoKTsKIAotICAgIFNvdXJjZVBhcnNlTW9kZSBpbm5lclBhcnNlTW9kZSA9IGdldEFz
eW5GdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKTsKLQorICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBnZXRBc3luRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9k
ZSgpKTsKKyAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1f
cGFyc2VNb2RlLCBwYXJzZU1vZGUpOwogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGFz
eW5jRnVuY3Rpb25Cb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwotICAgICAgICBhc3luY0Z1
bmN0aW9uQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoaW5uZXJQYXJzZU1vZGUpOworICAg
ICAgICBhc3luY0Z1bmN0aW9uQm9keVNjb3BlLT5zZXRTb3VyY2VQYXJzZU1vZGUoc291cmNlUGFy
c2VNb2RlKCkpOwogICAgICAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNrZXIoY29uc3RfY2Fz
dDxWTSY+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICBpZiAobV9kZWJ1Z2dlclBhcnNlRGF0YSkK
QEAgLTU1NywxMyArNTU5LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuCiAgICAgICAgIH0K
ICAgICAgICAgcG9wU2NvcGUoYXN5bmNGdW5jdGlvbkJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5l
ZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgfQotICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0
Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBpbm5lclBhcnNlTW9kZSwg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOworICAgIGluZm8uYm9keSA9IGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0
YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBzb3VyY2VQYXJzZU1v
ZGUoKSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogCiAgICAgaW5mby5lbmRMaW5l
ID0gdG9rZW5MaW5lKCk7CiAgICAgaW5mby5lbmRPZmZzZXQgPSBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiA/IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQgOiBtX3Rva2VuLm1fZGF0YS5v
ZmZzZXQ7CiAgICAgaW5mby5wYXJhbWV0ZXJzU3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKIAot
ICAgIGF1dG8gZnVuY3Rpb25FeHByID0gY29udGV4dC5jcmVhdGVBc3luY0Z1bmN0aW9uQm9keShz
dGFydExvY2F0aW9uLCBpbmZvLCBpbm5lclBhcnNlTW9kZSk7CisgICAgYXV0byBmdW5jdGlvbkV4
cHIgPSBjb250ZXh0LmNyZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIGluZm8s
IHBhcnNlTW9kZSk7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0
ZW1lbnQoc3RhcnRMb2NhdGlvbiwgZnVuY3Rpb25FeHByLCBzdGFydCwgbV9sYXN0VG9rZW5FbmRQ
b3NpdGlvbi5saW5lKTsKICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50
cywgc3RhdGVtZW50KTsKIApAQCAtNTcxLDkgKzU3Myw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5j
RnVuCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VB
c3luY0dlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQs
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24sIFNvdXJjZUVsZW1lbnRzTW9kZSBtb2RlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNHZW5l
cmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBib29sIGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKIHsK
LSAgICBBU1NFUlRfVU5VU0VEKHBhcnNlTW9kZSwgaXNBc3luY0dlbmVyYXRvcldyYXBwZXJQYXJz
ZU1vZGUocGFyc2VNb2RlKSk7CisgICAgQVNTRVJUKGlzQXN5bmNHZW5lcmF0b3JXcmFwcGVyUGFy
c2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKSk7CiAgICAgYXV0byBzb3VyY2VFbGVtZW50cyA9IGNv
bnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKICAgICAgICAgCiAgICAgdW5zaWduZWQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CkBAIC01ODgsMTAgKzU5MCwxMiBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBc3luY0dlbgogICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29u
dGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFt
ZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIFNvdXJj
ZVBhcnNlTW9kZSBpbm5lclBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0
b3JCb2R5TW9kZTsKKworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGU7CisgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFy
c2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsKICAgICB7CiAg
ICAgICAgIEF1dG9Qb3BTY29wZVJlZiBhc3luY0Z1bmN0aW9uQm9keVNjb3BlKHRoaXMsIHB1c2hT
Y29wZSgpKTsKLSAgICAgICAgYXN5bmNGdW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VN
b2RlKGlubmVyUGFyc2VNb2RlKTsKKyAgICAgICAgYXN5bmNGdW5jdGlvbkJvZHlTY29wZS0+c2V0
U291cmNlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKTsKICAgICAgICAgU3ludGF4Q2hlY2tl
ciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CiAg
ICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgewogICAgICAgICAgICAg
aWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCkBAIC02MDYsMTMgKzYxMCwxMyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VBc3luY0dlbgogICAgICAgICB9CiAgICAgICAgIHBvcFNjb3BlKGFzeW5jRnVuY3Rpb25C
b2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0KLSAg
ICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0
ZXJDb3VudCwgaW5uZXJQYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsK
KyAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJh
bWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAK
ICAgICBpbmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbmZvLmVuZE9mZnNldCA9IGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID8gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCA6
IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKICAgICBpbmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbiA9
IHN0YXJ0Q29sdW1uOwogCi0gICAgYXV0byBmdW5jdGlvbkV4cHIgPSBjb250ZXh0LmNyZWF0ZUFz
eW5jRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIGluZm8sIGlubmVyUGFyc2VNb2RlKTsKKyAg
ICBhdXRvIGZ1bmN0aW9uRXhwciA9IGNvbnRleHQuY3JlYXRlQXN5bmNGdW5jdGlvbkJvZHkoc3Rh
cnRMb2NhdGlvbiwgaW5mbywgcGFyc2VNb2RlKTsKICAgICBhdXRvIHN0YXRlbWVudCA9IGNvbnRl
eHQuY3JlYXRlRXhwclN0YXRlbWVudChzdGFydExvY2F0aW9uLCBmdW5jdGlvbkV4cHIsIHN0YXJ0
LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUpOwogICAgIGNvbnRleHQuYXBwZW5kU3RhdGVt
ZW50KHNvdXJjZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOwogICAgICAgICAKQEAgLTIxMzIsNyArMjEz
Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4
dCwgU3ludGF4Q2hlY2tlciYgc3ludGF4Q2hlY2tlciwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LAotICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIEZ1bmN0
aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50KQogewogICAgIFNldEZvclNjb3BlPGJvb2w+IG92ZXJyaWRlUGFy
c2luZ0NsYXNzRmllbGRJbml0aWFsaXplcihtX3BhcnNlclN0YXRlLmlzUGFyc2luZ0NsYXNzRmll
bGRJbml0aWFsaXplciwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/IGZh
bHNlIDogbV9wYXJzZXJTdGF0ZS5pc1BhcnNpbmdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIpOwogICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5VHlwZSA9PSBBcnJvd0Z1
bmN0aW9uQm9keUV4cHJlc3Npb247CkBAIC0yMTQxLDcgKzIxNDUsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RnVuY3Rpb25CbwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgICAgICAgICBTdXBlckJp
bmRpbmcgZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBhZGp1c3RTdXBlckJpbmRpbmdGb3JCYXNlQ29u
c3RydWN0b3IoY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIGN1cnJlbnRTY29wZSgpKTsK
LSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRM
b2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0
TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uU3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJD
b3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CisgICAgICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24s
IHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwg
Y29uc3RydWN0b3JLaW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHNv
dXJjZVBhcnNlTW9kZSgpLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTIxNjAsNyArMjE2NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJv
CiAgICAgfQogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgU3Vw
ZXJCaW5kaW5nIGZ1bmN0aW9uU3VwZXJCaW5kaW5nID0gYWRqdXN0U3VwZXJCaW5kaW5nRm9yQmFz
ZUNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBjdXJyZW50U2NvcGUo
KSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25TdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50
LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBmdW5jdGlvblN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIHNvdXJjZVBhcnNlTW9k
ZSgpLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiB9CiAKIHN0YXRpYyBjb25zdCBj
aGFyKiBzdHJpbmdBcnRpY2xlRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQpA
QCAtMjIzNyw4ICsyMjQxLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBj
bGFzcyBGdW5jdGlvbkluZm9UeXBlPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1l
dGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImIGNvbnRleHQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBGdW5jdGlvbkluZm9UeXBlJiBm
dW5jdGlvbkluZm8pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25JbmZvVHlwZSYgZnVuY3Rp
b25JbmZvKQogeworICAgIGF1dG8gbW9kZSA9IHNvdXJjZVBhcnNlTW9kZSgpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCEoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6
TW9kdWxlRXZhbHVhdGVNb2RlKS5jb250YWlucyhtb2RlKSkpOwogICAgIFRyZWVGb3JtYWxQYXJh
bWV0ZXJMaXN0IHBhcmFtZXRlckxpc3QgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxp
c3QoKTsKICAgICBTZXRGb3JTY29wZTxGdW5jdGlvblBhcnNlUGhhc2U+IGZ1bmN0aW9uUGFyc2VQ
aGFzZVBvaXNvbmVyKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlLCBGdW5jdGlvblBh
cnNlUGhhc2U6OlBhcmFtZXRlcnMpOwpAQCAtMjMzOSw4ICsyMzQ0LDkgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBQYXJzZXI8TGUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1
aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Nj
b3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0
ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlIGZ1
bmN0aW9uRGVmaW5pdGlvblR5cGUsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbikKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQs
IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250
YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGlu
ZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlv
blR5cGUgZnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogeworICAgIGF1dG8gbW9kZSA9IHNvdXJjZVBh
cnNlTW9kZSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUobW9kZSkp
OwogCiAgICAgU2NvcGVSZWYgcGFyZW50U2NvcGUgPSBjdXJyZW50U2NvcGUoKTsKQEAgLTI0NTYs
NyArMjQ2Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgICAgICAgICAvLyBpbiBB
cnJvd0Zvcm1hbFBhcmFtZXRlcnMsIHBlciBFUzYgI3NlYy1hcnJvdy1mdW5jdGlvbi1kZWZpbml0
aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVycm9ycy4KICAgICAgICAgICAgIFNjb3BlOjpN
YXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZSBwYXJzZUFzR2VuZXJhdG9yKGZ1bmN0aW9uU2Nv
cGUsIHBhcmVudFNjb3BlLT5pc0dlbmVyYXRvcigpKTsKICAgICAgICAgICAgIFNldEZvclNjb3Bl
PGJvb2w+IG92ZXJyaWRlQWxsb3dBd2FpdChtX3BhcnNlclN0YXRlLmFsbG93QXdhaXQsICFwYXJl
bnRTY29wZS0+aXNBc3luY0Z1bmN0aW9uKCkgJiYgIWlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZSht
b2RlKSk7Ci0gICAgICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2Vy
LCBtb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRl
cnMoc3ludGF4Q2hlY2tlciwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVy
cm9yKCk7CiAgICAgICAgIH0KIApAQCAtMjUzMCw3ICsyNTM2LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhU
cmVlQnVpbGQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB7CiAgICAgICAgICAg
ICBTZXRGb3JTY29wZTxib29sPiBvdmVycmlkZUFsbG93QXdhaXQobV9wYXJzZXJTdGF0ZS5hbGxv
d0F3YWl0LCAhaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKG1vZGUpKTsKLSAgICAgICAgICAgIHBh
cnNlRnVuY3Rpb25QYXJhbWV0ZXJzKHN5bnRheENoZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7
CisgICAgICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBmdW5j
dGlvbkluZm8pOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTI1ODAsNyArMjU4Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
Ym9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAg
fSk7CiAKICAgICBhdXRvIHBlcmZvcm1QYXJzaW5nRnVuY3Rpb25Cb2R5ID0gWyZdIHsKLSAgICAg
ICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN5bnRheENoZWNrZXIsIHN0YXJ0
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmlu
ZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2Rl
KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN5bnRheENoZWNr
ZXIsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3Rl
ZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNv
dW50KTsKICAgICB9OwogCiAgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBl
clBhcnNlTW9kZShtb2RlKSkgewpAQCAtMjY5NSw2ICsyNzAxLDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uRGVjbGEKICAgICAgICAgbmV4dCgpOwogICAgICAgICBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU7CiAgICAgfQorICAgIFNldEZvclNj
b3BlPFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIHBhcnNlTW9k
ZSk7CiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsK
ICAgICBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzID0gRnVuY3Rpb25OYW1l
UmVxdWlyZW1lbnRzOjpOYW1lZDsKQEAgLTI3MjMsNyArMjczMCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkRlY2xhCiAgICAgICAgIGZ1bmN0aW9uSW5mby5uYW1lID0gJm1fdm0ucHJvcGVydHlOYW1l
cy0+c3RhckRlZmF1bHRQcml2YXRlTmFtZTsKICAgICB9CiAKLSAgICBmYWlsSWZGYWxzZSgocGFy
c2VGdW5jdGlvbkluZm8oY29udGV4dCwgcmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIHRydWUsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0
aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKSksICJDYW5ub3Qg
cGFyc2UgdGhpcyBmdW5jdGlvbiIpOworICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5m
byhjb250ZXh0LCByZXF1aXJlbWVudHMsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8s
IEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwog
ICAgIEFTU0VSVChmdW5jdGlvbkluZm8ubmFtZSk7CiAKICAgICBzdGQ6OnBhaXI8RGVjbGFyYXRp
b25SZXN1bHRNYXNrLCBTY29wZVJlZj4gZnVuY3Rpb25EZWNsYXJhdGlvbiA9IGRlY2xhcmVGdW5j
dGlvbihmdW5jdGlvbkluZm8ubmFtZSk7CkBAIC0yNzU0LDYgKzI3NjEsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
QXN5bmNGdW5jdGlvbgogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOwogICAgIGlmIChjb25zdW1lKFRJTUVTKSkKICAgICAg
ICAgcGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJGdW5j
dGlvbk1vZGU7CisgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9k
ZShtX3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsKIAogICAgIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50
cyByZXF1aXJlbWVudHMgPSBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6Ok5hbWVkOwogICAgIGlm
IChkZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0ID09IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6
OkV4cG9ydERlZmF1bHQpIHsKQEAgLTI3ODEsNyArMjc4OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1
bmN0aW9uCiAgICAgICAgIGZ1bmN0aW9uSW5mby5uYW1lID0gJm1fdm0ucHJvcGVydHlOYW1lcy0+
c3RhckRlZmF1bHRQcml2YXRlTmFtZTsKICAgICB9CiAKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm8oY29udGV4dCwgcmVxdWlyZW1lbnRzLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9u
LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKSksICJDYW5ub3QgcGFy
c2UgdGhpcyBhc3luYyBmdW5jdGlvbiIpOworICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9u
SW5mbyhjb250ZXh0LCByZXF1aXJlbWVudHMsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbklu
Zm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uLCBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBhc3luYyBmdW5j
dGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1lLCAiQXN5bmMgZnVuY3Rp
b24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CiAKICAgICBzdGQ6OnBhaXI8RGVjbGFy
YXRpb25SZXN1bHRNYXNrLCBTY29wZVJlZj4gZnVuY3Rpb25EZWNsYXJhdGlvbiA9IGRlY2xhcmVG
dW5jdGlvbihmdW5jdGlvbkluZm8ubmFtZSk7CkBAIC0zMDQ3LDcgKzMwNTUsOCBAQCBwYXJzZU1l
dGhvZDoKICAgICAgICAgICAgICAgICAiQ2Fubm90IGRlY2xhcmUgIiwgc3RyaW5nQXJ0aWNsZUZv
ckZ1bmN0aW9uTW9kZShwYXJzZU1vZGUpLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUocGFyc2VNb2Rl
KSwgIiBuYW1lZCAnY29uc3RydWN0b3InIik7CiAKICAgICAgICAgICAgIG1ldGhvZEluZm8ubmFt
ZSA9IGlzQ29uc3RydWN0b3IgPyBpbmZvLmNsYXNzTmFtZSA6IGlkZW50OwotICAgICAgICAgICAg
ZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVp
cmVtZW50czo6VW5uYW1lZCwgcGFyc2VNb2RlLCBmYWxzZSwgaXNDb25zdHJ1Y3RvciA/IGNvbnN0
cnVjdG9yS2luZCA6IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQs
IG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2Qp
KSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOworICAgICAgICAgICAgU2V0Rm9yU2NvcGU8
U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsK
KyAgICAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29u
c3RydWN0b3JLaW5kIDogQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhv
ZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAKICAgICAgICAgICAgIFRyZWVFeHBy
ZXNzaW9uIG1ldGhvZCA9IGNvbnRleHQuY3JlYXRlTWV0aG9kRGVmaW5pdGlvbihtZXRob2RMb2Nh
dGlvbiwgbWV0aG9kSW5mbyk7CiAgICAgICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcikgewpAQCAt
NDI2Myw3ICs0MjcyLDggQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChtYXRjaChPUEVOUEFSRU4pKSB7Ci0gICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJv
cGVydHlNZXRob2QoY29udGV4dCwgaWRlbnQsIHBhcnNlTW9kZSk7CisgICAgICAgICAgICBTZXRG
b3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBwYXJz
ZU1vZGUpOworICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNv
bnRleHQsIGlkZW50KTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0aG9kLCBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBD
bGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQpAQCAtNDMwMiw4ICs0MzEyLDkgQEAgbmFt
ZWRQcm9wZXJ0eToKICAgICAgICAgbmV4dCgpOwogCiAgICAgICAgIGlmIChtYXRjaChPUEVOUEFS
RU4pKSB7CisgICAgICAgICAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFy
c2VNb2RlKG1fcGFyc2VNb2RlLCBwYXJzZU1vZGUpOwogICAgICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQgPSBtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmlj
SWRlbnRpZmllcihjb25zdF9jYXN0PFZNJj4obV92bSksIHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
ICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwgJmlkZW50LCBw
YXJzZU1vZGUpOworICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9k
KGNvbnRleHQsICZpZGVudCk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoJmlkZW50LCBtZXRob2QsIFByb3Bl
cnR5Tm9kZTo6Q29uc3RhbnQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93
ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgICAgICB9CkBAIC00MzIwLDcgKzQzMzEsOCBA
QCBuYW1lZFByb3BlcnR5OgogICAgICAgICBuZXh0KCk7CiAKICAgICAgICAgaWYgKG1hdGNoKE9Q
RU5QQVJFTikpIHsKLSAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhv
ZChjb250ZXh0LCBpZGVudCwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIFNldEZvclNjb3BlPFNv
dXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIHBhcnNlTW9kZSk7Cisg
ICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwgaWRl
bnQpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5Tm9kZTo6Q29uc3Rh
bnQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVu
dFRhZzo6Tm8pOwogICAgICAgICB9CkBAIC00MzM5LDcgKzQzNTEsOCBAQCBuYW1lZFByb3BlcnR5
OgogICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5k
IiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKIAogICAgICAgICBpZiAobWF0Y2goT1BFTlBB
UkVOKSkgewotICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNv
bnRleHQsICZtX3ZtLnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBwYXJzZU1vZGUpOwor
ICAgICAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZSht
X3BhcnNlTW9kZSwgcGFyc2VNb2RlKTsKKyAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQ
cm9wZXJ0eU1ldGhvZChjb250ZXh0LCAmbV92bS5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmll
cik7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlUHJvcGVydHkocHJvcGVydHlOYW1lLCBtZXRob2QsIHN0YXRpY19jYXN0PFBy
b3BlcnR5Tm9kZTo6VHlwZT4oUHJvcGVydHlOb2RlOjpDb25zdGFudCB8IFByb3BlcnR5Tm9kZTo6
Q29tcHV0ZWQpLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CiAg
ICAgICAgIH0KQEAgLTQzNjksMTQgKzQzODIsMTQgQEAgbmFtZWRQcm9wZXJ0eToKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2QoVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lKQogewotICAgIEFTU0VSVChp
c01ldGhvZFBhcnNlTW9kZShwYXJzZU1vZGUpKTsKKyAgICBBU1NFUlQoaXNNZXRob2RQYXJzZU1v
ZGUoc291cmNlUGFyc2VNb2RlKCkpKTsKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3Rh
cnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87CiAg
ICAgbWV0aG9kSW5mby5uYW1lID0gbWV0aG9kTmFtZTsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBw
YXJzZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6TmVl
ZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0
aG9kKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKKyAgICBmYWlsSWZGYWxzZSgocGFy
c2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVk
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0
aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAi
Q2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTWV0
aG9kRGVmaW5pdGlvbihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CiB9CiAKQEAgLTQ0MTQs
MTAgKzQ0MjcsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFQKICAgICBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6Okdl
dHRlcikgewogICAgICAgICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQg
YSBwYXJhbWV0ZXIgbGlzdCBmb3IgZ2V0dGVyIGRlZmluaXRpb24iKTsKLSAgICAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50
czo6VW5uYW1lZCwgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwg
aW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgZ2V0
dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBp
bm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlKTsK
KyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9u
TmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9u
RGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIGdldHRlciBkZWZpbml0aW9u
Iik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwg
IkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHNldHRlciBkZWZpbml0aW9uIik7Ci0gICAg
ICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVS
ZXF1aXJlbWVudHM6OlVubmFtZWQsIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSwgZmFsc2Us
IGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3Rh
cnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90
IHBhcnNlIHNldHRlciBkZWZpbml0aW9uIik7CisgICAgICAgIFNldEZvclNjb3BlPFNvdXJjZVBh
cnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6U2V0
dGVyTW9kZSk7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0
LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIGZhbHNlLCBjb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBzZXR0ZXIg
ZGVmaW5pdGlvbiIpOwogICAgIH0KIAogICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCkBAIC00
NTk3LDcgKzQ2MTIsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRXhwcgogICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZTsKICAg
ICBpZiAoY29uc3VtZShUSU1FUykpCiAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZTsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpOb25lLCBwYXJz
ZU1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRp
b25UeXBlOjpFeHByZXNzaW9uKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIp
OworICAgIFNldEZvclNjb3BlPFNvdXJjZVBhcnNlTW9kZT4gc2V0SW5uZXJQYXJzZU1vZGUobV9w
YXJzZU1vZGUsIHBhcnNlTW9kZSk7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZv
KGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6Tm9uZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwg
IkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwogfQogCkBAIC00NjEy
LDEwICs0NjI4LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvCiAKICAgICBpZiAoY29uc3Vt
ZShUSU1FUykpCiAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5l
cmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOworICAgIFNldEZvclNjb3BlPFNvdXJjZVBhcnNlTW9k
ZT4gc2V0SW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIHBhcnNlTW9kZSk7CiAKICAgICBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICBmdW5jdGlvbklu
Zm8ubmFtZSA9ICZtX3ZtLnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50
czo6Tm9uZSwgcGFyc2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVu
Y3Rpb25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbiksIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlID8gIkNhbm5vdCBwYXJzZSBhc3luYyBmdW5jdGlvbiBl
eHByZXNzaW9uIiA6ICJDYW5ub3QgcGFyc2UgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGV4cHJl
c3Npb24iKTsKKyAgICBmYWlsSWZGYWxzZShwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5hbWVSZXF1aXJlbWVudHM6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25J
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9uKSwgcGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUgPyAiQ2Fubm90IHBhcnNlIGFzeW5jIGZ1
bmN0aW9uIGV4cHJlc3Npb24iIDogIkNhbm5vdCBwYXJzZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rp
b24gZXhwcmVzc2lvbiIpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihs
b2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKIH0KIApAQCAtNTE5OCw4ICs1MjE1LDggQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VBcnJvd0Z1bmN0aW8KICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGlu
Zm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0ucHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7
CiAKLSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNBc3luYyA/IFNvdXJjZVBhcnNl
TW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGU7Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1
bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90
IHBhcnNlIGFycm93IGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKKyAgICBTZXRGb3JTY29wZTxTb3Vy
Y2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBpc0FzeW5jID8gU291cmNl
UGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlIDogU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZSk7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgdHJ1ZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJz
ZSBhcnJvdyBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAKICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVBcnJvd0Z1bmN0aW9uRXhwcihsb2NhdGlvbiwgaW5mbyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCBiZTMzYzFiZTk1ZTlkYTQ1MDBiYWYxYjgwNTliYTM1MDg0
N2E4ODYxLi45MDU2NWJhNDQwMjc0MWU3Zjk0NzRjMjk5NjY0NTM5NDA5MjU1NDcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTk0NCw3ICs5NDQsNyBAQCBwdWJsaWM6
CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRl
bnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4g
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0
UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RG
OjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZl
Y3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVm
b3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24o
KTsgfQpAQCAtMTE2OSw2ICsxMTY5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAor
ICAgIEFMV0FZU19JTkxJTkUgU291cmNlUGFyc2VNb2RlIHNvdXJjZVBhcnNlTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRXZhbE9y
QXJndW1lbnRzKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KSB7IHJldHVybiBpc0V2YWxPckFyZ3Vt
ZW50c0lkZW50aWZpZXIobV92bSwgaWRlbnQpOyB9CiAKICAgICBTY29wZVJlZiB1cHBlclNjb3Bl
KGludCBuKQpAQCAtMTQ2Myw3ICsxNDY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzOwogICAgICAgICBpbnQgbnVtQ29uc3RhbnRzOwogICAgIH07Ci0gICAgRXhw
ZWN0ZWQ8UGFyc2VJbm5lclJlc3VsdCwgU3RyaW5nPiBwYXJzZUlubmVyKGNvbnN0IElkZW50aWZp
ZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0
aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0
IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CisgICAgRXhwZWN0ZWQ8UGFyc2VJ
bm5lclJlc3VsdCwgU3RyaW5nPiBwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5n
Q29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51
bGxwdHIpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBv
cnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9uTWV0YWRhdGFOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC0xNjkxLDggKzE2OTIsOCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50
cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU291cmNl
RWxlbWVudHNNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBwYXJzZUFzeW5jRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYs
IFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291
cmNlRWxlbWVudHNNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBwYXJzZUFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhU
cmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbiwgU291cmNlRWxlbWVudHNNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFzeW5jRnVuY3Rpb25Tb3VyY2VFbGVtZW50
cyhUcmVlQnVpbGRlciYsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIFNvdXJj
ZUVsZW1lbnRzTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgcGFyc2VBc3luY0dlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoVHJl
ZUJ1aWxkZXImLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBTb3VyY2VFbGVt
ZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVs
ZW1lbnRzIHBhcnNlU2luZ2xlRnVuY3Rpb24oVHJlZUJ1aWxkZXImLCBPcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlQ2xhc3NGaWVsZEluaXRp
YWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9z
aXRpb24+Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYg
ZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CkBAIC0xNzQzLDkg
KzE3NDQsOSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxX
QVlTX0lOTElORSBUcmVlQXJndW1lbnRzIHBhcnNlQXJndW1lbnRzKFRyZWVCdWlsZGVyJik7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNz
aW9uIHBhcnNlQXJndW1lbnQoVHJlZUJ1aWxkZXImLCBBcmd1bWVudFR5cGUmKTsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVC
dWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlm
aWVyKiBtZXRob2ROYW1lLCBTb3VyY2VQYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSk7CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1
aWxkZXImLCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRP
ZmZzZXQsIENvbnN0cnVjdG9yS2luZCwgQ2xhc3NFbGVtZW50VGFnKTsKLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1
bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIFN5bnRheENoZWNrZXImLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywg
RnVuY3Rpb25Cb2R5VHlwZSwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSk7CisgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFy
c2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBTeW50YXhDaGVja2VyJiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5h
bWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRp
bmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVuc2lnbmVkKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJv
b2wgaXNNZXRob2QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlvbkxpc3RDb250
ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9OwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJpYWJsZURlY2xh
cmF0aW9uTGlzdChUcmVlQnVpbGRlciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVlRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFzdEluaXRpYWxpemVy
LCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRTdGFydCwg
SlNUZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQsIERlY2xh
cmF0aW9uVHlwZSwgRXhwb3J0VHlwZSwgYm9vbCYgZm9yTG9vcENvbnN0RG9lc05vdEhhdmVJbml0
aWFsaXplcik7CkBAIC0xNzYxLDcgKzE3NjIsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBw
YXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1Y3R1cmluZ0tpbmQs
IEV4cG9ydFR5cGUsIGNvbnN0IElkZW50aWZpZXIqKiBkdXBsaWNhdGVJZGVudGlmaWVyID0gbnVs
bHB0ciwgYm9vbCogaGFzRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gPSBudWxscHRyLCBBc3NpZ25tZW50
Q29udGV4dCA9IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCwgaW50IGRl
cHRoID0gMCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
VHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHBy
ZXNzaW9uKFRyZWVCdWlsZGVyJiwgQXNzaWdubWVudENvbnRleHQpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlRGVmYXVs
dFZhbHVlRm9yRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZU1vZHVsZVNvdXJj
ZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZU1vZHVsZVNvdXJjZUVs
ZW1lbnRzKFRyZWVCdWlsZGVyJik7CiAgICAgZW51bSBjbGFzcyBJbXBvcnRTcGVjaWZpZXJUeXBl
IHsgTmFtZXNwYWNlSW1wb3J0LCBOYW1lZEltcG9ydCwgRGVmYXVsdEltcG9ydCB9OwogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNw
ZWNpZmllciBwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJbXBvcnRTcGVjaWZp
ZXJUeXBlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpNb2R1bGVOYW1lIHBhcnNlTW9kdWxlTmFtZShUcmVlQnVpbGRlciYpOwpAQCAtMTc3
MiwxMSArMTc3MywxMSBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBjcmVhdGVSZXNvbHZlQW5kVXNlVmFyaWFi
bGUoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiwgYm9vbCBpc0V2YWwsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBlbnVtIGNsYXNz
IEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUgeyBFeHByZXNzaW9uLCBEZWNsYXJhdGlvbiwgTWV0aG9k
IH07Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBw
YXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywg
U291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8
aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxs
b3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29s
IHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRz
LCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmlu
ZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0KTsKICAgICAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93
RnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAgICAgCi0gICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBw
YXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uSW5mb1R5cGUmKTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFy
c2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgUGFyc2VyQ2xh
c3NJbmZvPFRyZWVCdWlsZGVyPiYpOwpAQCAtMjA2Miw2ICsyMDYzLDcgQEAgcHJpdmF0ZToKICAg
ICBpbnQgbV9zdGF0ZW1lbnREZXB0aDsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4g
bV9mdW5jdGlvbkNhY2hlOwogICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKKyAgICBTb3VyY2VQ
YXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIG1fc2NyaXB0TW9k
ZTsKICAgICBTdXBlckJpbmRpbmcgbV9zdXBlckJpbmRpbmc7CiAgICAgQ29uc3RydWN0b3JLaW5k
IG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb247CkBAIC0yMDc4LDEw
ICsyMDgwLDExIEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlm
aWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4
dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVBy
aXZhdGVOYW1lcywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0
aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBQYXJz
aW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJl
bnRTY29wZVByaXZhdGVOYW1lcywgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NG
aWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwor
ICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBzb3VyY2VQYXJzZU1vZGUoKTsKIAogICAg
IGlmIChQYXJzZWROb2RlOjpzY29wZUlzRnVuY3Rpb24pCiAgICAgICAgIG1fbGV4ZXItPnNldElz
UmVwYXJzaW5nRnVuY3Rpb24oKTsKQEAgLTIwOTgsNyArMjEwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9y
LCBjb25zdCBJCiAgICAgICAgIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLT5jb3B5UHJpdmF0ZU5h
bWVzVG8oY3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKSk7CiAgICAgfQogCi0gICAg
YXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJz
aW5nQ29udGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY2xh
c3NGaWVsZExvY2F0aW9ucyk7CisgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5uZXIoY2Fs
bGVlTmFtZSwgcGFyc2luZ0NvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5k
UG9zaXRpb24sIGNsYXNzRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBt
X2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBsZXhFcnJvciA9IG1fbGV4ZXItPnNhd0Vy
cm9yKCk7CkBAIC0yMTk1LDcgKzIxOTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
cGFyc2UoCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAo
c291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxM
ZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
c2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFy
c2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5v
ZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBh
cnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9w
dCwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOworICAgICAg
ICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIGlzRXZhbE5v
ZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6
OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmll
bGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAg
ICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVp
bHRpbk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTIyMDgsNyArMjIxMSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0
b3JzIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxM
ZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
c2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFy
c2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5v
ZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBh
cnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9w
dCwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOworICAgICAg
ICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIGlzRXZhbE5v
ZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6
OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmll
bGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAg
ICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUoKTsKICAgICB9CkBAIC0yMjM4LDEyICsyMjQxLDEyIEBAIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHBhcnNlRnVuY3Rpb25Gb3JGdW5jdGlvbkNvbnN0
cnVjdG9yKFZNJiB2bSwKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHJlc3VsdDsK
ICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAg
IFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpOb3RCdWlsdGluLCBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5
cGU6Ok5vbmUsIGlzRXZhbE5vZGUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0cik7Ci0g
ICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQcm9ncmFtTm9kZT4oZXJyb3IsIG5hbWUsIFNv
dXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIFBhcnNpbmdDb250ZXh0OjpGdW5jdGlvbkNvbnN0
cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKKyAgICAg
ICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFByb2dyYW1Ob2RlPihlcnJvciwgbmFtZSwgUGFyc2lu
Z0NvbnRleHQ6OkZ1bmN0aW9uQ29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24pOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkK
ICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICB9IGVsc2UgewogICAgICAgICBQYXJzZXI8TGV4ZXI8
VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xh
c3NpYywgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBpc0V2
YWxOb2RlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIpOwotICAgICAgICByZXN1bHQg
PSBwYXJzZXIucGFyc2U8UHJvZ3JhbU5vZGU+KGVycm9yLCBuYW1lLCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLCBQYXJzaW5nQ29udGV4dDo6RnVuY3Rpb25Db25zdHJ1Y3RvciwgZnVuY3Rp
b25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CisgICAgICAgIHJlc3VsdCA9IHBh
cnNlci5wYXJzZTxQcm9ncmFtTm9kZT4oZXJyb3IsIG5hbWUsIFBhcnNpbmdDb250ZXh0OjpGdW5j
dGlvbkNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9u
KTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAq
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKCk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>