<?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>163175</bug_id>
          
          <creation_ts>2016-10-08 20:08:04 -0700</creation_ts>
          <short_desc>Air should expose API for pinning registers</short_desc>
          <delta_ts>2016-10-10 10:47:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>163171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238043</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-08 20:08:04 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238044</commentid>
    <comment_count>1</comment_count>
      <attachid>291036</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-08 20:08:44 -0700</bug_when>
    <thetext>Created attachment 291036
this might work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238090</commentid>
    <comment_count>2</comment_count>
      <attachid>291048</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-09 11:00:27 -0700</bug_when>
    <thetext>Created attachment 291048
more

Not done yet.  I think that I still need to fix handleCalleeSaves().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238092</commentid>
    <comment_count>3</comment_count>
      <attachid>291049</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-09 12:03:13 -0700</bug_when>
    <thetext>Created attachment 291049
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238093</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-09 12:07:04 -0700</bug_when>
    <thetext>Attachment 291049 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp:52:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEmitShuffle.h:105:  The parameter name &quot;code&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirEmitShuffle.h:110:  The parameter name &quot;code&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238310</commentid>
    <comment_count>5</comment_count>
      <attachid>291107</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-10 08:44:26 -0700</bug_when>
    <thetext>Created attachment 291107
fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238313</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 08:50:50 -0700</bug_when>
    <thetext>Attachment 291107 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp:52:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEmitShuffle.h:105:  The parameter name &quot;code&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirEmitShuffle.h:110:  The parameter name &quot;code&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238337</commentid>
    <comment_count>7</comment_count>
      <attachid>291107</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-10 09:39:17 -0700</bug_when>
    <thetext>Comment on attachment 291107
fix win build

:( I wrote this patch too! This is basically, the same patch that I have, although I have the pinRegister function take the register set rather than calling a pinning method for each one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238340</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-10 09:44:01 -0700</bug_when>
    <thetext>It looks like the Windows build failure is unrelated - it&apos;s dying in generate-bindings, which is far away from what this touches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238365</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-10 10:15:49 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/207004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238377</commentid>
    <comment_count>10</comment_count>
      <attachid>291118</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-10 10:47:25 -0700</bug_when>
    <thetext>Created attachment 291118
Keith&apos;s version

My version of the patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291036</attachid>
            <date>2016-10-08 20:08:44 -0700</date>
            <delta_ts>2016-10-09 11:00:27 -0700</delta_ts>
            <desc>this might work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29152</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNjk2MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNyArOTYsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIzL2Fpci9B
aXJMb3dlck1hY3Jvcy5jcHAKICAgICBiMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAog
ICAgIGIzL2Fpci9BaXJQaGFzZVNjb3BlLmNwcAotICAgIGIzL2Fpci9BaXJSZWdpc3RlclByaW9y
aXR5LmNwcAogICAgIGIzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcAogICAgIGIzL2Fp
ci9BaXJTaW1wbGlmeUNGRy5jcHAKICAgICBiMy9haXIvQWlyU3BlY2lhbC5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtODc1LDggKzg3NSw2IEBACiAJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFQzg1NUMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmgg
Ki87IH07CiAJCTBGRUM4NTgzMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTVFMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmNwcCAqLzsgfTsKIAkJMEZFQzg1ODQxQkRB
Q0RDNzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTVGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFz
ZVNjb3BlLmggKi87IH07Ci0JCTBGRUM4NTg1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3Rl
clByaW9yaXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUM4NTYwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmNwcCAq
LzsgfTsKLQkJMEZFQzg1ODYxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclJlZ2lzdGVyUHJpb3JpdHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTYx
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmggKi87IH07CiAJCTBGRUM4
NTg3MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTYyMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJTcGVjaWFsLmNwcCAqLzsgfTsKIAkJMEZFQzg1ODgxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclNw
ZWNpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RUM4NTYzMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmggKi87IH07CiAJCTBGRUM4NTg5
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg1NjQxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpclNwaWxsRXZlcnl0aGluZy5jcHAgKi87IH07CkBAIC0zMTUxLDggKzMxNDksNiBAQAog
CQkwRkVDODU1QzFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdElubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlySW5zdElubGluZXMuaDsgcGF0aCA9IGIzL2Fpci9B
aXJJbnN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODU1RTFC
REFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBBaXJQaGFzZVNjb3BlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJQaGFz
ZVNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1NUYxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQWlyUGhhc2VTY29wZS5oOyBwYXRoID0gYjMvYWlyL0FpclBoYXNlU2NvcGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFQzg1NjAxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clJlZ2lzdGVyUHJpb3JpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQWlyUmVnaXN0ZXJQcmlvcml0eS5jcHA7IHBhdGggPSBiMy9haXIvQWlyUmVnaXN0ZXJQcmlv
cml0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRUM4NTYxMUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFpclJlZ2lzdGVyUHJpb3JpdHkuaDsgcGF0aCA9IGIzL2Fpci9BaXJSZWdpc3Rl
clByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NTYyMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEFpclNwZWNpYWwuY3BwOyBwYXRoID0gYjMvYWlyL0FpclNwZWNpYWwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODU2MzFCREFDREM3MDA4MEZGNzQgLyog
QWlyU3BlY2lhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJTcGVjaWFs
Lmg7IHBhdGggPSBiMy9haXIvQWlyU3BlY2lhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkVDODU2NDFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BpbGxFdmVyeXRoaW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclNwaWxsRXZlcnl0aGluZy5j
cHA7IHBhdGggPSBiMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUwNjMsOCArNTA1OSw2IEBACiAJCQkJMEZCMzg3OEQxQkZCQzQ0RDAw
RTNBQjFFIC8qIEFpck9wdGltaXplQmxvY2tPcmRlci5oICovLAogCQkJCTBGRUM4NTVFMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmNwcCAqLywKIAkJCQkwRkVDODU1RjFCREFDREM3
MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5oICovLAotCQkJCTBGRUM4NTYwMUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmNwcCAqLywKLQkJCQkwRkVDODU2MTFCREFDREM3
MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5oICovLAogCQkJCTBGNDU3MDNBMUJFNDVG
MEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLywKIAkJCQkwRjQ1NzAz
QjFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oICovLAogCQkJCTBG
MzM4REZCMUJFRDUxMjcwMDEzQzg4RiAvKiBBaXJTaW1wbGlmeUNGRy5jcHAgKi8sCkBAIC03MjYw
LDcgKzcyNTQsNiBAQAogCQkJCTBGRUM4NTgwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU4MTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTg0MUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJQaGFzZVNjb3BlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkVDODU4NjFCREFDREM3MDA4MEZG
NzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwM0Qx
QkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUM4NTg4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODU4QTFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BpbGxFdmVyeXRoaW5n
LmggaW4gSGVhZGVycyAqLywKQEAgLTkwMDEsNyArODk5NCw2IEBACiAJCQkJMEZFQzg1N0QxQkRB
Q0RDNzAwODBGRjc0IC8qIEFpckluc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVDODU3RjFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVDODU4MzFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQkwRkVDODU4NTFCREFDREM3MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ1NzAzQzFCRTQ1RjBBMDA2MkE2MjkgLyogQWly
UmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODU4NzFCREFD
REM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODU4
OTFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BpbGxFdmVyeXRoaW5nLmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lv
biAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDUsNiArMzA1LDExIEBAIHZvaWQgUHJvY2VkdXJlOjpyZXF1ZXN0
Q2FsbEFyZ0FyZWFTaXplSW4KICAgICBjb2RlKCkucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0
ZXMoc2l6ZSk7CiB9CiAKK3ZvaWQgUHJvY2VkdXJlOjphdm9pZFJlZ2lzdGVyKFJlZyByZWcpCit7
CisgICAgY29kZSgpLmF2b2lkUmVnaXN0ZXIocmVnKTsKK30KKwogdW5zaWduZWQgUHJvY2VkdXJl
OjpmcmFtZVNpemUoKSBjb25zdAogewogICAgIHJldHVybiBjb2RlKCkuZnJhbWVTaXplKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjA2OTYz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMiw2ICsyMTIsMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNhbGxBcmdBcmVh
U2l6ZUluQnl0ZXMoKSBjb25zdDsKICAgICB2b2lkIHJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5
dGVzKHVuc2lnbmVkIHNpemUpOwogCisgICAgLy8gVGhpcyB0ZWxscyB0aGUgcmVnaXN0ZXIgYWxs
b2NhdG9ycyB0byBzdGF5IGF3YXkgZnJvbSB0aGlzIHJlZ2lzdGVyLiBUaGlzIGFsbG93cyB5b3Ug
dG8gcGluCisgICAgLy8gcmVnaXN0ZXJzLgorICAgIHZvaWQgYXZvaWRSZWdpc3RlcihSZWcpOwor
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgZnJhbWVTaXplKCkgY29uc3Q7CiAgICAg
Y29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdDsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCShyZXZpc2lv
biAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsNDQgQEAgQ29kZTo6Q29kZShQcm9jZWR1cmUmIHBy
b2MpCiAgICAgOiBtX3Byb2MocHJvYykKICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIp
CiB7CisgICAgLy8gQ29tZSB1cCB3aXRoIGluaXRpYWwgb3JkZXJpbmdzIG9mIHJlZ2lzdGVycy4g
VGhlIHVzZXIgbWF5IHJlcGxhY2UgdGhpcyB3aXRoIHNvbWV0aGluZyBlbHNlLgorICAgIEFyZzo6
Zm9yRWFjaFR5cGUoCisgICAgICAgIFsmXSAoQXJnOjpUeXBlIHR5cGUpIHsKKyAgICAgICAgICAg
IFZlY3RvcjxSZWc+IHJlc3VsdDsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGFsbCA9IHR5cGUg
PT0gQXJnOjpHUCA/IFJlZ2lzdGVyU2V0OjphbGxHUFJzKCkgOiBSZWdpc3RlclNldDo6YWxsRlBS
cygpOworICAgICAgICAgICAgYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCkpOworICAgICAgICAgICAgYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdh
cmVSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICBSZWdpc3RlclNldCBjYWxsZWVTYXZlID0gUmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGFsbC5mb3JFYWNo
KAorICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNhbGxlZVNhdmUuZ2V0KHJlZykpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHJlZyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBhbGwuZm9yRWFj
aCgKKyAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNhbGxlZVNhdmUuZ2V0KHJlZykpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHJlZyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzZXRSZWdzSW5Q
cmlvcml0eU9yZGVyKHR5cGUsIHJlc3VsdCk7CisgICAgICAgIH0pOwogfQogCiBDb2RlOjp+Q29k
ZSgpCiB7CiB9CiAKK3ZvaWQgQ29kZTo6c2V0UmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OlR5cGUg
dHlwZSwgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3MpCit7CisgICAgcmVnc0luUHJpb3JpdHlPcmRl
cih0eXBlKSA9IHJlZ3M7Cit9CisKK3ZvaWQgQ29kZTo6YXZvaWRSZWdpc3RlcihSZWcgcmVnKQor
eworICAgIFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmcoVG1wKHJl
ZykpLnR5cGUoKSk7CisgICAgcmVncy5yZW1vdmVGaXJzdChyZWcpOworICAgIEFTU0VSVCghcmVn
cy5jb250YWlucyhyZWcpKTsKK30KKwogQmFzaWNCbG9jayogQ29kZTo6YWRkQmxvY2soZG91Ymxl
IGZyZXF1ZW5jeSkKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4gYmxvY2sobmV3
IEJhc2ljQmxvY2sobV9ibG9ja3Muc2l6ZSgpLCBmcmVxdWVuY3kpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiAr
NjMsMjAgQEAgcHVibGljOgogICAgIH5Db2RlKCk7CiAKICAgICBQcm9jZWR1cmUmIHByb2MoKSB7
IHJldHVybiBtX3Byb2M7IH0KKyAgICAKKyAgICBjb25zdCBWZWN0b3I8UmVnPiYgcmVnc0luUHJp
b3JpdHlPcmRlcihBcmc6OlR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
dHlwZSkgeworICAgICAgICBjYXNlIEFyZzo6R1A6CisgICAgICAgICAgICByZXR1cm4gbV9ncFJl
Z3NJblByaW9yaXR5T3JkZXI7CisgICAgICAgIGNhc2UgQXJnOjpGUDoKKyAgICAgICAgICAgIHJl
dHVybiBtX2ZwUmVnc0luUHJpb3JpdHlPcmRlcjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRSZWdzSW5Qcmlvcml0eU9y
ZGVyKEFyZzo6VHlwZSwgY29uc3QgVmVjdG9yPFJlZz4mKTsKKyAgICB2b2lkIGF2b2lkUmVnaXN0
ZXIoUmVnKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEJhc2ljQmxvY2sqIGFkZEJsb2NrKGRv
dWJsZSBmcmVxdWVuY3kgPSAxKTsKIApAQCAtMjUwLDcgKzI2NCwyMCBAQCBwcml2YXRlOgogICAg
IAogICAgIENvZGUoUHJvY2VkdXJlJik7CiAKKyAgICBWZWN0b3I8UmVnPiYgcmVnc0luUHJpb3Jp
dHlPcmRlcihBcmc6OlR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgewor
ICAgICAgICBjYXNlIEFyZzo6R1A6CisgICAgICAgICAgICByZXR1cm4gbV9ncFJlZ3NJblByaW9y
aXR5T3JkZXI7CisgICAgICAgIGNhc2UgQXJnOjpGUDoKKyAgICAgICAgICAgIHJldHVybiBtX2Zw
UmVnc0luUHJpb3JpdHlPcmRlcjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsgLy8gU29tZSBtZXRhLWRhdGEs
IGxpa2UgYnlwcm9kdWN0cywgaXMgc3RvcmVkIGluIHRoZSBQcm9jZWR1cmUuCisgICAgVmVjdG9y
PFJlZz4gbV9ncFJlZ3NJblByaW9yaXR5T3JkZXI7CisgICAgVmVjdG9yPFJlZz4gbV9mcFJlZ3NJ
blByaW9yaXR5T3JkZXI7CiAgICAgU3BhcnNlQ29sbGVjdGlvbjxTdGFja1Nsb3Q+IG1fc3RhY2tT
bG90czsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+PiBtX2Jsb2NrczsK
ICAgICBTcGFyc2VDb2xsZWN0aW9uPFNwZWNpYWw+IG1fc3BlY2lhbHM7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcAkocmV2aXNpb24g
MjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoQjNfSklUKQog
CiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKLSNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9y
aXR5LmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3REdW1wLmg+CiAKQEAgLTQwLDggKzM5LDggQEAgbmFtZXNwYWNlIHsKIGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotVG1wIGZpbmRQb3NzaWJs
ZVNjcmF0Y2goQXJnOjpUeXBlIHR5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIHsKLSAgICBm
b3IgKFJlZyByZWcgOiByZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CitUbXAgZmluZFBvc3Np
YmxlU2NyYXRjaChDb2RlJiBjb2RlLCBBcmc6OlR5cGUgdHlwZSwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikgeworICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcih0eXBl
KSkgewogICAgICAgICBUbXAgdG1wKHJlZyk7CiAgICAgICAgIGlmIChmdW5jdG9yKHRtcCkpCiAg
ICAgICAgICAgICByZXR1cm4gdG1wOwpAQCAtNDksOSArNDgsOSBAQCBUbXAgZmluZFBvc3NpYmxl
U2NyYXRjaChBcmc6OlR5cGUgdHlwZSwgCiAgICAgcmV0dXJuIFRtcCgpOwogfQogCi1UbXAgZmlu
ZFBvc3NpYmxlU2NyYXRjaChBcmc6OlR5cGUgdHlwZSwgY29uc3QgQXJnJiBhcmcxLCBjb25zdCBB
cmcmIGFyZzIpIHsKK1RtcCBmaW5kUG9zc2libGVTY3JhdGNoKENvZGUmIGNvZGUsIEFyZzo6VHlw
ZSB0eXBlLCBjb25zdCBBcmcmIGFyZzEsIGNvbnN0IEFyZyYgYXJnMikgewogICAgIHJldHVybiBm
aW5kUG9zc2libGVTY3JhdGNoKAotICAgICAgICB0eXBlLAorICAgICAgICBjb2RlLCB0eXBlLAog
ICAgICAgICBbJl0gKFRtcCB0bXApIC0+IGJvb2wgewogICAgICAgICAgICAgcmV0dXJuICFhcmcx
LnVzZXNUbXAodG1wKSAmJiAhYXJnMi51c2VzVG1wKHRtcCk7CiAgICAgICAgIH0pOwpAQCAtNzks
NyArNzgsOCBAQCBJbnN0IGNyZWF0ZVNodWZmbGUoVmFsdWUqIG9yaWdpbiwgY29uc3QgCiB9CiAK
IFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKLSAgICBWZWN0b3I8U2h1ZmZsZVBhaXI+IHBhaXJz
LCBzdGQ6OmFycmF5PEFyZywgMj4gc2NyYXRjaGVzLCBBcmc6OlR5cGUgdHlwZSwgVmFsdWUqIG9y
aWdpbikKKyAgICBDb2RlJiBjb2RlLCBWZWN0b3I8U2h1ZmZsZVBhaXI+IHBhaXJzLCBzdGQ6OmFy
cmF5PEFyZywgMj4gc2NyYXRjaGVzLCBBcmc6OlR5cGUgdHlwZSwKKyAgICBWYWx1ZSogb3JpZ2lu
KQogewogICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgIGRhdGFMb2coCkBAIC0zMDMsNyArMzAz
LDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgICAgICAKICAgICAgICAgaWYgKCFp
c1ZhbGlkRm9ybShtb3ZlLCBwYWlyLnNyYygpLmtpbmQoKSwgcGFpci5kc3QoKS5raW5kKCkpKSB7
CiAgICAgICAgICAgICBUbXAgc2NyYXRjaCA9Ci0gICAgICAgICAgICAgICAgZ2V0U2NyYXRjaChz
Y3JhdGNoSW5kZXgsIGZpbmRQb3NzaWJsZVNjcmF0Y2godHlwZSwgcGFpci5zcmMoKSwgcGFpci5k
c3QoKSkpOworICAgICAgICAgICAgICAgIGdldFNjcmF0Y2goc2NyYXRjaEluZGV4LCBmaW5kUG9z
c2libGVTY3JhdGNoKGNvZGUsIHR5cGUsIHBhaXIuc3JjKCksIHBhaXIuZHN0KCkpKTsKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjcmF0Y2gpOwogICAgICAgICAgICAgaWYgKGlzVmFsaWRG
b3JtKG1vdmUsIHBhaXIuc3JjKCkua2luZCgpLCBBcmc6OlRtcCkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChJbnN0KG1vdmVGb3JXaWR0aChwYWlyLndpZHRoKCkpLCBvcmlnaW4sIHBh
aXIuc3JjKCksIHNjcmF0Y2gpKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCBWZWN0b3I8SW5zdD4gZW1p
dFNodWZmbGUoCiAgICAgICAgICAgICAgICAgICAgIC8vIE1vdmluZyBkYXRhIGJldHdlZW4gdHdv
IHNwaWxscyBpcyByYXJlLiBUbyBnZXQgaGVyZSBhIGxvdCBvZiByYXJlIHN0dWZmIGhhcyB0bwog
ICAgICAgICAgICAgICAgICAgICAvLyBhbGwgaGFwcGVuIGF0IG9uY2UuCiAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICBUbXAgc2NyYXRjaCA9IGdldFNjcmF0Y2goMCwg
ZmluZFBvc3NpYmxlU2NyYXRjaCh0eXBlLCBsZWZ0LCByaWdodCkpOworICAgICAgICAgICAgICAg
ICAgICBUbXAgc2NyYXRjaCA9IGdldFNjcmF0Y2goMCwgZmluZFBvc3NpYmxlU2NyYXRjaChjb2Rl
LCB0eXBlLCBsZWZ0LCByaWdodCkpOwogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChJbnN0KG1vdmVG
b3JXaWR0aChzd2FwV2lkdGgpLCBvcmlnaW4sIGxlZnQsIHNjcmF0Y2gpKTsKICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChJbnN0KHN3YXAsIG9yaWdpbiwgc2NyYXRjaCwgcmlnaHQp
KTsKQEAgLTQ2OSw3ICs0NjksNyBAQCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAg
ICAgICAvLyBhdmFpbGFibGUgcmVnaXN0ZXIgZmlsZS4KIAogICAgICAgICAgICAgVG1wIHNjcmF0
Y2ggPSBmaW5kUG9zc2libGVTY3JhdGNoKAotICAgICAgICAgICAgICAgIHR5cGUsCisgICAgICAg
ICAgICAgICAgY29kZSwgdHlwZSwKICAgICAgICAgICAgICAgICBbJl0gKFRtcCB0bXApIC0+IGJv
b2wgewogICAgICAgICAgICAgICAgICAgICBmb3IgKFNodWZmbGVQYWlyIHBhaXIgOiByb3RhdGUu
bG9vcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhaXIuc3JjKCkudXNlc1RtcCh0
bXApKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZm
bGUuaAkocmV2aXNpb24gMjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJFbWl0U2h1ZmZsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTIgKzEwMCwxMiBAQCBJbnN0
IGNyZWF0ZVNodWZmbGUoVmFsdWUqIG9yaWdpbiwgY29uc3QgCiAvLyBOT1RFOiBVc2UgdGhpcyBt
ZXRob2QgKGFuZCBpdHMgZnJpZW5kIGJlbG93KSB0byBlbWl0IHNodWZmbGVzIGFmdGVyIHJlZ2lz
dGVyIGFsbG9jYXRpb24uIEJlZm9yZQogLy8gcmVnaXN0ZXIgYWxsb2NhdGlvbiBpdCBpcyBtdWNo
IGJldHRlciB0byBzaW1wbHkgdXNlIHRoZSBTaHVmZmxlIGluc3RydWN0aW9uLgogVmVjdG9yPElu
c3Q+IGVtaXRTaHVmZmxlKAotICAgIFZlY3RvcjxTaHVmZmxlUGFpcj4sIHN0ZDo6YXJyYXk8QXJn
LCAyPiBzY3JhdGNoLCBBcmc6OlR5cGUsIFZhbHVlKiBvcmlnaW4pOworICAgIENvZGUmIGNvZGUs
IFZlY3RvcjxTaHVmZmxlUGFpcj4sIHN0ZDo6YXJyYXk8QXJnLCAyPiBzY3JhdGNoLCBBcmc6OlR5
cGUsIFZhbHVlKiBvcmlnaW4pOwogCiAvLyBQZXJmb3JtIGEgc2h1ZmZsZSB0aGF0IGludm9sdmVz
IGFueSBudW1iZXIgb2YgdHlwZXMuIFBhc3Mgc2NyYXRjaCByZWdpc3RlcnMgb3IgbWVtb3J5IGxv
Y2F0aW9ucwogLy8gZm9yIGVhY2ggdHlwZSBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIGFib3ZlLgog
VmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAotICAgIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4m
LAorICAgIENvZGUmIGNvZGUsIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mLAogICAgIGNvbnN0
IHN0ZDo6YXJyYXk8QXJnLCAyPiYgZ3BTY3JhdGNoLCBjb25zdCBzdGQ6OmFycmF5PEFyZywgMj4m
IGZwU2NyYXRjaCwKICAgICBWYWx1ZSogb3JpZ2luKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29h
bGVzY2luZy5jcHAJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJB
aXJMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKLSNpbmNsdWRlICJBaXJS
ZWdpc3RlclByaW9yaXR5LmgiCiAjaW5jbHVkZSAiQWlyVG1wSW5saW5lcy5oIgogI2luY2x1ZGUg
IkFpclRtcFdpZHRoLmgiCiAjaW5jbHVkZSAiQWlyVXNlQ291bnRzLmgiCkBAIC03MjcsNyArNzI2
LDcgQEAgdGVtcGxhdGU8QXJnOjpUeXBlIHR5cGU+CiBjbGFzcyBDb2xvcmluZ0FsbG9jYXRvciA6
IHB1YmxpYyBBYnN0cmFjdENvbG9yaW5nQWxsb2NhdG9yPHVuc2lnbmVkPiB7CiBwdWJsaWM6CiAg
ICAgQ29sb3JpbmdBbGxvY2F0b3IoQ29kZSYgY29kZSwgVG1wV2lkdGgmIHRtcFdpZHRoLCBjb25z
dCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCBjb25zdCBIYXNoU2V0PHVuc2lnbmVkPiYgdW5z
cGlsbGFibGVUbXApCi0gICAgICAgIDogQWJzdHJhY3RDb2xvcmluZ0FsbG9jYXRvcjx1bnNpZ25l
ZD4ocmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSwgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46Omxh
c3RNYWNoaW5lUmVnaXN0ZXJJbmRleCgpLCB0bXBBcnJheVNpemUoY29kZSksIHVuc3BpbGxhYmxl
VG1wKQorICAgICAgICA6IEFic3RyYWN0Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+KGNvZGUu
cmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSwgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46Omxhc3RN
YWNoaW5lUmVnaXN0ZXJJbmRleCgpLCB0bXBBcnJheVNpemUoY29kZSksIHVuc3BpbGxhYmxlVG1w
KQogICAgICAgICAsIG1fY29kZShjb2RlKQogICAgICAgICAsIG1fdG1wV2lkdGgodG1wV2lkdGgp
CiAgICAgICAgICwgbV91c2VDb3VudHModXNlQ291bnRzKQpAQCAtODM5LDcgKzgzOCw3IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCFyZWcpIHsKICAgICAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBh
Ym91dCBUbXBzIHRoYXQgaW50ZXJmZXJlLiBBIFRtcCB0aGF0IG5ldmVyIGludGVyZmVyZSB3aXRo
IGFueXRoaW5nCiAgICAgICAgICAgICAvLyBjYW4gdGFrZSBhbnkgcmVnaXN0ZXIuCi0gICAgICAg
ICAgICByZWcgPSByZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLmZpcnN0KCk7CisgICAgICAgICAg
ICByZWcgPSBtX2NvZGUucmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKS5maXJzdCgpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiByZWc7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAkocmV2aXNp
b24gMjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVy
UmVnQWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAi
QWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFp
clBoYXNlU2NvcGUuaCIKLSNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCiAjaW5jbHVk
ZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJSZWdpc3RlclNldC5oIgpAQCAtODYsNyArODUsNyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxv
YyhDb2RlJiBjb2RlKQogICAgICAgICBzdGQ6OmFycmF5PEFyZywgMj4gcmVzdWx0OwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7CiAgICAgICAgICAgICBib29sIGZv
dW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdzSW5Qcmlvcml0eU9y
ZGVyKHR5cGUpKSB7CisgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9y
aXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXNldC5nZXQocmVnKSkgewog
ICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBUbXAocmVnKTsKICAgICAgICAgICAgICAg
ICAgICAgc2V0LnNldChyZWcpOwpAQCAtMTM0LDcgKzEzMyw3IEBAIHZvaWQgbG93ZXJBZnRlclJl
Z0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxBcmcsIDI+IGdw
U2NyYXRjaCA9IGdldFNjcmF0Y2hlcyhzZXQsIEFyZzo6R1ApOwogICAgICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8QXJnLCAyPiBmcFNjcmF0Y2ggPSBnZXRTY3JhdGNoZXMoc2V0LCBBcmc6OkZQKTsK
ICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0SW5zdHMoCi0gICAgICAgICAgICAg
ICAgICAgIGluc3RJbmRleCwgZW1pdFNodWZmbGUocGFpcnMsIGdwU2NyYXRjaCwgZnBTY3JhdGNo
LCBpbnN0Lm9yaWdpbikpOworICAgICAgICAgICAgICAgICAgICBpbnN0SW5kZXgsIGVtaXRTaHVm
ZmxlKGNvZGUsIHBhaXJzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgaW5zdC5vcmlnaW4pKTsKICAg
ICAgICAgICAgICAgICBpbnN0ID0gSW5zdCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtMTkzLDcgKzE5Miw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENv
ZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlByZS1jYWxsIHBhaXJzIGZv
ciAiLCBpbnN0LCAiOiAiLCBsaXN0RHVtcChwYWlycyksICJcbiIpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0cygKLSAgICAgICAgICAg
ICAgICAgICAgaW5zdEluZGV4LCBlbWl0U2h1ZmZsZShwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0
Y2gsIGluc3Qub3JpZ2luKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RJbmRleCwgZW1pdFNo
dWZmbGUoY29kZSwgcGFpcnMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBpbnN0Lm9yaWdpbikpOwog
CiAgICAgICAgICAgICAgICAgaW5zdCA9IGJ1aWxkQ0NhbGwoY29kZSwgaW5zdC5vcmlnaW4sIGRl
c3RpbmF0aW9ucyk7CiAgICAgICAgICAgICAgICAgaWYgKG9sZEtpbmQudHJhcHMpCkBAIC0yMjQs
NyArMjIzLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAg
ICAgICAgICBmcFNjcmF0Y2ggPSBnZXRTY3JhdGNoZXMobGl2ZVJlZ3MsIEFyZzo6RlApOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0cygK
LSAgICAgICAgICAgICAgICAgICAgaW5zdEluZGV4ICsgMSwgZW1pdFNodWZmbGUocGFpcnMsIGdw
U2NyYXRjaCwgZnBTY3JhdGNoLCBpbnN0Lm9yaWdpbikpOworICAgICAgICAgICAgICAgICAgICBp
bnN0SW5kZXggKyAxLCBlbWl0U2h1ZmZsZShjb2RlLCBwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0
Y2gsIGluc3Qub3JpZ2luKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUmVnaXN0ZXJQcmlvcml0
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdp
c3RlclByaW9yaXR5LmNwcAkocmV2aXNpb24gMjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJSZWdpc3RlclByaW9yaXR5LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEw
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCi0K
LSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKLQotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1jb25zdCBWZWN0b3I8
R1BSUmVnPiYgZ3Byc0luUHJpb3JpdHlPcmRlcigpCi17Ci0gICAgc3RhdGljIFZlY3RvcjxHUFJS
ZWc+KiByZXN1bHQ7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpj
YWxsX29uY2UoCi0gICAgICAgIG9uY2UsCi0gICAgICAgIFtdIHsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IG5ldyBWZWN0b3I8R1BSUmVnPigpOwotICAgICAgICAgICAgUmVnaXN0ZXJTZXQgYWxsID0g
UmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKTsKLSAgICAgICAgICAgIGFsbC5leGNsdWRlKFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICAgICAgICAgIGFsbC5leGNsdWRlKFJlZ2lzdGVy
U2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgICAgICAgICAgUmVnaXN0ZXJT
ZXQgY2FsbGVlU2F2ZSA9IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAg
ICAgICAgICBhbGwuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjYWxsZWVTYXZlLmdldChyZWcpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQocmVnLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIGFsbC5mb3JFYWNoKAotICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJl
ZykgewotICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVlU2F2ZS5nZXQocmVnKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHJlZy5ncHIoKSk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiAqcmVzdWx0OwotfQotCi1jb25zdCBW
ZWN0b3I8RlBSUmVnPiYgZnByc0luUHJpb3JpdHlPcmRlcigpCi17Ci0gICAgc3RhdGljIFZlY3Rv
cjxGUFJSZWc+KiByZXN1bHQ7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAg
c3RkOjpjYWxsX29uY2UoCi0gICAgICAgIG9uY2UsCi0gICAgICAgIFtdIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IG5ldyBWZWN0b3I8RlBSUmVnPigpOwotICAgICAgICAgICAgUmVnaXN0ZXJTZXQg
YWxsID0gUmVnaXN0ZXJTZXQ6OmFsbEZQUnMoKTsKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGNh
bGxlZVNhdmUgPSBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgICAgICAg
ICAgYWxsLmZvckVhY2goCi0gICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghY2FsbGVlU2F2ZS5nZXQocmVnKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC0+YXBwZW5kKHJlZy5mcHIoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICBhbGwuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxlZVNhdmUuZ2V0KHJlZykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZChyZWcuZnByKCkpOwotICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICB9KTsKLSAgICByZXR1cm4gKnJlc3VsdDsKLX0KLQotY29uc3QgVmVjdG9y
PFJlZz4mIHJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpUeXBlIHR5cGUpCi17Ci0gICAgc3RhdGlj
IFZlY3RvcjxSZWc+KiByZXN1bHRbQXJnOjpudW1UeXBlc107Ci0gICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpjYWxsX29uY2UoCi0gICAgICAgIG9uY2UsCi0gICAgICAg
IFtdIHsKLSAgICAgICAgICAgIHJlc3VsdFtBcmc6OkdQXSA9IG5ldyBWZWN0b3I8UmVnPigpOwot
ICAgICAgICAgICAgZm9yIChHUFJSZWcgcmVnIDogZ3Byc0luUHJpb3JpdHlPcmRlcigpKQotICAg
ICAgICAgICAgICAgIHJlc3VsdFtBcmc6OkdQXS0+YXBwZW5kKFJlZyhyZWcpKTsKLSAgICAgICAg
ICAgIHJlc3VsdFtBcmc6OkZQXSA9IG5ldyBWZWN0b3I8UmVnPigpOwotICAgICAgICAgICAgZm9y
IChGUFJSZWcgcmVnIDogZnByc0luUHJpb3JpdHlPcmRlcigpKQotICAgICAgICAgICAgICAgIHJl
c3VsdFtBcmc6OkZQXS0+YXBwZW5kKFJlZyhyZWcpKTsKLSAgICAgICAgfSk7Ci0gICAgcmV0dXJu
ICpyZXN1bHRbdHlwZV07Ci19Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQot
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuaAkocmV2aXNpb24gMjA2OTYzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdpc3RlclByaW9yaXR5LmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoQjNfSklUKQot
Ci0jaW5jbHVkZSAiQWlyQXJnLmgiCi0jaW5jbHVkZSAiRlBSSW5mby5oIgotI2luY2x1ZGUgIkdQ
UkluZm8uaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKLQotY29uc3QgVmVjdG9yPEdQUlJlZz4mIGdwcnNJ
blByaW9yaXR5T3JkZXIoKTsKLWNvbnN0IFZlY3RvcjxGUFJSZWc+JiBmcHJzSW5Qcmlvcml0eU9y
ZGVyKCk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJhbms+IHN0cnVjdCBSZWdpc3RlcnNJblByaW9y
aXR5T3JkZXI7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBSZWdpc3RlcnNJblByaW9yaXR5T3JkZXI8R1BS
SW5mbz4gewotICAgIGNvbnN0IFZlY3RvcjxHUFJSZWc+JiBpblByaW9yaXR5T3JkZXIoKSB7IHJl
dHVybiBncHJzSW5Qcmlvcml0eU9yZGVyKCk7IH0KLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBSZWdp
c3RlcnNJblByaW9yaXR5T3JkZXI8RlBSSW5mbz4gewotICAgIGNvbnN0IFZlY3RvcjxGUFJSZWc+
JiBpblByaW9yaXR5T3JkZXIoKSB7IHJldHVybiBmcHJzSW5Qcmlvcml0eU9yZGVyKCk7IH0KLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJhbms+Ci1jb25zdCBWZWN0b3I8dHlwZW5hbWUgQmFuazo6
UmVnaXN0ZXJUeXBlPiYgcmVnc0luUHJpb3JpdHlPcmRlcigpCi17Ci0gICAgcmV0dXJuIFJlZ2lz
dGVyc0luUHJpb3JpdHlPcmRlcjxCYW5rPjo6aW5Qcmlvcml0eU9yZGVyKCk7Ci19Ci0KLUpTX0VY
UE9SVF9QUklWQVRFIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6
VHlwZSk7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxs
RXZlcnl0aGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkFpckxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgotI2luY2x1ZGUgIkFp
clJlZ2lzdGVyUHJpb3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewpAQCAtMTI5LDcgKzEyOCw3
IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAocm9sZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VXNlOgogICAg
ICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6Q29sZFVzZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoUmVnIHJlZyA6IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcih0
eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3JlLmdldChy
ZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJlZm9yZS5zZXQocmVn
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvc2VuUmVnID0gcmVnOwpAQCAt
MTM5LDcgKzEzOCw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkRl
ZjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OlpEZWY6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3Jk
ZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEFmdGVyLmdl
dChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChy
ZWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5SZWcgPSByZWc7CkBA
IC0xNTMsNyArMTUyLDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5
RGVmOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogcmVnc0luUHJpb3Jp
dHlPcmRlcih0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDog
Y29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCZWZvcmUuc2V0KHJlZyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAJKHJldmlzaW9uIDIwNjk2MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlyR2Vu
ZXJhdGUuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgotI2luY2x1ZGUgIkFpclJlZ2lz
dGVyUHJpb3JpdHkuaCIKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Uu
aCIKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIK
QEAgLTM5Myw3ICszOTIsNyBAQCB2b2lkIHRlc3RTaHVmZmxlQnJvYWRjYXN0QWxsUmVncygpCiAg
ICAgQjM6OlByb2NlZHVyZSBwcm9jOwogICAgIENvZGUmIGNvZGUgPSBwcm9jLmNvZGUoKTsKIAot
ICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQ
KTsKKyAgICBjb25zdCBWZWN0b3I8UmVnPiYgcmVncyA9IGNvZGUucmVnc0luUHJpb3JpdHlPcmRl
cihBcmc6OkdQKTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CiAg
ICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6aW1tKDM1KSwgVG1wKEdQUkluZm86
OnJlZ1QwKSk7CkBAIC04NjAsNyArODU5LDcgQEAgdm9pZCB0ZXN0U2h1ZmZsZVNoaWZ0QWxsUmVn
cygpCiAgICAgQjM6OlByb2NlZHVyZSBwcm9jOwogICAgIENvZGUmIGNvZGUgPSBwcm9jLmNvZGUo
KTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihB
cmc6OkdQKTsKKyAgICBjb25zdCBWZWN0b3I8UmVnPiYgcmVncyA9IGNvZGUucmVnc0luUHJpb3Jp
dHlPcmRlcihBcmc6OkdQKTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2Nr
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ3Muc2l6ZSgpOyArK2kpCkBAIC04
OTYsNyArODk1LDcgQEAgdm9pZCB0ZXN0U2h1ZmZsZVJvdGF0ZUFsbFJlZ3MoKQogICAgIEIzOjpQ
cm9jZWR1cmUgcHJvYzsKICAgICBDb2RlJiBjb2RlID0gcHJvYy5jb2RlKCk7CiAKLSAgICBjb25z
dCBWZWN0b3I8UmVnPiYgcmVncyA9IHJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CisgICAg
Y29uc3QgVmVjdG9yPFJlZz4mIHJlZ3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpH
UCk7CiAKICAgICBCYXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCByZWdzLnNpemUoKTsgKytpKQpAQCAtMTE2OCw3ICsxMTY3LDcg
QEAgdm9pZCB0ZXN0U2h1ZmZsZVNoaWZ0TWVtb3J5QWxsUmVncygpCiAgICAgbWVtb3J5WzBdID0g
MzU7CiAgICAgbWVtb3J5WzFdID0gMzY7CiAKLSAgICBWZWN0b3I8UmVnPiByZWdzID0gcmVnc0lu
UHJpb3JpdHlPcmRlcihBcmc6OkdQKTsKKyAgICBWZWN0b3I8UmVnPiByZWdzID0gY29kZS5yZWdz
SW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOwogICAgIHJlZ3MucmVtb3ZlRmlyc3QoUmVnKEdQUklu
Zm86OnJlZ1QwKSk7CiAKICAgICBCYXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwpA
QCAtMTIxOCw3ICsxMjE3LDcgQEAgdm9pZCB0ZXN0U2h1ZmZsZVNoaWZ0TWVtb3J5QWxsUmVnczY0
KCkKICAgICBtZW1vcnlbMF0gPSAzNTAwMDAwMDAwMDAwMGxsOwogICAgIG1lbW9yeVsxXSA9IDM2
MDAwMDAwMDAwMDAwbGw7CiAKLSAgICBWZWN0b3I8UmVnPiByZWdzID0gcmVnc0luUHJpb3JpdHlP
cmRlcihBcmc6OkdQKTsKKyAgICBWZWN0b3I8UmVnPiByZWdzID0gY29kZS5yZWdzSW5Qcmlvcml0
eU9yZGVyKEFyZzo6R1ApOwogICAgIHJlZ3MucmVtb3ZlRmlyc3QoUmVnKEdQUkluZm86OnJlZ1Qw
KSk7CiAKICAgICBCYXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwpAQCAtMTI3OSw3
ICsxMjc4LDcgQEAgdm9pZCB0ZXN0U2h1ZmZsZVNoaWZ0TWVtb3J5QWxsUmVnc01peGVkVwogICAg
IG1lbW9yeVswXSA9IDM1MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVtb3J5WzFdID0gMzYwMDAwMDAw
MDAwMDBsbDsKIAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFy
Zzo6R1ApOworICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIo
QXJnOjpHUCk7CiAgICAgcmVncy5yZW1vdmVGaXJzdChSZWcoR1BSSW5mbzo6cmVnVDApKTsKIAog
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CkBAIC0xNDY5LDcgKzE0Njgs
NyBAQCB2b2lkIHRlc3RTaHVmZmxlUm90YXRlTWVtb3J5QWxsUmVnczY0KCkKICAgICBtZW1vcnlb
MF0gPSAzNTAwMDAwMDAwMDAwMGxsOwogICAgIG1lbW9yeVsxXSA9IDM2MDAwMDAwMDAwMDAwbGw7
CiAKLSAgICBWZWN0b3I8UmVnPiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsK
KyAgICBWZWN0b3I8UmVnPiByZWdzID0gY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1Ap
OwogICAgIHJlZ3MucmVtb3ZlRmlyc3QoUmVnKEdQUkluZm86OnJlZ1QwKSk7CiAKICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwpAQCAtMTUyMSw3ICsxNTIwLDcgQEAgdm9p
ZCB0ZXN0U2h1ZmZsZVJvdGF0ZU1lbW9yeUFsbFJlZ3NNaXhlZAogICAgIG1lbW9yeVswXSA9IDM1
MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVtb3J5WzFdID0gMzYwMDAwMDAwMDAwMDBsbDsKIAotICAg
IFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOworICAgIFZl
Y3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CiAgICAg
cmVncy5yZW1vdmVGaXJzdChSZWcoR1BSSW5mbzo6cmVnVDApKTsKIAogICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291048</attachid>
            <date>2016-10-09 11:00:27 -0700</date>
            <delta_ts>2016-10-09 12:03:13 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33926</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNjk2MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNyArOTYsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGIzL2Fpci9B
aXJMb3dlck1hY3Jvcy5jcHAKICAgICBiMy9haXIvQWlyT3B0aW1pemVCbG9ja09yZGVyLmNwcAog
ICAgIGIzL2Fpci9BaXJQaGFzZVNjb3BlLmNwcAotICAgIGIzL2Fpci9BaXJSZWdpc3RlclByaW9y
aXR5LmNwcAogICAgIGIzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcAogICAgIGIzL2Fp
ci9BaXJTaW1wbGlmeUNGRy5jcHAKICAgICBiMy9haXIvQWlyU3BlY2lhbC5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtODc1LDggKzg3NSw2IEBACiAJCTBGRUM4NTgxMUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJJbnN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFQzg1NUMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmgg
Ki87IH07CiAJCTBGRUM4NTgzMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTVFMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmNwcCAqLzsgfTsKIAkJMEZFQzg1ODQxQkRB
Q0RDNzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTVGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFz
ZVNjb3BlLmggKi87IH07Ci0JCTBGRUM4NTg1MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3Rl
clByaW9yaXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUM4NTYwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmNwcCAq
LzsgfTsKLQkJMEZFQzg1ODYxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclJlZ2lzdGVyUHJpb3JpdHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTYx
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmggKi87IH07CiAJCTBGRUM4
NTg3MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTYyMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJTcGVjaWFsLmNwcCAqLzsgfTsKIAkJMEZFQzg1ODgxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclNw
ZWNpYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RUM4NTYzMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmggKi87IH07CiAJCTBGRUM4NTg5
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg1NjQxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpclNwaWxsRXZlcnl0aGluZy5jcHAgKi87IH07CkBAIC0zMTUxLDggKzMxNDksNiBAQAog
CQkwRkVDODU1QzFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdElubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlySW5zdElubGluZXMuaDsgcGF0aCA9IGIzL2Fpci9B
aXJJbnN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODU1RTFC
REFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBBaXJQaGFzZVNjb3BlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJQaGFz
ZVNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1NUYxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQWlyUGhhc2VTY29wZS5oOyBwYXRoID0gYjMvYWlyL0FpclBoYXNlU2NvcGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFQzg1NjAxQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clJlZ2lzdGVyUHJpb3JpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQWlyUmVnaXN0ZXJQcmlvcml0eS5jcHA7IHBhdGggPSBiMy9haXIvQWlyUmVnaXN0ZXJQcmlv
cml0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRUM4NTYxMUJEQUNEQzcw
MDgwRkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEFpclJlZ2lzdGVyUHJpb3JpdHkuaDsgcGF0aCA9IGIzL2Fpci9BaXJSZWdpc3Rl
clByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NTYyMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEFpclNwZWNpYWwuY3BwOyBwYXRoID0gYjMvYWlyL0FpclNwZWNpYWwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODU2MzFCREFDREM3MDA4MEZGNzQgLyog
QWlyU3BlY2lhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJTcGVjaWFs
Lmg7IHBhdGggPSBiMy9haXIvQWlyU3BlY2lhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkVDODU2NDFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BpbGxFdmVyeXRoaW5nLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclNwaWxsRXZlcnl0aGluZy5j
cHA7IHBhdGggPSBiMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUwNjMsOCArNTA1OSw2IEBACiAJCQkJMEZCMzg3OEQxQkZCQzQ0RDAw
RTNBQjFFIC8qIEFpck9wdGltaXplQmxvY2tPcmRlci5oICovLAogCQkJCTBGRUM4NTVFMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmNwcCAqLywKIAkJCQkwRkVDODU1RjFCREFDREM3
MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5oICovLAotCQkJCTBGRUM4NTYwMUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmNwcCAqLywKLQkJCQkwRkVDODU2MTFCREFDREM3
MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5oICovLAogCQkJCTBGNDU3MDNBMUJFNDVG
MEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLywKIAkJCQkwRjQ1NzAz
QjFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oICovLAogCQkJCTBG
MzM4REZCMUJFRDUxMjcwMDEzQzg4RiAvKiBBaXJTaW1wbGlmeUNGRy5jcHAgKi8sCkBAIC03MjYw
LDcgKzcyNTQsNiBAQAogCQkJCTBGRUM4NTgwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU4MTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTg0MUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJQaGFzZVNjb3BlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkVDODU4NjFCREFDREM3MDA4MEZG
NzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NTcwM0Qx
QkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUM4NTg4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODU4QTFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BpbGxFdmVyeXRoaW5n
LmggaW4gSGVhZGVycyAqLywKQEAgLTkwMDEsNyArODk5NCw2IEBACiAJCQkJMEZFQzg1N0QxQkRB
Q0RDNzAwODBGRjc0IC8qIEFpckluc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVDODU3RjFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVDODU4MzFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQkwRkVDODU4NTFCREFDREM3MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ1NzAzQzFCRTQ1RjBBMDA2MkE2MjkgLyogQWly
UmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODU4NzFCREFD
REM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODU4
OTFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BpbGxFdmVyeXRoaW5nLmNwcCBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCShyZXZpc2lv
biAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDUsNiArMzA1LDExIEBAIHZvaWQgUHJvY2VkdXJlOjpyZXF1ZXN0
Q2FsbEFyZ0FyZWFTaXplSW4KICAgICBjb2RlKCkucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0
ZXMoc2l6ZSk7CiB9CiAKK3ZvaWQgUHJvY2VkdXJlOjphdm9pZFJlZ2lzdGVyKFJlZyByZWcpCit7
CisgICAgY29kZSgpLmF2b2lkUmVnaXN0ZXIocmVnKTsKK30KKwogdW5zaWduZWQgUHJvY2VkdXJl
OjpmcmFtZVNpemUoKSBjb25zdAogewogICAgIHJldHVybiBjb2RlKCkuZnJhbWVTaXplKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjA2OTYz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMiw4ICsyMTIsMTIgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNhbGxBcmdBcmVh
U2l6ZUluQnl0ZXMoKSBjb25zdDsKICAgICB2b2lkIHJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5
dGVzKHVuc2lnbmVkIHNpemUpOwogCisgICAgLy8gVGhpcyB0ZWxscyB0aGUgcmVnaXN0ZXIgYWxs
b2NhdG9ycyB0byBzdGF5IGF3YXkgZnJvbSB0aGlzIHJlZ2lzdGVyLiBUaGlzIGFsbG93cyB5b3Ug
dG8gcGluCisgICAgLy8gcmVnaXN0ZXJzLgorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXZv
aWRSZWdpc3RlcihSZWcpOworCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgZnJhbWVT
aXplKCkgY29uc3Q7Ci0gICAgY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGNhbGxlZVNhdmVS
ZWdpc3RlcnMoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBSZWdpc3RlckF0
T2Zmc2V0TGlzdCYgY2FsbGVlU2F2ZVJlZ2lzdGVycygpIGNvbnN0OwogCiAgICAgUENUb09yaWdp
bk1hcCYgcGNUb09yaWdpbk1hcCgpIHsgcmV0dXJuIG1fcGNUb09yaWdpbk1hcDsgfQogICAgIFBD
VG9PcmlnaW5NYXAgcmVsZWFzZVBDVG9PcmlnaW5NYXAoKSB7IHJldHVybiBXVEZNb3ZlKG1fcGNU
b09yaWdpbk1hcCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZp
c2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMzMjcsNiArMTMzMjcsNTUgQEAgdm9pZCB0ZXN0UENPcmlnaW5NYXBE
b2VzbnRJbnNlcnROb3BzKCkKICAgICBjb21waWxlKHByb2MpOwogfQogCit2b2lkIHRlc3RBdm9p
ZFJlZ2lzdGVycygpCit7CisgICAgYXV0byBnbyA9IFsmXSAoYm9vbCBhdm9pZCkgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgaWYgKGF2b2lkKSB7CisgICAgICAgICAgICBSZWdp
c3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpLmZvckVhY2goCisgICAgICAgICAgICAgICAg
WyZdIChSZWcgcmVnKSB7CisgICAgICAgICAgICAgICAgICAgIHByb2MuYXZvaWRSZWdpc3Rlcihy
ZWcpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICBWYWx1ZSogYiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUq
IGMgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgIFZhbHVlKiBkID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjpyZWdDUzApOworICAg
ICAgICByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBWb2lk
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4MTIzNCkpKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVm9pZCwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHN0YXRpY19jYXN0PGludHB0cl90PigweDEyMzUpKSwKKyAgICAgICAgICAgIGEs
IGIsIGMpOworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSByb290LT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihkKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIENIRUNLX0VRKHBh
cmFtc1swXS5ncHIoKSwgR1BSSW5mbzo6cmVnQ1MwKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOworICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlKHByb2MpOworICAgICAgICBib29sIHVzZXNDU1JzID0gZmFs
c2U7CisgICAgICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7
CisgICAgICAgICAgICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6ICpibG9jaykgeworICAgICAgICAg
ICAgICAgIGluc3QuZm9yRWFjaFRtcEZhc3QoCisgICAgICAgICAgICAgICAgICAgIFsmXSAoQWly
OjpUbXAgdG1wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wLmlzUmVnKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlc0NTUnMgfD0gUmVnaXN0ZXJTZXQ6OmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKS5nZXQodG1wLnJlZygpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0
T2Zmc2V0JiByZWdBdE9mZnNldCA6IHByb2MuY2FsbGVlU2F2ZVJlZ2lzdGVycygpKQorICAgICAg
ICAgICAgdXNlc0NTUnMgfD0gUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKS5nZXQo
cmVnQXRPZmZzZXQucmVnKCkpOworICAgICAgICBDSEVDS19FUSh1c2VzQ1NScywgIWF2b2lkKTsK
KyAgICB9OworICAgIAorICAgIGdvKHRydWUpOworICAgIGdvKGZhbHNlKTsKK30KKwogLy8gTWFr
ZSBzdXJlIHRoZSBjb21waWxlciBkb2VzIG5vdCB0cnkgdG8gb3B0aW1pemUgYW55dGhpbmcgb3V0
LgogTkVWRVJfSU5MSU5FIGRvdWJsZSB6ZXJvKCkKIHsKQEAgLTE0Nzc0LDYgKzE0ODIzLDcgQEAg
dm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0VHJhcHBpbmdTdG9yZUVs
aW1pbmF0aW9uKCkpOwogICAgIFJVTih0ZXN0TW92ZUNvbnN0YW50cygpKTsKICAgICBSVU4odGVz
dFBDT3JpZ2luTWFwRG9lc250SW5zZXJ0Tm9wcygpKTsKKyAgICBSVU4odGVzdEF2b2lkUmVnaXN0
ZXJzKCkpOwogICAgIAogICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzYWdlKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAJKHJldmlzaW9u
IDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCw0NCBAQCBDb2RlOjpDb2RlKFByb2NlZHVyZSYgcHJv
YykKICAgICA6IG1fcHJvYyhwcm9jKQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikK
IHsKKyAgICAvLyBDb21lIHVwIHdpdGggaW5pdGlhbCBvcmRlcmluZ3Mgb2YgcmVnaXN0ZXJzLiBU
aGUgdXNlciBtYXkgcmVwbGFjZSB0aGlzIHdpdGggc29tZXRoaW5nIGVsc2UuCisgICAgQXJnOjpm
b3JFYWNoVHlwZSgKKyAgICAgICAgWyZdIChBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAg
VmVjdG9yPFJlZz4gcmVzdWx0OworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgYWxsID0gdHlwZSA9
PSBBcmc6OkdQID8gUmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKSA6IFJlZ2lzdGVyU2V0OjphbGxGUFJz
KCk7CisgICAgICAgICAgICBhbGwuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMo
KSk7CisgICAgICAgICAgICBhbGwuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
ZVJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmUgPSBSZWdp
c3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAgICAgICAgYWxsLmZvckVhY2go
CisgICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghY2FsbGVlU2F2ZS5nZXQocmVnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQocmVnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFsbC5mb3JFYWNo
KAorICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FsbGVlU2F2ZS5nZXQocmVnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQocmVnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNldFJlZ3NJblBy
aW9yaXR5T3JkZXIodHlwZSwgcmVzdWx0KTsKKyAgICAgICAgfSk7CiB9CiAKIENvZGU6On5Db2Rl
KCkKIHsKIH0KIAordm9pZCBDb2RlOjpzZXRSZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6VHlwZSB0
eXBlLCBjb25zdCBWZWN0b3I8UmVnPiYgcmVncykKK3sKKyAgICByZWdzSW5Qcmlvcml0eU9yZGVy
SW1wbCh0eXBlKSA9IHJlZ3M7Cit9CisKK3ZvaWQgQ29kZTo6YXZvaWRSZWdpc3RlcihSZWcgcmVn
KQoreworICAgIFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlckltcGwoQXJn
KFRtcChyZWcpKS50eXBlKCkpOworICAgIHJlZ3MucmVtb3ZlRmlyc3QocmVnKTsKKyAgICBBU1NF
UlQoIXJlZ3MuY29udGFpbnMocmVnKSk7Cit9CisKIEJhc2ljQmxvY2sqIENvZGU6OmFkZEJsb2Nr
KGRvdWJsZSBmcmVxdWVuY3kpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxvY2s+IGJs
b2NrKG5ldyBCYXNpY0Jsb2NrKG1fYmxvY2tzLnNpemUoKSwgZnJlcXVlbmN5KSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAkocmV2aXNpb24gMjA2OTYzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDYgKzYzLDIwIEBAIHB1YmxpYzoKICAgICB+Q29kZSgpOwogCiAgICAgUHJvY2VkdXJlJiBw
cm9jKCkgeyByZXR1cm4gbV9wcm9jOyB9CisgICAgCisgICAgY29uc3QgVmVjdG9yPFJlZz4mIHJl
Z3NJblByaW9yaXR5T3JkZXIoQXJnOjpUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBBcmc6OkdQOgorICAgICAgICAgICAgcmV0dXJu
IG1fZ3BSZWdzSW5Qcmlvcml0eU9yZGVyOworICAgICAgICBjYXNlIEFyZzo6RlA6CisgICAgICAg
ICAgICByZXR1cm4gbV9mcFJlZ3NJblByaW9yaXR5T3JkZXI7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0UmVnc0luUHJp
b3JpdHlPcmRlcihBcmc6OlR5cGUsIGNvbnN0IFZlY3RvcjxSZWc+Jik7CisgICAgdm9pZCBhdm9p
ZFJlZ2lzdGVyKFJlZyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBCYXNpY0Jsb2NrKiBhZGRC
bG9jayhkb3VibGUgZnJlcXVlbmN5ID0gMSk7CiAKQEAgLTI1MCw3ICsyNjQsMjAgQEAgcHJpdmF0
ZToKICAgICAKICAgICBDb2RlKFByb2NlZHVyZSYpOwogCisgICAgVmVjdG9yPFJlZz4mIHJlZ3NJ
blByaW9yaXR5T3JkZXJJbXBsKEFyZzo6VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgICAgIGNhc2UgQXJnOjpHUDoKKyAgICAgICAgICAgIHJldHVybiBtX2dw
UmVnc0luUHJpb3JpdHlPcmRlcjsKKyAgICAgICAgY2FzZSBBcmc6OkZQOgorICAgICAgICAgICAg
cmV0dXJuIG1fZnBSZWdzSW5Qcmlvcml0eU9yZGVyOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwogICAgIFByb2NlZHVyZSYgbV9wcm9jOyAvLyBTb21l
IG1ldGEtZGF0YSwgbGlrZSBieXByb2R1Y3RzLCBpcyBzdG9yZWQgaW4gdGhlIFByb2NlZHVyZS4K
KyAgICBWZWN0b3I8UmVnPiBtX2dwUmVnc0luUHJpb3JpdHlPcmRlcjsKKyAgICBWZWN0b3I8UmVn
PiBtX2ZwUmVnc0luUHJpb3JpdHlPcmRlcjsKICAgICBTcGFyc2VDb2xsZWN0aW9uPFN0YWNrU2xv
dD4gbV9zdGFja1Nsb3RzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNCbG9jaz4+
IG1fYmxvY2tzOwogICAgIFNwYXJzZUNvbGxlY3Rpb248U3BlY2lhbD4gbV9zcGVjaWFsczsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3Bw
CShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVt
aXRTaHVmZmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5B
QkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5s
aW5lcy5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHkuaCIKICNpbmNsdWRlIDx3dGYv
R3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIApAQCAtNDAs
OCArNDAsOCBAQCBuYW1lc3BhY2UgewogYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+Ci1UbXAgZmluZFBvc3NpYmxlU2NyYXRjaChBcmc6OlR5cGUgdHlw
ZSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgewotICAgIGZvciAoUmVnIHJlZyA6IHJlZ3NJblBy
aW9yaXR5T3JkZXIodHlwZSkpIHsKK1RtcCBmaW5kUG9zc2libGVTY3JhdGNoKENvZGUmIGNvZGUs
IEFyZzo6VHlwZSB0eXBlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSB7CisgICAgZm9yIChSZWcg
cmVnIDogY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CiAgICAgICAgIFRtcCB0bXAo
cmVnKTsKICAgICAgICAgaWYgKGZ1bmN0b3IodG1wKSkKICAgICAgICAgICAgIHJldHVybiB0bXA7
CkBAIC00OSw5ICs0OSw5IEBAIFRtcCBmaW5kUG9zc2libGVTY3JhdGNoKEFyZzo6VHlwZSB0eXBl
LCAKICAgICByZXR1cm4gVG1wKCk7CiB9CiAKLVRtcCBmaW5kUG9zc2libGVTY3JhdGNoKEFyZzo6
VHlwZSB0eXBlLCBjb25zdCBBcmcmIGFyZzEsIGNvbnN0IEFyZyYgYXJnMikgeworVG1wIGZpbmRQ
b3NzaWJsZVNjcmF0Y2goQ29kZSYgY29kZSwgQXJnOjpUeXBlIHR5cGUsIGNvbnN0IEFyZyYgYXJn
MSwgY29uc3QgQXJnJiBhcmcyKSB7CiAgICAgcmV0dXJuIGZpbmRQb3NzaWJsZVNjcmF0Y2goCi0g
ICAgICAgIHR5cGUsCisgICAgICAgIGNvZGUsIHR5cGUsCiAgICAgICAgIFsmXSAoVG1wIHRtcCkg
LT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gIWFyZzEudXNlc1RtcCh0bXApICYmICFhcmcy
LnVzZXNUbXAodG1wKTsKICAgICAgICAgfSk7CkBAIC03OSw3ICs3OSw4IEBAIEluc3QgY3JlYXRl
U2h1ZmZsZShWYWx1ZSogb3JpZ2luLCBjb25zdCAKIH0KIAogVmVjdG9yPEluc3Q+IGVtaXRTaHVm
ZmxlKAotICAgIFZlY3RvcjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0ZDo6YXJyYXk8QXJnLCAyPiBz
Y3JhdGNoZXMsIEFyZzo6VHlwZSB0eXBlLCBWYWx1ZSogb3JpZ2luKQorICAgIENvZGUmIGNvZGUs
IFZlY3RvcjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0ZDo6YXJyYXk8QXJnLCAyPiBzY3JhdGNoZXMs
IEFyZzo6VHlwZSB0eXBlLAorICAgIFZhbHVlKiBvcmlnaW4pCiB7CiAgICAgaWYgKHZlcmJvc2Up
IHsKICAgICAgICAgZGF0YUxvZygKQEAgLTMwMyw3ICszMDQsNyBAQCBWZWN0b3I8SW5zdD4gZW1p
dFNodWZmbGUoCiAgICAgICAgIAogICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG1vdmUsIHBhaXIu
c3JjKCkua2luZCgpLCBwYWlyLmRzdCgpLmtpbmQoKSkpIHsKICAgICAgICAgICAgIFRtcCBzY3Jh
dGNoID0KLSAgICAgICAgICAgICAgICBnZXRTY3JhdGNoKHNjcmF0Y2hJbmRleCwgZmluZFBvc3Np
YmxlU2NyYXRjaCh0eXBlLCBwYWlyLnNyYygpLCBwYWlyLmRzdCgpKSk7CisgICAgICAgICAgICAg
ICAgZ2V0U2NyYXRjaChzY3JhdGNoSW5kZXgsIGZpbmRQb3NzaWJsZVNjcmF0Y2goY29kZSwgdHlw
ZSwgcGFpci5zcmMoKSwgcGFpci5kc3QoKSkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c2NyYXRjaCk7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0obW92ZSwgcGFpci5zcmMoKS5r
aW5kKCksIEFyZzo6VG1wKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEluc3QobW92
ZUZvcldpZHRoKHBhaXIud2lkdGgoKSksIG9yaWdpbiwgcGFpci5zcmMoKSwgc2NyYXRjaCkpOwpA
QCAtNDM1LDcgKzQzNiw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAg
ICAgICAgICAgLy8gTW92aW5nIGRhdGEgYmV0d2VlbiB0d28gc3BpbGxzIGlzIHJhcmUuIFRvIGdl
dCBoZXJlIGEgbG90IG9mIHJhcmUgc3R1ZmYgaGFzIHRvCiAgICAgICAgICAgICAgICAgICAgIC8v
IGFsbCBoYXBwZW4gYXQgb25jZS4KICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIFRtcCBzY3JhdGNoID0gZ2V0U2NyYXRjaCgwLCBmaW5kUG9zc2libGVTY3JhdGNoKHR5
cGUsIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICAgICAgICAgIFRtcCBzY3JhdGNoID0gZ2V0
U2NyYXRjaCgwLCBmaW5kUG9zc2libGVTY3JhdGNoKGNvZGUsIHR5cGUsIGxlZnQsIHJpZ2h0KSk7
CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjcmF0Y2gpOwogICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKEluc3QobW92ZUZvcldpZHRoKHN3YXBXaWR0aCksIG9y
aWdpbiwgbGVmdCwgc2NyYXRjaCkpOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KEluc3Qoc3dhcCwgb3JpZ2luLCBzY3JhdGNoLCByaWdodCkpOwpAQCAtNDY5LDcgKzQ3MCw3IEBA
IFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIC8vIGF2YWlsYWJsZSByZWdp
c3RlciBmaWxlLgogCiAgICAgICAgICAgICBUbXAgc2NyYXRjaCA9IGZpbmRQb3NzaWJsZVNjcmF0
Y2goCi0gICAgICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgICAgICAgICBjb2RlLCB0eXBlLAog
ICAgICAgICAgICAgICAgIFsmXSAoVG1wIHRtcCkgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAg
ICAgIGZvciAoU2h1ZmZsZVBhaXIgcGFpciA6IHJvdGF0ZS5sb29wKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocGFpci5zcmMoKS51c2VzVG1wKHRtcCkpCkBAIC01MTIsNyArNTEzLDcg
QEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogfQogCiBWZWN0b3I8SW5zdD4gZW1pdFNodWZm
bGUoCi0gICAgY29uc3QgVmVjdG9yPFNodWZmbGVQYWlyPiYgcGFpcnMsCisgICAgQ29kZSYgY29k
ZSwgY29uc3QgVmVjdG9yPFNodWZmbGVQYWlyPiYgcGFpcnMsCiAgICAgY29uc3Qgc3RkOjphcnJh
eTxBcmcsIDI+JiBncFNjcmF0Y2gsIGNvbnN0IHN0ZDo6YXJyYXk8QXJnLCAyPiYgZnBTY3JhdGNo
LAogICAgIFZhbHVlKiBvcmlnaW4pCiB7CkBAIC01MzEsOCArNTMyLDggQEAgVmVjdG9yPEluc3Q+
IGVtaXRTaHVmZmxlKAogICAgIH0KIAogICAgIFZlY3RvcjxJbnN0PiByZXN1bHQ7Ci0gICAgcmVz
dWx0LmFwcGVuZFZlY3RvcihlbWl0U2h1ZmZsZShncFBhaXJzLCBncFNjcmF0Y2gsIEFyZzo6R1As
IG9yaWdpbikpOwotICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IoZW1pdFNodWZmbGUoZnBQYWlycywg
ZnBTY3JhdGNoLCBBcmc6OkZQLCBvcmlnaW4pKTsKKyAgICByZXN1bHQuYXBwZW5kVmVjdG9yKGVt
aXRTaHVmZmxlKGNvZGUsIGdwUGFpcnMsIGdwU2NyYXRjaCwgQXJnOjpHUCwgb3JpZ2luKSk7Cisg
ICAgcmVzdWx0LmFwcGVuZFZlY3RvcihlbWl0U2h1ZmZsZShjb2RlLCBmcFBhaXJzLCBmcFNjcmF0
Y2gsIEFyZzo6RlAsIG9yaWdpbikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmgJKHJldmlzaW9u
IDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBWYWx1ZTsKIAogbmFtZXNw
YWNlIEFpciB7CiAKK2NsYXNzIENvZGU7CisKIGNsYXNzIFNodWZmbGVQYWlyIHsKIHB1YmxpYzoK
ICAgICBTaHVmZmxlUGFpcigpCkBAIC0xMDAsMTIgKzEwMiwxMiBAQCBJbnN0IGNyZWF0ZVNodWZm
bGUoVmFsdWUqIG9yaWdpbiwgY29uc3QgCiAvLyBOT1RFOiBVc2UgdGhpcyBtZXRob2QgKGFuZCBp
dHMgZnJpZW5kIGJlbG93KSB0byBlbWl0IHNodWZmbGVzIGFmdGVyIHJlZ2lzdGVyIGFsbG9jYXRp
b24uIEJlZm9yZQogLy8gcmVnaXN0ZXIgYWxsb2NhdGlvbiBpdCBpcyBtdWNoIGJldHRlciB0byBz
aW1wbHkgdXNlIHRoZSBTaHVmZmxlIGluc3RydWN0aW9uLgogVmVjdG9yPEluc3Q+IGVtaXRTaHVm
ZmxlKAotICAgIFZlY3RvcjxTaHVmZmxlUGFpcj4sIHN0ZDo6YXJyYXk8QXJnLCAyPiBzY3JhdGNo
LCBBcmc6OlR5cGUsIFZhbHVlKiBvcmlnaW4pOworICAgIENvZGUmIGNvZGUsIFZlY3RvcjxTaHVm
ZmxlUGFpcj4sIHN0ZDo6YXJyYXk8QXJnLCAyPiBzY3JhdGNoLCBBcmc6OlR5cGUsIFZhbHVlKiBv
cmlnaW4pOwogCiAvLyBQZXJmb3JtIGEgc2h1ZmZsZSB0aGF0IGludm9sdmVzIGFueSBudW1iZXIg
b2YgdHlwZXMuIFBhc3Mgc2NyYXRjaCByZWdpc3RlcnMgb3IgbWVtb3J5IGxvY2F0aW9ucwogLy8g
Zm9yIGVhY2ggdHlwZSBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIGFib3ZlLgogVmVjdG9yPEluc3Q+
IGVtaXRTaHVmZmxlKAotICAgIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mLAorICAgIENvZGUm
IGNvZGUsIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mLAogICAgIGNvbnN0IHN0ZDo6YXJyYXk8
QXJnLCAyPiYgZ3BTY3JhdGNoLCBjb25zdCBzdGQ6OmFycmF5PEFyZywgMj4mIGZwU2NyYXRjaCwK
ICAgICBWYWx1ZSogb3JpZ2luKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJ
KHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRl
cmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJMaXZlbmVzcy5o
IgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKLSNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9y
aXR5LmgiCiAjaW5jbHVkZSAiQWlyVG1wSW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclRtcFdpZHRo
LmgiCiAjaW5jbHVkZSAiQWlyVXNlQ291bnRzLmgiCkBAIC03MjcsNyArNzI2LDcgQEAgdGVtcGxh
dGU8QXJnOjpUeXBlIHR5cGU+CiBjbGFzcyBDb2xvcmluZ0FsbG9jYXRvciA6IHB1YmxpYyBBYnN0
cmFjdENvbG9yaW5nQWxsb2NhdG9yPHVuc2lnbmVkPiB7CiBwdWJsaWM6CiAgICAgQ29sb3JpbmdB
bGxvY2F0b3IoQ29kZSYgY29kZSwgVG1wV2lkdGgmIHRtcFdpZHRoLCBjb25zdCBVc2VDb3VudHM8
VG1wPiYgdXNlQ291bnRzLCBjb25zdCBIYXNoU2V0PHVuc2lnbmVkPiYgdW5zcGlsbGFibGVUbXAp
Ci0gICAgICAgIDogQWJzdHJhY3RDb2xvcmluZ0FsbG9jYXRvcjx1bnNpZ25lZD4ocmVnc0luUHJp
b3JpdHlPcmRlcih0eXBlKSwgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46Omxhc3RNYWNoaW5lUmVn
aXN0ZXJJbmRleCgpLCB0bXBBcnJheVNpemUoY29kZSksIHVuc3BpbGxhYmxlVG1wKQorICAgICAg
ICA6IEFic3RyYWN0Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+KGNvZGUucmVnc0luUHJpb3Jp
dHlPcmRlcih0eXBlKSwgQWJzb2x1dGVUbXBNYXBwZXI8dHlwZT46Omxhc3RNYWNoaW5lUmVnaXN0
ZXJJbmRleCgpLCB0bXBBcnJheVNpemUoY29kZSksIHVuc3BpbGxhYmxlVG1wKQogICAgICAgICAs
IG1fY29kZShjb2RlKQogICAgICAgICAsIG1fdG1wV2lkdGgodG1wV2lkdGgpCiAgICAgICAgICwg
bV91c2VDb3VudHModXNlQ291bnRzKQpAQCAtODM5LDcgKzgzOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFyZWcpIHsKICAgICAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBUbXBzIHRo
YXQgaW50ZXJmZXJlLiBBIFRtcCB0aGF0IG5ldmVyIGludGVyZmVyZSB3aXRoIGFueXRoaW5nCiAg
ICAgICAgICAgICAvLyBjYW4gdGFrZSBhbnkgcmVnaXN0ZXIuCi0gICAgICAgICAgICByZWcgPSBy
ZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLmZpcnN0KCk7CisgICAgICAgICAgICByZWcgPSBtX2Nv
ZGUucmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKS5maXJzdCgpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZWc7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAkocmV2aXNpb24gMjA2OTYzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiQWlySW5zdElubGlu
ZXMuaCIKICNpbmNsdWRlICJBaXJMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUu
aCIKLSNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZh
bHVlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJSZWdpc3RlclNl
dC5oIgpAQCAtODYsNyArODUsNyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2Rl
KQogICAgICAgICBzdGQ6OmFycmF5PEFyZywgMj4gcmVzdWx0OwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7CiAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7
Ci0gICAgICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7
CisgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIodHlw
ZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXNldC5nZXQocmVnKSkgewogICAgICAgICAgICAg
ICAgICAgICByZXN1bHRbaV0gPSBUbXAocmVnKTsKICAgICAgICAgICAgICAgICAgICAgc2V0LnNl
dChyZWcpOwpAQCAtMTM0LDcgKzEzMyw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUm
IGNvZGUpCiAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxBcmcsIDI+IGdwU2NyYXRjaCA9IGdl
dFNjcmF0Y2hlcyhzZXQsIEFyZzo6R1ApOwogICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8QXJn
LCAyPiBmcFNjcmF0Y2ggPSBnZXRTY3JhdGNoZXMoc2V0LCBBcmc6OkZQKTsKICAgICAgICAgICAg
ICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0SW5zdHMoCi0gICAgICAgICAgICAgICAgICAgIGluc3RJ
bmRleCwgZW1pdFNodWZmbGUocGFpcnMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBpbnN0Lm9yaWdp
bikpOworICAgICAgICAgICAgICAgICAgICBpbnN0SW5kZXgsIGVtaXRTaHVmZmxlKGNvZGUsIHBh
aXJzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgaW5zdC5vcmlnaW4pKTsKICAgICAgICAgICAgICAg
ICBpbnN0ID0gSW5zdCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpA
QCAtMTkzLDcgKzE5Miw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlByZS1jYWxsIHBhaXJzIGZvciAiLCBpbnN0LCAi
OiAiLCBsaXN0RHVtcChwYWlycyksICJcbiIpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0cygKLSAgICAgICAgICAgICAgICAgICAgaW5z
dEluZGV4LCBlbWl0U2h1ZmZsZShwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qub3Jp
Z2luKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RJbmRleCwgZW1pdFNodWZmbGUoY29kZSwg
cGFpcnMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBpbnN0Lm9yaWdpbikpOwogCiAgICAgICAgICAg
ICAgICAgaW5zdCA9IGJ1aWxkQ0NhbGwoY29kZSwgaW5zdC5vcmlnaW4sIGRlc3RpbmF0aW9ucyk7
CiAgICAgICAgICAgICAgICAgaWYgKG9sZEtpbmQudHJhcHMpCkBAIC0yMjQsNyArMjIzLDcgQEAg
dm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBmcFNj
cmF0Y2ggPSBnZXRTY3JhdGNoZXMobGl2ZVJlZ3MsIEFyZzo6RlApOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0cygKLSAgICAgICAgICAg
ICAgICAgICAgaW5zdEluZGV4ICsgMSwgZW1pdFNodWZmbGUocGFpcnMsIGdwU2NyYXRjaCwgZnBT
Y3JhdGNoLCBpbnN0Lm9yaWdpbikpOworICAgICAgICAgICAgICAgICAgICBpbnN0SW5kZXggKyAx
LCBlbWl0U2h1ZmZsZShjb2RlLCBwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qub3Jp
Z2luKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUmVnaXN0ZXJQcmlvcml0eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdpc3RlclByaW9yaXR5
LmNwcAkocmV2aXNpb24gMjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJSZWdpc3RlclByaW9yaXR5LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCi0KLSNpZiBFTkFCTEUo
QjNfSklUKQotCi0jaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1jb25zdCBWZWN0b3I8R1BSUmVnPiYgZ3By
c0luUHJpb3JpdHlPcmRlcigpCi17Ci0gICAgc3RhdGljIFZlY3RvcjxHUFJSZWc+KiByZXN1bHQ7
Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpjYWxsX29uY2UoCi0g
ICAgICAgIG9uY2UsCi0gICAgICAgIFtdIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBWZWN0
b3I8R1BSUmVnPigpOwotICAgICAgICAgICAgUmVnaXN0ZXJTZXQgYWxsID0gUmVnaXN0ZXJTZXQ6
OmFsbEdQUnMoKTsKLSAgICAgICAgICAgIGFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1Jl
Z2lzdGVycygpKTsKLSAgICAgICAgICAgIGFsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZXNlcnZl
ZEhhcmR3YXJlUmVnaXN0ZXJzKCkpOwotICAgICAgICAgICAgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2
ZSA9IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBhbGwu
Zm9yRWFjaCgKLSAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFjYWxsZWVTYXZlLmdldChyZWcpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LT5hcHBlbmQocmVnLmdwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIGFsbC5mb3JFYWNoKAotICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoY2FsbGVlU2F2ZS5nZXQocmVnKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC0+YXBwZW5kKHJlZy5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotICAgIHJldHVybiAqcmVzdWx0OwotfQotCi1jb25zdCBWZWN0b3I8RlBSUmVn
PiYgZnByc0luUHJpb3JpdHlPcmRlcigpCi17Ci0gICAgc3RhdGljIFZlY3RvcjxGUFJSZWc+KiBy
ZXN1bHQ7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7Ci0gICAgc3RkOjpjYWxsX29u
Y2UoCi0gICAgICAgIG9uY2UsCi0gICAgICAgIFtdIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IG5l
dyBWZWN0b3I8RlBSUmVnPigpOwotICAgICAgICAgICAgUmVnaXN0ZXJTZXQgYWxsID0gUmVnaXN0
ZXJTZXQ6OmFsbEZQUnMoKTsKLSAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmUgPSBS
ZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgICAgICAgICAgYWxsLmZvckVh
Y2goCi0gICAgICAgICAgICAgICAgWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghY2FsbGVlU2F2ZS5nZXQocmVnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC0+YXBwZW5kKHJlZy5mcHIoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBh
bGwuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGNhbGxlZVNhdmUuZ2V0KHJlZykpCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQtPmFwcGVuZChyZWcuZnByKCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICB9KTsKLSAgICByZXR1cm4gKnJlc3VsdDsKLX0KLQotY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3NJ
blByaW9yaXR5T3JkZXIoQXJnOjpUeXBlIHR5cGUpCi17Ci0gICAgc3RhdGljIFZlY3RvcjxSZWc+
KiByZXN1bHRbQXJnOjpudW1UeXBlc107Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7
Ci0gICAgc3RkOjpjYWxsX29uY2UoCi0gICAgICAgIG9uY2UsCi0gICAgICAgIFtdIHsKLSAgICAg
ICAgICAgIHJlc3VsdFtBcmc6OkdQXSA9IG5ldyBWZWN0b3I8UmVnPigpOwotICAgICAgICAgICAg
Zm9yIChHUFJSZWcgcmVnIDogZ3Byc0luUHJpb3JpdHlPcmRlcigpKQotICAgICAgICAgICAgICAg
IHJlc3VsdFtBcmc6OkdQXS0+YXBwZW5kKFJlZyhyZWcpKTsKLSAgICAgICAgICAgIHJlc3VsdFtB
cmc6OkZQXSA9IG5ldyBWZWN0b3I8UmVnPigpOwotICAgICAgICAgICAgZm9yIChGUFJSZWcgcmVn
IDogZnByc0luUHJpb3JpdHlPcmRlcigpKQotICAgICAgICAgICAgICAgIHJlc3VsdFtBcmc6OkZQ
XS0+YXBwZW5kKFJlZyhyZWcpKTsKLSAgICAgICAgfSk7Ci0gICAgcmV0dXJuICpyZXN1bHRbdHlw
ZV07Ci19Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlZ2lz
dGVyUHJpb3JpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclJlZ2lzdGVyUHJpb3JpdHkuaAkocmV2aXNpb24gMjA2OTYzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdpc3RlclByaW9yaXR5LmgJKG5vbmV4aXN0ZW50KQpAQCAt
MSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSAi
QWlyQXJnLmgiCi0jaW5jbHVkZSAiRlBSSW5mby5oIgotI2luY2x1ZGUgIkdQUkluZm8uaCIKLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKLQotY29uc3QgVmVjdG9yPEdQUlJlZz4mIGdwcnNJblByaW9yaXR5T3Jk
ZXIoKTsKLWNvbnN0IFZlY3RvcjxGUFJSZWc+JiBmcHJzSW5Qcmlvcml0eU9yZGVyKCk7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIEJhbms+IHN0cnVjdCBSZWdpc3RlcnNJblByaW9yaXR5T3JkZXI7Ci10
ZW1wbGF0ZTw+IHN0cnVjdCBSZWdpc3RlcnNJblByaW9yaXR5T3JkZXI8R1BSSW5mbz4gewotICAg
IGNvbnN0IFZlY3RvcjxHUFJSZWc+JiBpblByaW9yaXR5T3JkZXIoKSB7IHJldHVybiBncHJzSW5Q
cmlvcml0eU9yZGVyKCk7IH0KLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBSZWdpc3RlcnNJblByaW9y
aXR5T3JkZXI8RlBSSW5mbz4gewotICAgIGNvbnN0IFZlY3RvcjxGUFJSZWc+JiBpblByaW9yaXR5
T3JkZXIoKSB7IHJldHVybiBmcHJzSW5Qcmlvcml0eU9yZGVyKCk7IH0KLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIEJhbms+Ci1jb25zdCBWZWN0b3I8dHlwZW5hbWUgQmFuazo6UmVnaXN0ZXJUeXBl
PiYgcmVnc0luUHJpb3JpdHlPcmRlcigpCi17Ci0gICAgcmV0dXJuIFJlZ2lzdGVyc0luUHJpb3Jp
dHlPcmRlcjxCYW5rPjo6aW5Qcmlvcml0eU9yZGVyKCk7Ci19Ci0KLUpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6VHlwZSk7Ci0KLX0g
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKLQotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2
ZXJ5dGhpbmcuY3BwCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDYgQEAKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpckxpdmVuZXNz
LmgiCiAjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJp
b3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewpAQCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQgc3Bp
bGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocm9s
ZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6VXNlOgogICAgICAgICAgICAgICAg
ICAgICBjYXNlIEFyZzo6Q29sZFVzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVn
IHJlZyA6IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QmVmb3JlLmdldChyZWcpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJlZm9yZS5zZXQocmVnKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hvc2VuUmVnID0gcmVnOwpAQCAtMTM5LDcgKzEzOCw3
IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkRlZjoKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBBcmc6OlpEZWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KFJlZyByZWcgOiByZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEFmdGVyLmdldChyZWcpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5SZWcgPSByZWc7CkBAIC0xNTMsNyArMTUy
LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBBcmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6
U2NyYXRjaDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgotICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogcmVnc0luUHJpb3JpdHlPcmRlcih0eXBl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Q
cmlvcml0eU9yZGVyKHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFz
ZXRCZWZvcmUuZ2V0KHJlZykgJiYgIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRCZWZvcmUuc2V0KHJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvdGVzdGFpci5jcHAJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlyR2VuZXJhdGUuaCIKICNp
bmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHku
aCIKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRl
ICJCM0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKQEAgLTM5Myw3ICsz
OTIsNyBAQCB2b2lkIHRlc3RTaHVmZmxlQnJvYWRjYXN0QWxsUmVncygpCiAgICAgQjM6OlByb2Nl
ZHVyZSBwcm9jOwogICAgIENvZGUmIGNvZGUgPSBwcm9jLmNvZGUoKTsKIAotICAgIGNvbnN0IFZl
Y3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsKKyAgICBjb25z
dCBWZWN0b3I8UmVnPiYgcmVncyA9IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsK
IAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CiAgICAgcm9vdC0+YXBw
ZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6aW1tKDM1KSwgVG1wKEdQUkluZm86OnJlZ1QwKSk7CkBA
IC04NjAsNyArODU5LDcgQEAgdm9pZCB0ZXN0U2h1ZmZsZVNoaWZ0QWxsUmVncygpCiAgICAgQjM6
OlByb2NlZHVyZSBwcm9jOwogICAgIENvZGUmIGNvZGUgPSBwcm9jLmNvZGUoKTsKIAotICAgIGNv
bnN0IFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsKKyAg
ICBjb25zdCBWZWN0b3I8UmVnPiYgcmVncyA9IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihBcmc6
OkdQKTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ3Muc2l6ZSgpOyArK2kpCkBAIC04OTYsNyArODk1LDcg
QEAgdm9pZCB0ZXN0U2h1ZmZsZVJvdGF0ZUFsbFJlZ3MoKQogICAgIEIzOjpQcm9jZWR1cmUgcHJv
YzsKICAgICBDb2RlJiBjb2RlID0gcHJvYy5jb2RlKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8UmVn
PiYgcmVncyA9IHJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CisgICAgY29uc3QgVmVjdG9y
PFJlZz4mIHJlZ3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CiAKICAgICBC
YXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCByZWdzLnNpemUoKTsgKytpKQpAQCAtMTE2OCw3ICsxMTY3LDcgQEAgdm9pZCB0ZXN0
U2h1ZmZsZVNoaWZ0TWVtb3J5QWxsUmVncygpCiAgICAgbWVtb3J5WzBdID0gMzU7CiAgICAgbWVt
b3J5WzFdID0gMzY7CiAKLSAgICBWZWN0b3I8UmVnPiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRl
cihBcmc6OkdQKTsKKyAgICBWZWN0b3I8UmVnPiByZWdzID0gY29kZS5yZWdzSW5Qcmlvcml0eU9y
ZGVyKEFyZzo6R1ApOwogICAgIHJlZ3MucmVtb3ZlRmlyc3QoUmVnKEdQUkluZm86OnJlZ1QwKSk7
CiAKICAgICBCYXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwpAQCAtMTIxOCw3ICsx
MjE3LDcgQEAgdm9pZCB0ZXN0U2h1ZmZsZVNoaWZ0TWVtb3J5QWxsUmVnczY0KCkKICAgICBtZW1v
cnlbMF0gPSAzNTAwMDAwMDAwMDAwMGxsOwogICAgIG1lbW9yeVsxXSA9IDM2MDAwMDAwMDAwMDAw
bGw7CiAKLSAgICBWZWN0b3I8UmVnPiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQ
KTsKKyAgICBWZWN0b3I8UmVnPiByZWdzID0gY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6
R1ApOwogICAgIHJlZ3MucmVtb3ZlRmlyc3QoUmVnKEdQUkluZm86OnJlZ1QwKSk7CiAKICAgICBC
YXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwpAQCAtMTI3OSw3ICsxMjc4LDcgQEAg
dm9pZCB0ZXN0U2h1ZmZsZVNoaWZ0TWVtb3J5QWxsUmVnc01peGVkVwogICAgIG1lbW9yeVswXSA9
IDM1MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVtb3J5WzFdID0gMzYwMDAwMDAwMDAwMDBsbDsKIAot
ICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOworICAg
IFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CiAg
ICAgcmVncy5yZW1vdmVGaXJzdChSZWcoR1BSSW5mbzo6cmVnVDApKTsKIAogICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CkBAIC0xNDY5LDcgKzE0NjgsNyBAQCB2b2lkIHRl
c3RTaHVmZmxlUm90YXRlTWVtb3J5QWxsUmVnczY0KCkKICAgICBtZW1vcnlbMF0gPSAzNTAwMDAw
MDAwMDAwMGxsOwogICAgIG1lbW9yeVsxXSA9IDM2MDAwMDAwMDAwMDAwbGw7CiAKLSAgICBWZWN0
b3I8UmVnPiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsKKyAgICBWZWN0b3I8
UmVnPiByZWdzID0gY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOwogICAgIHJlZ3Mu
cmVtb3ZlRmlyc3QoUmVnKEdQUkluZm86OnJlZ1QwKSk7CiAKICAgICBCYXNpY0Jsb2NrKiByb290
ID0gY29kZS5hZGRCbG9jaygpOwpAQCAtMTUyMSw3ICsxNTIwLDcgQEAgdm9pZCB0ZXN0U2h1ZmZs
ZVJvdGF0ZU1lbW9yeUFsbFJlZ3NNaXhlZAogICAgIG1lbW9yeVswXSA9IDM1MDAwMDAwMDAwMDAw
bGw7CiAgICAgbWVtb3J5WzFdID0gMzYwMDAwMDAwMDAwMDBsbDsKIAotICAgIFZlY3RvcjxSZWc+
IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOworICAgIFZlY3RvcjxSZWc+IHJl
Z3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CiAgICAgcmVncy5yZW1vdmVG
aXJzdChSZWcoR1BSSW5mbzo6cmVnVDApKTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2Rl
LmFkZEJsb2NrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5o
CShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCByZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJz
KCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHJ1bnRpbWVSZWdpc3RlcnMoKTsKICAgICBzdGF0
aWMgUmVnaXN0ZXJTZXQgc3BlY2lhbFJlZ2lzdGVycygpOyAvLyBUaGUgdW5pb24gb2Ygc3RhY2ss
IHJlc2VydmVkIGhhcmR3YXJlLCBhbmQgcnVudGltZSByZWdpc3RlcnMuCi0gICAgc3RhdGljIFJl
Z2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOwogICAgIHN0YXRpYyBSZWdp
c3RlclNldCB2bUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gQ2FsbGVlIHNhdmUgcmVnaXN0ZXJz
IHRoYXQgbWlnaHQgYmUgc2F2ZWQgYW5kIHVzZWQgYnkgYW55IHRpZXIuCiAgICAgc3RhdGljIFJl
Z2lzdGVyU2V0IGxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCk7IC8vIFJlZ2lzdGVy
cyBzYXZlZCBhbmQgdXNlZCBieSB0aGUgTExJbnQuCiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGRm
Z0NhbGxlZVNhdmVSZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRo
ZSBERkcgSklULgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291049</attachid>
            <date>2016-10-09 12:03:13 -0700</date>
            <delta_ts>2016-10-10 08:44:26 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>41724</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2OTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBA
CisyMDE2LTEwLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyIHNob3VsZCBleHBvc2UgQVBJIGZvciBwaW5uaW5nIHJlZ2lzdGVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBZb3UgY2FuIG5vdyBj
YWxsIFByb2NlZHVyZTo6cGluUmVnaXN0ZXIoKSwgb3IgQ29kZTo6cGluUmVnaXN0ZXIoKSwgYW5k
IGl0IHdpbGwgbWFrZSB0aGlzCisgICAgICAgIHJlZ2lzdGVyIGJlaGF2ZSBhcyBmb2xsb3dzOgor
ICAgICAgICAKKyAgICAgICAgLSBCMyBhbmQgQWlyIHdpbGwgZW1pdCBubyBjb2RlIHRoYXQgbW9k
aWZpZXMgdGhlIHZhbHVlIGluIHRoaXMgcmVnaXN0ZXIsIGV4Y2VwdCBpZiB0aGF0CisgICAgICAg
ICAgaGFwcGVucyB2aWEgYSBQYXRjaHBvaW50IG9yIHN0YWNrbWFwIGNvbnN0cmFpbnQgKGkuZS4g
dGhlIHVzZXIgZXhwbGljaXRseSBhc2tlZCBmb3IgaXQpLgorICAgICAgICAtIEIzIGFuZCBBaXIg
d2lsbCBhbGxvdyBvdGhlcnMgdG8gbW9kaWZ5IHRoZSByZWdpc3Rlci4gRm9yIGV4YW1wbGUsIGlm
IHRoZSByZWdpc3RlciBpcyBub3QKKyAgICAgICAgICBjYWxsZWUtc2F2ZSwgdGhlbiB0aGUgY29t
cGlsZXIga25vd3MgdGhhdCB0aGUgcmVnaXN0ZXIncyB2YWx1ZSB3aWxsIGJlIHRyYXNoZWQgYnkg
YW55CisgICAgICAgICAgQy1zdHlsZSBjYWxsLgorICAgICAgICAtIEFpciB3aWxsIGJlIGhhcHB5
IHRvIGVtaXQgY29kZSB0aGF0IHJlYWRzIGZyb20gdGhpcyByZWdpc3RlciwgaW5jbHVkaW5nIGNv
YWxlc2NpbmcgdG1wcworICAgICAgICAgIHdpdGggaXQsIHNvIGxvbmdlciBhcyB0aGVyZSBpcyBu
byBpbnRlcmZlcmVuY2UgKGkuZS4gbm8gY2hhbmNlIG9mIHRoZSByZWdpc3RlcidzIHZhbHVlCisg
ICAgICAgICAgY2hhbmdpbmcpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhY2NvbXBsaXNo
ZWQgYnkgdGFraW5nIHJlZ3NJblByaW9yaXR5T3JkZXIoKSBhbmQgbWFraW5nIGl0IGEgbWV0aG9k
IG9mIENvZGUuIENvZGUgbm93CisgICAgICAgIGFsc28gdmVuZHMgYSBtdXRhYmxlUmVncygpIHNl
dCwgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHJlZ3NJblByaW9yaXR5T3JkZXIoKSwgdGhhdCBjYW4g
cXVpY2tseQorICAgICAgICB0ZWxsIHlvdSBpZiBhIHJlZ2lzdGVyIGNhbiBiZSBtdXRhdGVkLiBE
b2luZyBpdCB0aGlzIHdheSBtZWFucyB0aGF0IG1vc3Qgb2YgdGhpcyBpcyBhIHB1cmVseQorICAg
ICAgICBtZWNoYW5pY2FsIGNoYW5nZS4gVGhlIGNhbGxzIHRvIG11dGFibGVSZWdzKCkgYXJlIHRo
ZSBwbGFjZXMgd2hlcmUgd2UgaGFkIHRvIGNoYW5nZSBsb2dpYzoKKyAgICAgICAgCisgICAgICAg
IC0gVGhlIHJlZ2lzdGVyIGFsbG9jYXRvcnMgbmVlZHMgdG8ga25vdyB0aGF0IGNvYWxlc2Npbmcg
d2l0aCBhIHByZWNvbG9yZWQgcGlubmVkIHRtcCBpcyBmcmVlLgorICAgICAgICAtIFRoZSBjYWxs
ZWUtc2F2ZSBoYW5kbGVyIG5lZWRzIHRvIGtub3cgdGhhdCB3ZSdyZSBub3Qgc3VwcG9zZWQgdG8g
c2F2ZS9yZXN0b3JlIHBpbm5lZAorICAgICAgICAgIHJlZ2lzdGVycy4KKyAgICAgICAgCisgICAg
ICAgIE5vdGUgdGhhdCBpbiB0aGlzIHNjaGVtZSwgcGlubmVkIHJlZ2lzdGVycyBhcmUgc2ltcGx5
IHJlZ2lzdGVycyB0aGF0IGRvIG5vdCBhcHBlYXIgaW4KKyAgICAgICAgcmVnc0luUHJpb3JpdHlP
cmRlcigpLiBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCB3ZSB3aWxsIG5vdyBzYXkgdGhh
dCBGUCBpcyBwaW5uZWQuIFNvLAorICAgICAgICB0aGlzIG1lYW5zIHRoYXQgeW91IGNhbiBhbHNv
IHBpbiByZWdpc3RlcnMgYnkgY2FsbGluZyBzZXRSZWdzSW5Qcmlvcml0eU9yZGVyKCkgYW5kIHBh
c3NpbmcgYQorICAgICAgICB2ZWN0b3IgdGhhdCBleGNsdWRlcyBzb21lIHJlZ2lzdGVycy4gTW9y
ZSBnZW5lcmFsbHksIHRoaXMgbWVhbnMgdGhhdCBjbGllbnRzIGNhbiBub3cgdHdlYWsKKyAgICAg
ICAgdGhlIHJlZ2lzdGVyIGFsbG9jYXRvcidzIHJlZ2lzdGVyIHByZWZlcmVuY2VzLCBzaW5jZSB0
aGUgb3JkZXJpbmcgaW4gdGhhdCBsaXN0IHJlZmxlY3RzIHRoZQorICAgICAgICBvcmRlciBpbiB3
aGljaCB0aGUgYWxsb2NhdG9yIHdpbGwgdHJ5IHJlZ2lzdGVycy4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
UHJvY2VkdXJlOjpwaW5SZWdpc3Rlcik6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAg
ICAgICAgKiBiMy9haXIvQWlyQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNvZGU6
OkNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpzZXRSZWdzSW5Qcmlvcml0eU9y
ZGVyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29kZTo6cGluUmVnaXN0ZXIpOgorICAgICAg
ICAqIGIzL2Fpci9BaXJDb2RlLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNvZGU6OnJlZ3NJ
blByaW9yaXR5T3JkZXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjptdXRhYmxlUmVn
cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNvZGU6OmlzUGlubmVkKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6Q29kZTo6cmVnc0luUHJpb3JpdHlPcmRlckltcGwpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpDb2RlOjpwcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9haXIvQWlyRW1p
dFNodWZmbGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjplbWl0U2h1ZmZsZSk6CisgICAg
ICAgICogYjMvYWlyL0FpckVtaXRTaHVmZmxlLmg6CisgICAgICAgICogYjMvYWlyL0FpckhhbmRs
ZUNhbGxlZVNhdmVzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aGFuZGxlQ2FsbGVlU2F2
ZXMpOgorICAgICAgICAqIGIzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHA6
CisgICAgICAgICogYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Omxvd2VyQWZ0ZXJSZWdBbGxvYyk6CisgICAgICAgICogYjMvYWlyL0FpclJl
Z2lzdGVyUHJpb3JpdHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGIzL2Fpci9BaXJSZWdpc3Rl
clByaW9yaXR5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYjMvYWlyL0FpclNwaWxsRXZlcnl0aGlu
Zy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnNwaWxsRXZlcnl0aGluZyk6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjp0ZXN0U2h1ZmZs
ZUJyb2FkY2FzdEFsbFJlZ3MpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjp0ZXN0U2h1ZmZsZVNo
aWZ0QWxsUmVncyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlUm90YXRlQWxs
UmVncyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlU2hpZnRNZW1vcnlBbGxS
ZWdzKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6dGVzdFNodWZmbGVTaGlmdE1lbW9yeUFsbFJl
Z3M2NCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlU2hpZnRNZW1vcnlBbGxS
ZWdzTWl4ZWRXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlUm90YXRl
TWVtb3J5QWxsUmVnczY0KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6dGVzdFNodWZmbGVSb3Rh
dGVNZW1vcnlBbGxSZWdzTWl4ZWRXaWR0aCk6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RQaW5SZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpCMzo6cnVu
KToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKwogMjAxNi0xMC0wOCAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNJbmRleGVkUHJvcGVydHkgY2xv
YmJlcml6ZSBydWxlIGlzIHdyb25nIGZvciBBcnJheTo6Rm9yY2VPU1JFeGl0CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2
LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9haXIvQWlyTG93ZXJNYWNy
b3MuY3BwCiAgICAgYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAKICAgICBiMy9haXIv
QWlyUGhhc2VTY29wZS5jcHAKLSAgICBiMy9haXIvQWlyUmVnaXN0ZXJQcmlvcml0eS5jcHAKICAg
ICBiMy9haXIvQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAKICAgICBiMy9haXIvQWlyU2ltcGxp
ZnlDRkcuY3BwCiAgICAgYjMvYWlyL0FpclNwZWNpYWwuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTg3NSw4ICs4NzUsNiBAQAogCQkwRkVDODU4MTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5z
dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUM4NTVDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5oICovOyB9OwogCQkw
RkVDODU4MzFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU1RTFCREFDREM3MDA4MEZG
NzQgLyogQWlyUGhhc2VTY29wZS5jcHAgKi87IH07CiAJCTBGRUM4NTg0MUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJQaGFzZVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkVDODU1RjFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5oICov
OyB9OwotCQkwRkVDODU4NTFCREFDREM3MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2
MDFCREFDREM3MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5jcHAgKi87IH07Ci0JCTBG
RUM4NTg2MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2MTFCREFDREM3MDA4
MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5oICovOyB9OwogCQkwRkVDODU4NzFCREFDREM3
MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2MjFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5j
cHAgKi87IH07CiAJCTBGRUM4NTg4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGVjaWFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2MzFCREFD
REM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5oICovOyB9OwogCQkwRkVDODU4OTFCREFDREM3MDA4
MEZGNzQgLyogQWlyU3BpbGxFdmVyeXRoaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTY0MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGls
bEV2ZXJ5dGhpbmcuY3BwICovOyB9OwpAQCAtMzE1MSw4ICszMTQ5LDYgQEAKIAkJMEZFQzg1NUMx
QkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEFpckluc3RJbmxpbmVzLmg7IHBhdGggPSBiMy9haXIvQWlySW5zdElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1NUUxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpclBoYXNlU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQWlyUGhhc2VTY29wZS5jcHA7IHBhdGggPSBiMy9haXIvQWlyUGhhc2VTY29wZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NTVGMUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJQaGFzZVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclBo
YXNlU2NvcGUuaDsgcGF0aCA9IGIzL2Fpci9BaXJQaGFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGRUM4NTYwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3RlclBy
aW9yaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlZ2lz
dGVyUHJpb3JpdHkuY3BwOyBwYXRoID0gYjMvYWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkVDODU2MTFCREFDREM3MDA4MEZGNzQgLyog
QWlyUmVnaXN0ZXJQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBB
aXJSZWdpc3RlclByaW9yaXR5Lmg7IHBhdGggPSBiMy9haXIvQWlyUmVnaXN0ZXJQcmlvcml0eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODU2MjFCREFDREM3MDA4MEZGNzQg
LyogQWlyU3BlY2lhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBB
aXJTcGVjaWFsLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJTcGVjaWFsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1NjMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclNwZWNpYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyU3BlY2lhbC5oOyBwYXRoID0g
YjMvYWlyL0FpclNwZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1
NjQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclNwaWxsRXZlcnl0aGluZy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwOyBwYXRoID0g
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MDYzLDggKzUwNTksNiBAQAogCQkJCTBGQjM4NzhEMUJGQkM0NEQwMEUzQUIxRSAvKiBB
aXJPcHRpbWl6ZUJsb2NrT3JkZXIuaCAqLywKIAkJCQkwRkVDODU1RTFCREFDREM3MDA4MEZGNzQg
LyogQWlyUGhhc2VTY29wZS5jcHAgKi8sCiAJCQkJMEZFQzg1NUYxQkRBQ0RDNzAwODBGRjc0IC8q
IEFpclBoYXNlU2NvcGUuaCAqLywKLQkJCQkwRkVDODU2MDFCREFDREM3MDA4MEZGNzQgLyogQWly
UmVnaXN0ZXJQcmlvcml0eS5jcHAgKi8sCi0JCQkJMEZFQzg1NjExQkRBQ0RDNzAwODBGRjc0IC8q
IEFpclJlZ2lzdGVyUHJpb3JpdHkuaCAqLywKIAkJCQkwRjQ1NzAzQTFCRTQ1RjBBMDA2MkE2Mjkg
LyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAgKi8sCiAJCQkJMEY0NTcwM0IxQkU0NUYwQTAw
NjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAqLywKIAkJCQkwRjMzOERGQjFCRUQ1
MTI3MDAxM0M4OEYgLyogQWlyU2ltcGxpZnlDRkcuY3BwICovLApAQCAtNzI2MCw3ICs3MjU0LDYg
QEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVDODU4NDFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29w
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZFQzg1ODYxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclJl
Z2lzdGVyUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDU3MDNEMUJFNDVGMEEwMDYy
QTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVD
ODU4ODFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1OEExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclNwaWxsRXZlcnl0aGluZy5oIGluIEhlYWRl
cnMgKi8sCkBAIC05MDAxLDcgKzg5OTQsNiBAQAogCQkJCTBGRUM4NTdEMUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1N0YxQkRB
Q0RDNzAwODBGRjc0IC8qIEFpckluc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1ODMx
QkRBQ0RDNzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MEZFQzg1ODUxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclJlZ2lzdGVyUHJpb3JpdHkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY0NTcwM0MxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRS
ZWdpc3RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1ODcxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpclNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1ODkxQkRBQ0RDNzAw
ODBGRjc0IC8qIEFpclNwaWxsRXZlcnl0aGluZy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNpb24gMjA2OTYzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzA1LDYgKzMwNSwxMSBAQCB2b2lkIFByb2NlZHVyZTo6cmVxdWVzdENhbGxBcmdBcmVh
U2l6ZUluCiAgICAgY29kZSgpLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKHNpemUpOwog
fQogCit2b2lkIFByb2NlZHVyZTo6cGluUmVnaXN0ZXIoUmVnIHJlZykKK3sKKyAgICBjb2RlKCku
cGluUmVnaXN0ZXIocmVnKTsKK30KKwogdW5zaWduZWQgUHJvY2VkdXJlOjpmcmFtZVNpemUoKSBj
b25zdAogewogICAgIHJldHVybiBjb2RlKCkuZnJhbWVTaXplKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjA2OTYzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw4ICsy
MTIsMTEgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNhbGxBcmdBcmVhU2l6ZUluQnl0ZXMoKSBj
b25zdDsKICAgICB2b2lkIHJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKHVuc2lnbmVkIHNp
emUpOwogCisgICAgLy8gVGhpcyB0ZWxscyB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9ycyB0byBzdGF5
IGF3YXkgZnJvbSB0aGlzIHJlZ2lzdGVyLgorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcGlu
UmVnaXN0ZXIoUmVnKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGZyYW1lU2l6
ZSgpIGNvbnN0OwotICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBjYWxsZWVTYXZlUmVn
aXN0ZXJzKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgUmVnaXN0ZXJBdE9m
ZnNldExpc3QmIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdDsKIAogICAgIFBDVG9PcmlnaW5N
YXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX3BjVG9PcmlnaW5NYXA7IH0KICAgICBQQ1Rv
T3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkgeyByZXR1cm4gV1RGTW92ZShtX3BjVG9P
cmlnaW5NYXApOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNp
b24gMjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMzI3LDYgKzEzMzI3LDYwIEBAIHZvaWQgdGVzdFBDT3JpZ2luTWFwRG9l
c250SW5zZXJ0Tm9wcygpCiAgICAgY29tcGlsZShwcm9jKTsKIH0KIAordm9pZCB0ZXN0UGluUmVn
aXN0ZXJzKCkKK3sKKyAgICBhdXRvIGdvID0gWyZdIChib29sIHBpbikgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgUmVnaXN0ZXJTZXQgY3NyczsKKyAgICAgICAgY3Nycy5tZXJn
ZShSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICAgICAgY3Nycy5leGNs
dWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICAgICAgaWYgKHBpbikgewor
ICAgICAgICAgICAgY3Nycy5mb3JFYWNoKAorICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykg
eworICAgICAgICAgICAgICAgICAgICBwcm9jLnBpblJlZ2lzdGVyKHJlZyk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZh
bHVlKiBiID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYyA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKTsKKyAgICAgICAgVmFsdWUqIGQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OnJlZ0NTMCk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFZvaWQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oMHgxMjM0KSkpOworICAgICAgICByb290LT5hcHBlbmROZXc8
Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KDB4MTIzNSkpLAorICAgICAgICAgICAgYSwgYiwgYyk7CisgICAgICAg
IFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5ldzxQYXRjaHBvaW50
VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
U29tZVJlZ2lzdGVyKGQpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAg
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocGFyYW1zWzBdLmdwcigpLCBH
UFJJbmZvOjpyZWdDUzApOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIGF1dG8gY29kZSA9IGNv
bXBpbGUocHJvYyk7CisgICAgICAgIGJvb2wgdXNlc0NTUnMgPSBmYWxzZTsKKyAgICAgICAgZm9y
IChBaXI6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKGluc3Qu
a2luZC5vcGNvZGUgPT0gQWlyOjpQYXRjaCAmJiBpbnN0Lm9yaWdpbiA9PSBwYXRjaHBvaW50KQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpbnN0LmZvckVh
Y2hUbXBGYXN0KAorICAgICAgICAgICAgICAgICAgICBbJl0gKEFpcjo6VG1wIHRtcCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC5pc1JlZygpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVzZXNDU1JzIHw9IGNzcnMuZ2V0KHRtcC5yZWcoKSk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldCYgcmVnQXRPZmZzZXQgOiBwcm9jLmNhbGxlZVNhdmVSZWdpc3RlcnMo
KSkKKyAgICAgICAgICAgIHVzZXNDU1JzIHw9IGNzcnMuZ2V0KHJlZ0F0T2Zmc2V0LnJlZygpKTsK
KyAgICAgICAgQ0hFQ0tfRVEodXNlc0NTUnMsICFwaW4pOworICAgIH07CisgICAgCisgICAgZ28o
dHJ1ZSk7CisgICAgZ28oZmFsc2UpOworfQorCiAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGRv
ZXMgbm90IHRyeSB0byBvcHRpbWl6ZSBhbnl0aGluZyBvdXQuCiBORVZFUl9JTkxJTkUgZG91Ymxl
IHplcm8oKQogewpAQCAtMTQ3NzQsNiArMTQ4MjgsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBm
aWx0ZXIpCiAgICAgUlVOKHRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24oKSk7CiAgICAgUlVO
KHRlc3RNb3ZlQ29uc3RhbnRzKCkpOwogICAgIFJVTih0ZXN0UENPcmlnaW5NYXBEb2VzbnRJbnNl
cnROb3BzKCkpOworICAgIFJVTih0ZXN0UGluUmVnaXN0ZXJzKCkpOwogICAgIAogICAgIGlmICh0
YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzYWdlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0
MCw1MSBAQCBDb2RlOjpDb2RlKFByb2NlZHVyZSYgcHJvYykKICAgICA6IG1fcHJvYyhwcm9jKQog
ICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKIHsKKyAgICAvLyBDb21lIHVwIHdpdGgg
aW5pdGlhbCBvcmRlcmluZ3Mgb2YgcmVnaXN0ZXJzLiBUaGUgdXNlciBtYXkgcmVwbGFjZSB0aGlz
IHdpdGggc29tZXRoaW5nIGVsc2UuCisgICAgQXJnOjpmb3JFYWNoVHlwZSgKKyAgICAgICAgWyZd
IChBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgVmVjdG9yPFJlZz4gcmVzdWx0OworICAg
ICAgICAgICAgUmVnaXN0ZXJTZXQgYWxsID0gdHlwZSA9PSBBcmc6OkdQID8gUmVnaXN0ZXJTZXQ6
OmFsbEdQUnMoKSA6IFJlZ2lzdGVyU2V0OjphbGxGUFJzKCk7CisgICAgICAgICAgICBhbGwuZXhj
bHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICBhbGwuZXhj
bHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygpKTsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmUgPSBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpOworICAgICAgICAgICAgYWxsLmZvckVhY2goCisgICAgICAgICAgICAgICAgWyZdIChS
ZWcgcmVnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVlU2F2ZS5nZXQocmVnKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVnKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGFsbC5mb3JFYWNoKAorICAgICAgICAgICAgICAgIFsmXSAo
UmVnIHJlZykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVlU2F2ZS5nZXQocmVnKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVnKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIHNldFJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSwgcmVzdWx0
KTsKKyAgICAgICAgfSk7CiB9CiAKIENvZGU6On5Db2RlKCkKIHsKIH0KIAordm9pZCBDb2RlOjpz
ZXRSZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6VHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8UmVnPiYg
cmVncykKK3sKKyAgICByZWdzSW5Qcmlvcml0eU9yZGVySW1wbCh0eXBlKSA9IHJlZ3M7CisgICAg
bV9tdXRhYmxlUmVncyA9IFJlZ2lzdGVyU2V0KCk7CisgICAgQXJnOjpmb3JFYWNoVHlwZSgKKyAg
ICAgICAgWyZdIChBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgZm9yIChSZWcgcmVnIDog
cmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkKKyAgICAgICAgICAgICAgICBtX211dGFibGVSZWdz
LnNldChyZWcpOworICAgICAgICB9KTsKK30KKwordm9pZCBDb2RlOjpwaW5SZWdpc3RlcihSZWcg
cmVnKQoreworICAgIFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlckltcGwo
QXJnKFRtcChyZWcpKS50eXBlKCkpOworICAgIHJlZ3MucmVtb3ZlRmlyc3QocmVnKTsKKyAgICBt
X211dGFibGVSZWdzLmNsZWFyKHJlZyk7CisgICAgQVNTRVJUKCFyZWdzLmNvbnRhaW5zKHJlZykp
OworfQorCiBCYXNpY0Jsb2NrKiBDb2RlOjphZGRCbG9jayhkb3VibGUgZnJlcXVlbmN5KQogewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhtX2Js
b2Nrcy5zaXplKCksIGZyZXF1ZW5jeSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDb2RlLmgJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywyNyBAQCBwdWJsaWM6
CiAgICAgfkNvZGUoKTsKIAogICAgIFByb2NlZHVyZSYgcHJvYygpIHsgcmV0dXJuIG1fcHJvYzsg
fQorICAgIAorICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6
VHlwZSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAg
IGNhc2UgQXJnOjpHUDoKKyAgICAgICAgICAgIHJldHVybiBtX2dwUmVnc0luUHJpb3JpdHlPcmRl
cjsKKyAgICAgICAgY2FzZSBBcmc6OkZQOgorICAgICAgICAgICAgcmV0dXJuIG1fZnBSZWdzSW5Q
cmlvcml0eU9yZGVyOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpUeXBlLCBj
b25zdCBWZWN0b3I8UmVnPiYpOworICAgIAorICAgIC8vIFRoaXMgaXMgdGhlIHNldCBvZiByZWdp
c3RlcnMgdGhhdCBBaXIgaXMgYWxsb3dlZCB0byBlbWl0IGNvZGUgdG8gbXV0YXRlLiBJdCdzIGRl
cml2ZWQgZnJvbQorICAgIC8vIHJlZ3NJblByaW9yaXR5T3JkZXIuIEFueSByZWdpc3RlcnMgbm90
IGluIHRoaXMgc2V0IGFyZSBzYWlkIHRvIGJlICJwaW5uZWQiLgorICAgIGNvbnN0IFJlZ2lzdGVy
U2V0JiBtdXRhYmxlUmVncygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YWJsZVJlZ3M7IH0KKyAgICAK
KyAgICBib29sIGlzUGlubmVkKFJlZyByZWcpIGNvbnN0IHsgcmV0dXJuICFtdXRhYmxlUmVncygp
LmdldChyZWcpOyB9CisgICAgCisgICAgdm9pZCBwaW5SZWdpc3RlcihSZWcpOwogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgQmFzaWNCbG9jayogYWRkQmxvY2soZG91YmxlIGZyZXF1ZW5jeSA9IDEp
OwogCkBAIC0yNTAsNyArMjcxLDIxIEBAIHByaXZhdGU6CiAgICAgCiAgICAgQ29kZShQcm9jZWR1
cmUmKTsKIAorICAgIFZlY3RvcjxSZWc+JiByZWdzSW5Qcmlvcml0eU9yZGVySW1wbChBcmc6OlR5
cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEFy
Zzo6R1A6CisgICAgICAgICAgICByZXR1cm4gbV9ncFJlZ3NJblByaW9yaXR5T3JkZXI7CisgICAg
ICAgIGNhc2UgQXJnOjpGUDoKKyAgICAgICAgICAgIHJldHVybiBtX2ZwUmVnc0luUHJpb3JpdHlP
cmRlcjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisK
ICAgICBQcm9jZWR1cmUmIG1fcHJvYzsgLy8gU29tZSBtZXRhLWRhdGEsIGxpa2UgYnlwcm9kdWN0
cywgaXMgc3RvcmVkIGluIHRoZSBQcm9jZWR1cmUuCisgICAgVmVjdG9yPFJlZz4gbV9ncFJlZ3NJ
blByaW9yaXR5T3JkZXI7CisgICAgVmVjdG9yPFJlZz4gbV9mcFJlZ3NJblByaW9yaXR5T3JkZXI7
CisgICAgUmVnaXN0ZXJTZXQgbV9tdXRhYmxlUmVnczsKICAgICBTcGFyc2VDb2xsZWN0aW9uPFN0
YWNrU2xvdD4gbV9zdGFja1Nsb3RzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzaWNC
bG9jaz4+IG1fYmxvY2tzOwogICAgIFNwYXJzZUNvbGxlY3Rpb248U3BlY2lhbD4gbV9zcGVjaWFs
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZm
bGUuY3BwCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckVtaXRTaHVmZmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAj
aWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJBaXJJ
bnN0SW5saW5lcy5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHkuaCIKICNpbmNsdWRl
IDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIApA
QCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgewogYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1UbXAgZmluZFBvc3NpYmxlU2NyYXRjaChBcmc6OlR5
cGUgdHlwZSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgewotICAgIGZvciAoUmVnIHJlZyA6IHJl
Z3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKK1RtcCBmaW5kUG9zc2libGVTY3JhdGNoKENvZGUm
IGNvZGUsIEFyZzo6VHlwZSB0eXBlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSB7CisgICAgZm9y
IChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CiAgICAgICAgIFRt
cCB0bXAocmVnKTsKICAgICAgICAgaWYgKGZ1bmN0b3IodG1wKSkKICAgICAgICAgICAgIHJldHVy
biB0bXA7CkBAIC00OSw5ICs0OSw5IEBAIFRtcCBmaW5kUG9zc2libGVTY3JhdGNoKEFyZzo6VHlw
ZSB0eXBlLCAKICAgICByZXR1cm4gVG1wKCk7CiB9CiAKLVRtcCBmaW5kUG9zc2libGVTY3JhdGNo
KEFyZzo6VHlwZSB0eXBlLCBjb25zdCBBcmcmIGFyZzEsIGNvbnN0IEFyZyYgYXJnMikgeworVG1w
IGZpbmRQb3NzaWJsZVNjcmF0Y2goQ29kZSYgY29kZSwgQXJnOjpUeXBlIHR5cGUsIGNvbnN0IEFy
ZyYgYXJnMSwgY29uc3QgQXJnJiBhcmcyKSB7CiAgICAgcmV0dXJuIGZpbmRQb3NzaWJsZVNjcmF0
Y2goCi0gICAgICAgIHR5cGUsCisgICAgICAgIGNvZGUsIHR5cGUsCiAgICAgICAgIFsmXSAoVG1w
IHRtcCkgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gIWFyZzEudXNlc1RtcCh0bXApICYm
ICFhcmcyLnVzZXNUbXAodG1wKTsKICAgICAgICAgfSk7CkBAIC03OSw3ICs3OSw4IEBAIEluc3Qg
Y3JlYXRlU2h1ZmZsZShWYWx1ZSogb3JpZ2luLCBjb25zdCAKIH0KIAogVmVjdG9yPEluc3Q+IGVt
aXRTaHVmZmxlKAotICAgIFZlY3RvcjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0ZDo6YXJyYXk8QXJn
LCAyPiBzY3JhdGNoZXMsIEFyZzo6VHlwZSB0eXBlLCBWYWx1ZSogb3JpZ2luKQorICAgIENvZGUm
IGNvZGUsIFZlY3RvcjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0ZDo6YXJyYXk8QXJnLCAyPiBzY3Jh
dGNoZXMsIEFyZzo6VHlwZSB0eXBlLAorICAgIFZhbHVlKiBvcmlnaW4pCiB7CiAgICAgaWYgKHZl
cmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygKQEAgLTMwMyw3ICszMDQsNyBAQCBWZWN0b3I8SW5z
dD4gZW1pdFNodWZmbGUoCiAgICAgICAgIAogICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG1vdmUs
IHBhaXIuc3JjKCkua2luZCgpLCBwYWlyLmRzdCgpLmtpbmQoKSkpIHsKICAgICAgICAgICAgIFRt
cCBzY3JhdGNoID0KLSAgICAgICAgICAgICAgICBnZXRTY3JhdGNoKHNjcmF0Y2hJbmRleCwgZmlu
ZFBvc3NpYmxlU2NyYXRjaCh0eXBlLCBwYWlyLnNyYygpLCBwYWlyLmRzdCgpKSk7CisgICAgICAg
ICAgICAgICAgZ2V0U2NyYXRjaChzY3JhdGNoSW5kZXgsIGZpbmRQb3NzaWJsZVNjcmF0Y2goY29k
ZSwgdHlwZSwgcGFpci5zcmMoKSwgcGFpci5kc3QoKSkpOwogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoc2NyYXRjaCk7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0obW92ZSwgcGFpci5z
cmMoKS5raW5kKCksIEFyZzo6VG1wKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKElu
c3QobW92ZUZvcldpZHRoKHBhaXIud2lkdGgoKSksIG9yaWdpbiwgcGFpci5zcmMoKSwgc2NyYXRj
aCkpOwpAQCAtNDM1LDcgKzQzNiw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAg
ICAgICAgICAgICAgICAgLy8gTW92aW5nIGRhdGEgYmV0d2VlbiB0d28gc3BpbGxzIGlzIHJhcmUu
IFRvIGdldCBoZXJlIGEgbG90IG9mIHJhcmUgc3R1ZmYgaGFzIHRvCiAgICAgICAgICAgICAgICAg
ICAgIC8vIGFsbCBoYXBwZW4gYXQgb25jZS4KICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIFRtcCBzY3JhdGNoID0gZ2V0U2NyYXRjaCgwLCBmaW5kUG9zc2libGVTY3Jh
dGNoKHR5cGUsIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICAgICAgICAgIFRtcCBzY3JhdGNo
ID0gZ2V0U2NyYXRjaCgwLCBmaW5kUG9zc2libGVTY3JhdGNoKGNvZGUsIHR5cGUsIGxlZnQsIHJp
Z2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjcmF0Y2gpOwogICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEluc3QobW92ZUZvcldpZHRoKHN3YXBXaWR0
aCksIG9yaWdpbiwgbGVmdCwgc2NyYXRjaCkpOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKEluc3Qoc3dhcCwgb3JpZ2luLCBzY3JhdGNoLCByaWdodCkpOwpAQCAtNDY5LDcgKzQ3
MCw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIC8vIGF2YWlsYWJs
ZSByZWdpc3RlciBmaWxlLgogCiAgICAgICAgICAgICBUbXAgc2NyYXRjaCA9IGZpbmRQb3NzaWJs
ZVNjcmF0Y2goCi0gICAgICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgICAgICAgICBjb2RlLCB0
eXBlLAogICAgICAgICAgICAgICAgIFsmXSAoVG1wIHRtcCkgLT4gYm9vbCB7CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAoU2h1ZmZsZVBhaXIgcGFpciA6IHJvdGF0ZS5sb29wKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocGFpci5zcmMoKS51c2VzVG1wKHRtcCkpCkBAIC01MTIsNyAr
NTEzLDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogfQogCiBWZWN0b3I8SW5zdD4gZW1p
dFNodWZmbGUoCi0gICAgY29uc3QgVmVjdG9yPFNodWZmbGVQYWlyPiYgcGFpcnMsCisgICAgQ29k
ZSYgY29kZSwgY29uc3QgVmVjdG9yPFNodWZmbGVQYWlyPiYgcGFpcnMsCiAgICAgY29uc3Qgc3Rk
OjphcnJheTxBcmcsIDI+JiBncFNjcmF0Y2gsIGNvbnN0IHN0ZDo6YXJyYXk8QXJnLCAyPiYgZnBT
Y3JhdGNoLAogICAgIFZhbHVlKiBvcmlnaW4pCiB7CkBAIC01MzEsOCArNTMyLDggQEAgVmVjdG9y
PEluc3Q+IGVtaXRTaHVmZmxlKAogICAgIH0KIAogICAgIFZlY3RvcjxJbnN0PiByZXN1bHQ7Ci0g
ICAgcmVzdWx0LmFwcGVuZFZlY3RvcihlbWl0U2h1ZmZsZShncFBhaXJzLCBncFNjcmF0Y2gsIEFy
Zzo6R1AsIG9yaWdpbikpOwotICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IoZW1pdFNodWZmbGUoZnBQ
YWlycywgZnBTY3JhdGNoLCBBcmc6OkZQLCBvcmlnaW4pKTsKKyAgICByZXN1bHQuYXBwZW5kVmVj
dG9yKGVtaXRTaHVmZmxlKGNvZGUsIGdwUGFpcnMsIGdwU2NyYXRjaCwgQXJnOjpHUCwgb3JpZ2lu
KSk7CisgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihlbWl0U2h1ZmZsZShjb2RlLCBmcFBhaXJzLCBm
cFNjcmF0Y2gsIEFyZzo6RlAsIG9yaWdpbikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmgJKHJl
dmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNo
dWZmbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBWYWx1ZTsKIAog
bmFtZXNwYWNlIEFpciB7CiAKK2NsYXNzIENvZGU7CisKIGNsYXNzIFNodWZmbGVQYWlyIHsKIHB1
YmxpYzoKICAgICBTaHVmZmxlUGFpcigpCkBAIC0xMDAsMTIgKzEwMiwxMiBAQCBJbnN0IGNyZWF0
ZVNodWZmbGUoVmFsdWUqIG9yaWdpbiwgY29uc3QgCiAvLyBOT1RFOiBVc2UgdGhpcyBtZXRob2Qg
KGFuZCBpdHMgZnJpZW5kIGJlbG93KSB0byBlbWl0IHNodWZmbGVzIGFmdGVyIHJlZ2lzdGVyIGFs
bG9jYXRpb24uIEJlZm9yZQogLy8gcmVnaXN0ZXIgYWxsb2NhdGlvbiBpdCBpcyBtdWNoIGJldHRl
ciB0byBzaW1wbHkgdXNlIHRoZSBTaHVmZmxlIGluc3RydWN0aW9uLgogVmVjdG9yPEluc3Q+IGVt
aXRTaHVmZmxlKAotICAgIFZlY3RvcjxTaHVmZmxlUGFpcj4sIHN0ZDo6YXJyYXk8QXJnLCAyPiBz
Y3JhdGNoLCBBcmc6OlR5cGUsIFZhbHVlKiBvcmlnaW4pOworICAgIENvZGUmIGNvZGUsIFZlY3Rv
cjxTaHVmZmxlUGFpcj4sIHN0ZDo6YXJyYXk8QXJnLCAyPiBzY3JhdGNoLCBBcmc6OlR5cGUsIFZh
bHVlKiBvcmlnaW4pOwogCiAvLyBQZXJmb3JtIGEgc2h1ZmZsZSB0aGF0IGludm9sdmVzIGFueSBu
dW1iZXIgb2YgdHlwZXMuIFBhc3Mgc2NyYXRjaCByZWdpc3RlcnMgb3IgbWVtb3J5IGxvY2F0aW9u
cwogLy8gZm9yIGVhY2ggdHlwZSBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIGFib3ZlLgogVmVjdG9y
PEluc3Q+IGVtaXRTaHVmZmxlKAotICAgIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mLAorICAg
IENvZGUmIGNvZGUsIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mLAogICAgIGNvbnN0IHN0ZDo6
YXJyYXk8QXJnLCAyPiYgZ3BTY3JhdGNoLCBjb25zdCBzdGQ6OmFycmF5PEFyZywgMj4mIGZwU2Ny
YXRjaCwKICAgICBWYWx1ZSogb3JpZ2luKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAJKHJldmlzaW9uIDIw
Njk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySGFuZGxlQ2FsbGVlU2F2
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgaGFuZGxlQ2FsbGVl
U2F2ZXMoQ29kZSYgY29kZSkKIAogICAgIC8vIE5vdyB3ZSBmaWx0ZXIgdG8gcmVhbGx5IGdldCB0
aGUgY2FsbGVlIHNhdmVzLgogICAgIHVzZWRDYWxsZWVTYXZlcy5maWx0ZXIoUmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgdXNlZENhbGxlZVNhdmVzLmZpbHRlcihjb2Rl
Lm11dGFibGVSZWdzKCkpOwogICAgIHVzZWRDYWxsZWVTYXZlcy5leGNsdWRlKFJlZ2lzdGVyU2V0
OjpzdGFja1JlZ2lzdGVycygpKTsgLy8gV2UgZG9uJ3QgbmVlZCB0byBzYXZlIEZQIGhlcmUuCiAK
ICAgICBpZiAoIXVzZWRDYWxsZWVTYXZlcy5udW1iZXJPZlNldFJlZ2lzdGVycygpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2lu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVy
YXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMu
aCIKICNpbmNsdWRlICJBaXJMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIK
LSNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCiAjaW5jbHVkZSAiQWlyVG1wSW5saW5l
cy5oIgogI2luY2x1ZGUgIkFpclRtcFdpZHRoLmgiCiAjaW5jbHVkZSAiQWlyVXNlQ291bnRzLmgi
CkBAIC01Nyw4ICs1NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9sYXN0UHJlY29sb3JlZFJl
Z2lzdGVySW5kZXgobGFzdFByZWNvbG9yZWRSZWdpc3RlckluZGV4KQogICAgICAgICAsIG1fdW5z
cGlsbGFibGVUbXBzKHVuc3BpbGxhYmxlVG1wKQogICAgIHsKKyAgICAgICAgZm9yIChSZWcgcmVn
IDogbV9yZWdzSW5Qcmlvcml0eU9yZGVyKQorICAgICAgICAgICAgbV9tdXRhYmxlUmVncy5zZXQo
cmVnKTsKKyAgICAgICAgCiAgICAgICAgIGluaXRpYWxpemVEZWdyZWVzKHRtcEFycmF5U2l6ZSk7
Ci0KKyAgICAgICAgCiAgICAgICAgIG1fYWRqYWNlbmN5TGlzdC5yZXNpemUodG1wQXJyYXlTaXpl
KTsKICAgICAgICAgbV9tb3ZlTGlzdC5yZXNpemUodG1wQXJyYXlTaXplKTsKICAgICAgICAgbV9j
b2FsZXNjZWRUbXBzLmZpbGwoMCwgdG1wQXJyYXlTaXplKTsKQEAgLTE2MSw3ICsxNjMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICBzdGQ6OnN3YXAodSwgdik7CiAKICAgICAgICAgaWYgKHRy
YWNlRGVidWcpCi0gICAgICAgICAgICBkYXRhTG9nKCJDb2FsZXNjaW5nIG1vdmUgYXQgaW5kZXgi
LCBtb3ZlSW5kZXgsICIgdSA9ICIsIHUsICIgdiA9ICIsIHYsICJcbiIpOworICAgICAgICAgICAg
ZGF0YUxvZygiQ29hbGVzY2luZyBtb3ZlIGF0IGluZGV4ICIsIG1vdmVJbmRleCwgIiB1ID0gIiwg
dSwgIiB2ID0gIiwgdiwgIlxuIik7CiAKICAgICAgICAgaWYgKHUgPT0gdikgewogICAgICAgICAg
ICAgYWRkV29ya0xpc3QodSk7CkBAIC00NjEsOCArNDYzLDE1IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIHByZWNvbG9yZWRDb2FsZXNjaW5nSGV1cmlzdGljKEluZGV4VHlwZSB1LCBJbmRleFR5cGUg
dikKICAgICB7CisgICAgICAgIGlmICh0cmFjZURlYnVnKQorICAgICAgICAgICAgZGF0YUxvZygi
ICAgIENoZWNraW5nIHByZWNvbG9yZWRDb2FsZXNjaW5nSGV1cmlzdGljXG4iKTsKICAgICAgICAg
QVNTRVJUKGlzUHJlY29sb3JlZCh1KSk7CiAgICAgICAgIEFTU0VSVCghaXNQcmVjb2xvcmVkKHYp
KTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHUgaXMgYSBwaW5uZWQgcmVnaXN0ZXIgdGhlbiBp
dCdzIGFsd2F5cyBzYWZlIHRvIGNvYWxlc2NlLiBOb3RlIHRoYXQgd2hlbiB3ZSBjYWxsIHRoaXMs
CisgICAgICAgIC8vIHdlIGhhdmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGVyZSBpcyBubyBpbnRl
cmZlcmVuY2UgYmV0d2VlbiB1IGFuZCB2LgorICAgICAgICBpZiAoIW1fbXV0YWJsZVJlZ3MuZ2V0
KG1fY29sb3JlZFRtcFt1XSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAv
LyBJZiBhbnkgYWRqYWNlbnQgb2YgdGhlIG5vbi1jb2xvcmVkIG5vZGUgaXMgbm90IGFuIGFkamFj
ZW50IG9mIHRoZSBjb2xvcmVkIG5vZGUgQU5EIGhhcyBhIGRlZ3JlZSA+PSBLCiAgICAgICAgIC8v
IHRoZXJlIGlzIGEgcmlzayB0aGF0IHRoaXMgbm9kZSBuZWVkcyB0byBoYXZlIHRoZSBzYW1lIGNv
bG9yIGFzIG91ciBwcmVjb2xvcmVkIG5vZGUuIElmIHdlIGNvYWxlc2NlIHN1Y2gKQEAgLTU0OSw2
ICs1NTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdHlwZWRlZiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8
SW50ZXJmZXJlbmNlRWRnZT4gSW50ZXJmZXJlbmNlRWRnZUhhc2hUcmFpdHM7CiAKICAgICBjb25z
dCBWZWN0b3I8UmVnPiYgbV9yZWdzSW5Qcmlvcml0eU9yZGVyOworICAgIFJlZ2lzdGVyU2V0IG1f
bXV0YWJsZVJlZ3M7CiAgICAgSW5kZXhUeXBlIG1fbGFzdFByZWNvbG9yZWRSZWdpc3RlckluZGV4
IHsgMCB9OwogCiAgICAgLy8gVGhlIGludGVyZmVyZW5jZSBncmFwaC4KQEAgLTcyNyw3ICs3Mzcs
NyBAQCB0ZW1wbGF0ZTxBcmc6OlR5cGUgdHlwZT4KIGNsYXNzIENvbG9yaW5nQWxsb2NhdG9yIDog
cHVibGljIEFic3RyYWN0Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+IHsKIHB1YmxpYzoKICAg
ICBDb2xvcmluZ0FsbG9jYXRvcihDb2RlJiBjb2RlLCBUbXBXaWR0aCYgdG1wV2lkdGgsIGNvbnN0
IFVzZUNvdW50czxUbXA+JiB1c2VDb3VudHMsIGNvbnN0IEhhc2hTZXQ8dW5zaWduZWQ+JiB1bnNw
aWxsYWJsZVRtcCkKLSAgICAgICAgOiBBYnN0cmFjdENvbG9yaW5nQWxsb2NhdG9yPHVuc2lnbmVk
PihyZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLCBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6bGFz
dE1hY2hpbmVSZWdpc3RlckluZGV4KCksIHRtcEFycmF5U2l6ZShjb2RlKSwgdW5zcGlsbGFibGVU
bXApCisgICAgICAgIDogQWJzdHJhY3RDb2xvcmluZ0FsbG9jYXRvcjx1bnNpZ25lZD4oY29kZS5y
ZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLCBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6bGFzdE1h
Y2hpbmVSZWdpc3RlckluZGV4KCksIHRtcEFycmF5U2l6ZShjb2RlKSwgdW5zcGlsbGFibGVUbXAp
CiAgICAgICAgICwgbV9jb2RlKGNvZGUpCiAgICAgICAgICwgbV90bXBXaWR0aCh0bXBXaWR0aCkK
ICAgICAgICAgLCBtX3VzZUNvdW50cyh1c2VDb3VudHMpCkBAIC04MzksNyArODQ5LDcgQEAgcHVi
bGljOgogICAgICAgICBpZiAoIXJlZykgewogICAgICAgICAgICAgLy8gV2Ugb25seSBjYXJlIGFi
b3V0IFRtcHMgdGhhdCBpbnRlcmZlcmUuIEEgVG1wIHRoYXQgbmV2ZXIgaW50ZXJmZXJlIHdpdGgg
YW55dGhpbmcKICAgICAgICAgICAgIC8vIGNhbiB0YWtlIGFueSByZWdpc3Rlci4KLSAgICAgICAg
ICAgIHJlZyA9IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkuZmlyc3QoKTsKKyAgICAgICAgICAg
IHJlZyA9IG1fY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLmZpcnN0KCk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHJlZzsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCShyZXZpc2lv
biAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJS
ZWdBbGxvYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJB
aXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpckxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiQWly
UGhhc2VTY29wZS5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHkuaCIKICNpbmNsdWRl
ICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyU2V0LmgiCkBAIC04Niw3ICs4NSw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9j
KENvZGUmIGNvZGUpCiAgICAgICAgIHN0ZDo6YXJyYXk8QXJnLCAyPiByZXN1bHQ7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKICAgICAgICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IHJlZ3NJblByaW9yaXR5T3Jk
ZXIodHlwZSkpIHsKKyAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3Jp
dHlPcmRlcih0eXBlKSkgewogICAgICAgICAgICAgICAgIGlmICghc2V0LmdldChyZWcpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IFRtcChyZWcpOwogICAgICAgICAgICAgICAg
ICAgICBzZXQuc2V0KHJlZyk7CkBAIC0xMzQsNyArMTMzLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVn
QWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PEFyZywgMj4gZ3BT
Y3JhdGNoID0gZ2V0U2NyYXRjaGVzKHNldCwgQXJnOjpHUCk7CiAgICAgICAgICAgICAgICAgc3Rk
OjphcnJheTxBcmcsIDI+IGZwU2NyYXRjaCA9IGdldFNjcmF0Y2hlcyhzZXQsIEFyZzo6RlApOwog
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0cygKLSAgICAgICAgICAgICAg
ICAgICAgaW5zdEluZGV4LCBlbWl0U2h1ZmZsZShwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gs
IGluc3Qub3JpZ2luKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RJbmRleCwgZW1pdFNodWZm
bGUoY29kZSwgcGFpcnMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBpbnN0Lm9yaWdpbikpOwogICAg
ICAgICAgICAgICAgIGluc3QgPSBJbnN0KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC0xOTMsNyArMTkyLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29k
ZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJlLWNhbGwgcGFpcnMgZm9y
ICIsIGluc3QsICI6ICIsIGxpc3REdW1wKHBhaXJzKSwgIlxuIik7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydEluc3RzKAotICAgICAgICAgICAg
ICAgICAgICBpbnN0SW5kZXgsIGVtaXRTaHVmZmxlKHBhaXJzLCBncFNjcmF0Y2gsIGZwU2NyYXRj
aCwgaW5zdC5vcmlnaW4pKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdEluZGV4LCBlbWl0U2h1
ZmZsZShjb2RlLCBwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qub3JpZ2luKSk7CiAK
ICAgICAgICAgICAgICAgICBpbnN0ID0gYnVpbGRDQ2FsbChjb2RlLCBpbnN0Lm9yaWdpbiwgZGVz
dGluYXRpb25zKTsKICAgICAgICAgICAgICAgICBpZiAob2xkS2luZC50cmFwcykKQEAgLTIyNCw3
ICsyMjMsNyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAgICAgICAg
ICAgICAgIGZwU2NyYXRjaCA9IGdldFNjcmF0Y2hlcyhsaXZlUmVncywgQXJnOjpGUCk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydEluc3RzKAot
ICAgICAgICAgICAgICAgICAgICBpbnN0SW5kZXggKyAxLCBlbWl0U2h1ZmZsZShwYWlycywgZ3BT
Y3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qub3JpZ2luKSk7CisgICAgICAgICAgICAgICAgICAgIGlu
c3RJbmRleCArIDEsIGVtaXRTaHVmZmxlKGNvZGUsIHBhaXJzLCBncFNjcmF0Y2gsIGZwU2NyYXRj
aCwgaW5zdC5vcmlnaW4pKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdpc3RlclByaW9yaXR5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlZ2lz
dGVyUHJpb3JpdHkuY3BwCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTA0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHkuaCIKLQot
I2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlICJSZWdpc3RlclNldC5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0KLWNvbnN0IFZlY3RvcjxH
UFJSZWc+JiBncHJzSW5Qcmlvcml0eU9yZGVyKCkKLXsKLSAgICBzdGF0aWMgVmVjdG9yPEdQUlJl
Zz4qIHJlc3VsdDsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKLSAgICBzdGQ6OmNh
bGxfb25jZSgKLSAgICAgICAgb25jZSwKLSAgICAgICAgW10gewotICAgICAgICAgICAgcmVzdWx0
ID0gbmV3IFZlY3RvcjxHUFJSZWc+KCk7Ci0gICAgICAgICAgICBSZWdpc3RlclNldCBhbGwgPSBS
ZWdpc3RlclNldDo6YWxsR1BScygpOwotICAgICAgICAgICAgYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAgICAgICAgICAgYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJT
ZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0gICAgICAgICAgICBSZWdpc3RlclNl
dCBjYWxsZWVTYXZlID0gUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICAg
ICAgICAgIGFsbC5mb3JFYWNoKAotICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoIWNhbGxlZVNhdmUuZ2V0KHJlZykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQtPmFwcGVuZChyZWcuZ3ByKCkpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgYWxsLmZvckVhY2goCi0gICAgICAgICAgICAgICAgWyZdIChSZWcgcmVn
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsZWVTYXZlLmdldChyZWcpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQocmVnLmdwcigpKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgcmV0dXJuICpyZXN1bHQ7Ci19Ci0KLWNvbnN0IFZl
Y3RvcjxGUFJSZWc+JiBmcHJzSW5Qcmlvcml0eU9yZGVyKCkKLXsKLSAgICBzdGF0aWMgVmVjdG9y
PEZQUlJlZz4qIHJlc3VsdDsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKLSAgICBz
dGQ6OmNhbGxfb25jZSgKLSAgICAgICAgb25jZSwKLSAgICAgICAgW10gewotICAgICAgICAgICAg
cmVzdWx0ID0gbmV3IFZlY3RvcjxGUFJSZWc+KCk7Ci0gICAgICAgICAgICBSZWdpc3RlclNldCBh
bGwgPSBSZWdpc3RlclNldDo6YWxsRlBScygpOwotICAgICAgICAgICAgUmVnaXN0ZXJTZXQgY2Fs
bGVlU2F2ZSA9IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAg
ICBhbGwuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjYWxsZWVTYXZlLmdldChyZWcpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LT5hcHBlbmQocmVnLmZwcigpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIGFsbC5mb3JFYWNoKAotICAgICAgICAgICAgICAgIFsmXSAoUmVnIHJlZykgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVlU2F2ZS5nZXQocmVnKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHJlZy5mcHIoKSk7Ci0gICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiAqcmVzdWx0OwotfQotCi1jb25zdCBWZWN0b3I8
UmVnPiYgcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OlR5cGUgdHlwZSkKLXsKLSAgICBzdGF0aWMg
VmVjdG9yPFJlZz4qIHJlc3VsdFtBcmc6Om51bVR5cGVzXTsKLSAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZTsKLSAgICBzdGQ6OmNhbGxfb25jZSgKLSAgICAgICAgb25jZSwKLSAgICAgICAg
W10gewotICAgICAgICAgICAgcmVzdWx0W0FyZzo6R1BdID0gbmV3IFZlY3RvcjxSZWc+KCk7Ci0g
ICAgICAgICAgICBmb3IgKEdQUlJlZyByZWcgOiBncHJzSW5Qcmlvcml0eU9yZGVyKCkpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0W0FyZzo6R1BdLT5hcHBlbmQoUmVnKHJlZykpOwotICAgICAgICAg
ICAgcmVzdWx0W0FyZzo6RlBdID0gbmV3IFZlY3RvcjxSZWc+KCk7Ci0gICAgICAgICAgICBmb3Ig
KEZQUlJlZyByZWcgOiBmcHJzSW5Qcmlvcml0eU9yZGVyKCkpCi0gICAgICAgICAgICAgICAgcmVz
dWx0W0FyZzo6RlBdLT5hcHBlbmQoUmVnKHJlZykpOwotICAgICAgICB9KTsKLSAgICByZXR1cm4g
KnJlc3VsdFt0eXBlXTsKLX0KLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0j
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyUmVnaXN0ZXJQcmlvcml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyUmVnaXN0ZXJQcmlvcml0eS5oCShyZXZpc2lvbiAyMDY5NjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShCM19KSVQpCi0K
LSNpbmNsdWRlICJBaXJBcmcuaCIKLSNpbmNsdWRlICJGUFJJbmZvLmgiCi0jaW5jbHVkZSAiR1BS
SW5mby5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1jb25zdCBWZWN0b3I8R1BSUmVnPiYgZ3Byc0lu
UHJpb3JpdHlPcmRlcigpOwotY29uc3QgVmVjdG9yPEZQUlJlZz4mIGZwcnNJblByaW9yaXR5T3Jk
ZXIoKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFuaz4gc3RydWN0IFJlZ2lzdGVyc0luUHJpb3Jp
dHlPcmRlcjsKLXRlbXBsYXRlPD4gc3RydWN0IFJlZ2lzdGVyc0luUHJpb3JpdHlPcmRlcjxHUFJJ
bmZvPiB7Ci0gICAgY29uc3QgVmVjdG9yPEdQUlJlZz4mIGluUHJpb3JpdHlPcmRlcigpIHsgcmV0
dXJuIGdwcnNJblByaW9yaXR5T3JkZXIoKTsgfQotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFJlZ2lz
dGVyc0luUHJpb3JpdHlPcmRlcjxGUFJJbmZvPiB7Ci0gICAgY29uc3QgVmVjdG9yPEZQUlJlZz4m
IGluUHJpb3JpdHlPcmRlcigpIHsgcmV0dXJuIGZwcnNJblByaW9yaXR5T3JkZXIoKTsgfQotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgQmFuaz4KLWNvbnN0IFZlY3Rvcjx0eXBlbmFtZSBCYW5rOjpS
ZWdpc3RlclR5cGU+JiByZWdzSW5Qcmlvcml0eU9yZGVyKCkKLXsKLSAgICByZXR1cm4gUmVnaXN0
ZXJzSW5Qcmlvcml0eU9yZGVyPEJhbms+OjppblByaW9yaXR5T3JkZXIoKTsKLX0KLQotSlNfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpU
eXBlKTsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
QWlyTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCi0jaW5jbHVkZSAiQWly
UmVnaXN0ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CkBAIC0xMjksNyArMTI4LDcg
QEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpVc2U6CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpDb2xkVXNlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChSZWcgcmVnIDogcmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKHR5
cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXRCZWZvcmUuZ2V0KHJl
ZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QmVmb3JlLnNldChyZWcp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5SZWcgPSByZWc7CkBAIC0x
MzksNyArMTM4LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RGVm
OgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6WkRlZjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAoUmVnIHJlZyA6IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlPcmRl
cih0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2V0QWZ0ZXIuZ2V0
KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0ZXIuc2V0KHJl
Zyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob3NlblJlZyA9IHJlZzsKQEAg
LTE1Myw3ICsxNTIsNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZUNvbGRVc2U6CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6RWFybHlE
ZWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdzSW5Qcmlvcml0
eU9yZGVyKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBj
b2RlLnJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0QWZ0ZXIuZ2V0KHJlZykpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0ZXIuc2V0KHJlZyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJlZm9yZS5zZXQocmVnKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAkocmV2aXNpb24gMjA2OTYzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJBaXJHZW5l
cmF0ZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQWlyUmVnaXN0
ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5o
IgogI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgpA
QCAtMzkzLDcgKzM5Miw3IEBAIHZvaWQgdGVzdFNodWZmbGVCcm9hZGNhc3RBbGxSZWdzKCkKICAg
ICBCMzo6UHJvY2VkdXJlIHByb2M7CiAgICAgQ29kZSYgY29kZSA9IHByb2MuY29kZSgpOwogCi0g
ICAgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1Ap
OworICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzID0gY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVy
KEFyZzo6R1ApOwogCiAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKICAg
ICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjppbW0oMzUpLCBUbXAoR1BSSW5mbzo6
cmVnVDApKTsKQEAgLTg2MCw3ICs4NTksNyBAQCB2b2lkIHRlc3RTaHVmZmxlU2hpZnRBbGxSZWdz
KCkKICAgICBCMzo6UHJvY2VkdXJlIHByb2M7CiAgICAgQ29kZSYgY29kZSA9IHByb2MuY29kZSgp
OwogCi0gICAgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFy
Zzo6R1ApOworICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzID0gY29kZS5yZWdzSW5Qcmlvcml0
eU9yZGVyKEFyZzo6R1ApOwogCiAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2so
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVncy5zaXplKCk7ICsraSkKQEAgLTg5
Niw3ICs4OTUsNyBAQCB2b2lkIHRlc3RTaHVmZmxlUm90YXRlQWxsUmVncygpCiAgICAgQjM6OlBy
b2NlZHVyZSBwcm9jOwogICAgIENvZGUmIGNvZGUgPSBwcm9jLmNvZGUoKTsKIAotICAgIGNvbnN0
IFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsKKyAgICBj
b25zdCBWZWN0b3I8UmVnPiYgcmVncyA9IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQ
KTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJlZ3Muc2l6ZSgpOyArK2kpCkBAIC0xMTY4LDcgKzExNjcsNyBA
QCB2b2lkIHRlc3RTaHVmZmxlU2hpZnRNZW1vcnlBbGxSZWdzKCkKICAgICBtZW1vcnlbMF0gPSAz
NTsKICAgICBtZW1vcnlbMV0gPSAzNjsKIAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Q
cmlvcml0eU9yZGVyKEFyZzo6R1ApOworICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ3NJ
blByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CiAgICAgcmVncy5yZW1vdmVGaXJzdChSZWcoR1BSSW5m
bzo6cmVnVDApKTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CkBA
IC0xMjE4LDcgKzEyMTcsNyBAQCB2b2lkIHRlc3RTaHVmZmxlU2hpZnRNZW1vcnlBbGxSZWdzNjQo
KQogICAgIG1lbW9yeVswXSA9IDM1MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVtb3J5WzFdID0gMzYw
MDAwMDAwMDAwMDBsbDsKIAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9y
ZGVyKEFyZzo6R1ApOworICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5
T3JkZXIoQXJnOjpHUCk7CiAgICAgcmVncy5yZW1vdmVGaXJzdChSZWcoR1BSSW5mbzo6cmVnVDAp
KTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CkBAIC0xMjc5LDcg
KzEyNzgsNyBAQCB2b2lkIHRlc3RTaHVmZmxlU2hpZnRNZW1vcnlBbGxSZWdzTWl4ZWRXCiAgICAg
bWVtb3J5WzBdID0gMzUwMDAwMDAwMDAwMDBsbDsKICAgICBtZW1vcnlbMV0gPSAzNjAwMDAwMDAw
MDAwMGxsOwogCi0gICAgVmVjdG9yPFJlZz4gcmVncyA9IHJlZ3NJblByaW9yaXR5T3JkZXIoQXJn
OjpHUCk7CisgICAgVmVjdG9yPFJlZz4gcmVncyA9IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihB
cmc6OkdQKTsKICAgICByZWdzLnJlbW92ZUZpcnN0KFJlZyhHUFJJbmZvOjpyZWdUMCkpOwogCiAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKQEAgLTE0NjksNyArMTQ2OCw3
IEBAIHZvaWQgdGVzdFNodWZmbGVSb3RhdGVNZW1vcnlBbGxSZWdzNjQoKQogICAgIG1lbW9yeVsw
XSA9IDM1MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVtb3J5WzFdID0gMzYwMDAwMDAwMDAwMDBsbDsK
IAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOwor
ICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7
CiAgICAgcmVncy5yZW1vdmVGaXJzdChSZWcoR1BSSW5mbzo6cmVnVDApKTsKIAogICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CkBAIC0xNTIxLDcgKzE1MjAsNyBAQCB2b2lk
IHRlc3RTaHVmZmxlUm90YXRlTWVtb3J5QWxsUmVnc01peGVkCiAgICAgbWVtb3J5WzBdID0gMzUw
MDAwMDAwMDAwMDBsbDsKICAgICBtZW1vcnlbMV0gPSAzNjAwMDAwMDAwMDAwMGxsOwogCi0gICAg
VmVjdG9yPFJlZz4gcmVncyA9IHJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CisgICAgVmVj
dG9yPFJlZz4gcmVncyA9IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsKICAgICBy
ZWdzLnJlbW92ZUZpcnN0KFJlZyhHUFJJbmZvOjpyZWdUMCkpOwogCiAgICAgQmFzaWNCbG9jayog
cm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyU2V0LmgJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVnaXN0ZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ2lzdGVyU2V0IHJlc2VydmVkSGFyZHdh
cmVSZWdpc3RlcnMoKTsKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGltZVJlZ2lzdGVycygp
OwogICAgIHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7IC8vIFRoZSB1bmlv
biBvZiBzdGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJlZ2lzdGVycy4KLSAg
ICBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAgICAg
c3RhdGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBDYWxsZWUgc2F2
ZSByZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBhbnkgdGllci4KICAg
ICBzdGF0aWMgUmVnaXN0ZXJTZXQgbGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKTsg
Ly8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBMTEludC4KICAgICBzdGF0aWMgUmVn
aXN0ZXJTZXQgZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3RlcnMgc2F2ZWQgYW5k
IHVzZWQgYnkgdGhlIERGRyBKSVQuCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHNp
emVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKICAgICBzaXplX3QgbnVtYmVyT2ZTZXRSZWdp
c3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQogICAgIAotICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKICAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBF
bXB0eVZhbHVlIH07CiAgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291107</attachid>
            <date>2016-10-10 08:44:26 -0700</date>
            <delta_ts>2016-10-10 09:39:17 -0700</delta_ts>
            <desc>fix win build</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>42077</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2OTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDE2LTEwLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyIHNob3VsZCBleHBvc2UgQVBJIGZvciBwaW5uaW5nIHJlZ2lzdGVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMTc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBZb3UgY2FuIG5vdyBj
YWxsIFByb2NlZHVyZTo6cGluUmVnaXN0ZXIoKSwgb3IgQ29kZTo6cGluUmVnaXN0ZXIoKSwgYW5k
IGl0IHdpbGwgbWFrZSB0aGlzCisgICAgICAgIHJlZ2lzdGVyIGJlaGF2ZSBhcyBmb2xsb3dzOgor
ICAgICAgICAKKyAgICAgICAgLSBCMyBhbmQgQWlyIHdpbGwgZW1pdCBubyBjb2RlIHRoYXQgbW9k
aWZpZXMgdGhlIHZhbHVlIGluIHRoaXMgcmVnaXN0ZXIsIGV4Y2VwdCBpZiB0aGF0CisgICAgICAg
ICAgaGFwcGVucyB2aWEgYSBQYXRjaHBvaW50IG9yIHN0YWNrbWFwIGNvbnN0cmFpbnQgKGkuZS4g
dGhlIHVzZXIgZXhwbGljaXRseSBhc2tlZCBmb3IgaXQpLgorICAgICAgICAtIEIzIGFuZCBBaXIg
d2lsbCBhbGxvdyBvdGhlcnMgdG8gbW9kaWZ5IHRoZSByZWdpc3Rlci4gRm9yIGV4YW1wbGUsIGlm
IHRoZSByZWdpc3RlciBpcyBub3QKKyAgICAgICAgICBjYWxsZWUtc2F2ZSwgdGhlbiB0aGUgY29t
cGlsZXIga25vd3MgdGhhdCB0aGUgcmVnaXN0ZXIncyB2YWx1ZSB3aWxsIGJlIHRyYXNoZWQgYnkg
YW55CisgICAgICAgICAgQy1zdHlsZSBjYWxsLgorICAgICAgICAtIEFpciB3aWxsIGJlIGhhcHB5
IHRvIGVtaXQgY29kZSB0aGF0IHJlYWRzIGZyb20gdGhpcyByZWdpc3RlciwgaW5jbHVkaW5nIGNv
YWxlc2NpbmcgdG1wcworICAgICAgICAgIHdpdGggaXQsIHNvIGxvbmdlciBhcyB0aGVyZSBpcyBu
byBpbnRlcmZlcmVuY2UgKGkuZS4gbm8gY2hhbmNlIG9mIHRoZSByZWdpc3RlcidzIHZhbHVlCisg
ICAgICAgICAgY2hhbmdpbmcpLiBGb3IgZXhhbXBsZSwgaWYgd2Ugd2VudCBiYWNrIHRvIGhhdmlu
ZyBwaW5uZWQgdGFnIHJlZ2lzdGVycywgd2Ugd291bGQgdGVsbCBCMworICAgICAgICAgIHRvIHVz
ZSB0aGVtIGJ5ICgxKSBleGNsdWRpbmcgdGhlbSBmcm9tIGFueSBjbG9iYmVyIHNldCAoZWFzeSwg
c2luY2UgdGhleSdyZSBjYWxsZWUgc2F2ZSkKKyAgICAgICAgICBhbmQgKDIpIGVtaXR0aW5nIEFy
Z3VtZW50UmVnIHRvIGdyYWIgdGhlaXIgdmFsdWUuIFRoZXJlJ3MgYSB0ZXN0IHRoYXQgZG9lcyB0
aGlzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgdGFraW5nIHJl
Z3NJblByaW9yaXR5T3JkZXIoKSBhbmQgbWFraW5nIGl0IGEgbWV0aG9kIG9mIENvZGUuIEFpciAK
KyAgICAgICAgYWxyZWFkeSB1c2VkIHRoaXMgQVBJIHdoZW4gY2hvb3NpbmcgcmVnaXN0ZXJzIGlu
IHJlZ2lzdGVyIGFsbG9jYXRpb24uIENvZGUgbm93IGFsc28gdmVuZHMgYQorICAgICAgICBtdXRh
YmxlUmVncygpIHNldCwgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHJlZ3NJblByaW9yaXR5T3JkZXIo
KSwgdGhhdCBjYW4gcXVpY2tseSB0ZWxsIHlvdSBpZgorICAgICAgICBhIHJlZ2lzdGVyIGNhbiBi
ZSBtdXRhdGVkLiBEb2luZyBpdCB0aGlzIHdheSBtZWFucyB0aGF0IG1vc3Qgb2YgdGhpcyBpcyBh
IHB1cmVseSBtZWNoYW5pY2FsCisgICAgICAgIGNoYW5nZS4gVGhlIGNhbGxzIHRvIG11dGFibGVS
ZWdzKCkgYXJlIHRoZSBwbGFjZXMgd2hlcmUgd2UgaGFkIHRvIGNoYW5nZSBsb2dpYzoKKyAgICAg
ICAgCisgICAgICAgIC0gVGhlIHJlZ2lzdGVyIGFsbG9jYXRvcnMgbmVlZHMgdG8ga25vdyB0aGF0
IGNvYWxlc2Npbmcgd2l0aCBhIHByZWNvbG9yZWQgcGlubmVkIHRtcCBpcyBmcmVlLgorICAgICAg
ICAtIFRoZSBjYWxsZWUtc2F2ZSBoYW5kbGVyIG5lZWRzIHRvIGtub3cgdGhhdCB3ZSdyZSBub3Qg
c3VwcG9zZWQgdG8gc2F2ZS9yZXN0b3JlIHBpbm5lZAorICAgICAgICAgIHJlZ2lzdGVycy4KKyAg
ICAgICAgCisgICAgICAgIE5vdGUgdGhhdCBpbiB0aGlzIHNjaGVtZSwgcGlubmVkIHJlZ2lzdGVy
cyBhcmUgc2ltcGx5IHJlZ2lzdGVycyB0aGF0IGRvIG5vdCBhcHBlYXIgaW4KKyAgICAgICAgcmVn
c0luUHJpb3JpdHlPcmRlcigpLiBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCB3ZSB3aWxs
IG5vdyBzYXkgdGhhdCBGUCBpcyBwaW5uZWQuIFNvLAorICAgICAgICB0aGlzIG1lYW5zIHRoYXQg
eW91IGNhbiBhbHNvIHBpbiByZWdpc3RlcnMgYnkgY2FsbGluZyBzZXRSZWdzSW5Qcmlvcml0eU9y
ZGVyKCkgYW5kIHBhc3NpbmcgYQorICAgICAgICB2ZWN0b3IgdGhhdCBleGNsdWRlcyBzb21lIHJl
Z2lzdGVycy4gTW9yZSBnZW5lcmFsbHksIHRoaXMgbWVhbnMgdGhhdCBjbGllbnRzIGNhbiBub3cg
dHdlYWsKKyAgICAgICAgdGhlIHJlZ2lzdGVyIGFsbG9jYXRvcidzIHJlZ2lzdGVyIHByZWZlcmVu
Y2VzLCBzaW5jZSB0aGUgb3JkZXJpbmcgaW4gdGhhdCBsaXN0IHJlZmxlY3RzIHRoZQorICAgICAg
ICBvcmRlciBpbiB3aGljaCB0aGUgYWxsb2NhdG9yIHdpbGwgdHJ5IHJlZ2lzdGVycy4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpwaW5SZWdpc3Rlcik6CisgICAgICAgICogYjMvQjNQcm9j
ZWR1cmUuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkNvZGU6OkNvZGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpzZXRSZWdz
SW5Qcmlvcml0eU9yZGVyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29kZTo6cGluUmVnaXN0
ZXIpOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OkNvZGU6OnJlZ3NJblByaW9yaXR5T3JkZXIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2Rl
OjptdXRhYmxlUmVncyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNvZGU6OmlzUGlubmVkKToK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29kZTo6cmVnc0luUHJpb3JpdHlPcmRlckltcGwpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpDb2RlOjpwcm9jKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9haXIvQWlyRW1pdFNodWZmbGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjplbWl0U2h1
ZmZsZSk6CisgICAgICAgICogYjMvYWlyL0FpckVtaXRTaHVmZmxlLmg6CisgICAgICAgICogYjMv
YWlyL0FpckhhbmRsZUNhbGxlZVNhdmVzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aGFu
ZGxlQ2FsbGVlU2F2ZXMpOgorICAgICAgICAqIGIzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29h
bGVzY2luZy5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Omxvd2VyQWZ0ZXJSZWdBbGxvYyk6CisgICAgICAgICog
YjMvYWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGIzL2Fp
ci9BaXJSZWdpc3RlclByaW9yaXR5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYjMvYWlyL0FpclNw
aWxsRXZlcnl0aGluZy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnNwaWxsRXZlcnl0aGlu
Zyk6CisgICAgICAgICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
Ojp0ZXN0U2h1ZmZsZUJyb2FkY2FzdEFsbFJlZ3MpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjp0
ZXN0U2h1ZmZsZVNoaWZ0QWxsUmVncyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVm
ZmxlUm90YXRlQWxsUmVncyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlU2hp
ZnRNZW1vcnlBbGxSZWdzKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6dGVzdFNodWZmbGVTaGlm
dE1lbW9yeUFsbFJlZ3M2NCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RTaHVmZmxlU2hp
ZnRNZW1vcnlBbGxSZWdzTWl4ZWRXaWR0aCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnRlc3RT
aHVmZmxlUm90YXRlTWVtb3J5QWxsUmVnczY0KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6dGVz
dFNodWZmbGVSb3RhdGVNZW1vcnlBbGxSZWdzTWl4ZWRXaWR0aCk6CisgICAgICAgICogYjMvdGVz
dGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RQaW5SZWdpc3RlcnMpOgorICAgICAgICAo
SlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuaDoKKwogMjAxNi0xMC0w
OCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNJbmRleGVk
UHJvcGVydHkgY2xvYmJlcml6ZSBydWxlIGlzIHdyb25nIGZvciBBcnJheTo6Rm9yY2VPU1JFeGl0
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDY5NjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDcgKzk2LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9haXIv
QWlyTG93ZXJNYWNyb3MuY3BwCiAgICAgYjMvYWlyL0Fpck9wdGltaXplQmxvY2tPcmRlci5jcHAK
ICAgICBiMy9haXIvQWlyUGhhc2VTY29wZS5jcHAKLSAgICBiMy9haXIvQWlyUmVnaXN0ZXJQcmlv
cml0eS5jcHAKICAgICBiMy9haXIvQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAKICAgICBiMy9h
aXIvQWlyU2ltcGxpZnlDRkcuY3BwCiAgICAgYjMvYWlyL0FpclNwZWNpYWwuY3BwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2OTYzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTg3NSw4ICs4NzUsNiBAQAogCQkwRkVDODU4MTFCREFDREM3MDA4MEZG
NzQgLyogQWlySW5zdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUM4NTVDMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJJbnN0SW5saW5lcy5o
ICovOyB9OwogCQkwRkVDODU4MzFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU1RTFC
REFDREM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAgKi87IH07CiAJCTBGRUM4NTg0MUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU1RjFCREFDREM3MDA4MEZGNzQgLyogQWlyUGhh
c2VTY29wZS5oICovOyB9OwotCQkwRkVDODU4NTFCREFDREM3MDA4MEZGNzQgLyogQWlyUmVnaXN0
ZXJQcmlvcml0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkVDODU2MDFCREFDREM3MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5jcHAg
Ki87IH07Ci0JCTBGRUM4NTg2MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJSZWdpc3RlclByaW9yaXR5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2
MTFCREFDREM3MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5oICovOyB9OwogCQkwRkVD
ODU4NzFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODU2MjFCREFDREM3MDA4MEZGNzQgLyog
QWlyU3BlY2lhbC5jcHAgKi87IH07CiAJCTBGRUM4NTg4MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJT
cGVjaWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkVDODU2MzFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5oICovOyB9OwogCQkwRkVDODU4
OTFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BpbGxFdmVyeXRoaW5nLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NTY0MUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwICovOyB9OwpAQCAtMzE1MSw4ICszMTQ5LDYgQEAK
IAkJMEZFQzg1NUMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckluc3RJbmxpbmVzLmg7IHBhdGggPSBiMy9haXIv
QWlySW5zdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1NUUx
QkRBQ0RDNzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyUGhhc2VTY29wZS5jcHA7IHBhdGggPSBiMy9haXIvQWlyUGhh
c2VTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NTVGMUJEQUNE
QzcwMDgwRkY3NCAvKiBBaXJQaGFzZVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEFpclBoYXNlU2NvcGUuaDsgcGF0aCA9IGIzL2Fpci9BaXJQaGFzZVNjb3BlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRUM4NTYwMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJSZWdpc3RlclByaW9yaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFpclJlZ2lzdGVyUHJpb3JpdHkuY3BwOyBwYXRoID0gYjMvYWlyL0FpclJlZ2lzdGVyUHJp
b3JpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkVDODU2MTFCREFDREM3
MDA4MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBBaXJSZWdpc3RlclByaW9yaXR5Lmg7IHBhdGggPSBiMy9haXIvQWlyUmVnaXN0
ZXJQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODU2MjFCREFD
REM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBBaXJTcGVjaWFsLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJTcGVjaWFsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg1NjMxQkRBQ0RDNzAwODBGRjc0IC8q
IEFpclNwZWNpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyU3BlY2lh
bC5oOyBwYXRoID0gYjMvYWlyL0FpclNwZWNpYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZFQzg1NjQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclNwaWxsRXZlcnl0aGluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJTcGlsbEV2ZXJ5dGhpbmcu
Y3BwOyBwYXRoID0gYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01MDYzLDggKzUwNTksNiBAQAogCQkJCTBGQjM4NzhEMUJGQkM0NEQw
MEUzQUIxRSAvKiBBaXJPcHRpbWl6ZUJsb2NrT3JkZXIuaCAqLywKIAkJCQkwRkVDODU1RTFCREFD
REM3MDA4MEZGNzQgLyogQWlyUGhhc2VTY29wZS5jcHAgKi8sCiAJCQkJMEZFQzg1NUYxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuaCAqLywKLQkJCQkwRkVDODU2MDFCREFDREM3MDA4
MEZGNzQgLyogQWlyUmVnaXN0ZXJQcmlvcml0eS5jcHAgKi8sCi0JCQkJMEZFQzg1NjExQkRBQ0RD
NzAwODBGRjc0IC8qIEFpclJlZ2lzdGVyUHJpb3JpdHkuaCAqLywKIAkJCQkwRjQ1NzAzQTFCRTQ1
RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAgKi8sCiAJCQkJMEY0NTcw
M0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAqLywKIAkJCQkw
RjMzOERGQjFCRUQ1MTI3MDAxM0M4OEYgLyogQWlyU2ltcGxpZnlDRkcuY3BwICovLApAQCAtNzI2
MCw3ICs3MjU0LDYgQEAKIAkJCQkwRkVDODU4MDFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1ODExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3RJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU4NDFCREFDREM3MDA4MEZGNzQgLyog
QWlyUGhhc2VTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZFQzg1ODYxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpclJlZ2lzdGVyUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDU3MDNE
MUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODU4ODFCREFDREM3MDA4MEZGNzQgLyogQWlyU3BlY2lhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQzg1OEExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclNwaWxsRXZlcnl0aGlu
Zy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDAxLDcgKzg5OTQsNiBAQAogCQkJCTBGRUM4NTdEMUJE
QUNEQzcwMDgwRkY3NCAvKiBBaXJJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZFQzg1N0YxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckluc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZFQzg1ODMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclBoYXNlU2NvcGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMEZFQzg1ODUxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclJlZ2lzdGVyUHJpb3Jp
dHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NTcwM0MxQkU0NUYwQTAwNjJBNjI5IC8qIEFp
clJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1ODcxQkRB
Q0RDNzAwODBGRjc0IC8qIEFpclNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1
ODkxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclNwaWxsRXZlcnl0aGluZy5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAkocmV2aXNp
b24gMjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA1LDYgKzMwNSwxMSBAQCB2b2lkIFByb2NlZHVyZTo6cmVxdWVz
dENhbGxBcmdBcmVhU2l6ZUluCiAgICAgY29kZSgpLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5
dGVzKHNpemUpOwogfQogCit2b2lkIFByb2NlZHVyZTo6cGluUmVnaXN0ZXIoUmVnIHJlZykKK3sK
KyAgICBjb2RlKCkucGluUmVnaXN0ZXIocmVnKTsKK30KKwogdW5zaWduZWQgUHJvY2VkdXJlOjpm
cmFtZVNpemUoKSBjb25zdAogewogICAgIHJldHVybiBjb2RlKCkuZnJhbWVTaXplKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkocmV2aXNpb24gMjA2OTYzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxMiw4ICsyMTIsMTEgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNhbGxBcmdBcmVhU2l6
ZUluQnl0ZXMoKSBjb25zdDsKICAgICB2b2lkIHJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVz
KHVuc2lnbmVkIHNpemUpOwogCisgICAgLy8gVGhpcyB0ZWxscyB0aGUgcmVnaXN0ZXIgYWxsb2Nh
dG9ycyB0byBzdGF5IGF3YXkgZnJvbSB0aGlzIHJlZ2lzdGVyLgorICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcGluUmVnaXN0ZXIoUmVnKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHVuc2ln
bmVkIGZyYW1lU2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0JiBj
YWxsZWVTYXZlUmVnaXN0ZXJzKCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldExpc3QmIGNhbGxlZVNhdmVSZWdpc3RlcnMoKSBjb25zdDsKIAogICAg
IFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAoKSB7IHJldHVybiBtX3BjVG9PcmlnaW5NYXA7
IH0KICAgICBQQ1RvT3JpZ2luTWFwIHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkgeyByZXR1cm4gV1RG
TW92ZShtX3BjVG9PcmlnaW5NYXApOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAkocmV2aXNpb24gMjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMzI3LDYgKzEzMzI3LDYwIEBAIHZvaWQgdGVzdFBD
T3JpZ2luTWFwRG9lc250SW5zZXJ0Tm9wcygpCiAgICAgY29tcGlsZShwcm9jKTsKIH0KIAordm9p
ZCB0ZXN0UGluUmVnaXN0ZXJzKCkKK3sKKyAgICBhdXRvIGdvID0gWyZdIChib29sIHBpbikgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgUmVnaXN0ZXJTZXQgY3NyczsKKyAgICAg
ICAgY3Nycy5tZXJnZShSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICAg
ICAgY3Nycy5leGNsdWRlKFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsKKyAgICAgICAg
aWYgKHBpbikgeworICAgICAgICAgICAgY3Nycy5mb3JFYWNoKAorICAgICAgICAgICAgICAgIFsm
XSAoUmVnIHJlZykgeworICAgICAgICAgICAgICAgICAgICBwcm9jLnBpblJlZ2lzdGVyKHJlZyk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgVmFsdWUqIGEgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgIFZhbHVlKiBiID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1ZSogYyA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgVmFsdWUqIGQgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OnJlZ0NTMCk7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFZvaWQsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHgxMjM0KSkpOworICAgICAgICByb290
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBWb2lkLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmln
aW4oKSwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4MTIzNSkpLAorICAgICAgICAgICAgYSwgYiwg
Yyk7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIFZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGQpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocGFyYW1z
WzBdLmdwcigpLCBHUFJJbmZvOjpyZWdDUzApOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSk7CisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisgICAgICAgIGJvb2wgdXNlc0NTUnMgPSBmYWxzZTsK
KyAgICAgICAgZm9yIChBaXI6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGluc3Qua2luZC5vcGNvZGUgPT0gQWlyOjpQYXRjaCAmJiBpbnN0Lm9yaWdpbiA9PSBw
YXRjaHBvaW50KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICBpbnN0LmZvckVhY2hUbXBGYXN0KAorICAgICAgICAgICAgICAgICAgICBbJl0gKEFpcjo6VG1w
IHRtcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC5pc1JlZygpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzZXNDU1JzIHw9IGNzcnMuZ2V0KHRtcC5yZWcoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGZvciAoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgcmVnQXRPZmZzZXQgOiBwcm9jLmNhbGxlZVNh
dmVSZWdpc3RlcnMoKSkKKyAgICAgICAgICAgIHVzZXNDU1JzIHw9IGNzcnMuZ2V0KHJlZ0F0T2Zm
c2V0LnJlZygpKTsKKyAgICAgICAgQ0hFQ0tfRVEodXNlc0NTUnMsICFwaW4pOworICAgIH07Cisg
ICAgCisgICAgZ28odHJ1ZSk7CisgICAgZ28oZmFsc2UpOworfQorCiAvLyBNYWtlIHN1cmUgdGhl
IGNvbXBpbGVyIGRvZXMgbm90IHRyeSB0byBvcHRpbWl6ZSBhbnl0aGluZyBvdXQuCiBORVZFUl9J
TkxJTkUgZG91YmxlIHplcm8oKQogewpAQCAtMTQ3NzQsNiArMTQ4MjgsNyBAQCB2b2lkIHJ1bihj
b25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RUcmFwcGluZ1N0b3JlRWxpbWluYXRpb24o
KSk7CiAgICAgUlVOKHRlc3RNb3ZlQ29uc3RhbnRzKCkpOwogICAgIFJVTih0ZXN0UENPcmlnaW5N
YXBEb2VzbnRJbnNlcnROb3BzKCkpOworICAgIFJVTih0ZXN0UGluUmVnaXN0ZXJzKCkpOwogICAg
IAogICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzYWdlKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAJKHJldmlzaW9uIDIwNjk2MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDEyICs0MCw1MSBAQCBDb2RlOjpDb2RlKFByb2NlZHVyZSYgcHJvYykKICAgICA6IG1f
cHJvYyhwcm9jKQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKIHsKKyAgICAvLyBD
b21lIHVwIHdpdGggaW5pdGlhbCBvcmRlcmluZ3Mgb2YgcmVnaXN0ZXJzLiBUaGUgdXNlciBtYXkg
cmVwbGFjZSB0aGlzIHdpdGggc29tZXRoaW5nIGVsc2UuCisgICAgQXJnOjpmb3JFYWNoVHlwZSgK
KyAgICAgICAgWyZdIChBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgVmVjdG9yPFJlZz4g
cmVzdWx0OworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgYWxsID0gdHlwZSA9PSBBcmc6OkdQID8g
UmVnaXN0ZXJTZXQ6OmFsbEdQUnMoKSA6IFJlZ2lzdGVyU2V0OjphbGxGUFJzKCk7CisgICAgICAg
ICAgICBhbGwuZXhjbHVkZShSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSk7CisgICAgICAg
ICAgICBhbGwuZXhjbHVkZShSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycygp
KTsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmUgPSBSZWdpc3RlclNldDo6Y2Fs
bGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAgICAgICAgYWxsLmZvckVhY2goCisgICAgICAgICAg
ICAgICAgWyZdIChSZWcgcmVnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVlU2F2
ZS5nZXQocmVnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVnKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFsbC5mb3JFYWNoKAorICAgICAgICAg
ICAgICAgIFsmXSAoUmVnIHJlZykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVlU2F2
ZS5nZXQocmVnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVnKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHNldFJlZ3NJblByaW9yaXR5T3JkZXIo
dHlwZSwgcmVzdWx0KTsKKyAgICAgICAgfSk7CiB9CiAKIENvZGU6On5Db2RlKCkKIHsKIH0KIAor
dm9pZCBDb2RlOjpzZXRSZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6VHlwZSB0eXBlLCBjb25zdCBW
ZWN0b3I8UmVnPiYgcmVncykKK3sKKyAgICByZWdzSW5Qcmlvcml0eU9yZGVySW1wbCh0eXBlKSA9
IHJlZ3M7CisgICAgbV9tdXRhYmxlUmVncyA9IFJlZ2lzdGVyU2V0KCk7CisgICAgQXJnOjpmb3JF
YWNoVHlwZSgKKyAgICAgICAgWyZdIChBcmc6OlR5cGUgdHlwZSkgeworICAgICAgICAgICAgZm9y
IChSZWcgcmVnIDogcmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkKKyAgICAgICAgICAgICAgICBt
X211dGFibGVSZWdzLnNldChyZWcpOworICAgICAgICB9KTsKK30KKwordm9pZCBDb2RlOjpwaW5S
ZWdpc3RlcihSZWcgcmVnKQoreworICAgIFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3Jp
dHlPcmRlckltcGwoQXJnKFRtcChyZWcpKS50eXBlKCkpOworICAgIHJlZ3MucmVtb3ZlRmlyc3Qo
cmVnKTsKKyAgICBtX211dGFibGVSZWdzLmNsZWFyKHJlZyk7CisgICAgQVNTRVJUKCFyZWdzLmNv
bnRhaW5zKHJlZykpOworfQorCiBCYXNpY0Jsb2NrKiBDb2RlOjphZGRCbG9jayhkb3VibGUgZnJl
cXVlbmN5KQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFz
aWNCbG9jayhtX2Jsb2Nrcy5zaXplKCksIGZyZXF1ZW5jeSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Mywy
NyBAQCBwdWJsaWM6CiAgICAgfkNvZGUoKTsKIAogICAgIFByb2NlZHVyZSYgcHJvYygpIHsgcmV0
dXJuIG1fcHJvYzsgfQorICAgIAorICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzSW5Qcmlvcml0
eU9yZGVyKEFyZzo6VHlwZSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgICAgIGNhc2UgQXJnOjpHUDoKKyAgICAgICAgICAgIHJldHVybiBtX2dwUmVnc0lu
UHJpb3JpdHlPcmRlcjsKKyAgICAgICAgY2FzZSBBcmc6OkZQOgorICAgICAgICAgICAgcmV0dXJu
IG1fZnBSZWdzSW5Qcmlvcml0eU9yZGVyOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFJlZ3NJblByaW9yaXR5T3JkZXIo
QXJnOjpUeXBlLCBjb25zdCBWZWN0b3I8UmVnPiYpOworICAgIAorICAgIC8vIFRoaXMgaXMgdGhl
IHNldCBvZiByZWdpc3RlcnMgdGhhdCBBaXIgaXMgYWxsb3dlZCB0byBlbWl0IGNvZGUgdG8gbXV0
YXRlLiBJdCdzIGRlcml2ZWQgZnJvbQorICAgIC8vIHJlZ3NJblByaW9yaXR5T3JkZXIuIEFueSBy
ZWdpc3RlcnMgbm90IGluIHRoaXMgc2V0IGFyZSBzYWlkIHRvIGJlICJwaW5uZWQiLgorICAgIGNv
bnN0IFJlZ2lzdGVyU2V0JiBtdXRhYmxlUmVncygpIGNvbnN0IHsgcmV0dXJuIG1fbXV0YWJsZVJl
Z3M7IH0KKyAgICAKKyAgICBib29sIGlzUGlubmVkKFJlZyByZWcpIGNvbnN0IHsgcmV0dXJuICFt
dXRhYmxlUmVncygpLmdldChyZWcpOyB9CisgICAgCisgICAgdm9pZCBwaW5SZWdpc3RlcihSZWcp
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQmFzaWNCbG9jayogYWRkQmxvY2soZG91YmxlIGZy
ZXF1ZW5jeSA9IDEpOwogCkBAIC0yNTAsNyArMjcxLDIxIEBAIHByaXZhdGU6CiAgICAgCiAgICAg
Q29kZShQcm9jZWR1cmUmKTsKIAorICAgIFZlY3RvcjxSZWc+JiByZWdzSW5Qcmlvcml0eU9yZGVy
SW1wbChBcmc6OlR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAg
ICAgICBjYXNlIEFyZzo6R1A6CisgICAgICAgICAgICByZXR1cm4gbV9ncFJlZ3NJblByaW9yaXR5
T3JkZXI7CisgICAgICAgIGNhc2UgQXJnOjpGUDoKKyAgICAgICAgICAgIHJldHVybiBtX2ZwUmVn
c0luUHJpb3JpdHlPcmRlcjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsgLy8gU29tZSBtZXRhLWRhdGEsIGxp
a2UgYnlwcm9kdWN0cywgaXMgc3RvcmVkIGluIHRoZSBQcm9jZWR1cmUuCisgICAgVmVjdG9yPFJl
Zz4gbV9ncFJlZ3NJblByaW9yaXR5T3JkZXI7CisgICAgVmVjdG9yPFJlZz4gbV9mcFJlZ3NJblBy
aW9yaXR5T3JkZXI7CisgICAgUmVnaXN0ZXJTZXQgbV9tdXRhYmxlUmVnczsKICAgICBTcGFyc2VD
b2xsZWN0aW9uPFN0YWNrU2xvdD4gbV9zdGFja1Nsb3RzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QmFzaWNCbG9jaz4+IG1fYmxvY2tzOwogICAgIFNwYXJzZUNvbGxlY3Rpb248U3BlY2lh
bD4gbV9zcGVjaWFsczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1p
dFNodWZmbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRW1pdFNodWZmbGUuY3BwCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCAr
MjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkFpckNvZGUuaCIKICNp
bmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHku
aCIKICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTGlz
dER1bXAuaD4KIApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgewogYm9vbCB2ZXJib3NlID0g
ZmFsc2U7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci1UbXAgZmluZFBvc3NpYmxlU2Ny
YXRjaChBcmc6OlR5cGUgdHlwZSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgewotICAgIGZvciAo
UmVnIHJlZyA6IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKK1RtcCBmaW5kUG9zc2libGVT
Y3JhdGNoKENvZGUmIGNvZGUsIEFyZzo6VHlwZSB0eXBlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KSB7CisgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7
CiAgICAgICAgIFRtcCB0bXAocmVnKTsKICAgICAgICAgaWYgKGZ1bmN0b3IodG1wKSkKICAgICAg
ICAgICAgIHJldHVybiB0bXA7CkBAIC00OSw5ICs0OSw5IEBAIFRtcCBmaW5kUG9zc2libGVTY3Jh
dGNoKEFyZzo6VHlwZSB0eXBlLCAKICAgICByZXR1cm4gVG1wKCk7CiB9CiAKLVRtcCBmaW5kUG9z
c2libGVTY3JhdGNoKEFyZzo6VHlwZSB0eXBlLCBjb25zdCBBcmcmIGFyZzEsIGNvbnN0IEFyZyYg
YXJnMikgeworVG1wIGZpbmRQb3NzaWJsZVNjcmF0Y2goQ29kZSYgY29kZSwgQXJnOjpUeXBlIHR5
cGUsIGNvbnN0IEFyZyYgYXJnMSwgY29uc3QgQXJnJiBhcmcyKSB7CiAgICAgcmV0dXJuIGZpbmRQ
b3NzaWJsZVNjcmF0Y2goCi0gICAgICAgIHR5cGUsCisgICAgICAgIGNvZGUsIHR5cGUsCiAgICAg
ICAgIFsmXSAoVG1wIHRtcCkgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gIWFyZzEudXNl
c1RtcCh0bXApICYmICFhcmcyLnVzZXNUbXAodG1wKTsKICAgICAgICAgfSk7CkBAIC03OSw3ICs3
OSw4IEBAIEluc3QgY3JlYXRlU2h1ZmZsZShWYWx1ZSogb3JpZ2luLCBjb25zdCAKIH0KIAogVmVj
dG9yPEluc3Q+IGVtaXRTaHVmZmxlKAotICAgIFZlY3RvcjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0
ZDo6YXJyYXk8QXJnLCAyPiBzY3JhdGNoZXMsIEFyZzo6VHlwZSB0eXBlLCBWYWx1ZSogb3JpZ2lu
KQorICAgIENvZGUmIGNvZGUsIFZlY3RvcjxTaHVmZmxlUGFpcj4gcGFpcnMsIHN0ZDo6YXJyYXk8
QXJnLCAyPiBzY3JhdGNoZXMsIEFyZzo6VHlwZSB0eXBlLAorICAgIFZhbHVlKiBvcmlnaW4pCiB7
CiAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygKQEAgLTMwMyw3ICszMDQsNyBA
QCBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgIAogICAgICAgICBpZiAoIWlzVmFs
aWRGb3JtKG1vdmUsIHBhaXIuc3JjKCkua2luZCgpLCBwYWlyLmRzdCgpLmtpbmQoKSkpIHsKICAg
ICAgICAgICAgIFRtcCBzY3JhdGNoID0KLSAgICAgICAgICAgICAgICBnZXRTY3JhdGNoKHNjcmF0
Y2hJbmRleCwgZmluZFBvc3NpYmxlU2NyYXRjaCh0eXBlLCBwYWlyLnNyYygpLCBwYWlyLmRzdCgp
KSk7CisgICAgICAgICAgICAgICAgZ2V0U2NyYXRjaChzY3JhdGNoSW5kZXgsIGZpbmRQb3NzaWJs
ZVNjcmF0Y2goY29kZSwgdHlwZSwgcGFpci5zcmMoKSwgcGFpci5kc3QoKSkpOwogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc2NyYXRjaCk7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0o
bW92ZSwgcGFpci5zcmMoKS5raW5kKCksIEFyZzo6VG1wKSkKICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKEluc3QobW92ZUZvcldpZHRoKHBhaXIud2lkdGgoKSksIG9yaWdpbiwgcGFpci5z
cmMoKSwgc2NyYXRjaCkpOwpAQCAtNDM1LDcgKzQzNiw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1
ZmZsZSgKICAgICAgICAgICAgICAgICAgICAgLy8gTW92aW5nIGRhdGEgYmV0d2VlbiB0d28gc3Bp
bGxzIGlzIHJhcmUuIFRvIGdldCBoZXJlIGEgbG90IG9mIHJhcmUgc3R1ZmYgaGFzIHRvCiAgICAg
ICAgICAgICAgICAgICAgIC8vIGFsbCBoYXBwZW4gYXQgb25jZS4KICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIFRtcCBzY3JhdGNoID0gZ2V0U2NyYXRjaCgwLCBmaW5k
UG9zc2libGVTY3JhdGNoKHR5cGUsIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICAgICAgICAg
IFRtcCBzY3JhdGNoID0gZ2V0U2NyYXRjaCgwLCBmaW5kUG9zc2libGVTY3JhdGNoKGNvZGUsIHR5
cGUsIGxlZnQsIHJpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNj
cmF0Y2gpOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEluc3QobW92ZUZvcldp
ZHRoKHN3YXBXaWR0aCksIG9yaWdpbiwgbGVmdCwgc2NyYXRjaCkpOwogICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKEluc3Qoc3dhcCwgb3JpZ2luLCBzY3JhdGNoLCByaWdodCkpOwpA
QCAtNDY5LDcgKzQ3MCw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAg
IC8vIGF2YWlsYWJsZSByZWdpc3RlciBmaWxlLgogCiAgICAgICAgICAgICBUbXAgc2NyYXRjaCA9
IGZpbmRQb3NzaWJsZVNjcmF0Y2goCi0gICAgICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgICAg
ICAgICBjb2RlLCB0eXBlLAogICAgICAgICAgICAgICAgIFsmXSAoVG1wIHRtcCkgLT4gYm9vbCB7
CiAgICAgICAgICAgICAgICAgICAgIGZvciAoU2h1ZmZsZVBhaXIgcGFpciA6IHJvdGF0ZS5sb29w
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFpci5zcmMoKS51c2VzVG1wKHRtcCkp
CkBAIC01MTIsNyArNTEzLDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogfQogCiBWZWN0
b3I8SW5zdD4gZW1pdFNodWZmbGUoCi0gICAgY29uc3QgVmVjdG9yPFNodWZmbGVQYWlyPiYgcGFp
cnMsCisgICAgQ29kZSYgY29kZSwgY29uc3QgVmVjdG9yPFNodWZmbGVQYWlyPiYgcGFpcnMsCiAg
ICAgY29uc3Qgc3RkOjphcnJheTxBcmcsIDI+JiBncFNjcmF0Y2gsIGNvbnN0IHN0ZDo6YXJyYXk8
QXJnLCAyPiYgZnBTY3JhdGNoLAogICAgIFZhbHVlKiBvcmlnaW4pCiB7CkBAIC01MzEsOCArNTMy
LDggQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgIH0KIAogICAgIFZlY3RvcjxJbnN0
PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZFZlY3RvcihlbWl0U2h1ZmZsZShncFBhaXJzLCBn
cFNjcmF0Y2gsIEFyZzo6R1AsIG9yaWdpbikpOwotICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IoZW1p
dFNodWZmbGUoZnBQYWlycywgZnBTY3JhdGNoLCBBcmc6OkZQLCBvcmlnaW4pKTsKKyAgICByZXN1
bHQuYXBwZW5kVmVjdG9yKGVtaXRTaHVmZmxlKGNvZGUsIGdwUGFpcnMsIGdwU2NyYXRjaCwgQXJn
OjpHUCwgb3JpZ2luKSk7CisgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihlbWl0U2h1ZmZsZShjb2Rl
LCBmcFBhaXJzLCBmcFNjcmF0Y2gsIEFyZzo6RlAsIG9yaWdpbikpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZm
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRT
aHVmZmxlLmgJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRW1pdFNodWZmbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBAQCBjbGFz
cyBWYWx1ZTsKIAogbmFtZXNwYWNlIEFpciB7CiAKK2NsYXNzIENvZGU7CisKIGNsYXNzIFNodWZm
bGVQYWlyIHsKIHB1YmxpYzoKICAgICBTaHVmZmxlUGFpcigpCkBAIC0xMDAsMTIgKzEwMiwxMiBA
QCBJbnN0IGNyZWF0ZVNodWZmbGUoVmFsdWUqIG9yaWdpbiwgY29uc3QgCiAvLyBOT1RFOiBVc2Ug
dGhpcyBtZXRob2QgKGFuZCBpdHMgZnJpZW5kIGJlbG93KSB0byBlbWl0IHNodWZmbGVzIGFmdGVy
IHJlZ2lzdGVyIGFsbG9jYXRpb24uIEJlZm9yZQogLy8gcmVnaXN0ZXIgYWxsb2NhdGlvbiBpdCBp
cyBtdWNoIGJldHRlciB0byBzaW1wbHkgdXNlIHRoZSBTaHVmZmxlIGluc3RydWN0aW9uLgogVmVj
dG9yPEluc3Q+IGVtaXRTaHVmZmxlKAotICAgIFZlY3RvcjxTaHVmZmxlUGFpcj4sIHN0ZDo6YXJy
YXk8QXJnLCAyPiBzY3JhdGNoLCBBcmc6OlR5cGUsIFZhbHVlKiBvcmlnaW4pOworICAgIENvZGUm
IGNvZGUsIFZlY3RvcjxTaHVmZmxlUGFpcj4sIHN0ZDo6YXJyYXk8QXJnLCAyPiBzY3JhdGNoLCBB
cmc6OlR5cGUsIFZhbHVlKiBvcmlnaW4pOwogCiAvLyBQZXJmb3JtIGEgc2h1ZmZsZSB0aGF0IGlu
dm9sdmVzIGFueSBudW1iZXIgb2YgdHlwZXMuIFBhc3Mgc2NyYXRjaCByZWdpc3RlcnMgb3IgbWVt
b3J5IGxvY2F0aW9ucwogLy8gZm9yIGVhY2ggdHlwZSBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIGFi
b3ZlLgogVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAotICAgIGNvbnN0IFZlY3RvcjxTaHVmZmxl
UGFpcj4mLAorICAgIENvZGUmIGNvZGUsIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mLAogICAg
IGNvbnN0IHN0ZDo6YXJyYXk8QXJnLCAyPiYgZ3BTY3JhdGNoLCBjb25zdCBzdGQ6OmFycmF5PEFy
ZywgMj4mIGZwU2NyYXRjaCwKICAgICBWYWx1ZSogb3JpZ2luKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJIYW5kbGVDYWxsZWVTYXZlcy5jcHAJ
KHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySGFu
ZGxlQ2FsbGVlU2F2ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
aGFuZGxlQ2FsbGVlU2F2ZXMoQ29kZSYgY29kZSkKIAogICAgIC8vIE5vdyB3ZSBmaWx0ZXIgdG8g
cmVhbGx5IGdldCB0aGUgY2FsbGVlIHNhdmVzLgogICAgIHVzZWRDYWxsZWVTYXZlcy5maWx0ZXIo
UmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgdXNlZENhbGxlZVNhdmVz
LmZpbHRlcihjb2RlLm11dGFibGVSZWdzKCkpOwogICAgIHVzZWRDYWxsZWVTYXZlcy5leGNsdWRl
KFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpKTsgLy8gV2UgZG9uJ3QgbmVlZCB0byBzYXZl
IEZQIGhlcmUuCiAKICAgICBpZiAoIXVzZWRDYWxsZWVTYXZlcy5udW1iZXJPZlNldFJlZ2lzdGVy
cygpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lz
dGVyQ29hbGVzY2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAJKHJldmlzaW9uIDIwNjk2MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxl
c2NpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQWly
SW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFpclBo
YXNlU2NvcGUuaCIKLSNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCiAjaW5jbHVkZSAi
QWlyVG1wSW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclRtcFdpZHRoLmgiCiAjaW5jbHVkZSAiQWly
VXNlQ291bnRzLmgiCkBAIC01Nyw4ICs1NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9sYXN0
UHJlY29sb3JlZFJlZ2lzdGVySW5kZXgobGFzdFByZWNvbG9yZWRSZWdpc3RlckluZGV4KQogICAg
ICAgICAsIG1fdW5zcGlsbGFibGVUbXBzKHVuc3BpbGxhYmxlVG1wKQogICAgIHsKKyAgICAgICAg
Zm9yIChSZWcgcmVnIDogbV9yZWdzSW5Qcmlvcml0eU9yZGVyKQorICAgICAgICAgICAgbV9tdXRh
YmxlUmVncy5zZXQocmVnKTsKKyAgICAgICAgCiAgICAgICAgIGluaXRpYWxpemVEZWdyZWVzKHRt
cEFycmF5U2l6ZSk7Ci0KKyAgICAgICAgCiAgICAgICAgIG1fYWRqYWNlbmN5TGlzdC5yZXNpemUo
dG1wQXJyYXlTaXplKTsKICAgICAgICAgbV9tb3ZlTGlzdC5yZXNpemUodG1wQXJyYXlTaXplKTsK
ICAgICAgICAgbV9jb2FsZXNjZWRUbXBzLmZpbGwoMCwgdG1wQXJyYXlTaXplKTsKQEAgLTE2MSw3
ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBzdGQ6OnN3YXAodSwgdik7CiAKICAg
ICAgICAgaWYgKHRyYWNlRGVidWcpCi0gICAgICAgICAgICBkYXRhTG9nKCJDb2FsZXNjaW5nIG1v
dmUgYXQgaW5kZXgiLCBtb3ZlSW5kZXgsICIgdSA9ICIsIHUsICIgdiA9ICIsIHYsICJcbiIpOwor
ICAgICAgICAgICAgZGF0YUxvZygiQ29hbGVzY2luZyBtb3ZlIGF0IGluZGV4ICIsIG1vdmVJbmRl
eCwgIiB1ID0gIiwgdSwgIiB2ID0gIiwgdiwgIlxuIik7CiAKICAgICAgICAgaWYgKHUgPT0gdikg
ewogICAgICAgICAgICAgYWRkV29ya0xpc3QodSk7CkBAIC00NjEsOCArNDYzLDE1IEBAIHByaXZh
dGU6CiAKICAgICBib29sIHByZWNvbG9yZWRDb2FsZXNjaW5nSGV1cmlzdGljKEluZGV4VHlwZSB1
LCBJbmRleFR5cGUgdikKICAgICB7CisgICAgICAgIGlmICh0cmFjZURlYnVnKQorICAgICAgICAg
ICAgZGF0YUxvZygiICAgIENoZWNraW5nIHByZWNvbG9yZWRDb2FsZXNjaW5nSGV1cmlzdGljXG4i
KTsKICAgICAgICAgQVNTRVJUKGlzUHJlY29sb3JlZCh1KSk7CiAgICAgICAgIEFTU0VSVCghaXNQ
cmVjb2xvcmVkKHYpKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHUgaXMgYSBwaW5uZWQgcmVn
aXN0ZXIgdGhlbiBpdCdzIGFsd2F5cyBzYWZlIHRvIGNvYWxlc2NlLiBOb3RlIHRoYXQgd2hlbiB3
ZSBjYWxsIHRoaXMsCisgICAgICAgIC8vIHdlIGhhdmUgYWxyZWFkeSBwcm92ZWQgdGhhdCB0aGVy
ZSBpcyBubyBpbnRlcmZlcmVuY2UgYmV0d2VlbiB1IGFuZCB2LgorICAgICAgICBpZiAoIW1fbXV0
YWJsZVJlZ3MuZ2V0KG1fY29sb3JlZFRtcFt1XSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgICAgICAvLyBJZiBhbnkgYWRqYWNlbnQgb2YgdGhlIG5vbi1jb2xvcmVkIG5vZGUgaXMg
bm90IGFuIGFkamFjZW50IG9mIHRoZSBjb2xvcmVkIG5vZGUgQU5EIGhhcyBhIGRlZ3JlZSA+PSBL
CiAgICAgICAgIC8vIHRoZXJlIGlzIGEgcmlzayB0aGF0IHRoaXMgbm9kZSBuZWVkcyB0byBoYXZl
IHRoZSBzYW1lIGNvbG9yIGFzIG91ciBwcmVjb2xvcmVkIG5vZGUuIElmIHdlIGNvYWxlc2NlIHN1
Y2gKQEAgLTU0OSw2ICs1NTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdHlwZWRlZiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8SW50ZXJmZXJlbmNlRWRnZT4gSW50ZXJmZXJlbmNlRWRnZUhhc2hUcmFpdHM7
CiAKICAgICBjb25zdCBWZWN0b3I8UmVnPiYgbV9yZWdzSW5Qcmlvcml0eU9yZGVyOworICAgIFJl
Z2lzdGVyU2V0IG1fbXV0YWJsZVJlZ3M7CiAgICAgSW5kZXhUeXBlIG1fbGFzdFByZWNvbG9yZWRS
ZWdpc3RlckluZGV4IHsgMCB9OwogCiAgICAgLy8gVGhlIGludGVyZmVyZW5jZSBncmFwaC4KQEAg
LTcyNyw3ICs3MzcsNyBAQCB0ZW1wbGF0ZTxBcmc6OlR5cGUgdHlwZT4KIGNsYXNzIENvbG9yaW5n
QWxsb2NhdG9yIDogcHVibGljIEFic3RyYWN0Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+IHsK
IHB1YmxpYzoKICAgICBDb2xvcmluZ0FsbG9jYXRvcihDb2RlJiBjb2RlLCBUbXBXaWR0aCYgdG1w
V2lkdGgsIGNvbnN0IFVzZUNvdW50czxUbXA+JiB1c2VDb3VudHMsIGNvbnN0IEhhc2hTZXQ8dW5z
aWduZWQ+JiB1bnNwaWxsYWJsZVRtcCkKLSAgICAgICAgOiBBYnN0cmFjdENvbG9yaW5nQWxsb2Nh
dG9yPHVuc2lnbmVkPihyZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLCBBYnNvbHV0ZVRtcE1hcHBl
cjx0eXBlPjo6bGFzdE1hY2hpbmVSZWdpc3RlckluZGV4KCksIHRtcEFycmF5U2l6ZShjb2RlKSwg
dW5zcGlsbGFibGVUbXApCisgICAgICAgIDogQWJzdHJhY3RDb2xvcmluZ0FsbG9jYXRvcjx1bnNp
Z25lZD4oY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLCBBYnNvbHV0ZVRtcE1hcHBlcjx0
eXBlPjo6bGFzdE1hY2hpbmVSZWdpc3RlckluZGV4KCksIHRtcEFycmF5U2l6ZShjb2RlKSwgdW5z
cGlsbGFibGVUbXApCiAgICAgICAgICwgbV9jb2RlKGNvZGUpCiAgICAgICAgICwgbV90bXBXaWR0
aCh0bXBXaWR0aCkKICAgICAgICAgLCBtX3VzZUNvdW50cyh1c2VDb3VudHMpCkBAIC04MzksNyAr
ODQ5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXJlZykgewogICAgICAgICAgICAgLy8gV2Ug
b25seSBjYXJlIGFib3V0IFRtcHMgdGhhdCBpbnRlcmZlcmUuIEEgVG1wIHRoYXQgbmV2ZXIgaW50
ZXJmZXJlIHdpdGggYW55dGhpbmcKICAgICAgICAgICAgIC8vIGNhbiB0YWtlIGFueSByZWdpc3Rl
ci4KLSAgICAgICAgICAgIHJlZyA9IHJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkuZmlyc3QoKTsK
KyAgICAgICAgICAgIHJlZyA9IG1fY29kZS5yZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLmZpcnN0
KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlZzsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2Mu
Y3BwCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAK
ICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpckxpdmVuZXNzLmgiCiAj
aW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHku
aCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCkBAIC04Niw3ICs4NSw3IEBAIHZvaWQgbG93ZXJB
ZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgIHN0ZDo6YXJyYXk8QXJnLCAyPiByZXN1
bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKICAgICAgICAg
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IHJlZ3NJ
blByaW9yaXR5T3JkZXIodHlwZSkpIHsKKyAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUu
cmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkgewogICAgICAgICAgICAgICAgIGlmICghc2V0Lmdl
dChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IFRtcChyZWcpOwogICAg
ICAgICAgICAgICAgICAgICBzZXQuc2V0KHJlZyk7CkBAIC0xMzQsNyArMTMzLDcgQEAgdm9pZCBs
b3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5
PEFyZywgMj4gZ3BTY3JhdGNoID0gZ2V0U2NyYXRjaGVzKHNldCwgQXJnOjpHUCk7CiAgICAgICAg
ICAgICAgICAgc3RkOjphcnJheTxBcmcsIDI+IGZwU2NyYXRjaCA9IGdldFNjcmF0Y2hlcyhzZXQs
IEFyZzo6RlApOwogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0cygKLSAg
ICAgICAgICAgICAgICAgICAgaW5zdEluZGV4LCBlbWl0U2h1ZmZsZShwYWlycywgZ3BTY3JhdGNo
LCBmcFNjcmF0Y2gsIGluc3Qub3JpZ2luKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RJbmRl
eCwgZW1pdFNodWZmbGUoY29kZSwgcGFpcnMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBpbnN0Lm9y
aWdpbikpOwogICAgICAgICAgICAgICAgIGluc3QgPSBJbnN0KCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xOTMsNyArMTkyLDcgQEAgdm9pZCBsb3dlckFmdGVy
UmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJlLWNh
bGwgcGFpcnMgZm9yICIsIGluc3QsICI6ICIsIGxpc3REdW1wKHBhaXJzKSwgIlxuIik7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydEluc3RzKAot
ICAgICAgICAgICAgICAgICAgICBpbnN0SW5kZXgsIGVtaXRTaHVmZmxlKHBhaXJzLCBncFNjcmF0
Y2gsIGZwU2NyYXRjaCwgaW5zdC5vcmlnaW4pKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdElu
ZGV4LCBlbWl0U2h1ZmZsZShjb2RlLCBwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qu
b3JpZ2luKSk7CiAKICAgICAgICAgICAgICAgICBpbnN0ID0gYnVpbGRDQ2FsbChjb2RlLCBpbnN0
Lm9yaWdpbiwgZGVzdGluYXRpb25zKTsKICAgICAgICAgICAgICAgICBpZiAob2xkS2luZC50cmFw
cykKQEAgLTIyNCw3ICsyMjMsNyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2Rl
KQogICAgICAgICAgICAgICAgIGZwU2NyYXRjaCA9IGdldFNjcmF0Y2hlcyhsaXZlUmVncywgQXJn
OjpGUCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmlu
c2VydEluc3RzKAotICAgICAgICAgICAgICAgICAgICBpbnN0SW5kZXggKyAxLCBlbWl0U2h1ZmZs
ZShwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qub3JpZ2luKSk7CisgICAgICAgICAg
ICAgICAgICAgIGluc3RJbmRleCArIDEsIGVtaXRTaHVmZmxlKGNvZGUsIHBhaXJzLCBncFNjcmF0
Y2gsIGZwU2NyYXRjaCwgaW5zdC5vcmlnaW4pKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdp
c3RlclByaW9yaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuY3BwCShyZXZpc2lvbiAyMDY5NjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJp
b3JpdHkuaCIKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlICJSZWdpc3RlclNldC5o
IgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Ci0KLWNv
bnN0IFZlY3RvcjxHUFJSZWc+JiBncHJzSW5Qcmlvcml0eU9yZGVyKCkKLXsKLSAgICBzdGF0aWMg
VmVjdG9yPEdQUlJlZz4qIHJlc3VsdDsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsK
LSAgICBzdGQ6OmNhbGxfb25jZSgKLSAgICAgICAgb25jZSwKLSAgICAgICAgW10gewotICAgICAg
ICAgICAgcmVzdWx0ID0gbmV3IFZlY3RvcjxHUFJSZWc+KCk7Ci0gICAgICAgICAgICBSZWdpc3Rl
clNldCBhbGwgPSBSZWdpc3RlclNldDo6YWxsR1BScygpOwotICAgICAgICAgICAgYWxsLmV4Y2x1
ZGUoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkpOwotICAgICAgICAgICAgYWxsLmV4Y2x1
ZGUoUmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKSk7Ci0gICAgICAgICAg
ICBSZWdpc3RlclNldCBjYWxsZWVTYXZlID0gUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKTsKLSAgICAgICAgICAgIGFsbC5mb3JFYWNoKAotICAgICAgICAgICAgICAgIFsmXSAoUmVn
IHJlZykgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGxlZVNhdmUuZ2V0KHJlZykpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZChyZWcuZ3ByKCkpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgYWxsLmZvckVhY2goCi0gICAgICAgICAgICAgICAg
WyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsZWVTYXZlLmdldChy
ZWcpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQocmVnLmdwcigpKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgcmV0dXJuICpyZXN1bHQ7Ci19
Ci0KLWNvbnN0IFZlY3RvcjxGUFJSZWc+JiBmcHJzSW5Qcmlvcml0eU9yZGVyKCkKLXsKLSAgICBz
dGF0aWMgVmVjdG9yPEZQUlJlZz4qIHJlc3VsdDsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZTsKLSAgICBzdGQ6OmNhbGxfb25jZSgKLSAgICAgICAgb25jZSwKLSAgICAgICAgW10gewot
ICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFZlY3RvcjxGUFJSZWc+KCk7Ci0gICAgICAgICAgICBS
ZWdpc3RlclNldCBhbGwgPSBSZWdpc3RlclNldDo6YWxsRlBScygpOwotICAgICAgICAgICAgUmVn
aXN0ZXJTZXQgY2FsbGVlU2F2ZSA9IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
Ci0gICAgICAgICAgICBhbGwuZm9yRWFjaCgKLSAgICAgICAgICAgICAgICBbJl0gKFJlZyByZWcp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWxsZWVTYXZlLmdldChyZWcpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQocmVnLmZwcigpKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIGFsbC5mb3JFYWNoKAotICAgICAgICAgICAgICAgIFsmXSAo
UmVnIHJlZykgewotICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVlU2F2ZS5nZXQocmVnKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHJlZy5mcHIoKSk7Ci0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiAqcmVzdWx0OwotfQotCi1j
b25zdCBWZWN0b3I8UmVnPiYgcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6OlR5cGUgdHlwZSkKLXsK
LSAgICBzdGF0aWMgVmVjdG9yPFJlZz4qIHJlc3VsdFtBcmc6Om51bVR5cGVzXTsKLSAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKLSAgICBzdGQ6OmNhbGxfb25jZSgKLSAgICAgICAgb25j
ZSwKLSAgICAgICAgW10gewotICAgICAgICAgICAgcmVzdWx0W0FyZzo6R1BdID0gbmV3IFZlY3Rv
cjxSZWc+KCk7Ci0gICAgICAgICAgICBmb3IgKEdQUlJlZyByZWcgOiBncHJzSW5Qcmlvcml0eU9y
ZGVyKCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0W0FyZzo6R1BdLT5hcHBlbmQoUmVnKHJlZykp
OwotICAgICAgICAgICAgcmVzdWx0W0FyZzo6RlBdID0gbmV3IFZlY3RvcjxSZWc+KCk7Ci0gICAg
ICAgICAgICBmb3IgKEZQUlJlZyByZWcgOiBmcHJzSW5Qcmlvcml0eU9yZGVyKCkpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0W0FyZzo6RlBdLT5hcHBlbmQoUmVnKHJlZykpOwotICAgICAgICB9KTsK
LSAgICByZXR1cm4gKnJlc3VsdFt0eXBlXTsKLX0KLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjM6OkFpcgotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyUmVnaXN0ZXJQcmlvcml0eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyUmVnaXN0ZXJQcmlvcml0eS5oCShyZXZpc2lvbiAy
MDY5NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlZ2lzdGVyUHJpb3Jp
dHkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShCM19KSVQpCi0KLSNpbmNsdWRlICJBaXJBcmcuaCIKLSNpbmNsdWRlICJGUFJJbmZvLmgiCi0j
aW5jbHVkZSAiR1BSSW5mby5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewotCi1jb25zdCBWZWN0b3I8R1BS
UmVnPiYgZ3Byc0luUHJpb3JpdHlPcmRlcigpOwotY29uc3QgVmVjdG9yPEZQUlJlZz4mIGZwcnNJ
blByaW9yaXR5T3JkZXIoKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFuaz4gc3RydWN0IFJlZ2lz
dGVyc0luUHJpb3JpdHlPcmRlcjsKLXRlbXBsYXRlPD4gc3RydWN0IFJlZ2lzdGVyc0luUHJpb3Jp
dHlPcmRlcjxHUFJJbmZvPiB7Ci0gICAgY29uc3QgVmVjdG9yPEdQUlJlZz4mIGluUHJpb3JpdHlP
cmRlcigpIHsgcmV0dXJuIGdwcnNJblByaW9yaXR5T3JkZXIoKTsgfQotfTsKLXRlbXBsYXRlPD4g
c3RydWN0IFJlZ2lzdGVyc0luUHJpb3JpdHlPcmRlcjxGUFJJbmZvPiB7Ci0gICAgY29uc3QgVmVj
dG9yPEZQUlJlZz4mIGluUHJpb3JpdHlPcmRlcigpIHsgcmV0dXJuIGZwcnNJblByaW9yaXR5T3Jk
ZXIoKTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFuaz4KLWNvbnN0IFZlY3Rvcjx0eXBl
bmFtZSBCYW5rOjpSZWdpc3RlclR5cGU+JiByZWdzSW5Qcmlvcml0eU9yZGVyKCkKLXsKLSAgICBy
ZXR1cm4gUmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyPEJhbms+OjppblByaW9yaXR5T3JkZXIoKTsK
LX0KLQotSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3NJblByaW9yaXR5
T3JkZXIoQXJnOjpUeXBlKTsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgotCi0j
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAJKHJldmlzaW9uIDIwNjk2MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiQWlyTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCi0j
aW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CkBAIC0x
MjksNyArMTI4LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJn
OjpVc2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpDb2xkVXNlOgotICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogcmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdzSW5Qcmlv
cml0eU9yZGVyKHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXRC
ZWZvcmUuZ2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QmVm
b3JlLnNldChyZWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZW5SZWcg
PSByZWc7CkBAIC0xMzksNyArMTM4LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29k
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBj
YXNlIEFyZzo6RGVmOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6WkRlZjoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IHJlZ3NJblByaW9yaXR5T3JkZXIodHlw
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0lu
UHJpb3JpdHlPcmRlcih0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
c2V0QWZ0ZXIuZ2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
QWZ0ZXIuc2V0KHJlZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob3NlblJl
ZyA9IHJlZzsKQEAgLTE1Myw3ICsxNTIsNyBAQCB2b2lkIHNwaWxsRXZlcnl0aGluZyhDb2RlJiBj
b2RlKQogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZUNvbGRVc2U6CiAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQXJnOjpTY3JhdGNoOgogICAgICAgICAgICAgICAgICAgICBjYXNl
IEFyZzo6RWFybHlEZWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFJlZyByZWcgOiBy
ZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KFJlZyByZWcgOiBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSAmJiAhc2V0QWZ0ZXIuZ2V0
KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWZ0ZXIuc2V0KHJl
Zyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJlZm9yZS5zZXQocmVnKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAkocmV2aXNpb24g
MjA2OTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNs
dWRlICJBaXJHZW5lcmF0ZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJCM1By
b2NlZHVyZS5oIgpAQCAtMzkzLDcgKzM5Miw3IEBAIHZvaWQgdGVzdFNodWZmbGVCcm9hZGNhc3RB
bGxSZWdzKCkKICAgICBCMzo6UHJvY2VkdXJlIHByb2M7CiAgICAgQ29kZSYgY29kZSA9IHByb2Mu
Y29kZSgpOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9y
ZGVyKEFyZzo6R1ApOworICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzID0gY29kZS5yZWdzSW5Q
cmlvcml0eU9yZGVyKEFyZzo6R1ApOwogCiAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRk
QmxvY2soKTsKICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjppbW0oMzUpLCBU
bXAoR1BSSW5mbzo6cmVnVDApKTsKQEAgLTg2MCw3ICs4NTksNyBAQCB2b2lkIHRlc3RTaHVmZmxl
U2hpZnRBbGxSZWdzKCkKICAgICBCMzo6UHJvY2VkdXJlIHByb2M7CiAgICAgQ29kZSYgY29kZSA9
IHByb2MuY29kZSgpOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3MgPSByZWdzSW5Qcmlv
cml0eU9yZGVyKEFyZzo6R1ApOworICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzID0gY29kZS5y
ZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOwogCiAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNv
ZGUuYWRkQmxvY2soKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVncy5zaXplKCk7
ICsraSkKQEAgLTg5Niw3ICs4OTUsNyBAQCB2b2lkIHRlc3RTaHVmZmxlUm90YXRlQWxsUmVncygp
CiAgICAgQjM6OlByb2NlZHVyZSBwcm9jOwogICAgIENvZGUmIGNvZGUgPSBwcm9jLmNvZGUoKTsK
IAotICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzID0gcmVnc0luUHJpb3JpdHlPcmRlcihBcmc6
OkdQKTsKKyAgICBjb25zdCBWZWN0b3I8UmVnPiYgcmVncyA9IGNvZGUucmVnc0luUHJpb3JpdHlP
cmRlcihBcmc6OkdQKTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ3Muc2l6ZSgpOyArK2kpCkBAIC0xMTY4
LDcgKzExNjcsNyBAQCB2b2lkIHRlc3RTaHVmZmxlU2hpZnRNZW1vcnlBbGxSZWdzKCkKICAgICBt
ZW1vcnlbMF0gPSAzNTsKICAgICBtZW1vcnlbMV0gPSAzNjsKIAotICAgIFZlY3RvcjxSZWc+IHJl
Z3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOworICAgIFZlY3RvcjxSZWc+IHJlZ3Mg
PSBjb2RlLnJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CiAgICAgcmVncy5yZW1vdmVGaXJz
dChSZWcoR1BSSW5mbzo6cmVnVDApKTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFk
ZEJsb2NrKCk7CkBAIC0xMjE4LDcgKzEyMTcsNyBAQCB2b2lkIHRlc3RTaHVmZmxlU2hpZnRNZW1v
cnlBbGxSZWdzNjQoKQogICAgIG1lbW9yeVswXSA9IDM1MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVt
b3J5WzFdID0gMzYwMDAwMDAwMDAwMDBsbDsKIAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdz
SW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOworICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJl
Z3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CiAgICAgcmVncy5yZW1vdmVGaXJzdChSZWcoR1BS
SW5mbzo6cmVnVDApKTsKIAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7
CkBAIC0xMjc5LDcgKzEyNzgsNyBAQCB2b2lkIHRlc3RTaHVmZmxlU2hpZnRNZW1vcnlBbGxSZWdz
TWl4ZWRXCiAgICAgbWVtb3J5WzBdID0gMzUwMDAwMDAwMDAwMDBsbDsKICAgICBtZW1vcnlbMV0g
PSAzNjAwMDAwMDAwMDAwMGxsOwogCi0gICAgVmVjdG9yPFJlZz4gcmVncyA9IHJlZ3NJblByaW9y
aXR5T3JkZXIoQXJnOjpHUCk7CisgICAgVmVjdG9yPFJlZz4gcmVncyA9IGNvZGUucmVnc0luUHJp
b3JpdHlPcmRlcihBcmc6OkdQKTsKICAgICByZWdzLnJlbW92ZUZpcnN0KFJlZyhHUFJJbmZvOjpy
ZWdUMCkpOwogCiAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKQEAgLTE0
NjksNyArMTQ2OCw3IEBAIHZvaWQgdGVzdFNodWZmbGVSb3RhdGVNZW1vcnlBbGxSZWdzNjQoKQog
ICAgIG1lbW9yeVswXSA9IDM1MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVtb3J5WzFdID0gMzYwMDAw
MDAwMDAwMDBsbDsKIAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVy
KEFyZzo6R1ApOworICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ3NJblByaW9yaXR5T3Jk
ZXIoQXJnOjpHUCk7CiAgICAgcmVncy5yZW1vdmVGaXJzdChSZWcoR1BSSW5mbzo6cmVnVDApKTsK
IAogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CkBAIC0xNTIxLDcgKzE1
MjAsNyBAQCB2b2lkIHRlc3RTaHVmZmxlUm90YXRlTWVtb3J5QWxsUmVnc01peGVkCiAgICAgbWVt
b3J5WzBdID0gMzUwMDAwMDAwMDAwMDBsbDsKICAgICBtZW1vcnlbMV0gPSAzNjAwMDAwMDAwMDAw
MGxsOwogCi0gICAgVmVjdG9yPFJlZz4gcmVncyA9IHJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpH
UCk7CisgICAgVmVjdG9yPFJlZz4gcmVncyA9IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihBcmc6
OkdQKTsKICAgICByZWdzLnJlbW92ZUZpcnN0KFJlZyhHUFJJbmZvOjpyZWdUMCkpOwogCiAgICAg
QmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2V0LmgJKHJldmlzaW9uIDIwNjk2MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ2lzdGVyU2V0IHJl
c2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKTsKICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgcnVudGlt
ZVJlZ2lzdGVycygpOwogICAgIHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7
IC8vIFRoZSB1bmlvbiBvZiBzdGFjaywgcmVzZXJ2ZWQgaGFyZHdhcmUsIGFuZCBydW50aW1lIHJl
Z2lzdGVycy4KLSAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycygpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0
ZXJzKCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IHZtQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAv
LyBDYWxsZWUgc2F2ZSByZWdpc3RlcnMgdGhhdCBtaWdodCBiZSBzYXZlZCBhbmQgdXNlZCBieSBh
bnkgdGllci4KICAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgbGxpbnRCYXNlbGluZUNhbGxlZVNhdmVS
ZWdpc3RlcnMoKTsgLy8gUmVnaXN0ZXJzIHNhdmVkIGFuZCB1c2VkIGJ5IHRoZSBMTEludC4KICAg
ICBzdGF0aWMgUmVnaXN0ZXJTZXQgZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOyAvLyBSZWdpc3Rl
cnMgc2F2ZWQgYW5kIHVzZWQgYnkgdGhlIERGRyBKSVQuCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVi
bGljOgogICAgIHNpemVfdCBudW1iZXJPZlNldEZQUnMoKSBjb25zdDsKICAgICBzaXplX3QgbnVt
YmVyT2ZTZXRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdHMuY291bnQoKTsgfQogICAg
IAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogICAgIGVudW0gRW1wdHlW
YWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKICAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0
ZWRWYWx1ZSB9Owo=
</data>
<flag name="review"
          id="314247"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291118</attachid>
            <date>2016-10-10 10:47:25 -0700</date>
            <delta_ts>2016-10-10 10:47:25 -0700</delta_ts>
            <desc>Keith&apos;s version</desc>
            <filename>changes.diff</filename>
            <type>text/plain</type>
            <size>25162</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4IDFjOTgzZDYuLjdm
ZTljNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcApAQCAtMzQz
LDYgKzM0MywxMSBAQCB2b2lkIFByb2NlZHVyZTo6c2V0QmxvY2tPcmRlckltcGwoVmVjdG9yPEJh
c2ljQmxvY2sqPiYgYmxvY2tzKQogICAgIH0KIH0KIAordm9pZCBQcm9jZWR1cmU6OnNldFBpbm5l
ZFJlZ2lzdGVycyhSZWdpc3RlclNldCYgcGlubmVkKQorICAgIHsKKyAgICAgICAgY29kZSgpLm1f
cGlubmVkUmVnaXN0ZXJzID0gcGlubmVkOworICAgIH0KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaAppbmRleCAzOTc1MTY2Li5hYTVkMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHB1YmxpYzoKICAgICBQQ1RvT3Jp
Z2luTWFwJiBwY1RvT3JpZ2luTWFwKCkgeyByZXR1cm4gbV9wY1RvT3JpZ2luTWFwOyB9CiAgICAg
UENUb09yaWdpbk1hcCByZWxlYXNlUENUb09yaWdpbk1hcCgpIHsgcmV0dXJuIFdURk1vdmUobV9w
Y1RvT3JpZ2luTWFwKTsgfQogCisgICAgdm9pZCBzZXRQaW5uZWRSZWdpc3RlcnMoUmVnaXN0ZXJT
ZXQmKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IDBkMGZkYTMuLjBj
YTUwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBaXJDQ2FsbFNwZWNp
YWwuaCIKKyNpbmNsdWRlICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCiAjaW5jbHVkZSAiQjNCYXNp
Y0Jsb2NrVXRpbHMuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgIkIzU3Rh
Y2tTbG90LmgiCkBAIC0xODUsNiArMTg2LDIxIEBAIHVuc2lnbmVkIENvZGU6OmpzSGFzaCgpIGNv
bnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorY29uc3QgVmVjdG9yPFJlZz4mIENvZGU6OnJl
Z2lzdGVyc0luUHJpb3JpdHlPcmRlcihBcmc6OlR5cGUgdHlwZSkKK3sKKyAgICBpZiAoIW1fcGlu
bmVkUmVnaXN0ZXJzLm51bWJlck9mU2V0UmVnaXN0ZXJzKCkpCisgICAgICAgIHJldHVybiByZWdz
SW5Qcmlvcml0eU9yZGVyKHR5cGUpOworCisgICAgLy8gV2UgY291bGQgY2FjaGUgdGhpcyBzb21l
d2hlcmUgYmV0d2VlbiBjb21waWxhdGlvbnMgYnV0IEkgZG91YnQgaXQgbWF0dGVycy4KKyAgICBp
ZiAoIW1fcmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyW3R5cGVdLnNpemUoKSkgeworICAgICAgICBt
X3JlZ2lzdGVyc0luUHJpb3JpdHlPcmRlclt0eXBlXSA9IHJlZ3NJblByaW9yaXR5T3JkZXIodHlw
ZSk7CisgICAgICAgIG1fcmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyW3R5cGVdLnJlbW92ZUFsbE1h
dGNoaW5nKFsmXSAoY29uc3QgUmVnJiByZWcpIHsKKyAgICAgICAgICAgIHJldHVybiBtX3Bpbm5l
ZFJlZ2lzdGVycy5nZXQocmVnKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIHJldHVybiBtX3Jl
Z2lzdGVyc0luUHJpb3JpdHlPcmRlclt0eXBlXTsKK30KKwogfSB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjM6OkFpcgogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDb2RlLmgKaW5kZXggNDgzMTRiMi4uM2NiM2QyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKQEAgLTI0NCw2ICsyNDQsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gaXQncyBtYWlubHkgZm9yIHZhbGlkYXRpbmcgdGhlIHJlc3VsdHMgZnJvbSBKU0Fpci4KICAg
ICB1bnNpZ25lZCBqc0hhc2goKSBjb25zdDsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0
IFZlY3RvcjxSZWc+JiByZWdpc3RlcnNJblByaW9yaXR5T3JkZXIoQXJnOjpUeXBlKTsKKyAgICBS
ZWdpc3RlclNldCBwaW5uZWRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bpbm5lZFJlZ2lz
dGVyczsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyA6OkpTQzo6QjM6OlByb2NlZHVy
ZTsKICAgICBmcmllbmQgY2xhc3MgQmxvY2tJbnNlcnRpb25TZXQ7CkBAIC0yNjQsNiArMjY3LDgg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8RnJlcXVlbnRlZEJsb2NrPiBtX2VudHJ5cG9pbnRzOyAv
LyBUaGlzIGlzIGVtcHR5IHVudGlsIGFmdGVyIGxvd2VyRW50cnlTd2l0Y2goKS4KICAgICBWZWN0
b3I8Q0NhbGxIZWxwZXJzOjpMYWJlbD4gbV9lbnRyeXBvaW50TGFiZWxzOyAvLyBUaGlzIGlzIGVt
cHR5IHVudGlsIGNvZGUgZ2VuZXJhdGlvbi4KICAgICBjb25zdCBjaGFyKiBtX2xhc3RQaGFzZU5h
bWU7CisgICAgUmVnaXN0ZXJTZXQgbV9waW5uZWRSZWdpc3RlcnM7CisgICAgVmVjdG9yPFJlZz4g
bV9yZWdpc3RlcnNJblByaW9yaXR5T3JkZXJbQXJnOjpudW1UeXBlc107CiB9OwogCiB9IH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRW1pdFNodWZmbGUuY3BwCmluZGV4IDVmYWYxMzMuLmJhZWU0NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCkBAIC0yOCw4ICsy
OCw4IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCisjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2lu
Y2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5o
IgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0
RHVtcC5oPgogCkBAIC00MCw4ICs0MCw4IEBAIG5hbWVzcGFjZSB7CiBib29sIHZlcmJvc2UgPSBm
YWxzZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLVRtcCBmaW5kUG9zc2libGVTY3Jh
dGNoKEFyZzo6VHlwZSB0eXBlLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSB7Ci0gICAgZm9yIChS
ZWcgcmVnIDogcmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkgeworVG1wIGZpbmRQb3NzaWJsZVNj
cmF0Y2goQ29kZSYgY29kZSwgQXJnOjpUeXBlIHR5cGUsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
IHsKKyAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ2lzdGVyc0luUHJpb3JpdHlPcmRlcih0eXBl
KSkgewogICAgICAgICBUbXAgdG1wKHJlZyk7CiAgICAgICAgIGlmIChmdW5jdG9yKHRtcCkpCiAg
ICAgICAgICAgICByZXR1cm4gdG1wOwpAQCAtNDksOSArNDksOSBAQCBUbXAgZmluZFBvc3NpYmxl
U2NyYXRjaChBcmc6OlR5cGUgdHlwZSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgewogICAgIHJl
dHVybiBUbXAoKTsKIH0KIAotVG1wIGZpbmRQb3NzaWJsZVNjcmF0Y2goQXJnOjpUeXBlIHR5cGUs
IGNvbnN0IEFyZyYgYXJnMSwgY29uc3QgQXJnJiBhcmcyKSB7CitUbXAgZmluZFBvc3NpYmxlU2Ny
YXRjaChDb2RlJiBjb2RlLCBBcmc6OlR5cGUgdHlwZSwgY29uc3QgQXJnJiBhcmcxLCBjb25zdCBB
cmcmIGFyZzIpIHsKICAgICByZXR1cm4gZmluZFBvc3NpYmxlU2NyYXRjaCgKLSAgICAgICAgdHlw
ZSwKKyAgICAgICAgY29kZSwgdHlwZSwKICAgICAgICAgWyZdIChUbXAgdG1wKSAtPiBib29sIHsK
ICAgICAgICAgICAgIHJldHVybiAhYXJnMS51c2VzVG1wKHRtcCkgJiYgIWFyZzIudXNlc1RtcCh0
bXApOwogICAgICAgICB9KTsKQEAgLTc5LDcgKzc5LDcgQEAgSW5zdCBjcmVhdGVTaHVmZmxlKFZh
bHVlKiBvcmlnaW4sIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mIHBhaXJzKQogfQogCiBWZWN0
b3I8SW5zdD4gZW1pdFNodWZmbGUoCi0gICAgVmVjdG9yPFNodWZmbGVQYWlyPiBwYWlycywgc3Rk
OjphcnJheTxBcmcsIDI+IHNjcmF0Y2hlcywgQXJnOjpUeXBlIHR5cGUsIFZhbHVlKiBvcmlnaW4p
CisgICAgQ29kZSYgY29kZSwgVmVjdG9yPFNodWZmbGVQYWlyPiBwYWlycywgc3RkOjphcnJheTxB
cmcsIDI+IHNjcmF0Y2hlcywgQXJnOjpUeXBlIHR5cGUsIFZhbHVlKiBvcmlnaW4pCiB7CiAgICAg
aWYgKHZlcmJvc2UpIHsKICAgICAgICAgZGF0YUxvZygKQEAgLTMwMyw3ICszMDMsNyBAQCBWZWN0
b3I8SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgIAogICAgICAgICBpZiAoIWlzVmFsaWRGb3Jt
KG1vdmUsIHBhaXIuc3JjKCkua2luZCgpLCBwYWlyLmRzdCgpLmtpbmQoKSkpIHsKICAgICAgICAg
ICAgIFRtcCBzY3JhdGNoID0KLSAgICAgICAgICAgICAgICBnZXRTY3JhdGNoKHNjcmF0Y2hJbmRl
eCwgZmluZFBvc3NpYmxlU2NyYXRjaCh0eXBlLCBwYWlyLnNyYygpLCBwYWlyLmRzdCgpKSk7Cisg
ICAgICAgICAgICAgICAgZ2V0U2NyYXRjaChzY3JhdGNoSW5kZXgsIGZpbmRQb3NzaWJsZVNjcmF0
Y2goY29kZSwgdHlwZSwgcGFpci5zcmMoKSwgcGFpci5kc3QoKSkpOwogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2NyYXRjaCk7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0obW92ZSwg
cGFpci5zcmMoKS5raW5kKCksIEFyZzo6VG1wKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKEluc3QobW92ZUZvcldpZHRoKHBhaXIud2lkdGgoKSksIG9yaWdpbiwgcGFpci5zcmMoKSwg
c2NyYXRjaCkpOwpAQCAtNDM1LDcgKzQzNSw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgK
ICAgICAgICAgICAgICAgICAgICAgLy8gTW92aW5nIGRhdGEgYmV0d2VlbiB0d28gc3BpbGxzIGlz
IHJhcmUuIFRvIGdldCBoZXJlIGEgbG90IG9mIHJhcmUgc3R1ZmYgaGFzIHRvCiAgICAgICAgICAg
ICAgICAgICAgIC8vIGFsbCBoYXBwZW4gYXQgb25jZS4KICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIFRtcCBzY3JhdGNoID0gZ2V0U2NyYXRjaCgwLCBmaW5kUG9zc2li
bGVTY3JhdGNoKHR5cGUsIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgICAgICAgICAgICAgIFRtcCBz
Y3JhdGNoID0gZ2V0U2NyYXRjaCgwLCBmaW5kUG9zc2libGVTY3JhdGNoKGNvZGUsIHR5cGUsIGxl
ZnQsIHJpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjcmF0Y2gp
OwogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEluc3QobW92ZUZvcldpZHRoKHN3
YXBXaWR0aCksIG9yaWdpbiwgbGVmdCwgc2NyYXRjaCkpOwogICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKEluc3Qoc3dhcCwgb3JpZ2luLCBzY3JhdGNoLCByaWdodCkpOwpAQCAtNDY5
LDcgKzQ2OSw3IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICAgICAgICAgIC8vIGF2
YWlsYWJsZSByZWdpc3RlciBmaWxlLgogCiAgICAgICAgICAgICBUbXAgc2NyYXRjaCA9IGZpbmRQ
b3NzaWJsZVNjcmF0Y2goCi0gICAgICAgICAgICAgICAgdHlwZSwKKyAgICAgICAgICAgICAgICBj
b2RlLCB0eXBlLAogICAgICAgICAgICAgICAgIFsmXSAoVG1wIHRtcCkgLT4gYm9vbCB7CiAgICAg
ICAgICAgICAgICAgICAgIGZvciAoU2h1ZmZsZVBhaXIgcGFpciA6IHJvdGF0ZS5sb29wKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFpci5zcmMoKS51c2VzVG1wKHRtcCkpCkBAIC01
MTEsNyArNTExLDcgQEAgVmVjdG9yPEluc3Q+IGVtaXRTaHVmZmxlKAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLVZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKK1ZlY3RvcjxJbnN0PiBlbWl0U2h1
ZmZsZShDb2RlJiBjb2RlLAogICAgIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mIHBhaXJzLAog
ICAgIGNvbnN0IHN0ZDo6YXJyYXk8QXJnLCAyPiYgZ3BTY3JhdGNoLCBjb25zdCBzdGQ6OmFycmF5
PEFyZywgMj4mIGZwU2NyYXRjaCwKICAgICBWYWx1ZSogb3JpZ2luKQpAQCAtNTMxLDggKzUzMSw4
IEBAIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKICAgICB9CiAKICAgICBWZWN0b3I8SW5zdD4g
cmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IoZW1pdFNodWZmbGUoZ3BQYWlycywgZ3BT
Y3JhdGNoLCBBcmc6OkdQLCBvcmlnaW4pKTsKLSAgICByZXN1bHQuYXBwZW5kVmVjdG9yKGVtaXRT
aHVmZmxlKGZwUGFpcnMsIGZwU2NyYXRjaCwgQXJnOjpGUCwgb3JpZ2luKSk7CisgICAgcmVzdWx0
LmFwcGVuZFZlY3RvcihlbWl0U2h1ZmZsZShjb2RlLCBncFBhaXJzLCBncFNjcmF0Y2gsIEFyZzo6
R1AsIG9yaWdpbikpOworICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IoZW1pdFNodWZmbGUoY29kZSwg
ZnBQYWlycywgZnBTY3JhdGNoLCBBcmc6OkZQLCBvcmlnaW4pKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRT
aHVmZmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmgK
aW5kZXggYjhiNTdlMC4uNTNkOTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRW1pdFNodWZmbGUuaApAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBWYWx1ZTsKIAogbmFt
ZXNwYWNlIEFpciB7CiAKK2NsYXNzIENvZGU7CisKIGNsYXNzIFNodWZmbGVQYWlyIHsKIHB1Ymxp
YzoKICAgICBTaHVmZmxlUGFpcigpCkBAIC0xMDAsMTIgKzEwMiwxMiBAQCBJbnN0IGNyZWF0ZVNo
dWZmbGUoVmFsdWUqIG9yaWdpbiwgY29uc3QgVmVjdG9yPFNodWZmbGVQYWlyPiYpOwogLy8gTk9U
RTogVXNlIHRoaXMgbWV0aG9kIChhbmQgaXRzIGZyaWVuZCBiZWxvdykgdG8gZW1pdCBzaHVmZmxl
cyBhZnRlciByZWdpc3RlciBhbGxvY2F0aW9uLiBCZWZvcmUKIC8vIHJlZ2lzdGVyIGFsbG9jYXRp
b24gaXQgaXMgbXVjaCBiZXR0ZXIgdG8gc2ltcGx5IHVzZSB0aGUgU2h1ZmZsZSBpbnN0cnVjdGlv
bi4KIFZlY3RvcjxJbnN0PiBlbWl0U2h1ZmZsZSgKLSAgICBWZWN0b3I8U2h1ZmZsZVBhaXI+LCBz
dGQ6OmFycmF5PEFyZywgMj4gc2NyYXRjaCwgQXJnOjpUeXBlLCBWYWx1ZSogb3JpZ2luKTsKKyAg
ICBDb2RlJiwgVmVjdG9yPFNodWZmbGVQYWlyPiwgc3RkOjphcnJheTxBcmcsIDI+IHNjcmF0Y2gs
IEFyZzo6VHlwZSwgVmFsdWUqIG9yaWdpbik7CiAKIC8vIFBlcmZvcm0gYSBzaHVmZmxlIHRoYXQg
aW52b2x2ZXMgYW55IG51bWJlciBvZiB0eXBlcy4gUGFzcyBzY3JhdGNoIHJlZ2lzdGVycyBvciBt
ZW1vcnkgbG9jYXRpb25zCiAvLyBmb3IgZWFjaCB0eXBlIGFjY29yZGluZyB0byB0aGUgcnVsZXMg
YWJvdmUuCiBWZWN0b3I8SW5zdD4gZW1pdFNodWZmbGUoCi0gICAgY29uc3QgVmVjdG9yPFNodWZm
bGVQYWlyPiYsCisgICAgQ29kZSYsIGNvbnN0IFZlY3RvcjxTaHVmZmxlUGFpcj4mLAogICAgIGNv
bnN0IHN0ZDo6YXJyYXk8QXJnLCAyPiYgZ3BTY3JhdGNoLCBjb25zdCBzdGQ6OmFycmF5PEFyZywg
Mj4mIGZwU2NyYXRjaCwKICAgICBWYWx1ZSogb3JpZ2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNj
aW5nLmNwcAppbmRleCAyOTg5ZDUyLi4zN2M4OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5n
LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQWlyTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCi0jaW5jbHVk
ZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUgIkFpclRtcElubGluZXMuaCIKICNp
bmNsdWRlICJBaXJUbXBXaWR0aC5oIgogI2luY2x1ZGUgIkFpclVzZUNvdW50cy5oIgpAQCAtNTIs
OCArNTEsOSBAQCBib29sIHJlcG9ydFN0YXRzID0gZmFsc2U7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bmRleFR5cGU+CiBjbGFzcyBBYnN0cmFjdENvbG9yaW5nQWxsb2NhdG9yIHsKIHB1YmxpYzoKLSAg
ICBBYnN0cmFjdENvbG9yaW5nQWxsb2NhdG9yKGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzSW5Qcmlv
cml0eU9yZGVyLCBJbmRleFR5cGUgbGFzdFByZWNvbG9yZWRSZWdpc3RlckluZGV4LCB1bnNpZ25l
ZCB0bXBBcnJheVNpemUsIGNvbnN0IEhhc2hTZXQ8dW5zaWduZWQ+JiB1bnNwaWxsYWJsZVRtcCkK
LSAgICAgICAgOiBtX3JlZ3NJblByaW9yaXR5T3JkZXIocmVnc0luUHJpb3JpdHlPcmRlcikKKyAg
ICBBYnN0cmFjdENvbG9yaW5nQWxsb2NhdG9yKGNvbnN0IFZlY3RvcjxSZWc+JiByZWdpc3RlcnNJ
blByaW9yaXR5T3JkZXIsIGNvbnN0IFJlZ2lzdGVyU2V0IHBpbm5lZFJlZ2lzdGVycywgSW5kZXhU
eXBlIGxhc3RQcmVjb2xvcmVkUmVnaXN0ZXJJbmRleCwgdW5zaWduZWQgdG1wQXJyYXlTaXplLCBj
b25zdCBIYXNoU2V0PHVuc2lnbmVkPiYgdW5zcGlsbGFibGVUbXApCisgICAgICAgIDogbV9yZWdp
c3RlcnNJblByaW9yaXR5T3JkZXIocmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyKQorICAgICAgICAs
IG1fcGlubmVkUmVnaXN0ZXJzKHBpbm5lZFJlZ2lzdGVycykKICAgICAgICAgLCBtX2xhc3RQcmVj
b2xvcmVkUmVnaXN0ZXJJbmRleChsYXN0UHJlY29sb3JlZFJlZ2lzdGVySW5kZXgpCiAgICAgICAg
ICwgbV91bnNwaWxsYWJsZVRtcHModW5zcGlsbGFibGVUbXApCiAgICAgewpAQCAtODksNyArODks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBpZiAoIWRlZ3JlZSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGRlZ3JlZSA+PSBtX3JlZ3NJblByaW9yaXR5
T3JkZXIuc2l6ZSgpKQorICAgICAgICAgICAgaWYgKGRlZ3JlZSA+PSBtX3JlZ2lzdGVyc0luUHJp
b3JpdHlPcmRlci5zaXplKCkpCiAgICAgICAgICAgICAgICAgYWRkVG9TcGlsbChpKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKCFtX21vdmVMaXN0W2ldLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICBtX2ZyZWV6ZVdvcmtsaXN0LmFkZChpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcm90ZWN0ZWQ6
CiAKICAgICAgICAgICAgIEluZGV4VHlwZSBvcmlnaW5hbE90aGVyVG1wID0gc3JjVG1wSW5kZXgg
IT0gdG1wSW5kZXggPyBzcmNUbXBJbmRleCA6IGRzdFRtcEluZGV4OwogICAgICAgICAgICAgSW5k
ZXhUeXBlIG90aGVyVG1wSW5kZXggPSBnZXRBbGlhcyhvcmlnaW5hbE90aGVyVG1wKTsKLSAgICAg
ICAgICAgIGlmIChtX2RlZ3JlZXNbb3RoZXJUbXBJbmRleF0gPCBtX3JlZ3NJblByaW9yaXR5T3Jk
ZXIuc2l6ZSgpICYmICFpc01vdmVSZWxhdGVkKG90aGVyVG1wSW5kZXgpKSB7CisgICAgICAgICAg
ICBpZiAobV9kZWdyZWVzW290aGVyVG1wSW5kZXhdIDwgbV9yZWdpc3RlcnNJblByaW9yaXR5T3Jk
ZXIuc2l6ZSgpICYmICFpc01vdmVSZWxhdGVkKG90aGVyVG1wSW5kZXgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fZnJlZXplV29ya2xpc3QucmVtb3ZlKG90aGVyVG1wSW5kZXgpKQogICAgICAg
ICAgICAgICAgICAgICBtX3NpbXBsaWZ5V29ya2xpc3QuYXBwZW5kKG90aGVyVG1wSW5kZXgpOwog
ICAgICAgICAgICAgfQpAQCAtMjI3LDcgKzIyNyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgYm9vbCBjb2xvckFzc2lnbmVkID0gZmFsc2U7Ci0gICAgICAgICAg
ICBmb3IgKFJlZyByZWcgOiBtX3JlZ3NJblByaW9yaXR5T3JkZXIpIHsKKyAgICAgICAgICAgIGZv
ciAoUmVnIHJlZyA6IG1fcmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFjb2xvcmVkUmVnaXN0ZXJzLmdldChyZWcpKSB7CiAgICAgICAgICAgICAgICAgICAg
IG1fY29sb3JlZFRtcFt0bXBJbmRleF0gPSByZWc7CiAgICAgICAgICAgICAgICAgICAgIGNvbG9y
QXNzaWduZWQgPSB0cnVlOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFT
U0VSVChtX2RlZ3JlZXNbdG1wSW5kZXhdKTsKIAogICAgICAgICB1bnNpZ25lZCBvbGREZWdyZWUg
PSBtX2RlZ3JlZXNbdG1wSW5kZXhdLS07Ci0gICAgICAgIGlmIChvbGREZWdyZWUgPT0gbV9yZWdz
SW5Qcmlvcml0eU9yZGVyLnNpemUoKSkgeworICAgICAgICBpZiAob2xkRGVncmVlID09IG1fcmVn
aXN0ZXJzSW5Qcmlvcml0eU9yZGVyLnNpemUoKSkgewogICAgICAgICAgICAgZW5hYmxlTW92ZXNP
blZhbHVlQW5kQWRqYWNlbnRzKHRtcEluZGV4KTsKICAgICAgICAgICAgIG1fc3BpbGxXb3JrbGlz
dC5yZW1vdmUodG1wSW5kZXgpOwogICAgICAgICAgICAgaWYgKGlzTW92ZVJlbGF0ZWQodG1wSW5k
ZXgpKQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFkZFdvcmtMaXN0
KEluZGV4VHlwZSB0bXBJbmRleCkKICAgICB7Ci0gICAgICAgIGlmICghaXNQcmVjb2xvcmVkKHRt
cEluZGV4KSAmJiBtX2RlZ3JlZXNbdG1wSW5kZXhdIDwgbV9yZWdzSW5Qcmlvcml0eU9yZGVyLnNp
emUoKSAmJiAhaXNNb3ZlUmVsYXRlZCh0bXBJbmRleCkpIHsKKyAgICAgICAgaWYgKCFpc1ByZWNv
bG9yZWQodG1wSW5kZXgpICYmIG1fZGVncmVlc1t0bXBJbmRleF0gPCBtX3JlZ2lzdGVyc0luUHJp
b3JpdHlPcmRlci5zaXplKCkgJiYgIWlzTW92ZVJlbGF0ZWQodG1wSW5kZXgpKSB7CiAgICAgICAg
ICAgICBtX2ZyZWV6ZVdvcmtsaXN0LnJlbW92ZSh0bXBJbmRleCk7CiAgICAgICAgICAgICBtX3Np
bXBsaWZ5V29ya2xpc3QuYXBwZW5kKHRtcEluZGV4KTsKICAgICAgICAgfQpAQCAtNDAzLDcgKzQw
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX2ZyYW1lUG9pbnRlckluZGV4ICYmIG1faW50
ZXJmZXJlc1dpdGhGcmFtZVBvaW50ZXIucXVpY2tHZXQodikpCiAgICAgICAgICAgICBtX2ludGVy
ZmVyZXNXaXRoRnJhbWVQb2ludGVyLnF1aWNrU2V0KHUpOwogCi0gICAgICAgIGlmIChtX2RlZ3Jl
ZXNbdV0gPj0gbV9yZWdzSW5Qcmlvcml0eU9yZGVyLnNpemUoKSAmJiBtX2ZyZWV6ZVdvcmtsaXN0
LnJlbW92ZSh1KSkKKyAgICAgICAgaWYgKG1fZGVncmVlc1t1XSA+PSBtX3JlZ2lzdGVyc0luUHJp
b3JpdHlPcmRlci5zaXplKCkgJiYgbV9mcmVlemVXb3JrbGlzdC5yZW1vdmUodSkpCiAgICAgICAg
ICAgICBhZGRUb1NwaWxsKHUpOwogICAgIH0KIApAQCAtNDI5LDcgKzQyOSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNvbnN0IGF1dG8mIGFkamFjZW50c09mVSA9IG1fYWRqYWNlbmN5TGlzdFt1XTsK
ICAgICAgICAgY29uc3QgYXV0byYgYWRqYWNlbnRzT2ZWID0gbV9hZGphY2VuY3lMaXN0W3ZdOwog
Ci0gICAgICAgIGlmIChhZGphY2VudHNPZlUuc2l6ZSgpICsgYWRqYWNlbnRzT2ZWLnNpemUoKSA8
IG1fcmVnc0luUHJpb3JpdHlPcmRlci5zaXplKCkpIHsKKyAgICAgICAgaWYgKGFkamFjZW50c09m
VS5zaXplKCkgKyBhZGphY2VudHNPZlYuc2l6ZSgpIDwgbV9yZWdpc3RlcnNJblByaW9yaXR5T3Jk
ZXIuc2l6ZSgpKSB7CiAgICAgICAgICAgICAvLyBTaG9ydGN1dDogaWYgdGhlIHRvdGFsIG51bWJl
ciBvZiBhZGphY2VudHMgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgcmVnaXN0ZXIsIHRoZSBj
b25kaXRpb24gaXMgYWx3YXlzIG1ldC4KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC00MzksMjMgKzQzOSwyMyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKEluZGV4VHlw
ZSBhZGphY2VudFRtcEluZGV4IDogYWRqYWNlbnRzT2ZVKSB7CiAgICAgICAgICAgICBBU1NFUlQo
YWRqYWNlbnRUbXBJbmRleCAhPSB2KTsKICAgICAgICAgICAgIEFTU0VSVChhZGphY2VudFRtcElu
ZGV4ICE9IHUpOwotICAgICAgICAgICAgaWYgKCFoYXNCZWVuU2ltcGxpZmllZChhZGphY2VudFRt
cEluZGV4KSAmJiBtX2RlZ3JlZXNbYWRqYWNlbnRUbXBJbmRleF0gPj0gbV9yZWdzSW5Qcmlvcml0
eU9yZGVyLnNpemUoKSkgeworICAgICAgICAgICAgaWYgKCFoYXNCZWVuU2ltcGxpZmllZChhZGph
Y2VudFRtcEluZGV4KSAmJiBtX2RlZ3JlZXNbYWRqYWNlbnRUbXBJbmRleF0gPj0gbV9yZWdpc3Rl
cnNJblByaW9yaXR5T3JkZXIuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBoaWdoT3JkZXJBZGphY2VudHMuYWRkKGFkamFjZW50VG1wSW5kZXgpOwotICAgICAgICAg
ICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiBoaWdoT3JkZXJBZGphY2VudHMuc2l6
ZSgpID49IG1fcmVnc0luUHJpb3JpdHlPcmRlci5zaXplKCkpCisgICAgICAgICAgICAgICAgaWYg
KGFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIGhpZ2hPcmRlckFkamFjZW50cy5zaXplKCkgPj0gbV9y
ZWdpc3RlcnNJblByaW9yaXR5T3JkZXIuc2l6ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZm9yIChJbmRleFR5
cGUgYWRqYWNlbnRUbXBJbmRleCA6IGFkamFjZW50c09mVikgewogICAgICAgICAgICAgQVNTRVJU
KGFkamFjZW50VG1wSW5kZXggIT0gdSk7CiAgICAgICAgICAgICBBU1NFUlQoYWRqYWNlbnRUbXBJ
bmRleCAhPSB2KTsKLSAgICAgICAgICAgIGlmICghaGFzQmVlblNpbXBsaWZpZWQoYWRqYWNlbnRU
bXBJbmRleCkgJiYgbV9kZWdyZWVzW2FkamFjZW50VG1wSW5kZXhdID49IG1fcmVnc0luUHJpb3Jp
dHlPcmRlci5zaXplKCkpIHsKKyAgICAgICAgICAgIGlmICghaGFzQmVlblNpbXBsaWZpZWQoYWRq
YWNlbnRUbXBJbmRleCkgJiYgbV9kZWdyZWVzW2FkamFjZW50VG1wSW5kZXhdID49IG1fcmVnaXN0
ZXJzSW5Qcmlvcml0eU9yZGVyLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gaGlnaE9yZGVyQWRqYWNlbnRzLmFkZChhZGphY2VudFRtcEluZGV4KTsKLSAgICAgICAg
ICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgaGlnaE9yZGVyQWRqYWNlbnRzLnNp
emUoKSA+PSBtX3JlZ3NJblByaW9yaXR5T3JkZXIuc2l6ZSgpKQorICAgICAgICAgICAgICAgIGlm
IChhZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiBoaWdoT3JkZXJBZGphY2VudHMuc2l6ZSgpID49IG1f
cmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyLnNpemUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKGhp
Z2hPcmRlckFkamFjZW50cy5zaXplKCkgPCBtX3JlZ3NJblByaW9yaXR5T3JkZXIuc2l6ZSgpKTsK
KyAgICAgICAgQVNTRVJUKGhpZ2hPcmRlckFkamFjZW50cy5zaXplKCkgPCBtX3JlZ2lzdGVyc0lu
UHJpb3JpdHlPcmRlci5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTQ2NCw2ICs0NjQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKGlzUHJlY29sb3JlZCh1
KSk7CiAgICAgICAgIEFTU0VSVCghaXNQcmVjb2xvcmVkKHYpKTsKIAorICAgICAgICAvLyBJZiBp
dCdzIGJlZW4gcGlubmVkIHRoZW4gd2UgYXJlIGZyZWUgdG8gY29hbGVzY2UuCisgICAgICAgIGlm
IChtX3Bpbm5lZFJlZ2lzdGVycy5nZXQobV9jb2xvcmVkVG1wW3VdKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCiAgICAgICAgIC8vIElmIGFueSBhZGphY2VudCBvZiB0aGUgbm9uLWNvbG9y
ZWQgbm9kZSBpcyBub3QgYW4gYWRqYWNlbnQgb2YgdGhlIGNvbG9yZWQgbm9kZSBBTkQgaGFzIGEg
ZGVncmVlID49IEsKICAgICAgICAgLy8gdGhlcmUgaXMgYSByaXNrIHRoYXQgdGhpcyBub2RlIG5l
ZWRzIHRvIGhhdmUgdGhlIHNhbWUgY29sb3IgYXMgb3VyIHByZWNvbG9yZWQgbm9kZS4gSWYgd2Ug
Y29hbGVzY2Ugc3VjaAogICAgICAgICAvLyBtb3ZlLCB3ZSBtYXkgY3JlYXRlIGFuIHVuY29sb3Jh
YmxlIGdyYXBoLgpAQCAtNDcxLDcgKzQ3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5z
aWduZWQgYWRqYWNlbnRUbXBJbmRleCA6IGFkamFjZW50c09mVikgewogICAgICAgICAgICAgaWYg
KCFpc1ByZWNvbG9yZWQoYWRqYWNlbnRUbXBJbmRleCkKICAgICAgICAgICAgICAgICAmJiAhaGFz
QmVlblNpbXBsaWZpZWQoYWRqYWNlbnRUbXBJbmRleCkKLSAgICAgICAgICAgICAgICAmJiBtX2Rl
Z3JlZXNbYWRqYWNlbnRUbXBJbmRleF0gPj0gbV9yZWdzSW5Qcmlvcml0eU9yZGVyLnNpemUoKQor
ICAgICAgICAgICAgICAgICYmIG1fZGVncmVlc1thZGphY2VudFRtcEluZGV4XSA+PSBtX3JlZ2lz
dGVyc0luUHJpb3JpdHlPcmRlci5zaXplKCkKICAgICAgICAgICAgICAgICAmJiAhbV9pbnRlcmZl
cmVuY2VFZGdlcy5jb250YWlucyhJbnRlcmZlcmVuY2VFZGdlKHUsIGFkamFjZW50VG1wSW5kZXgp
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTU0OCw3ICs1
NTIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKICAgICB0eXBlZGVmIFNpbXBsZUNsYXNzSGFzaFRy
YWl0czxJbnRlcmZlcmVuY2VFZGdlPiBJbnRlcmZlcmVuY2VFZGdlSGFzaFRyYWl0czsKIAotICAg
IGNvbnN0IFZlY3RvcjxSZWc+JiBtX3JlZ3NJblByaW9yaXR5T3JkZXI7CisgICAgY29uc3QgVmVj
dG9yPFJlZz4mIG1fcmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyOworICAgIGNvbnN0IFJlZ2lzdGVy
U2V0IG1fcGlubmVkUmVnaXN0ZXJzOwogICAgIEluZGV4VHlwZSBtX2xhc3RQcmVjb2xvcmVkUmVn
aXN0ZXJJbmRleCB7IDAgfTsKIAogICAgIC8vIFRoZSBpbnRlcmZlcmVuY2UgZ3JhcGguCkBAIC03
MjcsNyArNzMyLDcgQEAgdGVtcGxhdGU8QXJnOjpUeXBlIHR5cGU+CiBjbGFzcyBDb2xvcmluZ0Fs
bG9jYXRvciA6IHB1YmxpYyBBYnN0cmFjdENvbG9yaW5nQWxsb2NhdG9yPHVuc2lnbmVkPiB7CiBw
dWJsaWM6CiAgICAgQ29sb3JpbmdBbGxvY2F0b3IoQ29kZSYgY29kZSwgVG1wV2lkdGgmIHRtcFdp
ZHRoLCBjb25zdCBVc2VDb3VudHM8VG1wPiYgdXNlQ291bnRzLCBjb25zdCBIYXNoU2V0PHVuc2ln
bmVkPiYgdW5zcGlsbGFibGVUbXApCi0gICAgICAgIDogQWJzdHJhY3RDb2xvcmluZ0FsbG9jYXRv
cjx1bnNpZ25lZD4ocmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSwgQWJzb2x1dGVUbXBNYXBwZXI8
dHlwZT46Omxhc3RNYWNoaW5lUmVnaXN0ZXJJbmRleCgpLCB0bXBBcnJheVNpemUoY29kZSksIHVu
c3BpbGxhYmxlVG1wKQorICAgICAgICA6IEFic3RyYWN0Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWdu
ZWQ+KGNvZGUucmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyKHR5cGUpLCBjb2RlLnBpbm5lZFJlZ2lz
dGVycygpLCBBYnNvbHV0ZVRtcE1hcHBlcjx0eXBlPjo6bGFzdE1hY2hpbmVSZWdpc3RlckluZGV4
KCksIHRtcEFycmF5U2l6ZShjb2RlKSwgdW5zcGlsbGFibGVUbXApCiAgICAgICAgICwgbV9jb2Rl
KGNvZGUpCiAgICAgICAgICwgbV90bXBXaWR0aCh0bXBXaWR0aCkKICAgICAgICAgLCBtX3VzZUNv
dW50cyh1c2VDb3VudHMpCkBAIC04MzksNyArODQ0LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
IXJlZykgewogICAgICAgICAgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IFRtcHMgdGhhdCBpbnRl
cmZlcmUuIEEgVG1wIHRoYXQgbmV2ZXIgaW50ZXJmZXJlIHdpdGggYW55dGhpbmcKICAgICAgICAg
ICAgIC8vIGNhbiB0YWtlIGFueSByZWdpc3Rlci4KLSAgICAgICAgICAgIHJlZyA9IHJlZ3NJblBy
aW9yaXR5T3JkZXIodHlwZSkuZmlyc3QoKTsKKyAgICAgICAgICAgIHJlZyA9IG1fY29kZS5yZWdp
c3RlcnNJblByaW9yaXR5T3JkZXIodHlwZSkuZmlyc3QoKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gcmVnOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAppbmRleCBhNGExOWExLi5mYWQyNzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxv
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVn
QWxsb2MuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIK
ICNpbmNsdWRlICJBaXJMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKLSNp
bmNsdWRlICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgpA
QCAtODYsNyArODUsNyBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAg
ICAgICBzdGQ6OmFycmF5PEFyZywgMj4gcmVzdWx0OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgMjsgKytpKSB7CiAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiByZWdzSW5Qcmlvcml0eU9yZGVyKHR5cGUpKSB7CisgICAg
ICAgICAgICBmb3IgKFJlZyByZWcgOiBjb2RlLnJlZ2lzdGVyc0luUHJpb3JpdHlPcmRlcih0eXBl
KSkgewogICAgICAgICAgICAgICAgIGlmICghc2V0LmdldChyZWcpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdFtpXSA9IFRtcChyZWcpOwogICAgICAgICAgICAgICAgICAgICBzZXQuc2V0
KHJlZyk7CkBAIC0xMzQsNyArMTMzLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYg
Y29kZSkKICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PEFyZywgMj4gZ3BTY3JhdGNoID0gZ2V0
U2NyYXRjaGVzKHNldCwgQXJnOjpHUCk7CiAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxBcmcs
IDI+IGZwU2NyYXRjaCA9IGdldFNjcmF0Y2hlcyhzZXQsIEFyZzo6RlApOwogICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0cygKLSAgICAgICAgICAgICAgICAgICAgaW5zdElu
ZGV4LCBlbWl0U2h1ZmZsZShwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qub3JpZ2lu
KSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RJbmRleCwgZW1pdFNodWZmbGUoY29kZSwgcGFp
cnMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBpbnN0Lm9yaWdpbikpOwogICAgICAgICAgICAgICAg
IGluc3QgPSBJbnN0KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBA
IC0xOTMsNyArMTkyLDcgQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiUHJlLWNhbGwgcGFpcnMgZm9yICIsIGluc3QsICI6
ICIsIGxpc3REdW1wKHBhaXJzKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydEluc3RzKAotICAgICAgICAgICAgICAgICAgICBpbnN0
SW5kZXgsIGVtaXRTaHVmZmxlKHBhaXJzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgaW5zdC5vcmln
aW4pKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdEluZGV4LCBlbWl0U2h1ZmZsZShjb2RlLCBw
YWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qub3JpZ2luKSk7CiAKICAgICAgICAgICAg
ICAgICBpbnN0ID0gYnVpbGRDQ2FsbChjb2RlLCBpbnN0Lm9yaWdpbiwgZGVzdGluYXRpb25zKTsK
ICAgICAgICAgICAgICAgICBpZiAob2xkS2luZC50cmFwcykKQEAgLTIyNCw3ICsyMjMsNyBAQCB2
b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgIGZwU2Ny
YXRjaCA9IGdldFNjcmF0Y2hlcyhsaXZlUmVncywgQXJnOjpGUCk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydEluc3RzKAotICAgICAgICAgICAg
ICAgICAgICBpbnN0SW5kZXggKyAxLCBlbWl0U2h1ZmZsZShwYWlycywgZ3BTY3JhdGNoLCBmcFNj
cmF0Y2gsIGluc3Qub3JpZ2luKSk7CisgICAgICAgICAgICAgICAgICAgIGluc3RJbmRleCArIDEs
IGVtaXRTaHVmZmxlKGNvZGUsIHBhaXJzLCBncFNjcmF0Y2gsIGZwU2NyYXRjaCwgaW5zdC5vcmln
aW4pKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZWdpc3RlclByaW9yaXR5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuaAppbmRleCA4
NDIwODNjLi42ZjExODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclJlZ2lzdGVyUHJpb3JpdHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpclJlZ2lzdGVyUHJpb3JpdHkuaApAQCAtNDUsMTMgKzQ1LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgUmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyPEZQUkluZm8+IHsKICAgICBjb25zdCBWZWN0b3I8
RlBSUmVnPiYgaW5Qcmlvcml0eU9yZGVyKCkgeyByZXR1cm4gZnByc0luUHJpb3JpdHlPcmRlcigp
OyB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYW5rPgotY29uc3QgVmVjdG9yPHR5cGVuYW1l
IEJhbms6OlJlZ2lzdGVyVHlwZT4mIHJlZ3NJblByaW9yaXR5T3JkZXIoKQotewotICAgIHJldHVy
biBSZWdpc3RlcnNJblByaW9yaXR5T3JkZXI8QmFuaz46OmluUHJpb3JpdHlPcmRlcigpOwotfQot
Ci1KU19FWFBPUlRfUFJJVkFURSBjb25zdCBWZWN0b3I8UmVnPiYgcmVnc0luUHJpb3JpdHlPcmRl
cihBcmc6OlR5cGUpOworY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3NJblByaW9yaXR5T3JkZXIoQXJn
OjpUeXBlKTsKIAogfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKaW5kZXgg
MTY3NjcwNS4uZWEwYTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkFp
ckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJBaXJQ
aGFzZVNjb3BlLmgiCi0jaW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUg
PHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNw
YWNlIEFpciB7CkBAIC0xMjksNyArMTI4LDcgQEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYg
Y29kZSkKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgQXJnOjpVc2U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpDb2xk
VXNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogcmVnc0luUHJpb3Jp
dHlPcmRlcih0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDog
Y29kZS5yZWdpc3RlcnNJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIXNldEJlZm9yZS5nZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRCZWZvcmUuc2V0KHJlZyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNob3NlblJlZyA9IHJlZzsKQEAgLTEzOSw3ICsxMzgsNyBAQCB2b2lkIHNwaWxs
RXZlcnl0aGluZyhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgQXJnOjpEZWY6CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgQXJnOjpaRGVmOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogcmVn
c0luUHJpb3JpdHlPcmRlcih0eXBlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChS
ZWcgcmVnIDogY29kZS5yZWdpc3RlcnNJblByaW9yaXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEFmdGVyLmdldChyZWcpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEFmdGVyLnNldChyZWcpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaG9zZW5SZWcgPSByZWc7CkBAIC0xNTMsNyArMTUyLDcgQEAgdm9p
ZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBB
cmc6OkxhdGVDb2xkVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6U2NyYXRjaDoK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBBcmc6OkVhcmx5RGVmOgotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChSZWcgcmVnIDogcmVnc0luUHJpb3JpdHlPcmRlcih0eXBlKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWcgcmVnIDogY29kZS5yZWdpc3RlcnNJblByaW9y
aXR5T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEJl
Zm9yZS5nZXQocmVnKSAmJiAhc2V0QWZ0ZXIuZ2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QWZ0ZXIuc2V0KHJlZyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEJlZm9yZS5zZXQocmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L3Rlc3RhaXIuY3BwCmluZGV4IGY3N2Q1MGYuLmNiMzRjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkFpckNv
ZGUuaCIKICNpbmNsdWRlICJBaXJHZW5lcmF0ZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgogI2luY2x1ZGUgIkFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQ29tcGlsYXRpb24uaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZS5oIgpAQCAtMzkzLDcgKzM5Miw3IEBAIHZvaWQgdGVzdFNodWZm
bGVCcm9hZGNhc3RBbGxSZWdzKCkKICAgICBCMzo6UHJvY2VkdXJlIHByb2M7CiAgICAgQ29kZSYg
Y29kZSA9IHByb2MuY29kZSgpOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3MgPSByZWdz
SW5Qcmlvcml0eU9yZGVyKEFyZzo6R1ApOworICAgIGNvbnN0IFZlY3RvcjxSZWc+JiByZWdzID0g
Y29kZS5yZWdpc3RlcnNJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CiAKICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gY29kZS5hZGRCbG9jaygpOwogICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRy
LCBBcmc6OmltbSgzNSksIFRtcChHUFJJbmZvOjpyZWdUMCkpOwpAQCAtODYwLDcgKzg1OSw3IEBA
IHZvaWQgdGVzdFNodWZmbGVTaGlmdEFsbFJlZ3MoKQogICAgIEIzOjpQcm9jZWR1cmUgcHJvYzsK
ICAgICBDb2RlJiBjb2RlID0gcHJvYy5jb2RlKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8UmVnPiYg
cmVncyA9IHJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CisgICAgY29uc3QgVmVjdG9yPFJl
Zz4mIHJlZ3MgPSBjb2RlLnJlZ2lzdGVyc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsKIAogICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHJlZ3Muc2l6ZSgpOyArK2kpCkBAIC04OTYsNyArODk1LDcgQEAgdm9pZCB0ZXN0
U2h1ZmZsZVJvdGF0ZUFsbFJlZ3MoKQogICAgIEIzOjpQcm9jZWR1cmUgcHJvYzsKICAgICBDb2Rl
JiBjb2RlID0gcHJvYy5jb2RlKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8UmVnPiYgcmVncyA9IHJl
Z3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7CisgICAgY29uc3QgVmVjdG9yPFJlZz4mIHJlZ3Mg
PSBjb2RlLnJlZ2lzdGVyc0luUHJpb3JpdHlPcmRlcihBcmc6OkdQKTsKIAogICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBjb2RlLmFkZEJsb2NrKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHJlZ3Muc2l6ZSgpOyArK2kpCkBAIC0xMTY4LDcgKzExNjcsNyBAQCB2b2lkIHRlc3RTaHVmZmxl
U2hpZnRNZW1vcnlBbGxSZWdzKCkKICAgICBtZW1vcnlbMF0gPSAzNTsKICAgICBtZW1vcnlbMV0g
PSAzNjsKIAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6
R1ApOworICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ2lzdGVyc0luUHJpb3JpdHlPcmRl
cihBcmc6OkdQKTsKICAgICByZWdzLnJlbW92ZUZpcnN0KFJlZyhHUFJJbmZvOjpyZWdUMCkpOwog
CiAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKQEAgLTEyMTgsNyArMTIx
Nyw3IEBAIHZvaWQgdGVzdFNodWZmbGVTaGlmdE1lbW9yeUFsbFJlZ3M2NCgpCiAgICAgbWVtb3J5
WzBdID0gMzUwMDAwMDAwMDAwMDBsbDsKICAgICBtZW1vcnlbMV0gPSAzNjAwMDAwMDAwMDAwMGxs
OwogCi0gICAgVmVjdG9yPFJlZz4gcmVncyA9IHJlZ3NJblByaW9yaXR5T3JkZXIoQXJnOjpHUCk7
CisgICAgVmVjdG9yPFJlZz4gcmVncyA9IGNvZGUucmVnaXN0ZXJzSW5Qcmlvcml0eU9yZGVyKEFy
Zzo6R1ApOwogICAgIHJlZ3MucmVtb3ZlRmlyc3QoUmVnKEdQUkluZm86OnJlZ1QwKSk7CiAKICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwpAQCAtMTI3OSw3ICsxMjc4LDcg
QEAgdm9pZCB0ZXN0U2h1ZmZsZVNoaWZ0TWVtb3J5QWxsUmVnc01peGVkV2lkdGgoKQogICAgIG1l
bW9yeVswXSA9IDM1MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVtb3J5WzFdID0gMzYwMDAwMDAwMDAw
MDBsbDsKIAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6
R1ApOworICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ2lzdGVyc0luUHJpb3JpdHlPcmRl
cihBcmc6OkdQKTsKICAgICByZWdzLnJlbW92ZUZpcnN0KFJlZyhHUFJJbmZvOjpyZWdUMCkpOwog
CiAgICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKQEAgLTE0NjksNyArMTQ2
OCw3IEBAIHZvaWQgdGVzdFNodWZmbGVSb3RhdGVNZW1vcnlBbGxSZWdzNjQoKQogICAgIG1lbW9y
eVswXSA9IDM1MDAwMDAwMDAwMDAwbGw7CiAgICAgbWVtb3J5WzFdID0gMzYwMDAwMDAwMDAwMDBs
bDsKIAotICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSByZWdzSW5Qcmlvcml0eU9yZGVyKEFyZzo6R1Ap
OworICAgIFZlY3RvcjxSZWc+IHJlZ3MgPSBjb2RlLnJlZ2lzdGVyc0luUHJpb3JpdHlPcmRlcihB
cmc6OkdQKTsKICAgICByZWdzLnJlbW92ZUZpcnN0KFJlZyhHUFJJbmZvOjpyZWdUMCkpOwogCiAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IGNvZGUuYWRkQmxvY2soKTsKQEAgLTE1MjEsNyArMTUyMCw3
IEBAIHZvaWQgdGVzdFNodWZmbGVSb3RhdGVNZW1vcnlBbGxSZWdzTWl4ZWRXaWR0aCgpCiAgICAg
bWVtb3J5WzBdID0gMzUwMDAwMDAwMDAwMDBsbDsKICAgICBtZW1vcnlbMV0gPSAzNjAwMDAwMDAw
MDAwMGxsOwogCi0gICAgVmVjdG9yPFJlZz4gcmVncyA9IHJlZ3NJblByaW9yaXR5T3JkZXIoQXJn
OjpHUCk7CisgICAgVmVjdG9yPFJlZz4gcmVncyA9IGNvZGUucmVnaXN0ZXJzSW5Qcmlvcml0eU9y
ZGVyKEFyZzo6R1ApOwogICAgIHJlZ3MucmVtb3ZlRmlyc3QoUmVnKEdQUkluZm86OnJlZ1QwKSk7
CiAKICAgICBCYXNpY0Jsb2NrKiByb290ID0gY29kZS5hZGRCbG9jaygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmluZGV4IGQ3ODhiZjQuLjA1MDk5MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fYml0cy5m
aWx0ZXIob3RoZXIubV9iaXRzKTsgfQogICAgIHZvaWQgZXhjbHVkZShjb25zdCBSZWdpc3RlclNl
dCYgb3RoZXIpIHsgbV9iaXRzLmV4Y2x1ZGUob3RoZXIubV9iaXRzKTsgfQogICAgIAotICAgIHNp
emVfdCBudW1iZXJPZlNldEdQUnMoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzaXpl
X3QgbnVtYmVyT2ZTZXRHUFJzKCkgY29uc3Q7CiAgICAgc2l6ZV90IG51bWJlck9mU2V0RlBScygp
IGNvbnN0OwogICAgIHNpemVfdCBudW1iZXJPZlNldFJlZ2lzdGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cy5jb3VudCgpOyB9CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>