<?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>150091</bug_id>
          
          <creation_ts>2015-10-13 10:45:14 -0700</creation_ts>
          <short_desc>Avoid useless copies in range-loops that are using &apos;auto&apos;</short_desc>
          <delta_ts>2015-10-13 12:16:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132796</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-13 10:45:14 -0700</bug_when>
    <thetext>Avoid useless copies in range-loops that are using &apos;auto&apos;. Also use &apos;auto*&apos; instead of &apos;auto&apos; when range values are pointers for clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132802</commentid>
    <comment_count>1</comment_count>
      <attachid>262992</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-13 10:52:56 -0700</bug_when>
    <thetext>Created attachment 262992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132829</commentid>
    <comment_count>2</comment_count>
      <attachid>262992</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-13 11:35:43 -0700</bug_when>
    <thetext>Comment on attachment 262992
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:142
&gt; -    for (auto track : stream.tracks()) {
&gt; +    for (auto&amp; track : stream.tracks()) {
&gt;          m_MediaStreamPrivate-&gt;addTrack(WTF::move(track));

This one changes semantics, not just efficiency. Moving from a reference is different from moving from a copy. Hope that’s OK. I didn’t have time just now to look at the tracks() function to make sure it’s harmless.

&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:482
&gt; +    for (auto&amp; iter : m_pageURLRetainCountMap) {

The name iter is so lame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132834</commentid>
    <comment_count>3</comment_count>
      <attachid>263002</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-13 11:43:09 -0700</bug_when>
    <thetext>Created attachment 263002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132857</commentid>
    <comment_count>4</comment_count>
      <attachid>263002</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 12:16:32 -0700</bug_when>
    <thetext>Comment on attachment 263002
Patch

Clearing flags on attachment: 263002

Committed r191002: &lt;http://trac.webkit.org/changeset/191002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132858</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 12:16:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262992</attachid>
            <date>2015-10-13 10:52:56 -0700</date>
            <delta_ts>2015-10-13 11:43:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150091-20151013105220.patch</filename>
            <type>text/plain</type>
            <size>59480</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwOTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE4YTA0MjExOTgxM2Ux
ZDM2Mjk1MjY0YWNlODBkOWMyYTVlMGFhZS4uYjUxN2M3NTA1ZTU3Mzk3NDQwMWUzMDRmZTcyMGY4
YWYwNmM4OGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTEwLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgdXNlbGVzcyBjb3Bp
ZXMgaW4gcmFuZ2UtbG9vcHMgdGhhdCBhcmUgdXNpbmcgJ2F1dG8nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwOTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCB1c2VsZXNzIGNvcGllcyBpbiBy
YW5nZS1sb29wcyB0aGF0IGFyZSB1c2luZyAnYXV0bycuIEFsc28gdXNlCisgICAgICAgICdhdXRv
KicgaW5zdGVhZCBvZiAnYXV0bycgd2hlbiByYW5nZSB2YWx1ZXMgYXJlIHBvaW50ZXJzIGZvciBj
bGFyaXR5LgorCiAyMDE1LTEwLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+CiAKICAgICAgICAgRml4IGxpY2Vuc2UgYW5kIGNvcHlyaWdodHMgb2YgV2ViQ29y
ZSBqcyBiaW5kaW5nIGJ1aWx0aW4gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2NTkyMTNiZTI5
YzYyZWQ1M2RmN2ZlNzI5M2EyMjMwMTdkNmNiY2NlLi42MDZlM2U2YTliYTBiYTg5ZjE0OWQ1N2Ni
YTQ5Y2FkZmEyMDdhMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUt
MTAtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCB1
c2VsZXNzIGNvcGllcyBpbiByYW5nZS1sb29wcyB0aGF0IGFyZSB1c2luZyAnYXV0bycKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDA5MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIHVzZWxlc3Mg
Y29waWVzIGluIHJhbmdlLWxvb3BzIHRoYXQgYXJlIHVzaW5nICdhdXRvJy4gQWxzbyB1c2UKKyAg
ICAgICAgJ2F1dG8qJyBpbnN0ZWFkIG9mICdhdXRvJyB3aGVuIHJhbmdlIHZhbHVlcyBhcmUgcG9p
bnRlcnMgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAg
ICAgICAoLVtXZWJGcmFtZSBnZXREaWN0YXRpb25SZXN1bHRSYW5nZXM6YW5kTWV0YWRhdGFzOl0p
OgorCiAyMDE1LTEwLTA5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRG9uJ3QgYWxsb3cgcGx1Zy1pbnMgdG8gb3ZlcnJpZGUgaW1hZ2UgdHlwZXMgZm9y
IDxlbWJlZD4gZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZTgyYzA0Mzg2ZTY3N2E2NjMzYTNiYmY4
OTJlODZjMDc2MzgwY2JlLi42NmE5YTNiM2IwOGYwZmI2Y2VhMjZkMTFjOGQ3NTMyNzM5NGM2ZjNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMTAtMTMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCB1c2VsZXNzIGNvcGllcyBpbiByYW5n
ZS1sb29wcyB0aGF0IGFyZSB1c2luZyAnYXV0bycKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDA5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIHVzZWxlc3MgY29waWVzIGluIHJhbmdlLWxvb3Bz
IHRoYXQgYXJlIHVzaW5nICdhdXRvJy4gQWxzbyB1c2UKKyAgICAgICAgJ2F1dG8qJyBpbnN0ZWFk
IG9mICdhdXRvJyB3aGVuIHJhbmdlIHZhbHVlcyBhcmUgcG9pbnRlcnMgZm9yIGNsYXJpdHkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlZpc2l0ZWRMaW5rU3RvcmU6OnBlbmRpbmdWaXNpdGVkTGlua3NUaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZTo6cmVzaXplVGFibGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnJlbGVhc2VSZW1haW5pbmdJY29uc0ZvclBhZ2VVUkxzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpwbHVnaW5zKToKKwogMjAxNS0xMC0xMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBdm9pZCBjcmFzaCBkdWUgdG8gaW52YWxpZCBzY3Jl
ZW4gYm91bmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZjVlNTJmYjE5Zjk0MTBkOGJjNDliM2VmMjcyODVmYWRj
YTdmNTYyZS4uYzhjNjdiYzNlOTQ4ZTgyZDhhZWVhZTk3MTQ3Yjk3YmExYmUzOTdkMyAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTEwLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgdXNlbGVzcyBjb3BpZXMgaW4gcmFuZ2UtbG9vcHMg
dGhhdCBhcmUgdXNpbmcgJ2F1dG8nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTAwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBdm9pZCB1c2VsZXNzIGNvcGllcyBpbiByYW5nZS1sb29wcyB0aGF0IGFy
ZSB1c2luZyAnYXV0bycuIEFsc28gdXNlCisgICAgICAgICdhdXRvKicgaW5zdGVhZCBvZiAnYXV0
bycgd2hlbiByYW5nZSB2YWx1ZXMgYXJlIHBvaW50ZXJzIGZvciBjbGFyaXR5LgorCisgICAgICAg
ICogYm1hbGxvYy9EZWFsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpEZWFsbG9jYXRv
cjo6cHJvY2Vzc09iamVjdExvZyk6CisKIDIwMTUtMTAtMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dh
cmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBibWFsbG9jOiBEb24ndCBBU1NFUlQgdGhhdCBhbGwg
c3lzY2FsbHMgc3VjY2VlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDVmMjFkYTZkYmI4NmZjNDI5M2VmMjQzYjliMjhi
N2I5NTQ2NDZlMWEuLmMyZjRiYmZlNWYwNmRmYTI4ZmMwMjM0YmI0OTQ0MTMzZDc4ODM4Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hp
bGRyZW5Gcm9tU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlvbgogICAgICAg
ICAgICAgICAgICAgICBhZGRUYWJsZUNlbGxDaGlsZChvYmosIGFwcGVuZGVkUm93cywgbWF4Q29s
dW1uQ291bnQpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvIGNoaWxkID0gb2JqLT5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIGZv
ciAoYXV0byogY2hpbGQgPSBvYmotPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChjaGlsZCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcAppbmRleCBlMmNkM2M5MmRkMDY5OGFh
M2UzNGZlYTJlNmE0ZTQ5YzU2ZTcxN2RmLi5mNDYxM2NkY2VmMzgwNmJjY2M1YjU3ZGRlNDljZDM5
YmU2NmQ3YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUcmVlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUcmVl
Ojppc1RyZWVWYWxpZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBE
ZXF1ZTxOb2RlKj4gcXVldWU7Ci0gICAgZm9yIChhdXRvIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICBmb3IgKGF1dG8q
IGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkKICAgICAgICAgcXVldWUuYXBwZW5kKGNoaWxkKTsKIAogICAgIHdoaWxlICghcXVl
dWUuaXNFbXB0eSgpKSB7CkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6
OmlzVHJlZVZhbGlkKCkgY29uc3QKICAgICAgICAgaWYgKCFub2RlSGFzUm9sZShjaGlsZCwgImdy
b3VwIikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgZm9yIChhdXRvIGdy
b3VwQ2hpbGQgPSBjaGlsZC0+Zmlyc3RDaGlsZCgpOyBncm91cENoaWxkOyBncm91cENoaWxkID0g
Z3JvdXBDaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgZm9yIChhdXRvKiBncm91cENoaWxk
ID0gY2hpbGQtPmZpcnN0Q2hpbGQoKTsgZ3JvdXBDaGlsZDsgZ3JvdXBDaGlsZCA9IGdyb3VwQ2hp
bGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoZ3JvdXBDaGlsZCk7
CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBl
ZWRlNWE3MjEyNTI3NWUxNDViM2Q3ZDU4ZmNkODRiYjI0NjIwMzZkLi42M2E1MTVjMjUzM2IxZjUw
MzRhZmRhYTM4NzA0Yjc2OWUyNzI5ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAt
MTAwMTMsNyArMTAwMTMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWx0ZXIoQ1NTUGFyc2Vy
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDU1NWYWx1ZT4mIHJlcwogewogICAgIC8vIFRo
ZSBmaWx0ZXIgaXMgYSBsaXN0IG9mIGZ1bmN0aW9uYWwgcHJpbWl0aXZlcyB0aGF0IHNwZWNpZnkg
aW5kaXZpZHVhbCBvcGVyYXRpb25zLgogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgZm9yIChhdXRvIHZhbHVl
ID0gdmFsdWVMaXN0LmN1cnJlbnQoKTsgdmFsdWU7IHZhbHVlID0gdmFsdWVMaXN0Lm5leHQoKSkg
eworICAgIGZvciAoYXV0byogdmFsdWUgPSB2YWx1ZUxpc3QuY3VycmVudCgpOyB2YWx1ZTsgdmFs
dWUgPSB2YWx1ZUxpc3QubmV4dCgpKSB7CiAgICAgICAgIGlmICh2YWx1ZS0+dW5pdCAhPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiAodmFsdWUtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6
OkZ1bmN0aW9uIHx8ICF2YWx1ZS0+ZnVuY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2OTRjOWMyMjMxYzdjM2E2ODgxYWFlOWYx
ZmFkZGZjNDFmOTYzMzMwLi44N2JiY2ZmYzdhNGVlMDQ1YjM0MzI4NjEwYTNiZDI3NGE4NmQ2YzAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIzMjgsNyArMjMyOCw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiAgICAgaWYgKCFtX2NsaWVudFRvSURNYXAu
aXNFbXB0eSgpICYmIHBhZ2UoKSkgewogICAgICAgICBWZWN0b3I8V2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENsaWVudCo+IGNsaWVudHM7CiAgICAgICAgIGNvcHlLZXlzVG9WZWN0b3IobV9j
bGllbnRUb0lETWFwLCBjbGllbnRzKTsKLSAgICAgICAgZm9yIChhdXRvIGNsaWVudCA6IGNsaWVu
dHMpCisgICAgICAgIGZvciAoYXV0byogY2xpZW50IDogY2xpZW50cykKICAgICAgICAgICAgIHJl
bW92ZVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCpjbGllbnQpOwogICAgIH0KICNlbmRpZgpA
QCAtMzU0NSw3ICszNTQ1LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlQXVkaW9Qcm9kdWNlcihN
ZWRpYVByb2R1Y2VyKiBhdWRpb1Byb2R1Y2VyKQogdm9pZCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5
aW5nTWVkaWEodWludDY0X3Qgc291cmNlRWxlbWVudElEKQogewogICAgIE1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBzdGF0ZSA9IE1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZzsKLSAg
ICBmb3IgKGF1dG8gYXVkaW9Qcm9kdWNlciA6IG1fYXVkaW9Qcm9kdWNlcnMpCisgICAgZm9yIChh
dXRvKiBhdWRpb1Byb2R1Y2VyIDogbV9hdWRpb1Byb2R1Y2VycykKICAgICAgICAgc3RhdGUgfD0g
YXVkaW9Qcm9kdWNlci0+bWVkaWFTdGF0ZSgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
CkBAIC0zNTc1LDcgKzM1NzUsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRp
YSh1aW50NjRfdCBzb3VyY2VFbGVtZW50SUQpCiAKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VNdXRlZFN0
YXRlRGlkQ2hhbmdlKCkKIHsKLSAgICBmb3IgKGF1dG8gYXVkaW9Qcm9kdWNlciA6IG1fYXVkaW9Q
cm9kdWNlcnMpCisgICAgZm9yIChhdXRvKiBhdWRpb1Byb2R1Y2VyIDogbV9hdWRpb1Byb2R1Y2Vy
cykKICAgICAgICAgYXVkaW9Qcm9kdWNlci0+cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggMWRmYjE4ODljYjVlMDhjZjBhMWNlNzFhN2Nm
MTRlYzZkMDhhMDg5OC4uYjQ0M2Y3MjhlMTdlNzUyZGNhOWY4NmVhNDRjMzMwMzk2NzdmNWVjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC03MTAsNyArNzEwLDcgQEAgUG9zaXRpb24gUG9z
aXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAog
CiAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gY3VycmVudFBvcy5vZmZzZXRJbkxl
YWZOb2RlKCk7CiAgICAgICAgICAgICBhdXRvIGxhc3RUZXh0Qm94ID0gdGV4dFJlbmRlcmVyLmxh
c3RUZXh0Qm94KCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYm94ID0gdGV4dFJlbmRlcmVyLmZp
cnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAg
ICAgZm9yIChhdXRvKiBib3ggPSB0ZXh0UmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94
ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQg
PD0gYm94LT5zdGFydCgpICsgYm94LT5sZW4oKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
dGV4dE9mZnNldCA+IGJveC0+c3RhcnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBjdXJyZW50UG9zOwpAQCAtODM4LDcgKzgzOCw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpkb3du
c3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogCiAgICAgICAg
ICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gY3VycmVudFBvcy5vZmZzZXRJbkxlYWZOb2RlKCk7
CiAgICAgICAgICAgICBhdXRvIGxhc3RUZXh0Qm94ID0gdGV4dFJlbmRlcmVyLmxhc3RUZXh0Qm94
KCk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYm94ID0gdGV4dFJlbmRlcmVyLmZpcnN0VGV4dEJv
eCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAgICAgZm9yIChh
dXRvKiBib3ggPSB0ZXh0UmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5u
ZXh0VGV4dEJveCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPD0gYm94LT5l
bmQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+PSBib3gtPnN0YXJ0
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwCmluZGV4IDEzMGM4MDI2ODkwNDY5ZGU1ZjZiNWE2ZjM4NmI1MGMyN2JmNzBkZmMu
LjE3MThkZjQ3YWRiMDM1NWMwZWVhMzBiYTNiODQwYTZiNjMzMDk0YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBVCiAgICAg
QVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCiAgICAgLy8gQ2hlY2sgaWYg
YW4gYXBwcm9wcmlhdGUgY2FjaGUgYWxyZWFkeSBleGlzdHMgaW4gbWVtb3J5LgotICAgIGZvciAo
YXV0byBncm91cCA6IG1fY2FjaGVzSW5NZW1vcnkudmFsdWVzKCkpIHsKKyAgICBmb3IgKGF1dG8q
IGdyb3VwIDogbV9jYWNoZXNJbk1lbW9yeS52YWx1ZXMoKSkgewogICAgICAgICBBU1NFUlQoIWdy
b3VwLT5pc09ic29sZXRlKCkpOwogCiAgICAgICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNo
ZSA9IGdyb3VwLT5uZXdlc3RDYWNoZSgpKSB7CkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSgpCiAgICAgLy8gQ2xlYXIgdGhlIHN0b3JhZ2Ug
SURzIGZvciB0aGUgY2FjaGVzIGluIG1lbW9yeS4KICAgICAvLyBUaGUgY2FjaGVzIHdpbGwgc3Rp
bGwgd29yaywgYnV0IGNhY2hlZCByZXNvdXJjZXMgd2lsbCBub3QgYmUgc2F2ZWQgdG8gZGlzayAK
ICAgICAvLyB1bnRpbCBhIGNhY2hlIHVwZGF0ZSBwcm9jZXNzIGhhcyBiZWVuIGluaXRpYXRlZC4K
LSAgICBmb3IgKGF1dG8gZ3JvdXAgOiBtX2NhY2hlc0luTWVtb3J5LnZhbHVlcygpKQorICAgIGZv
ciAoYXV0byogZ3JvdXAgOiBtX2NhY2hlc0luTWVtb3J5LnZhbHVlcygpKQogICAgICAgICBncm91
cC0+Y2xlYXJTdG9yYWdlSUQoKTsKIAogICAgIGNoZWNrRm9yRGVsZXRlZFJlc291cmNlcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBjNGQ5NjNlYTg2ZjRhOGY2
YTQ2MzFhZWUwNDdjMDc4NmQ4ZjllMjQ1Li4yYzc2ZjYzZmUxMTVlOTZjZjVkZjNiMzA5N2MyYWYz
YzdlYTg4NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNjQ5
LDcgKzY0OSw3IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KGNv
bnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhCiAgICAgICAgIHN0YXRlLnR5cGUg
PSBEcmFnU291cmNlQWN0aW9uTm9uZTsKICNlbmRpZgogCi0gICAgZm9yIChhdXRvIHJlbmRlcmVy
ID0gc3RhcnRFbGVtZW50LT5yZW5kZXJlcigpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJl
ci0+cGFyZW50KCkpIHsKKyAgICBmb3IgKGF1dG8qIHJlbmRlcmVyID0gc3RhcnRFbGVtZW50LT5y
ZW5kZXJlcigpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkpIHsKICAg
ICAgICAgRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9FbGVtZW50KCk7CiAg
ICAgICAgIGlmICghZWxlbWVudCkgewogICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBi
bG9ja3MgZG9uJ3QgY29ycmVzcG9uZCB0byBhY3R1YWwgRE9NIGVsZW1lbnRzLCBzbyB3ZSBza2lw
IG92ZXIgdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29t
cG9zaXRlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBv
c2l0ZUFuaW1hdGlvbi5jcHAKaW5kZXggMGZiNGNmOWY2MTY3NjNlMjMxMTEyOTQ1ODc3NWU2ZjU5
YWIxMmE5ZC4uZjMwZjEzOTVlMGNkMGIxYzg2YjMzMDE0ZjEwNDI1MDFlODMxNWRkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24u
Y3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtl
eWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgUmVuZGUKICAgICB9CiAg
ICAgCiAgICAgLy8gTm93IHJlbW92ZSB0aGUgYW5pbWF0aW9ucyBmcm9tIHRoZSBsaXN0LgotICAg
IGZvciAoYXV0byBuYW1lRm9yUmVtb3ZhbCA6IGFuaW1zVG9CZVJlbW92ZWQpCisgICAgZm9yIChh
dXRvKiBuYW1lRm9yUmVtb3ZhbCA6IGFuaW1zVG9CZVJlbW92ZWQpCiAgICAgICAgIG1fa2V5ZnJh
bWVBbmltYXRpb25zLnJlbW92ZShuYW1lRm9yUmVtb3ZhbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCmluZGV4IGJmMzVjNDdkM2RlMmUzMzgxYjY5MjgxOTM0NDZlMTlmYTVmMDgzYzku
LjFmNWZjNzgwN2YxY2I1YzZlZGMwNjRjM2JjNmZmNmVmODc0NmMxOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzeXN0ZW1XaWxsU2xlZXAoKQogICAgIGlmIChtX2ludGVycnVwdGVkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCisgICAg
Zm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykKICAgICAgICAgc2Vzc2lvbi0+YmVnaW5J
bnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbVNsZWVwKTsKIH0KIApAQCAt
MzQxLDcgKzM0MSw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzeXN0ZW1E
aWRXYWtlKCkKICAgICBpZiAobV9pbnRlcnJ1cHRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Zm9yIChhdXRvIHNlc3Npb24gOiBtX3Nlc3Npb25zKQorICAgIGZvciAoYXV0byogc2Vzc2lvbiA6
IG1fc2Vzc2lvbnMpCiAgICAgICAgIHNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IGU2ODM0MjliNGY1ZjZmYWMzOTlj
NmQ3NDM3NDJiOTMyMjJiZTIwMGMuLmUwZWU3MTY1NDUyMjdjMGVlMGE5ZmZhZjllNWY2NzgxMmU4
YWY4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmNwcApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgRm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9u
dERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICAgICAgaWYgKGVudHJ5LnZhbHVlICYmICFj
YWNoZWRGb250cygpLmNvbnRhaW5zKCplbnRyeS52YWx1ZSkpCiAgICAgICAgICAgICBrZXlzVG9S
ZW1vdmUuYXBwZW5kKGVudHJ5LmtleSk7CiAgICAgfQotICAgIGZvciAoYXV0byBrZXkgOiBrZXlz
VG9SZW1vdmUpCisgICAgZm9yIChhdXRvJiBrZXkgOiBrZXlzVG9SZW1vdmUpCiAgICAgICAgIGZv
bnRQbGF0Zm9ybURhdGFDYWNoZSgpLnJlbW92ZShrZXkpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBF
X1ZFUlRJQ0FMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRo
VXRpbGl0aWVzLmNwcAppbmRleCA0NjM1ZDhiNTEzYzE5ZmUyYTQ4MzY4MzcwMDMxYTg2ZDc1MDNh
YjZiLi4xNWQxMWIwNTE2Zjg0MDM5NDA5NzViMWVkMzU1NTc3MTE5YTc2ODg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApAQCAt
MTYwLDcgKzE2MCw3IEBAIHN0YXRpYyBGbG9hdFBvaW50R3JhcGg6OlBvbHlnb24gd2Fsa0dyYXBo
QW5kRXh0cmFjdFBvbHlnb24oRmxvYXRQb2ludEdyYXBoOjpOb2RlCiAgICAgICAgIC8vIHBvaW50
IHdpdGggdGhlIGdyZWF0ZXN0IGludGVybmFsIGFuZ2xlLgogICAgICAgICBGbG9hdFBvaW50R3Jh
cGg6Ok5vZGUqIG5leHROb2RlID0gbnVsbHB0cjsKICAgICAgICAgZmxvYXQgbmV4dE5vZGVBbmds
ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byBwb3RlbnRpYWxOZXh0Tm9kZSA6IGN1cnJlbnROb2Rl
LT5uZXh0UG9pbnRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBwb3RlbnRpYWxOZXh0Tm9kZSA6
IGN1cnJlbnROb2RlLT5uZXh0UG9pbnRzKCkpIHsKICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxO
ZXh0Tm9kZSA9PSBjdXJyZW50Tm9kZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGQyOWIxMTQwZWZhM2E5MTEzMzg4NjY1ZWFhODU2
OGU2MzEzYWZmZDguLmQ1NGYxY2E5M2Y3MDJmNTYyM2U4ZGIzOWNlYWYzNWU4ODY5NmRjY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUm
IHN0cmVhbSkKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmxvYWQoJXApIiwgdGhpcyk7CiAKICAgICBtX01lZGlhU3RyZWFtUHJpdmF0ZSA9IE1l
ZGlhU3RyZWFtUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSgqdGhpcywgc3RyZWFtKTsKLSAgICBmb3Ig
KGF1dG8gdHJhY2sgOiBzdHJlYW0udHJhY2tzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDog
c3RyZWFtLnRyYWNrcygpKSB7CiAgICAgICAgIG1fTWVkaWFTdHJlYW1Qcml2YXRlLT5hZGRUcmFj
ayhXVEY6Om1vdmUodHJhY2spKTsKICAgICAgICAgaWYgKCF0cmFjay0+ZW5kZWQoKSkgewogICAg
ICAgICAgICAgdHJhY2stPnNvdXJjZSgpLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKQEAgLTE0Niw3
ICsxNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bG9h
ZChNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKICAgICAgICAgfQogICAgIH0KICAgICBtX3By
ZXZpZXdMYXllciA9IG51bGxwdHI7Ci0gICAgZm9yIChhdXRvIHRyYWNrIDogbV9NZWRpYVN0cmVh
bVByaXZhdGUtPnRyYWNrcygpKSB7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fTWVkaWFTdHJl
YW1Qcml2YXRlLT50cmFja3MoKSkgewogICAgICAgICBpZiAodHJhY2stPnR5cGUoKSA9PSBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbykKICAgICAgICAgICAgIG1fcHJldmlld0xheWVy
ID0gc3RhdGljX2Nhc3Q8QVZWaWRlb0NhcHR1cmVTb3VyY2UqPih0cmFjay0+c291cmNlKCkpLT5w
cmV2aWV3TGF5ZXIoKTsKICAgICB9CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXlJbnRlcm5hbCgpCiB7CiAgICAgbV9wbGF5
aW5nID0gdHJ1ZTsKIAotICAgIGZvciAoYXV0byB0cmFjayA6IG1fTWVkaWFTdHJlYW1Qcml2YXRl
LT50cmFja3MoKSkKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9NZWRpYVN0cmVhbVByaXZhdGUt
PnRyYWNrcygpKQogICAgICAgICB0cmFjay0+c291cmNlKCktPnN0YXJ0UHJvZHVjaW5nRGF0YSgp
OwogfQogCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBhdXNlSW50ZXJuYWwoKQogewogICAgIG1fcGxheWluZyA9IGZhbHNlOwog
Ci0gICAgZm9yIChhdXRvIHRyYWNrIDogbV9NZWRpYVN0cmVhbVByaXZhdGUtPnRyYWNrcygpKQor
ICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX01lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCkpCiAg
ICAgICAgIHRyYWNrLT5zb3VyY2UoKS0+c3RvcFByb2R1Y2luZ0RhdGEoKTsKIH0KIApAQCAtMjI5
LDcgKzIyOSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
dXBwb3J0c1NjYW5uaW5nKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiB7Ci0gICAgZm9yIChhdXRvIHRyYWNr
IDogbV9NZWRpYVN0cmVhbVByaXZhdGUtPnRyYWNrcygpKSB7CisgICAgZm9yIChhdXRvJiB0cmFj
ayA6IG1fTWVkaWFTdHJlYW1Qcml2YXRlLT50cmFja3MoKSkgewogICAgICAgICBpZiAodHJhY2st
PnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbykKICAgICAgICAgICAg
IHRyYWNrLT5zb3VyY2UoKS0+c2V0TXV0ZWQobXV0ZWQpOwogICAgIH0KQEAgLTIzOCw3ICsyMzgs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQo
Ym9vbCBtdXRlZCkKIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6Om5hdHVyYWxTaXplKCkgY29uc3QKIHsKICAgICBGbG9hdFNpemUgZmxvYXRTaXplKDAsIDAp
OwotICAgIGZvciAoYXV0byB0cmFjayA6IG1fTWVkaWFTdHJlYW1Qcml2YXRlLT50cmFja3MoKSkg
eworICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX01lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCkp
IHsKICAgICAgICAgaWYgKHRyYWNrLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6VmlkZW8pIHsKICAgICAgICAgICAgIEFWVmlkZW9DYXB0dXJlU291cmNlKiBzb3VyY2UgPSAo
QVZWaWRlb0NhcHR1cmVTb3VyY2UqKXRyYWNrLT5zb3VyY2UoKTsKICAgICAgICAgICAgIGlmICgh
c291cmNlLT5zdG9wcGVkKCkgJiYgdHJhY2stPmVuYWJsZWQoKSkgewpAQCAtMjU0LDcgKzI1NCw3
IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Om5hdHVy
YWxTaXplKCkgY29uc3QKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6Omhhc1ZpZGVvKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8gdHJhY2sgOiBtX01lZGlhU3Ry
ZWFtUHJpdmF0ZS0+dHJhY2tzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9NZWRpYVN0
cmVhbVByaXZhdGUtPnRyYWNrcygpKSB7CiAgICAgICAgIGlmICh0cmFjay0+dHlwZSgpID09IFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpoYXNWaWRlbygpIGNvbnN0CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpoYXNBdWRpbygpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvIHRy
YWNrIDogbV9NZWRpYVN0cmVhbVByaXZhdGUtPnRyYWNrcygpKSB7CisgICAgZm9yIChhdXRvJiB0
cmFjayA6IG1fTWVkaWFTdHJlYW1Qcml2YXRlLT50cmFja3MoKSkgewogICAgICAgICBpZiAodHJh
Y2stPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbykKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDlmNDg0ZTA1NmMyMmQ5
OWJhY2Q5YTFhODUzOGM3M2M5M2ZlZWY3ZDguLjQxYmQ3OTNlZmIwNmM3OTRjMGZmYzZjZjFhMjE4
YWFmZjg3MTc0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTc5MCw3ICsxNzkwLDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCkKICAgICBwcmltYXJ5TGF5
ZXIoKS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9jaGlsZHJlblRyYW5zZm9ybSk7CiAKICAgICBp
ZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAg
ICAgICBmb3IgKGF1dG8gJiBsYXllciA6IGxheWVyQ2xvbmVNYXAtPnZhbHVlcygpKQorICAgICAg
ICBmb3IgKGF1dG8mIGxheWVyIDogbGF5ZXJDbG9uZU1hcC0+dmFsdWVzKCkpCiAgICAgICAgICAg
ICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9jaGlsZHJlblRyYW5zZm9ybSk7CiAgICAg
fQogfQpAQCAtMTgwMCw3ICsxODAwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZU1h
c2tzVG9Cb3VuZHMoKQogICAgIG1fbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91
bmRzKTsKIAogICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMu
Z2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvICYgbGF5ZXIgOiBsYXllckNsb25lTWFwLT52YWx1
ZXMoKSkKKyAgICAgICAgZm9yIChhdXRvJiBsYXllciA6IGxheWVyQ2xvbmVNYXAtPnZhbHVlcygp
KQogICAgICAgICAgICAgbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsK
ICAgICB9CiB9CkBAIC0xODE1LDcgKzE4MTUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBk
YXRlQ29udGVudHNWaXNpYmlsaXR5KCkKICAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHMobnVs
bHB0cik7CiAKICAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNs
b25lcy5nZXQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvICYgbGF5ZXIgOiBsYXllckNsb25l
TWFwLT52YWx1ZXMoKSkKKyAgICAgICAgICAgIGZvciAoYXV0byYgbGF5ZXIgOiBsYXllckNsb25l
TWFwLT52YWx1ZXMoKSkKICAgICAgICAgICAgICAgICBsYXllci0+c2V0Q29udGVudHMobnVsbHB0
cik7CiAgICAgICAgIH0KICAgICB9CkBAIC0xODMzLDcgKzE4MzMsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQ29udGVudHNPcGFxdWUoZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQogICAg
IG1fbGF5ZXItPnNldE9wYXF1ZShjb250ZW50c09wYXF1ZSk7CiAKICAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0
byAmIGxheWVyIDogbGF5ZXJDbG9uZU1hcC0+dmFsdWVzKCkpCisgICAgICAgIGZvciAoYXV0byYg
bGF5ZXIgOiBsYXllckNsb25lTWFwLT52YWx1ZXMoKSkKICAgICAgICAgICAgIGxheWVyLT5zZXRP
cGFxdWUoY29udGVudHNPcGFxdWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudC5tbQppbmRleCAwZThkZmJjYzdmM2NmYjIzMjE0ODQxNDhhZmQ2MGM2Mzc5NzllNjFh
Li43NzBjMmYyY2NkMzU2Mzc1ZjY1ODI5YzA4NjEyNzgyZTIyMWJmMWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVt
ZW50KiB2aWRlCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihudWxscHRyKTsKIAogICAgIGlmIChtX3ZpZGVvRWxlbWVudCAmJiBtX2lzTGlzdGVuaW5nKSB7
Ci0gICAgICAgIGZvciAoYXV0byBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKKyAg
ICAgICAgZm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKICAgICAg
ICAgICAgIG1fdmlkZW9FbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhp
cywgZmFsc2UpOwogICAgIH0KICAgICBtX2lzTGlzdGVuaW5nID0gZmFsc2U7CkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVv
RWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2aWRlCiAgICAgaWYgKCFtX3ZpZGVvRWxlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZl
bnROYW1lcygpKQorICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVz
KCkpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwg
dGhpcywgZmFsc2UpOwogICAgIG1faXNMaXN0ZW5pbmcgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDI4MjI0NmEyZjZjYmVlZjM5ODFmYzMwMTIxNjNhMzAxMzRiYTc3NTMuLmVl
MjE4MmRmMjM0MzA4MTk0YTkwMWQ1OTFmODQyNDE4ODg0ODcyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzdG9w
KE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIpCiAKICAgICBtX3N0b3BwZWQgPSB0cnVlOwogCi0g
ICAgZm9yIChhdXRvIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpIHsKKyAgICBmb3IgKGF1dG8qIG9i
c2VydmVyIDogbV9vYnNlcnZlcnMpIHsKICAgICAgICAgaWYgKG9ic2VydmVyICE9IGNhbGxpbmdP
YnNlcnZlcikKICAgICAgICAgICAgIG9ic2VydmVyLT5zb3VyY2VTdG9wcGVkKCk7CiAgICAgfQpA
QCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3Ao
T2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlcikKICAgICBpZiAoc3RvcHBlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmb3IgKGF1dG8gb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgIGZv
ciAoYXV0byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgewogICAgICAgICBpZiAob2JzZXJ2ZXIt
PnByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggMzQ5ZDEx
NWY1N2Q0NjllODNiOGRlZTM5NDA0YjFjNTZkMDQyNDA5MS4uOWE1YzU4ZjI3YzA1NjA4ZWZlMmNj
NzE0YTliNDNlMWE4Nzk5ODY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmNwcApAQCAtMTE3MSw3ICsxMTcxLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrUGFpbnRzQ29udGludWF0aW9u
T3V0bGluZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGVuY2xvc2luZ0Fub255bW91c0Jsb2NrLT5j
b250YWluaW5nQmxvY2soKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byBib3gg
PSAmcmVuZGVyZXIoKTsgYm94ICE9IGNvbnRhaW5pbmdCbG9jazsgYm94ID0gJmJveC0+cGFyZW50
KCktPmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAoYXV0byogYm94ID0gJnJlbmRlcmVyKCk7IGJveCAhPSBjb250YWluaW5nQmxvY2s7IGJv
eCA9ICZib3gtPnBhcmVudCgpLT5lbmNsb3NpbmdCb3hNb2RlbE9iamVjdCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGJveC0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2tQYWludHNDb250
aW51YXRpb25PdXRsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggM2Yz
YzIyMjg4YWRhODEwMzFiOWRhN2ZkZDE0ZjY2MTk5NWRjOGJhYy4uZDVjOGFiMjA4MzhiZjhiYWFj
ZjZhZTk1OWY0YTJlZjE0YTQ1YzI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC0xMDM5LDcgKzEwMzksNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjbGVhckxh
eW91dE92ZXJmbG93KCkKIAogdm9pZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tQmxvY2tD
aGlsZHJlbigpCiB7Ci0gICAgZm9yIChhdXRvIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgIGZvciAoYXV0byogY2hp
bGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0Jv
eCgpKSB7CiAgICAgICAgIGlmICghY2hpbGQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkKICAgICAgICAgICAgIGFkZE92ZXJmbG93RnJvbUNoaWxkKGNoaWxkKTsKICAgICB9CkBA
IC0xMTkyLDcgKzExOTIsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzaW1wbGlmaWVkTm9ybWFsRmxv
d0xheW91dCgpCiAgICAgICAgICAgICBib3gtPmNvbXB1dGVPdmVyZmxvdyhib3gtPmxpbmVUb3Ao
KSwgYm94LT5saW5lQm90dG9tKCksIHRleHRCb3hEYXRhTWFwKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdENoaWxkQm94KCk7IGJveDsgYm94
ID0gYm94LT5uZXh0U2libGluZ0JveCgpKSB7CisgICAgICAgIGZvciAoYXV0byogYm94ID0gZmly
c3RDaGlsZEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAg
ICAgICAgaWYgKCFib3gtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgICAg
IGJveC0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgfQpAQCAtMTQ1MSw3ICsxNDUxLDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDaGlsZHJl
bihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQ
YWludEluZm8mIHBhaW50SW5mb0ZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkKIHsKLSAgICBm
b3IgKGF1dG8gY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZ0JveCgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3go
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYg
KCFwYWludENoaWxkKCpjaGlsZCwgcGFpbnRJbmZvLCBwYWludE9mZnNldCwgcGFpbnRJbmZvRm9y
Q2hpbGQsIHVzZVByaW50UmVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjUw
Nyw3ICsyNTA3LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6aGl0VGVzdENvbnRlbnRzKGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JgogICAgIEhpdFRlc3RBY3Rpb24g
Y2hpbGRIaXRUZXN0ID0gaGl0VGVzdEFjdGlvbjsKICAgICBpZiAoaGl0VGVzdEFjdGlvbiA9PSBI
aXRUZXN0Q2hpbGRCbG9ja0JhY2tncm91bmRzKQogICAgICAgICBjaGlsZEhpdFRlc3QgPSBIaXRU
ZXN0Q2hpbGRCbG9ja0JhY2tncm91bmQ7Ci0gICAgZm9yIChhdXRvIGNoaWxkID0gbGFzdENoaWxk
Qm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmdCb3goKSkgeworICAg
IGZvciAoYXV0byogY2hpbGQgPSBsYXN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
PnByZXZpb3VzU2libGluZ0JveCgpKSB7CiAgICAgICAgIExheW91dFBvaW50IGNoaWxkUG9pbnQg
PSBmbGlwRm9yV3JpdGluZ01vZGVGb3JDaGlsZChjaGlsZCwgYWNjdW11bGF0ZWRPZmZzZXQpOwog
ICAgICAgICBpZiAoIWNoaWxkLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpICYmICFjaGlsZC0+aXNG
bG9hdGluZygpICYmIGNoaWxkLT5ub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9u
SW5Db250YWluZXIsIGNoaWxkUG9pbnQsIGNoaWxkSGl0VGVzdCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTI2MjksNyArMjYyOSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9j
azo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlCiAg
ICAgICAgICAgICB8fCAoIWJsb2Nrc0FyZUZsaXBwZWQgJiYgcG9pbnRJbkxvZ2ljYWxDb250ZW50
cy55KCkgPT0gbG9naWNhbFRvcEZvckNoaWxkKCpsYXN0Q2FuZGlkYXRlQm94KSkpCiAgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcygq
dGhpcywgKmxhc3RDYW5kaWRhdGVCb3gsIHBvaW50SW5Db250ZW50cyk7CiAKLSAgICAgICAgZm9y
IChhdXRvIGNoaWxkQm94ID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZEJveDsgY2hpbGRCb3ggPSBj
aGlsZEJveC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgICAgICBmb3IgKGF1dG8qIGNoaWxkQm94
ID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZEJveDsgY2hpbGRCb3ggPSBjaGlsZEJveC0+bmV4dFNp
YmxpbmdCb3goKSkgewogICAgICAgICAgICAgaWYgKCFpc0NoaWxkSGl0VGVzdENhbmRpZGF0ZSgq
Y2hpbGRCb3gsIHJlZ2lvbiwgcG9pbnRJbkxvZ2ljYWxDb250ZW50cykpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGNoaWxkTG9naWNhbEJvdHRvbSA9
IGxvZ2ljYWxUb3BGb3JDaGlsZCgqY2hpbGRCb3gpICsgbG9naWNhbEhlaWdodEZvckNoaWxkKCpj
aGlsZEJveCk7CkBAIC0yOTE1LDcgKzI5MTUsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckJsb2Nr
OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pCiAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CiAKICAgICBib29sIGhhdmVOb3JtYWxGbG93
Q2hpbGQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gYm94ID0gbGFzdENoaWxkQm94KCk7IGJveDsg
Ym94ID0gYm94LT5wcmV2aW91c1NpYmxpbmdCb3goKSkgeworICAgIGZvciAoYXV0byogYm94ID0g
bGFzdENoaWxkQm94KCk7IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmdCb3goKSkgewog
ICAgICAgICBpZiAoYm94LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDU4YzQ5
NTRjNjQ0MzJlMDk0MjdjNDkzYjVjN2M0OGRmMDdjMzVhYmIuLjNiZmJkZDRkMTYxZDcwYTAyNzNl
MWFkOTExNjUyMTdmNDNmMTE0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OndpbGxCZURlc3Ryb3llZCgpCiAgICAgICAgICAgICAvLyB0aGF0IHdpbGwgb3V0bGFzdCB0aGlz
IGJsb2NrLiBJbiB0aGUgbm9uLWFub255bW91cyBibG9jayBjYXNlIHRob3NlCiAgICAgICAgICAg
ICAvLyBjaGlsZHJlbiB3aWxsIGJlIGRlc3Ryb3llZCBieSB0aGUgdGltZSB3ZSByZXR1cm4gZnJv
bSB0aGlzIGZ1bmN0aW9uLgogICAgICAgICAgICAgaWYgKGlzQW5vbnltb3VzQmxvY2soKSkgewot
ICAgICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFJvb3RCb3goKTsgYm94OyBib3gg
PSBib3gtPm5leHRSb290Qm94KCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGJveCA9
IGZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3goKSkgewogICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAoYXV0byBjaGlsZEJveCA9IGJveC0+Zmlyc3RDaGlsZCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRCb3gtPnJlbW92ZUZyb21QYXJlbnQoKTsKICAg
ICAgICAgICAgICAgICB9CkBAIC0yMDM4LDcgKzIwMzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbAogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6dXBkYXRlU3R5bGVzRm9yQ29sdW1uQ2hpbGRy
ZW4oKQogewotICAgIGZvciAoYXV0byBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQgJiYg
KGNoaWxkLT5pc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSB8fCBjaGlsZC0+aXNSZW5kZXJNdWx0
aUNvbHVtblNldCgpKTsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkKKyAgICBmb3Ig
KGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZCAmJiAoY2hpbGQtPmlzSW5GbG93
UmVuZGVyRmxvd1RocmVhZCgpIHx8IGNoaWxkLT5pc1JlbmRlck11bHRpQ29sdW1uU2V0KCkpOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKQogICAgICAgICBjaGlsZC0+c2V0U3R5bGUo
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEJM
T0NLKSk7CiB9CiAKQEAgLTI5MzQsNyArMjkzNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojph
ZGp1c3RGb3JCb3JkZXJGaXQoTGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0JiBsZWZ0LCBMYXlvdXRV
CiAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKICAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJC
bG9ja0Zsb3cmPigqdGhpcykuZW5zdXJlTGluZUJveGVzKCk7CiAKLSAgICAgICAgZm9yIChhdXRv
IGJveCA9IGZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3goKSkgewor
ICAgICAgICBmb3IgKGF1dG8qIGJveCA9IGZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJveC0+
bmV4dFJvb3RCb3goKSkgewogICAgICAgICAgICAgaWYgKGJveC0+Zmlyc3RDaGlsZCgpKQogICAg
ICAgICAgICAgICAgIGxlZnQgPSBzdGQ6Om1pbihsZWZ0LCB4ICsgTGF5b3V0VW5pdChib3gtPmZp
cnN0Q2hpbGQoKS0+eCgpKSk7CiAgICAgICAgICAgICBpZiAoYm94LT5sYXN0Q2hpbGQoKSkKQEAg
LTMyMTksNyArMzIxOSw3IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrRmxvdzo6bGluZUF0
SW5kZXgoaW50IGkpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGNo
aWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0Um9vdEJveCgp
OyBib3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICBmb3IgKGF1dG8qIGJv
eCA9IGZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3goKSkgewogICAg
ICAgICAgICAgaWYgKCFpLS0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGJveDsKICAgICAgICAg
fQpAQCAtMzI0OCw4ICszMjQ4LDggQEAgaW50IFJlbmRlckJsb2NrRmxvdzo6bGluZUNvdW50KGNv
bnN0IFJvb3RJbmxpbmVCb3gqIHN0b3BSb290SW5saW5lQm94LCBib29sKiBmb3UKICAgICAgICAg
ICAgIEFTU0VSVCghc3RvcFJvb3RJbmxpbmVCb3gpOwogICAgICAgICAgICAgcmV0dXJuIHNpbXBs
ZUxpbmVMYXlvdXQtPmxpbmVDb3VudCgpOwogICAgICAgICB9Ci0gICAgICAgIGZvciAoYXV0byBi
b3ggPSBmaXJzdFJvb3RCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRSb290Qm94KCkpIHsKLSAg
ICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIGZvciAoYXV0byogYm94ID0gZmlyc3RSb290Qm94
KCk7IGJveDsgYm94ID0gYm94LT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAgICAgICArK2NvdW50
OwogICAgICAgICAgICAgaWYgKGJveCA9PSBzdG9wUm9vdElubGluZUJveCkgewogICAgICAgICAg
ICAgICAgIGlmIChmb3VuZCkKICAgICAgICAgICAgICAgICAgICAgKmZvdW5kID0gdHJ1ZTsKQEAg
LTMyODAsMTMgKzMyODAsMTMgQEAgc3RhdGljIGludCBnZXRIZWlnaHRGb3JMaW5lQ291bnQoY29u
c3QgUmVuZGVyQmxvY2tGbG93JiBibG9jaywgaW50IGxpbmVDb3VudCwgYm8KICAgICAgICAgcmV0
dXJuIC0xOwogCiAgICAgaWYgKGJsb2NrLmNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgZm9y
IChhdXRvIGJveCA9IGJsb2NrLmZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFJv
b3RCb3goKSkgeworICAgICAgICBmb3IgKGF1dG8qIGJveCA9IGJsb2NrLmZpcnN0Um9vdEJveCgp
OyBib3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICAgICAgaWYgKCsrY291
bnQgPT0gbGluZUNvdW50KQogICAgICAgICAgICAgICAgIHJldHVybiBib3gtPmxpbmVCb3R0b20o
KSArIChpbmNsdWRlQm90dG9tID8gKGJsb2NrLmJvcmRlckJvdHRvbSgpICsgYmxvY2sucGFkZGlu
Z0JvdHRvbSgpKSA6IExheW91dFVuaXQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICBSZW5kZXJCb3gqIG5vcm1hbEZsb3dDaGlsZFdpdGhvdXRMaW5lcyA9IG51bGxwdHI7Ci0g
ICAgICAgIGZvciAoYXV0byBvYmogPSBibG9jay5maXJzdENoaWxkQm94KCk7IG9iajsgb2JqID0g
b2JqLT5uZXh0U2libGluZ0JveCgpKSB7CisgICAgICAgIGZvciAoYXV0byogb2JqID0gYmxvY2su
Zmlyc3RDaGlsZEJveCgpOyBvYmo7IG9iaiA9IG9iai0+bmV4dFNpYmxpbmdCb3goKSkgewogICAg
ICAgICAgICAgaWYgKGlzPFJlbmRlckJsb2NrRmxvdz4oKm9iaikgJiYgc2hvdWxkQ2hlY2tMaW5l
cyhkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpvYmopKSkgewogICAgICAgICAgICAgICAgIGlu
dCByZXN1bHQgPSBnZXRIZWlnaHRGb3JMaW5lQ291bnQoZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93
Pigqb2JqKSwgbGluZUNvdW50LCBmYWxzZSwgY291bnQpOwogICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgIT0gLTEpCkBAIC0zMzE2LDcgKzMzMTYsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
Y2xlYXJUcnVuY2F0aW9uKCkKICAgICAgICAgZW5zdXJlTGluZUJveGVzKCk7CiAKICAgICAgICAg
c2V0SGFzTWFya3VwVHJ1bmNhdGlvbihmYWxzZSk7Ci0gICAgICAgIGZvciAoYXV0byBib3ggPSBm
aXJzdFJvb3RCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRSb290Qm94KCkpCisgICAgICAgIGZv
ciAoYXV0byogYm94ID0gZmlyc3RSb290Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0Um9vdEJv
eCgpKQogICAgICAgICAgICAgYm94LT5jbGVhclRydW5jYXRpb24oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTMzMjksOCArMzMyOSw4IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGVh
clRydW5jYXRpb24oKQogCiBib29sIFJlbmRlckJsb2NrRmxvdzo6Y29udGFpbnNOb25aZXJvQmlk
aUxldmVsKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8gcm9vdCA9IGZpcnN0Um9vdEJveCgpOyBy
b290OyByb290ID0gcm9vdC0+bmV4dFJvb3RCb3goKSkgewotICAgICAgICBmb3IgKGF1dG8gYm94
ID0gcm9vdC0+Zmlyc3RMZWFmQ2hpbGQoKTsgYm94OyBib3ggPSBib3gtPm5leHRMZWFmQ2hpbGQo
KSkgeworICAgIGZvciAoYXV0byogcm9vdCA9IGZpcnN0Um9vdEJveCgpOyByb290OyByb290ID0g
cm9vdC0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICBmb3IgKGF1dG8qIGJveCA9IHJvb3QtPmZp
cnN0TGVhZkNoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZkNoaWxkKCkpIHsKICAgICAg
ICAgICAgIGlmIChib3gtPmJpZGlMZXZlbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDgx
ZjdkODZhM2Q2N2U2NmNjOTQ0ODM3YTc2Zjc5OTkwZmM4NGMxMmIuLjM0M2Y1YTQwNTVjZDEwMzVl
ZTEzMDFjZjJlMDBjNGQxZDA1NWU1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCkBAIC0zMjc4LDcgKzMyNzgsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5saW5lU3Rh
dGljRGlzdGFuY2UoTGVuZ3RoJiBsb2dpY2FsTGVmdCwgTGVuZ3RoJiBsb2dpY2FsUmlnaAogICAg
IC8vIEZJWE1FOiBUaGUgc3RhdGljIGRpc3RhbmNlIGNvbXB1dGF0aW9uIGhhcyBub3QgYmVlbiBw
YXRjaGVkIGZvciBtaXhlZCB3cml0aW5nIG1vZGVzIHlldC4KICAgICBpZiAoY2hpbGQtPnBhcmVu
dCgpLT5zdHlsZSgpLmRpcmVjdGlvbigpID09IExUUikgewogICAgICAgICBMYXlvdXRVbml0IHN0
YXRpY1Bvc2l0aW9uID0gY2hpbGQtPmxheWVyKCktPnN0YXRpY0lubGluZVBvc2l0aW9uKCkgLSBj
b250YWluZXJCbG9jay0+Ym9yZGVyTG9naWNhbExlZnQoKTsKLSAgICAgICAgZm9yIChhdXRvIGN1
cnJlbnQgPSBjaGlsZC0+cGFyZW50KCk7IGN1cnJlbnQgJiYgY3VycmVudCAhPSBjb250YWluZXJC
bG9jazsgY3VycmVudCA9IGN1cnJlbnQtPmNvbnRhaW5lcigpKSB7CisgICAgICAgIGZvciAoYXV0
byogY3VycmVudCA9IGNoaWxkLT5wYXJlbnQoKTsgY3VycmVudCAmJiBjdXJyZW50ICE9IGNvbnRh
aW5lckJsb2NrOyBjdXJyZW50ID0gY3VycmVudC0+Y29udGFpbmVyKCkpIHsKICAgICAgICAgICAg
IGlmIChpczxSZW5kZXJCb3g+KCpjdXJyZW50KSkgewogICAgICAgICAgICAgICAgIHN0YXRpY1Bv
c2l0aW9uICs9IGRvd25jYXN0PFJlbmRlckJveD4oKmN1cnJlbnQpLmxvZ2ljYWxMZWZ0KCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiBpczxSZW5kZXJCbG9jaz4oKmN1cnJlbnQpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDdjOTcxYmI4
ZmY0MTAxNTRmMjNjZjMxYzMyNDNkYjUyZmYyNThhMmIuLjJjZTYwMTJkMTY2NDEzZGNhOTM1ZGRh
YWViMDgzMjQ0MzFiYjVjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjp3aWxsQmVEZXN0cm95
ZWQoKQogICAgICAgICAgICAgLy8gbm90IGhhdmUgYSBwYXJlbnQgdGhhdCBtZWFucyB0aGV5IGFy
ZSBlaXRoZXIgYWxyZWFkeSBkaXNjb25uZWN0ZWQgb3IKICAgICAgICAgICAgIC8vIHJvb3QgbGlu
ZXMgdGhhdCBjYW4ganVzdCBiZSBkZXN0cm95ZWQgd2l0aG91dCBkaXNjb25uZWN0aW5nLgogICAg
ICAgICAgICAgaWYgKGZpcnN0TGluZUJveCgpLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgICAg
IGZvciAoYXV0byBib3ggPSBmaXJzdExpbmVCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRMaW5l
Qm94KCkpCisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdExpbmVCb3goKTsg
Ym94OyBib3ggPSBib3gtPm5leHRMaW5lQm94KCkpCiAgICAgICAgICAgICAgICAgICAgIGJveC0+
cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHBh
cmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMzUx
YjcwNDMxZWVmZWJlYWQ1ZDAyNjU2MjkxZmYzZjQzMTBjNTFkMi4uMzQ5OGM3Y2M4NDRhMzQ0M2Q5
YTQ0M2RjNjU0NGQ1MGYxMjNhYTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC05MTQsNyArOTE0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlQmxl
bmRNb2RlKCkKIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlQW5jZXN0b3JDaGFpbkhhc0JsZW5k
aW5nRGVzY2VuZGFudHMoKQogewotICAgIGZvciAoYXV0byBsYXllciA9IHRoaXM7IGxheWVyOyBs
YXllciA9IGxheWVyLT5wYXJlbnQoKSkgeworICAgIGZvciAoYXV0byogbGF5ZXIgPSB0aGlzOyBs
YXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKICAgICAgICAgaWYgKCFsYXllci0+aGFz
Tm90SXNvbGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzU3RhdHVzRGlydHkoKSAmJiBsYXllci0+aGFz
Tm90SXNvbGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKCkpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgbGF5ZXItPm1faGFzTm90SXNvbGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzID0gdHJ1ZTsK
QEAgLTkyOSw3ICs5MjksNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVBbmNlc3RvckNoYWlu
SGFzQmxlbmRpbmdEZXNjZW5kYW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmRpcnR5QW5jZXN0
b3JDaGFpbkhhc0JsZW5kaW5nRGVzY2VuZGFudHMoKQogewotICAgIGZvciAoYXV0byBsYXllciA9
IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgeworICAgIGZvciAoYXV0byog
bGF5ZXIgPSB0aGlzOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKICAgICAgICAg
aWYgKGxheWVyLT5oYXNOb3RJc29sYXRlZEJsZW5kaW5nRGVzY2VuZGFudHNTdGF0dXNEaXJ0eSgp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtMTI4NSwxMyArMTI4NSwxMyBAQCBi
b29sIFJlbmRlckxheWVyOjp1cGRhdGUzRFRyYW5zZm9ybWVkRGVzY2VuZGFudFN0YXR1cygpCiAg
ICAgICAgIC8vIFRyYW5zZm9ybWVkIG9yIHByZXNlcnZlLTNkIGRlc2NlbmRhbnRzIGNhbiBvbmx5
IGJlIGluIHRoZSB6LW9yZGVyIGxpc3RzLCBub3QKICAgICAgICAgLy8gaW4gdGhlIG5vcm1hbCBm
bG93IGxpc3QsIHNvIHdlIG9ubHkgbmVlZCB0byBjaGVjayB0aG9zZS4KICAgICAgICAgaWYgKFZl
Y3RvcjxSZW5kZXJMYXllcio+KiBwb3NpdGl2ZVpPcmRlckxpc3QgPSBwb3NaT3JkZXJMaXN0KCkp
IHsKLSAgICAgICAgICAgIGZvciAoYXV0byBsYXllciA6ICpwb3NpdGl2ZVpPcmRlckxpc3QpCisg
ICAgICAgICAgICBmb3IgKGF1dG8qIGxheWVyIDogKnBvc2l0aXZlWk9yZGVyTGlzdCkKICAgICAg
ICAgICAgICAgICBtX2hhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50IHw9IGxheWVyLT51cGRhdGUz
RFRyYW5zZm9ybWVkRGVzY2VuZGFudFN0YXR1cygpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
Tm93IGNoZWNrIG91ciBuZWdhdGl2ZSB6LWluZGV4IGNoaWxkcmVuLgogICAgICAgICBpZiAoVmVj
dG9yPFJlbmRlckxheWVyKj4qIG5lZ2F0aXZlWk9yZGVyTGlzdCA9IG5lZ1pPcmRlckxpc3QoKSkg
ewotICAgICAgICAgICAgZm9yIChhdXRvIGxheWVyIDogKm5lZ2F0aXZlWk9yZGVyTGlzdCkKKyAg
ICAgICAgICAgIGZvciAoYXV0byogbGF5ZXIgOiAqbmVnYXRpdmVaT3JkZXJMaXN0KQogICAgICAg
ICAgICAgICAgIG1faGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnQgfD0gbGF5ZXItPnVwZGF0ZTNE
VHJhbnNmb3JtZWREZXNjZW5kYW50U3RhdHVzKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0z
ODUwLDcgKzM4NTAsNyBAQCBzdGF0aWMgdm9pZCBwZXJmb3JtT3ZlcmxhcFRlc3RzKE92ZXJsYXBU
ZXN0UmVxdWVzdE1hcCYgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgY29ucwogICAgICAgICByZXF1ZXN0
LmtleS0+c2V0T3ZlcmxhcFRlc3RSZXN1bHQodHJ1ZSk7CiAgICAgICAgIG92ZXJsYXBwZWRSZXF1
ZXN0Q2xpZW50cy5hcHBlbmQocmVxdWVzdC5rZXkpOwogICAgIH0KLSAgICBmb3IgKGF1dG8gY2xp
ZW50IDogb3ZlcmxhcHBlZFJlcXVlc3RDbGllbnRzKQorICAgIGZvciAoYXV0byogY2xpZW50IDog
b3ZlcmxhcHBlZFJlcXVlc3RDbGllbnRzKQogICAgICAgICBvdmVybGFwVGVzdFJlcXVlc3RzLnJl
bW92ZShjbGllbnQpOwogfQogCkBAIC00MjA3LDcgKzQyMDcsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTAogICAgIHJlbmRlcmVyKCkudmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCkuY29s
bGVjdEZpeGVkUG9zaXRpb25lZExheWVycyhmaXhlZExheWVycyk7CiAKICAgICAvLyBQYWludCB0
aGUgbGF5ZXJzCi0gICAgZm9yIChhdXRvIGZpeGVkTGF5ZXIgOiBmaXhlZExheWVycykKKyAgICBm
b3IgKGF1dG8qIGZpeGVkTGF5ZXIgOiBmaXhlZExheWVycykKICAgICAgICAgZml4ZWRMYXllci0+
cGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogfQogCkBAIC00
NDMwLDcgKzQ0MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExpc3QoVmVjdG9yPFJlbmRl
ckxheWVyKj4qIGxpc3QsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dAogICAgIExheWVyTGlzdE11
dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKHRoaXMpOwogI2VuZGlmCiAKLSAgICBmb3Ig
KGF1dG8gY2hpbGRMYXllciA6ICpsaXN0KSB7CisgICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDog
Kmxpc3QpIHsKICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzRmxvd1RocmVhZENvbGxlY3RpbmdH
cmFwaGljc0xheWVyc1VuZGVyUmVnaW9ucygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGNoaWxkTGF5ZXItPnBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZs
YWdzKTsKQEAgLTU5NzQsNyArNTk3NCw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1
bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjCiAjZW5k
aWYKIAogICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHRoaXMt
Pm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8gY3VyTGF5ZXIgOiAqbmVnWk9y
ZGVyTGlzdCkgeworICAgICAgICBmb3IgKGF1dG8qIGN1ckxheWVyIDogKm5lZ1pPcmRlckxpc3Qp
IHsKICAgICAgICAgICAgIGlmIChmbGFncyAmIEluY2x1ZGVDb21wb3NpdGVkRGVzY2VuZGFudHMg
fHwgIWN1ckxheWVyLT5pc0NvbXBvc2l0ZWQoKSkgewogICAgICAgICAgICAgICAgIExheW91dFJl
Y3QgY2hpbGRVbmlvbkJvdW5kcyA9IGN1ckxheWVyLT5jYWxjdWxhdGVMYXllckJvdW5kcyh0aGlz
LCBjdXJMYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yKHRoaXMpLCBkZXNjZW5kYW50RmxhZ3MpOwog
ICAgICAgICAgICAgICAgIHVuaW9uQm91bmRzLnVuaXRlKGNoaWxkVW5pb25Cb3VuZHMpOwpAQCAt
NTk4Myw3ICs1OTgzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJC
b3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGMKICAgICB9CiAKICAgICBp
ZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSB0aGlzLT5wb3NaT3JkZXJM
aXN0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIGN1ckxheWVyIDogKnBvc1pPcmRlckxpc3QpIHsK
KyAgICAgICAgZm9yIChhdXRvKiBjdXJMYXllciA6ICpwb3NaT3JkZXJMaXN0KSB7CiAgICAgICAg
ICAgICAvLyBUaGUgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGlzIGlnbm9yZWQgd2hlbiB3ZSBjYWxj
dWxhdGUgdGhlIGJvdW5kcyBvZiB0aGUgUmVuZGVyVmlldy4KICAgICAgICAgICAgIGlmICgoZmxh
Z3MgJiBJbmNsdWRlQ29tcG9zaXRlZERlc2NlbmRhbnRzIHx8ICFjdXJMYXllci0+aXNDb21wb3Np
dGVkKCkpICYmICFjdXJMYXllci0+aXNGbG93VGhyZWFkQ29sbGVjdGluZ0dyYXBoaWNzTGF5ZXJz
VW5kZXJSZWdpb25zKCkpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGNoaWxkVW5pb25C
b3VuZHMgPSBjdXJMYXllci0+Y2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgY3VyTGF5ZXItPm9m
ZnNldEZyb21BbmNlc3Rvcih0aGlzKSwgZGVzY2VuZGFudEZsYWdzKTsKQEAgLTU5OTMsNyArNTk5
Myw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0
IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjCiAgICAgfQogCiAgICAgaWYgKFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IHRoaXMtPm5vcm1hbEZsb3dMaXN0KCkpIHsK
LSAgICAgICAgZm9yIChhdXRvIGN1ckxheWVyIDogKm5vcm1hbEZsb3dMaXN0KSB7CisgICAgICAg
IGZvciAoYXV0byogY3VyTGF5ZXIgOiAqbm9ybWFsRmxvd0xpc3QpIHsKICAgICAgICAgICAgIC8v
IFJlbmRlclZpZXcgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkb2N1bWVudCwg
YmVmb3JlIHJlYWNoaW5nIHRoaXMgcG9pbnQsCiAgICAgICAgICAgICAvLyBzbyB0aGVyZSdzIG5v
IHdheSB3ZSBjb3VsZCBoaXQgYSBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgaGVyZS4KICAgICAgICAg
ICAgIEFTU0VSVCghY3VyTGF5ZXItPmlzRmxvd1RocmVhZENvbGxlY3RpbmdHcmFwaGljc0xheWVy
c1VuZGVyUmVnaW9ucygpKTsKQEAgLTYzNDgsMjQgKzYzNDgsMjQgQEAgdm9pZCBSZW5kZXJMYXll
cjo6dXBkYXRlRGVzY2VuZGFudHNMYXllckxpc3RzSWZOZWVkZWQoYm9vbCByZWN1cnNpdmUpCiAg
ICAgCiAgICAgaWYgKGlzU3RhY2tpbmdDb250YWluZXIoKSkgewogICAgICAgICBpZiAoVmVjdG9y
PFJlbmRlckxheWVyKj4qIGxpc3QgPSBuZWdaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byBjaGlsZExheWVyIDogKmxpc3QpCisgICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxk
TGF5ZXIgOiAqbGlzdCkKICAgICAgICAgICAgICAgICBsYXllcnNUb1VwZGF0ZS5hcHBlbmQoY2hp
bGRMYXllcik7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKFZlY3RvcjxSZW5kZXJM
YXllcio+KiBsaXN0ID0gbm9ybWFsRmxvd0xpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8gY2hp
bGRMYXllciA6ICpsaXN0KQorICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqbGlzdCkK
ICAgICAgICAgICAgIGxheWVyc1RvVXBkYXRlLmFwcGVuZChjaGlsZExheWVyKTsKICAgICB9CiAg
ICAgCiAgICAgaWYgKGlzU3RhY2tpbmdDb250YWluZXIoKSkgewogICAgICAgICBpZiAoVmVjdG9y
PFJlbmRlckxheWVyKj4qIGxpc3QgPSBwb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byBjaGlsZExheWVyIDogKmxpc3QpCisgICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxk
TGF5ZXIgOiAqbGlzdCkKICAgICAgICAgICAgICAgICBsYXllcnNUb1VwZGF0ZS5hcHBlbmQoY2hp
bGRMYXllcik7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgZm9yIChhdXRvIGNoaWxkTGF5
ZXIgOiBsYXllcnNUb1VwZGF0ZSkgeworICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6IGxheWVy
c1RvVXBkYXRlKSB7CiAgICAgICAgIGNoaWxkTGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRl
ZCgpOwogICAgICAgICBpZiAocmVjdXJzaXZlKQogICAgICAgICAgICAgY2hpbGRMYXllci0+dXBk
YXRlRGVzY2VuZGFudHNMYXllckxpc3RzSWZOZWVkZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDliNjZlNDc3ZDczMDU1MDEwNjQzNjgwNzYy
ODgxYzgzNDUwMzMyMGIuLjY1MGMwMDE1OTgzZmZiMWQ2NTBiNTM2NzE2ZDEwMGQ3ODViNjBmZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNzEyLDcg
KzE3MTIsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlSGl0VGVzdFJlc3VsdChIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JgogICAgIC8vIElmIHdlIGhpdCB0aGUg
YW5vbnltb3VzIHJlbmRlcmVycyBpbnNpZGUgZ2VuZXJhdGVkIGNvbnRlbnQgd2Ugc2hvdWxkCiAg
ICAgLy8gYWN0dWFsbHkgaGl0IHRoZSBnZW5lcmF0ZWQgY29udGVudCBzbyB3YWxrIHVwIHRvIHRo
ZSBQc2V1ZG9FbGVtZW50LgogICAgIGlmICghbm9kZSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+
aXNCZWZvcmVPckFmdGVyQ29udGVudCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byByZW5kZXJlciA9
IHBhcmVudCgpOyByZW5kZXJlciAmJiAhbm9kZTsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50
KCkpCisgICAgICAgIGZvciAoYXV0byogcmVuZGVyZXIgPSBwYXJlbnQoKTsgcmVuZGVyZXIgJiYg
IW5vZGU7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKQogICAgICAgICAgICAgbm9kZSA9
IHJlbmRlcmVyLT5lbGVtZW50KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKaW5kZXggYzU3MWEyODBmNTdhNmE0NThhMTQ3
NjAyMTA1ZThiOWM3ZjA1MWE3My4uZDk0M2YzYTU4MWZmMGNiNWY2MTc1YmNkOTgxNGY2NDA3NTg2
MGVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5l
Qm94ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJv
eGVzLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmV4dHJh
Y3QoSW5saW5lVGV4dEJveCYgYm94KQogICAgIGlmIChib3gucHJldlRleHRCb3goKSkKICAgICAg
ICAgYm94LnByZXZUZXh0Qm94KCktPnNldE5leHRUZXh0Qm94KG51bGxwdHIpOwogICAgIGJveC5z
ZXRQcmV2aW91c1RleHRCb3gobnVsbHB0cik7Ci0gICAgZm9yIChhdXRvIGN1cnJlbnQgPSAmYm94
OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFRleHRCb3goKSkKKyAgICBmb3IgKGF1
dG8qIGN1cnJlbnQgPSAmYm94OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFRleHRC
b3goKSkKICAgICAgICAgY3VycmVudC0+c2V0RXh0cmFjdGVkKCk7CiAKICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6YXR0
YWNoKElubGluZVRleHRCb3gmIGJveCkKICAgICB9IGVsc2UKICAgICAgICAgbV9maXJzdCA9ICZi
b3g7CiAgICAgSW5saW5lVGV4dEJveCogbGFzdCA9IG51bGxwdHI7Ci0gICAgZm9yIChhdXRvIGN1
cnJlbnQgPSAmYm94OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFRleHRCb3goKSkg
eworICAgIGZvciAoYXV0byogY3VycmVudCA9ICZib3g7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGN1cnJlbnQtPnNldEV4dHJhY3RlZChmYWxz
ZSk7CiAgICAgICAgIGxhc3QgPSBjdXJyZW50OwogICAgIH0KQEAgLTExMiw3ICsxMTIsNyBAQCB2
b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OnJlbW92ZUFsbEZyb21QYXJlbnQoUmVuZGVyVGV4dCYg
cmVuZGVyZXIpCiAgICAgICAgICAgICByZW5kZXJlci5wYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21D
aGFuZ2VkQ2hpbGQocmVuZGVyZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAo
YXV0byBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKKyAgICBm
b3IgKGF1dG8qIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQog
ICAgICAgICBib3gtPnJlbW92ZUZyb21QYXJlbnQoKTsKIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBA
IHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6ZGVsZXRlQWxsKCkKICAgICBpZiAoIW1fZmlyc3Qp
CiAgICAgICAgIHJldHVybjsKICAgICBJbmxpbmVUZXh0Qm94KiBuZXh0OwotICAgIGZvciAoYXV0
byBjdXJyZW50ID0gbV9maXJzdDsgY3VycmVudDsgY3VycmVudCA9IG5leHQpIHsKKyAgICBmb3Ig
KGF1dG8qIGN1cnJlbnQgPSBtX2ZpcnN0OyBjdXJyZW50OyBjdXJyZW50ID0gbmV4dCkgewogICAg
ICAgICBuZXh0ID0gY3VycmVudC0+bmV4dFRleHRCb3goKTsKICAgICAgICAgZGVsZXRlIGN1cnJl
bnQ7CiAgICAgfQpAQCAtMTUzLDcgKzE1Myw3IEBAIEludFJlY3QgUmVuZGVyVGV4dExpbmVCb3hl
czo6Ym91bmRpbmdCb3goY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIpIGNvbnN0CiAgICAgLy8g
UmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgbWluaW1hbCBsZWZ0IHNpZGUgYW5kIHRoZSBtYXhpbWFs
IHJpZ2h0IHNpZGUuCiAgICAgZmxvYXQgbG9naWNhbExlZnRTaWRlID0gMDsKICAgICBmbG9hdCBs
b2dpY2FsUmlnaHRTaWRlID0gMDsKLSAgICBmb3IgKGF1dG8gY3VycmVudCA9IG1fZmlyc3Q7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9yIChhdXRv
KiBjdXJyZW50ID0gbV9maXJzdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRUZXh0
Qm94KCkpIHsKICAgICAgICAgaWYgKGN1cnJlbnQgPT0gbV9maXJzdCB8fCBjdXJyZW50LT5sb2dp
Y2FsTGVmdCgpIDwgbG9naWNhbExlZnRTaWRlKQogICAgICAgICAgICAgbG9naWNhbExlZnRTaWRl
ID0gY3VycmVudC0+bG9naWNhbExlZnQoKTsKICAgICAgICAgaWYgKGN1cnJlbnQgPT0gbV9maXJz
dCB8fCBjdXJyZW50LT5sb2dpY2FsUmlnaHQoKSA+IGxvZ2ljYWxSaWdodFNpZGUpCkBAIC0xODQs
NyArMTg0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0TGluZUJveGVzOjp2aXN1YWxPdmVyZmxv
d0JvdW5kaW5nQm94KGNvbnN0IFJlbmRlclRleHQmIHJlbmQKICAgICAvLyBSZXR1cm4gdGhlIHdp
ZHRoIG9mIHRoZSBtaW5pbWFsIGxlZnQgc2lkZSBhbmQgdGhlIG1heGltYWwgcmlnaHQgc2lkZS4K
ICAgICBhdXRvIGxvZ2ljYWxMZWZ0U2lkZSA9IExheW91dFVuaXQ6Om1heCgpOwogICAgIGF1dG8g
bG9naWNhbFJpZ2h0U2lkZSA9IExheW91dFVuaXQ6Om1pbigpOwotICAgIGZvciAoYXV0byBjdXJy
ZW50ID0gbV9maXJzdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRUZXh0Qm94KCkp
IHsKKyAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBtX2ZpcnN0OyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBsb2dpY2FsTGVmdFNpZGUgPSBzdGQ6
Om1pbihsb2dpY2FsTGVmdFNpZGUsIGN1cnJlbnQtPmxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3co
KSk7CiAgICAgICAgIGxvZ2ljYWxSaWdodFNpZGUgPSBzdGQ6Om1heChsb2dpY2FsUmlnaHRTaWRl
LCBjdXJyZW50LT5sb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdygpKTsKICAgICB9CkBAIC0yMDEs
NyArMjAxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0TGluZUJveGVzOjp2aXN1YWxPdmVyZmxv
d0JvdW5kaW5nQm94KGNvbnN0IFJlbmRlclRleHQmIHJlbmQKIAogYm9vbCBSZW5kZXJUZXh0TGlu
ZUJveGVzOjpoYXNSZW5kZXJlZFRleHQoKSBjb25zdAogewotICAgIGZvciAoYXV0byBib3ggPSBt
X2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgIGZvciAoYXV0byog
Ym94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAg
aWYgKGJveC0+bGVuKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMzMs
NyArMjMzLDcgQEAgaW50IFJlbmRlclRleHRMaW5lQm94ZXM6OmNhcmV0TWF4T2Zmc2V0KGNvbnN0
IFJlbmRlclRleHQmIHJlbmRlcmVyKSBjb25zdAogCiBib29sIFJlbmRlclRleHRMaW5lQm94ZXM6
OmNvbnRhaW5zT2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCB1bnNpZ25lZCBvZmZz
ZXQsIE9mZnNldFR5cGUgdHlwZSkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8gYm94ID0gbV9maXJz
dDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIGJveCA9
IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGlmIChv
ZmZzZXQgPCBib3gtPnN0YXJ0KCkgJiYgIXJlbmRlcmVyLmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHVuc2lnbmVkIGJveEVuZCA9IGJv
eC0+c3RhcnQoKSArIGJveC0+bGVuKCk7CkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBSZW5kZXJU
ZXh0TGluZUJveGVzOjpjb250YWluc09mZnNldChjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwg
dW5zaWduZWQgb2YKIHVuc2lnbmVkIFJlbmRlclRleHRMaW5lQm94ZXM6OmNvdW50Q2hhcmFjdGVy
T2Zmc2V0c1VudGlsKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCByZXN1
bHQgPSAwOwotICAgIGZvciAoYXV0byBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4
dFRleHRCb3goKSkgeworICAgIGZvciAoYXV0byogYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBi
b3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgaWYgKG9mZnNldCA8IGJveC0+c3RhcnQoKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIGlmIChvZmZzZXQgPD0gYm94LT5z
dGFydCgpICsgYm94LT5sZW4oKSkgewpAQCAtNDAyLDcgKzQwMiw3IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IFJlbmRlclRleHQm
IHJlbmRlcmVyCiAgICAgYm9vbCBibG9ja3NBcmVGbGlwcGVkID0gcmVuZGVyZXIuc3R5bGUoKS5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOwogCiAgICAgSW5saW5lVGV4dEJveCogbGFzdEJv
eCA9IG51bGxwdHI7Ci0gICAgZm9yIChhdXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94
LT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7IGJv
eCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBpZiAoYm94LT5pc0xpbmVCcmVhaygp
ICYmICFib3gtPnByZXZMZWFmQ2hpbGQoKSAmJiBib3gtPm5leHRMZWFmQ2hpbGQoKSAmJiAhYm94
LT5uZXh0TGVhZkNoaWxkKCktPmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBib3ggPSBib3gt
Pm5leHRUZXh0Qm94KCk7CiAKQEAgLTQ0MCw3ICs0NDAsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVu
ZGVyVGV4dExpbmVCb3hlczo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBSZW5kZXJUZXh0JiByZW5k
ZXJlcgogdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpzZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJU
ZXh0JiByZW5kZXJlciwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzdGF0ZSkKIHsKICAg
ICBpZiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25JbnNpZGUgfHwgc3RhdGUgPT0g
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7Ci0gICAgICAgIGZvciAoYXV0byBib3ggPSBt
X2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKKyAgICAgICAgZm9yIChhdXRv
KiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKICAgICAgICAg
ICAgIGJveC0+cm9vdCgpLnNldEhhc1NlbGVjdGVkQ2hpbGRyZW4oc3RhdGUgPT0gUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25JbnNpZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDU2LDcg
KzQ1Niw3IEBAIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6c2V0U2VsZWN0aW9uU3RhdGUoUmVu
ZGVyVGV4dCYgcmVuZGVyZXIsIFJlbmRlck9iamVjdDo6CiAgICAgfSBlbHNlIGlmIChzdGF0ZSA9
PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkVuZCkKICAgICAgICAgc3RhcnQgPSAwOwogCi0gICAg
Zm9yIChhdXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7
CisgICAgZm9yIChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRC
b3goKSkgewogICAgICAgICBpZiAoYm94LT5pc1NlbGVjdGVkKHN0YXJ0LCBlbmQpKQogICAgICAg
ICAgICAgYm94LT5yb290KCkuc2V0SGFzU2VsZWN0ZWRDaGlsZHJlbih0cnVlKTsKICAgICB9CkBA
IC00ODcsNyArNDg3LDcgQEAgc3RhdGljIEludFJlY3QgZWxsaXBzaXNSZWN0Rm9yQm94KGNvbnN0
IElubGluZVRleHRCb3gmIGJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2kKIExheW91dFJlY3QgUmVu
ZGVyVGV4dExpbmVCb3hlczo6c2VsZWN0aW9uUmVjdEZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBlbmQpCiB7CiAgICAgTGF5b3V0UmVjdCByZWN0OwotICAgIGZvciAoYXV0byBib3gg
PSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgIGZvciAoYXV0
byogYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAg
ICAgcmVjdC51bml0ZShib3gtPmxvY2FsU2VsZWN0aW9uUmVjdChzdGFydCwgZW5kKSk7CiAgICAg
ICAgIHJlY3QudW5pdGUoZWxsaXBzaXNSZWN0Rm9yQm94KCpib3gsIHN0YXJ0LCBlbmQpKTsKICAg
ICB9CkBAIC00OTYsNyArNDk2LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0TGluZUJveGVzOjpz
ZWxlY3Rpb25SZWN0Rm9yUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGUKIAogdm9pZCBS
ZW5kZXJUZXh0TGluZUJveGVzOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JSYW5nZSh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgZW5kLCBWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzKQogewotICAg
IGZvciAoYXV0byBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkg
eworICAgIGZvciAoYXV0byogYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0
Qm94KCkpIHsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0OwogICAgICAgICByZWN0LnVuaXRlKGJv
eC0+bG9jYWxTZWxlY3Rpb25SZWN0KHN0YXJ0LCBlbmQpKTsKICAgICAgICAgcmVjdC51bml0ZShl
bGxpcHNpc1JlY3RGb3JCb3goKmJveCwgc3RhcnQsIGVuZCkpOwpAQCAtNTA4LDcgKzUwOCw3IEBA
IHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6Y29sbGVjdFNlbGVjdGlvblJlY3RzRm9yUmFuZ2Uo
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkCiBWZWN0b3I8SW50UmVjdD4gUmVuZGVyVGV4dExpbmVC
b3hlczo6YWJzb2x1dGVSZWN0cyhjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
IGNvbnN0CiB7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwotICAgIGZvciAoYXV0byBib3gg
PSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKKyAgICBmb3IgKGF1dG8q
IGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICBy
ZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQg
KyBib3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkpKSk7CiAgICAgcmV0dXJuIHJlY3RzOwogfQpA
QCAtNTM2LDcgKzUzNiw3IEBAIHN0YXRpYyBGbG9hdFJlY3QgbG9jYWxRdWFkRm9yVGV4dEJveChj
b25zdCBJbmxpbmVUZXh0Qm94JiBib3gsIHVuc2lnbmVkIHN0YXJ0LCB1CiBWZWN0b3I8SW50UmVj
dD4gUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKGNvbnN0IFJlbmRl
clRleHQmIHJlbmRlcmVyLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNl
bGVjdGlvbkhlaWdodCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgVmVjdG9yPEludFJl
Y3Q+IHJlY3RzOwotICAgIGZvciAoYXV0byBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+
bmV4dFRleHRCb3goKSkgeworICAgIGZvciAoYXV0byogYm94ID0gbV9maXJzdDsgYm94OyBib3gg
PSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgLy8gTm90ZTogYm94LT5lbmQoKSByZXR1
cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIsIG5vdCB0aGUgaW5kZXggcGFzdCBp
dAogICAgICAgICBpZiAoc3RhcnQgPD0gYm94LT5zdGFydCgpICYmIGJveC0+ZW5kKCkgPCBlbmQp
IHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3Vu
ZGFyaWVzKCk7CkBAIC01NjQsNyArNTY0LDcgQEAgVmVjdG9yPEludFJlY3Q+IFJlbmRlclRleHRM
aW5lQm94ZXM6OmFic29sdXRlUmVjdHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiByZW4KIFZl
Y3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUXVhZHMoY29uc3Qg
UmVuZGVyVGV4dCYgcmVuZGVyZXIsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGluZ09wdGlvbiBvcHRp
b24pIGNvbnN0CiB7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7Ci0gICAgZm9yIChhdXRv
IGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9y
IChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewog
ICAgICAgICBGbG9hdFJlY3QgYm91bmRhcmllcyA9IGJveC0+Y2FsY3VsYXRlQm91bmRhcmllcygp
OwogCiAgICAgICAgIC8vIFNob3J0ZW4gdGhlIHdpZHRoIG9mIHRoaXMgdGV4dCBib3ggaWYgaXQg
ZW5kcyBpbiBhbiBlbGxpcHNpcy4KQEAgLTU4NCw3ICs1ODQsNyBAQCBWZWN0b3I8RmxvYXRRdWFk
PiBSZW5kZXJUZXh0TGluZUJveGVzOjphYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlclRleHQmIHJl
bmRlcmVyLAogVmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVR
dWFkc0ZvclJhbmdlKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0CiB7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7Ci0gICAgZm9yIChhdXRvIGJveCA9
IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9yIChhdXRv
KiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAg
ICAvLyBOb3RlOiBib3gtPmVuZCgpIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGNoYXJh
Y3Rlciwgbm90IHRoZSBpbmRleCBwYXN0IGl0CiAgICAgICAgIGlmIChzdGFydCA8PSBib3gtPnN0
YXJ0KCkgJiYgYm94LT5lbmQoKSA8IGVuZCkgewogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5k
YXJpZXMgPSBib3gtPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsKQEAgLTYxMCw3ICs2MTAsNyBAQCBW
ZWN0b3I8RmxvYXRRdWFkPiBSZW5kZXJUZXh0TGluZUJveGVzOjphYnNvbHV0ZVF1YWRzRm9yUmFu
Z2UoY29uc3QgUmVuZGVyVGV4dCYgcgogCiB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmRpcnR5
QWxsKCkKIHsKLSAgICBmb3IgKGF1dG8gYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5l
eHRUZXh0Qm94KCkpCisgICAgZm9yIChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJv
eC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgYm94LT5kaXJ0eUxpbmVCb3hlcygpOwogfQogCkBA
IC02MjEsNyArNjIxLDcgQEAgYm9vbCBSZW5kZXJUZXh0TGluZUJveGVzOjpkaXJ0eVJhbmdlKFJl
bmRlclRleHQmIHJlbmRlcmVyLCB1bnNpZ25lZCBzdGFydCwgdW5zaWcKIAogICAgIC8vIERpcnR5
IGFsbCB0ZXh0IGJveGVzIHRoYXQgaW5jbHVkZSBjaGFyYWN0ZXJzIGluIGJldHdlZW4gb2Zmc2V0
IGFuZCBvZmZzZXQrbGVuLgogICAgIGJvb2wgZGlydGllZExpbmVzID0gZmFsc2U7Ci0gICAgZm9y
IChhdXRvIGN1cnJlbnQgPSBtX2ZpcnN0OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4
dFRleHRCb3goKSkgeworICAgIGZvciAoYXV0byogY3VycmVudCA9IG1fZmlyc3Q7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZG4ndCByZWx5IG9uIHRoZSBlbmQgb2YgYSBkaXJ0eSBsaW5lIGJveC4gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzI2NAogICAgICAgICAvLyBU
ZXh0IHJ1biBpcyBlbnRpcmVseSBiZWZvcmUgdGhlIGFmZmVjdGVkIHJhbmdlLgogICAgICAgICBp
ZiAoY3VycmVudC0+ZW5kKCkgPCBzdGFydCkKQEAgLTY3NSw3ICs2NzUsNyBAQCBib29sIFJlbmRl
clRleHRMaW5lQm94ZXM6OmRpcnR5UmFuZ2UoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZwogICAgICAgICBmaXJzdFJvb3RCb3gtPm1hcmtEaXJ0eSgpOwogICAgICAg
ICBkaXJ0aWVkTGluZXMgPSB0cnVlOwogICAgIH0KLSAgICBmb3IgKGF1dG8gY3VycmVudCA9IGZp
cnN0Um9vdEJveDsgY3VycmVudCAmJiBjdXJyZW50ICE9IGxhc3RSb290Qm94OyBjdXJyZW50ID0g
Y3VycmVudC0+bmV4dFJvb3RCb3goKSkgeworICAgIGZvciAoYXV0byogY3VycmVudCA9IGZpcnN0
Um9vdEJveDsgY3VycmVudCAmJiBjdXJyZW50ICE9IGxhc3RSb290Qm94OyBjdXJyZW50ID0gY3Vy
cmVudC0+bmV4dFJvb3RCb3goKSkgewogICAgICAgICBpZiAoY3VycmVudC0+bGluZUJyZWFrT2Jq
KCkgPT0gJnJlbmRlcmVyICYmIGN1cnJlbnQtPmxpbmVCcmVha1BvcygpID4gZW5kKQogICAgICAg
ICAgICAgY3VycmVudC0+c2V0TGluZUJyZWFrUG9zKGN1cnJlbnQtPmxpbmVCcmVha1BvcygpICsg
bGVuZ3RoRGVsdGEpOwogICAgIH0KQEAgLTY5Myw3ICs2OTMsNyBAQCBpbmxpbmUgdm9pZCBSZW5k
ZXJUZXh0TGluZUJveGVzOjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAjaWZkZWYgQ0hFQ0tfQ09OU0lTVEVOQ1kKICAgICBjb25zdCBJbmxpbmVUZXh0Qm94
KiBwcmV2ID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8gY2hpbGQgPSBtX2ZpcnN0OyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFRleHRCb3goKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBt
X2ZpcnN0OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBB
U1NFUlQoY2hpbGQtPnJlbmRlcmVyKCkgPT0gdGhpcyk7CiAgICAgICAgIEFTU0VSVChjaGlsZC0+
cHJldlRleHRCb3goKSA9PSBwcmV2KTsKICAgICAgICAgcHJldiA9IGNoaWxkOwpAQCAtNzE0LDcg
KzcxNCw3IEBAIFJlbmRlclRleHRMaW5lQm94ZXM6On5SZW5kZXJUZXh0TGluZUJveGVzKCkKICNp
ZiAhQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKIHZvaWQgUmVuZGVy
VGV4dExpbmVCb3hlczo6aW52YWxpZGF0ZVBhcmVudENoaWxkTGlzdHMoKQogewotICAgIGZvciAo
YXV0byBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKKyAgICBm
b3IgKGF1dG8qIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQog
ICAgICAgICBib3gtPmludmFsaWRhdGVQYXJlbnRDaGlsZExpc3QoKTsKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDk1Mjg5
MDNlZTIzMjRkYjMxYTMzMTM3YzEyMWJkNzRjNzYwYTU2MjIuLjcwZjkwNWFlNDc0YzNlZWQyNGQ1
ZmYxMzg0MDcyZjdhNDgxYmQ1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIHdyaXRlKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIGludCBpbmRlbnQsIFJlbmRlckFzVGV4dEJl
aGF2aQogICAgICAgICAgICAgICAgIHdyaXRlU2ltcGxlTGluZSh0cywgdGV4dCwgcnVuLnJlY3Qo
KSwgcnVuLnRleHQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8gYm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gt
Pm5leHRUZXh0Qm94KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byogYm94ID0gdGV4dC5maXJz
dFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgICAg
ICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CiAgICAgICAgICAgICAgICAgd3JpdGVU
ZXh0UnVuKHRzLCB0ZXh0LCAqYm94KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCA5
YmVlYjkyMWQ0MTZlMDU3MzA5YjZlZjI5MjQ0NDliZTQwNmJmYzZjLi4xNDQ3NTk2ZGRiMTQ4YmM0
MmYzODMzM2IxYmM4NGM5ZTg1YTUyNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xNzYsNyArMTc2LDcg
QEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6Om1lYXN1cmVUZXh0UmVuZGVyZXIoUmVuZGVy
U1ZHSW5saW5lVGV4dCYgdGV4dCwgTWVhc3UKIAogdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6
OndhbGtUcmVlKFJlbmRlckVsZW1lbnQmIHN0YXJ0LCBSZW5kZXJTVkdJbmxpbmVUZXh0KiBzdG9w
QXRMZWFmLCBNZWFzdXJlVGV4dERhdGEqIGRhdGEpCiB7Ci0gICAgZm9yIChhdXRvIGNoaWxkID0g
c3RhcnQuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkg
eworICAgIGZvciAoYXV0byogY2hpbGQgPSBzdGFydC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChpczxSZW5kZXJTVkdJbmxp
bmVUZXh0PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0
ID0gZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmNoaWxkKTsKICAgICAgICAgICAgIGlm
IChzdG9wQXRMZWFmICYmIHN0b3BBdExlYWYgIT0gJnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAppbmRleCA5NTQyMzlmNDUyNTY0N2NkNzE1Y2FhN2NlY2NkMzVhODkxOTMy
YzI2Li45NDhkMmI1NGI2ODE3NzJjNmFlZjdmNGFhZGY0YTMwYzExYTFlMWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC02NzYsNyArNjc2LDcgQEAgRWxlbWVudCogU1ZH
U1ZHRWxlbWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKICAgICBp
ZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc0Rlc2NlbmRhbnRPZih0aGlzKSkKICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7CiAgICAgaWYgKHRyZWVTY29wZSgpLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50
c1dpdGhJZChpZCkpIHsKLSAgICAgICAgZm9yIChhdXRvIGVsZW1lbnQgOiAqdHJlZVNjb3BlKCku
Z2V0QWxsRWxlbWVudHNCeUlkKGlkKSkgeworICAgICAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiAq
dHJlZVNjb3BlKCkuZ2V0QWxsRWxlbWVudHNCeUlkKGlkKSkgewogICAgICAgICAgICAgaWYgKGVs
ZW1lbnQtPmlzRGVzY2VuZGFudE9mKHRoaXMpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAy
ODFhM2NhZDZmODgxYjFhNmMwNmUxMmE2YmM4MjU0ZTJiMDJmNmYyLi44MzdiNmJjYjQ1OWRkYWYw
ZTMxOTg1MDE5YWIyZDU4YzQ1YjI3ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTE3MjAsNyArMTcyMCw3IEBAIHN0YXRpYyBXZWJGcmFtZUxvYWRUeXBlIHRvV2Vi
RnJhbWVMb2FkVHlwZShGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiAgICAgCiAgICAgZm9y
IChOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5v
ZGUpKSB7CiAgICAgICAgIGF1dG8gbWFya2VycyA9IGRvY3VtZW50LT5tYXJrZXJzKCkubWFya2Vy
c0Zvcihub2RlKTsKLSAgICAgICAgZm9yIChhdXRvIG1hcmtlciA6IG1hcmtlcnMpIHsKKyAgICAg
ICAgZm9yIChhdXRvKiBtYXJrZXIgOiBtYXJrZXJzKSB7CiAKICAgICAgICAgICAgIGlmIChtYXJr
ZXItPnR5cGUoKSAhPSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0KQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUuY3BwCmluZGV4IGIwYWFhYTI4ZDljNTIxODYwOWNkNTRiODY5YzY5NTk5ZTUzOTY3YjEu
LmEzZmI3NzBmNWNkYmNkY2I1ZmE3N2FiNGQyZjBiNTQ3NDQ4OTBmNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKQEAgLTE3OCwxMCArMTc4LDEw
IEBAIHZvaWQgVmlzaXRlZExpbmtTdG9yZTo6cGVuZGluZ1Zpc2l0ZWRMaW5rc1RpbWVyRmlyZWQo
KQogCiAgICAgVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiBhZGRlZFZpc2l0ZWRMaW5rczsKIAot
ICAgIGZvciAoYXV0byBsaW5rSGFzaCA6IG1fcGVuZGluZ1Zpc2l0ZWRMaW5rcykgeworICAgIGZv
ciAoYXV0byYgbGlua0hhc2ggOiBtX3BlbmRpbmdWaXNpdGVkTGlua3MpIHsKICAgICAgICAgaWYg
KG1fdGFibGUuYWRkTGlua0hhc2gobGlua0hhc2gpKSB7CiAgICAgICAgICAgICBhZGRlZFZpc2l0
ZWRMaW5rcy5hcHBlbmQobGlua0hhc2gpOwotICAgICAgICAgICAgbV9rZXlDb3VudCsrOworICAg
ICAgICAgICAgKyttX2tleUNvdW50OwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzUsNyArMjM1
LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSh1bnNpZ25lZCBuZXdUYWJs
ZVNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3IgKGF1dG8gbGlua0hhc2ggOiBtX3Bl
bmRpbmdWaXNpdGVkTGlua3MpIHsKKyAgICBmb3IgKGF1dG8mIGxpbmtIYXNoIDogbV9wZW5kaW5n
VmlzaXRlZExpbmtzKSB7CiAgICAgICAgIGlmIChtX3RhYmxlLmFkZExpbmtIYXNoKGxpbmtIYXNo
KSkKICAgICAgICAgICAgIG1fa2V5Q291bnQrKzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDg4ODFlZjcwNTY4YTYzYjE4MTE4ODEx
NjMyYjViNTRmNGUyYzFmOGMuLjk5YjNkNDZlZTI2MzRjOGMxNDI0NzkzYzAxNzkxN2Q5ZDdhYmEx
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC00NzksNyArNDc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VSZW1haW5pbmdJ
Y29uc0ZvclBhZ2VVUkxzKCkKICAgICBpZiAoIWljb25EYXRhYmFzZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZm9yIChhdXRvIGl0ZXIgOiBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcCkgeworICAg
IGZvciAoYXV0byYgaXRlciA6IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwKSB7CiAgICAgICAgIHVp
bnQ2NF90IGNvdW50ID0gaXRlci52YWx1ZTsKICAgICAgICAgZm9yICh1aW50NjRfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpCiAgICAgICAgICAgICBpY29uRGF0YWJhc2UtPnJlbGVhc2VJY29uRm9y
UGFnZVVSTChpdGVyLmtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggOTJlZDYxZWYzZmRlNjgz
ZTgyMDdiN2RlNjNmYjlhMWE4NzhjYWQ0NS4uNDMyZWY3N2ZmNTEyZDEzNWVjZmU1YTY2MjA3N2Ew
Y2I5ZGQ3ZWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQKIAogICAgIGF1dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0g
Y29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFGZXRjaChkYXRhVHlwZXMsICFp
c1BlcnNpc3RlbnQoKSk7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSAhPSBQcm9j
ZXNzQWNjZXNzVHlwZTo6Tm9uZSkgewotICAgICAgICBmb3IgKGF1dG8gcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAobmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBl
KSB7CiAgICAgICAgICAgICBjYXNlIFByb2Nlc3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZDoK
ICAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQpAQCAt
MzYwLDcgKzM2MCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNpdGVE
YXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQKIAogI2lmIEVOQUJMRShEQVRB
QkFTRV9QUk9DRVNTKQogICAgIGlmIChkYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVk
REJEYXRhYmFzZXMgJiYgaXNQZXJzaXN0ZW50KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlRGF0
YWJhc2VQcm9jZXNzKCk7CiAKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVu
ZGluZ0NhbGxiYWNrKCk7CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZW1vdmVEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lz
dGUKIAogICAgIGF1dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQ
cm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgp
KTsKICAgICBpZiAobmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBl
OjpOb25lKSB7Ci0gICAgICAgIGZvciAoYXV0byBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygp
KSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewog
ICAgICAgICAgICAgc3dpdGNoIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUpIHsKICAgICAgICAg
ICAgIGNhc2UgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkOgogICAgICAgICAgICAg
ICAgIGlmICghcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCkBAIC02MDcsNyArNjA3LDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0
YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGUKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNT
KQogICAgIGlmIChkYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMg
JiYgaXNQZXJzaXN0ZW50KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQ
b29scygpKSB7CiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlRGF0YWJhc2VQcm9jZXNz
KCk7CiAKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNr
KCk7CkBAIC03MjcsNyArNzI3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
KFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2Vic2kKIAogICAgIGF1
dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNz
VHlwZUZvckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAo
bmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7Ci0g
ICAgICAgIGZvciAoYXV0byBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAg
IGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICAgICAg
c3dpdGNoIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUHJv
Y2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkOgogICAgICAgICAgICAgICAgIGlmICghcHJv
Y2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCkBAIC04NDMsNyArODQzLDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBjb25z
dCBWZWN0b3I8V2Vic2kKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIGlmIChk
YXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgJiYgaXNQZXJzaXN0
ZW50KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlRGF0YWJhc2VQcm9jZXNzKCk7CiAKICAgICAg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CkBAIC0xMDAx
LDcgKzEwMDEsNyBAQCBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gV2Vic2l0ZURhdGFTdG9yZTo6
cGx1Z2lucygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IHBsdWdpbnM7
CiAKLSAgICBmb3IgKGF1dG8gcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBmb3IgKGF1
dG8mIHBsdWdpbiA6IHByb2Nlc3NQb29sLT5wbHVnaW5JbmZvU3RvcmUoKS5wbHVnaW5zKCkpCiAg
ICAgICAgICAgICBwbHVnaW5zLmFwcGVuZChwbHVnaW4pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9EZWFsbG9jYXRvci5jcHAKaW5kZXggODUwZTAxMjdhMmFiZGU2ZjE2M2Y3ZGRmNjMzNjdj
YjY4MTAxZjU2Zi4uY2ZjMGY3MjQ4ODgyZTA4MGI1Mjc1MjA0MWI5NWExZTIwNmQ1MWMyMiAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWFsbG9jYXRvci5jcHAKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWFsbG9jYXRvci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBEZWFsbG9jYXRvcjo6cHJvY2Vzc09iamVjdExvZygpCiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4KCkpOwogICAgIEhlYXAqIGhl
YXAgPSBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpOwogICAgIAotICAgIGZvciAoYXV0
byBvYmplY3QgOiBtX29iamVjdExvZykgeworICAgIGZvciAoYXV0byogb2JqZWN0IDogbV9vYmpl
Y3RMb2cpIHsKICAgICAgICAgaWYgKGlzU21hbGwob2JqZWN0KSkgewogICAgICAgICAgICAgU21h
bGxMaW5lKiBsaW5lID0gU21hbGxMaW5lOjpnZXQob2JqZWN0KTsKICAgICAgICAgICAgIGhlYXAt
PmRlcmVmU21hbGxMaW5lKGxvY2ssIGxpbmUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263002</attachid>
            <date>2015-10-13 11:43:09 -0700</date>
            <delta_ts>2015-10-13 12:16:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150091-20151013114232.patch</filename>
            <type>text/plain</type>
            <size>59134</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwOTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM3YWY5NDZjZGMyYjY2
NWI3ZWQwNjI5ODFlM2ExNTFlZGRmZTFiMy4uYTRiYWU3OTgwYzQ1ZjBlMmUxMjVmNjgzZGJmYzZl
ZmU4ZDc0NzQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTEwLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgdXNlbGVzcyBjb3Bp
ZXMgaW4gcmFuZ2UtbG9vcHMgdGhhdCBhcmUgdXNpbmcgJ2F1dG8nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwOTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIEF2b2lkIHVzZWxlc3MgY29waWVzIGluIHJhbmdl
LWxvb3BzIHRoYXQgYXJlIHVzaW5nICdhdXRvJy4gQWxzbyB1c2UKKyAgICAgICAgJ2F1dG8qJyBp
bnN0ZWFkIG9mICdhdXRvJyB3aGVuIHJhbmdlIHZhbHVlcyBhcmUgcG9pbnRlcnMgZm9yIGNsYXJp
dHkuCisKIDIwMTUtMTAtMTMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFRyeSB0byBmaXggRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkgd2l0aCBTSEFET1dfRE9N
IGRpc2FibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDY1OTIxM2JlMjljNjJlZDUzZGY3ZmU3Mjkz
YTIyMzAxN2Q2Y2JjY2UuLmVhM2VhNGU0ZmZjMzdjOTE2NjcxMzdjNjIzMjEwYjM4YWUwM2QyYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0xMC0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIHVzZWxlc3MgY29waWVzIGlu
IHJhbmdlLWxvb3BzIHRoYXQgYXJlIHVzaW5nICdhdXRvJworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KKworICAgICAgICBBdm9pZCB1c2VsZXNzIGNvcGllcyBpbiByYW5nZS1sb29w
cyB0aGF0IGFyZSB1c2luZyAnYXV0bycuIEFsc28gdXNlCisgICAgICAgICdhdXRvKicgaW5zdGVh
ZCBvZiAnYXV0bycgd2hlbiByYW5nZSB2YWx1ZXMgYXJlIHBvaW50ZXJzIGZvciBjbGFyaXR5Lgor
CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgZ2V0
RGljdGF0aW9uUmVzdWx0UmFuZ2VzOmFuZE1ldGFkYXRhczpdKToKKwogMjAxNS0xMC0wOSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGFsbG93
IHBsdWctaW5zIHRvIG92ZXJyaWRlIGltYWdlIHR5cGVzIGZvciA8ZW1iZWQ+IGVsZW1lbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggYmU4MmMwNDM4NmU2NzdhNjYzM2EzYmJmODkyZTg2YzA3NjM4MGNiZS4uOWFj
NWQ4OWE2MDQ1MDg4OGYyNWRlZDRjNWM2Mjg4ZjU5NzFhZDU5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDE1LTEwLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgQXZvaWQgdXNlbGVzcyBjb3BpZXMgaW4gcmFuZ2UtbG9vcHMgdGhhdCBhcmUgdXNp
bmcgJ2F1dG8nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTAwOTEKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIEF2
b2lkIHVzZWxlc3MgY29waWVzIGluIHJhbmdlLWxvb3BzIHRoYXQgYXJlIHVzaW5nICdhdXRvJy4g
QWxzbyB1c2UKKyAgICAgICAgJ2F1dG8qJyBpbnN0ZWFkIG9mICdhdXRvJyB3aGVuIHJhbmdlIHZh
bHVlcyBhcmUgcG9pbnRlcnMgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmU6OnBl
bmRpbmdWaXNpdGVkTGlua3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExp
bmtTdG9yZTo6cmVzaXplVGFibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VSZW1haW5p
bmdJY29uc0ZvclBhZ2VVUkxzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZl
dGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbHVnaW5zKToKKwogMjAxNS0x
MC0xMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBBdm9pZCBjcmFzaCBkdWUgdG8gaW52YWxpZCBzY3JlZW4gYm91bmRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXgg
ZjVlNTJmYjE5Zjk0MTBkOGJjNDliM2VmMjcyODVmYWRjYTdmNTYyZS4uOThjYzU5MzkwYWIwN2M5
ZTllODE2Y2M5ODgzNTViYTMwNzkxNzdiZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDE1LTEwLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZv
aWQgdXNlbGVzcyBjb3BpZXMgaW4gcmFuZ2UtbG9vcHMgdGhhdCBhcmUgdXNpbmcgJ2F1dG8nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwOTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIEF2b2lkIHVzZWxlc3Mg
Y29waWVzIGluIHJhbmdlLWxvb3BzIHRoYXQgYXJlIHVzaW5nICdhdXRvJy4gQWxzbyB1c2UKKyAg
ICAgICAgJ2F1dG8qJyBpbnN0ZWFkIG9mICdhdXRvJyB3aGVuIHJhbmdlIHZhbHVlcyBhcmUgcG9p
bnRlcnMgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBibWFsbG9jL0RlYWxsb2NhdG9yLmNwcDoK
KyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjpwcm9jZXNzT2JqZWN0TG9nKToKKwogMjAx
NS0xMC0xMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGJt
YWxsb2M6IERvbid0IEFTU0VSVCB0aGF0IGFsbCBzeXNjYWxscyBzdWNjZWVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXgg
NWYyMWRhNmRiYjg2ZmM0MjkzZWYyNDNiOWIyOGI3Yjk1NDY0NmUxYS4uYzJmNGJiZmU1ZjA2ZGZh
MjhmYzAyMzRiYjQ5NDQxMzNkNzg4MzhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtNDc0LDcgKzQ3NCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbkZyb21TZWN0aW9uKFJlbmRlclRhYmxl
U2VjdGlvbiogdGFibGVTZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgIGFkZFRhYmxlQ2VsbENo
aWxkKG9iaiwgYXBwZW5kZWRSb3dzLCBtYXhDb2x1bW5Db3VudCk7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKGF1
dG8gY2hpbGQgPSBvYmotPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpCisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IG9iai0+Zmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAg
ICAgICAgICAgcXVldWUuYXBwZW5kKGNoaWxkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRy
ZWUuY3BwCmluZGV4IGUyY2QzYzkyZGQwNjk4YWEzZTM0ZmVhMmU2YTRlNDljNTZlNzE3ZGYuLmY0
NjEzY2RjZWYzODA2YmNjYzViNTdkZGU0OWNkMzliZTY2ZDdhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmlzVHJlZVZhbGlkKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIERlcXVlPE5vZGUqPiBxdWV1ZTsKLSAgICBmb3Ig
KGF1dG8gY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKQorICAgIGZvciAoYXV0byogY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICBxdWV1ZS5hcHBl
bmQoY2hpbGQpOwogCiAgICAgd2hpbGUgKCFxdWV1ZS5pc0VtcHR5KCkpIHsKQEAgLTkwLDcgKzkw
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VHJlZTo6aXNUcmVlVmFsaWQoKSBjb25zdAogICAgICAg
ICBpZiAoIW5vZGVIYXNSb2xlKGNoaWxkLCAiZ3JvdXAiKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICBmb3IgKGF1dG8gZ3JvdXBDaGlsZCA9IGNoaWxkLT5maXJzdENoaWxk
KCk7IGdyb3VwQ2hpbGQ7IGdyb3VwQ2hpbGQgPSBncm91cENoaWxkLT5uZXh0U2libGluZygpKQor
ICAgICAgICBmb3IgKGF1dG8qIGdyb3VwQ2hpbGQgPSBjaGlsZC0+Zmlyc3RDaGlsZCgpOyBncm91
cENoaWxkOyBncm91cENoaWxkID0gZ3JvdXBDaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAg
ICAgIHF1ZXVlLmFwcGVuZChncm91cENoaWxkKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGVlZGU1YTcyMTI1Mjc1ZTE0NWIzZDdkNThmY2Q4
NGJiMjQ2MjAzNmQuLjYzYTUxNWMyNTMzYjFmNTAzNGFmZGFhMzg3MDRiNzY5ZTI3MjllMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMDAxMyw3ICsxMDAxMyw3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUZpbHRlcihDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRy
PENTU1ZhbHVlPiYgcmVzCiB7CiAgICAgLy8gVGhlIGZpbHRlciBpcyBhIGxpc3Qgb2YgZnVuY3Rp
b25hbCBwcmltaXRpdmVzIHRoYXQgc3BlY2lmeSBpbmRpdmlkdWFsIG9wZXJhdGlvbnMuCiAgICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKLSAgICBmb3IgKGF1dG8gdmFsdWUgPSB2YWx1ZUxpc3QuY3VycmVudCgpOyB2YWx1
ZTsgdmFsdWUgPSB2YWx1ZUxpc3QubmV4dCgpKSB7CisgICAgZm9yIChhdXRvKiB2YWx1ZSA9IHZh
bHVlTGlzdC5jdXJyZW50KCk7IHZhbHVlOyB2YWx1ZSA9IHZhbHVlTGlzdC5uZXh0KCkpIHsKICAg
ICAgICAgaWYgKHZhbHVlLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJICYmICh2
YWx1ZS0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gfHwgIXZhbHVlLT5mdW5jdGlv
bikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDY5NGM5YzIyMzFjN2MzYTY4ODFhYWU5ZjFmYWRkZmM0MWY5NjMzMzAuLjg3YmJjZmZjN2E0
ZWUwNDViMzQzMjg2MTBhM2JkMjc0YTg2ZDZjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMjMyOCw3ICsyMzI4LDcgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9u
KCkKICAgICBpZiAoIW1fY2xpZW50VG9JRE1hcC5pc0VtcHR5KCkgJiYgcGFnZSgpKSB7CiAgICAg
ICAgIFZlY3RvcjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50Kj4gY2xpZW50czsK
ICAgICAgICAgY29weUtleXNUb1ZlY3RvcihtX2NsaWVudFRvSURNYXAsIGNsaWVudHMpOwotICAg
ICAgICBmb3IgKGF1dG8gY2xpZW50IDogY2xpZW50cykKKyAgICAgICAgZm9yIChhdXRvKiBjbGll
bnQgOiBjbGllbnRzKQogICAgICAgICAgICAgcmVtb3ZlUGxheWJhY2tUYXJnZXRQaWNrZXJDbGll
bnQoKmNsaWVudCk7CiAgICAgfQogI2VuZGlmCkBAIC0zNTQ1LDcgKzM1NDUsNyBAQCB2b2lkIERv
Y3VtZW50OjpyZW1vdmVBdWRpb1Byb2R1Y2VyKE1lZGlhUHJvZHVjZXIqIGF1ZGlvUHJvZHVjZXIp
CiB2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSh1aW50NjRfdCBzb3VyY2VFbGVt
ZW50SUQpCiB7CiAgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIHN0YXRlID0gTWVk
aWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOwotICAgIGZvciAoYXV0byBhdWRpb1Byb2R1Y2VyIDog
bV9hdWRpb1Byb2R1Y2VycykKKyAgICBmb3IgKGF1dG8qIGF1ZGlvUHJvZHVjZXIgOiBtX2F1ZGlv
UHJvZHVjZXJzKQogICAgICAgICBzdGF0ZSB8PSBhdWRpb1Byb2R1Y2VyLT5tZWRpYVN0YXRlKCk7
CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKQEAgLTM1NzUsNyArMzU3NSw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKHVpbnQ2NF90IHNvdXJjZUVsZW1lbnRJRCkK
IAogdm9pZCBEb2N1bWVudDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQogewotICAgIGZvciAo
YXV0byBhdWRpb1Byb2R1Y2VyIDogbV9hdWRpb1Byb2R1Y2VycykKKyAgICBmb3IgKGF1dG8qIGF1
ZGlvUHJvZHVjZXIgOiBtX2F1ZGlvUHJvZHVjZXJzKQogICAgICAgICBhdWRpb1Byb2R1Y2VyLT5w
YWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRl
eCAxZGZiMTg4OWNiNWUwOGNmMGExY2U3MWE3Y2YxNGVjNmQwOGEwODk4Li5iNDQzZjcyOGUxN2U3
NTJkY2E5Zjg2ZWE0NGMzMzAzOTY3N2Y1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAg
LTcxMCw3ICs3MTAsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5k
YXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHRleHRP
ZmZzZXQgPSBjdXJyZW50UG9zLm9mZnNldEluTGVhZk5vZGUoKTsKICAgICAgICAgICAgIGF1dG8g
bGFzdFRleHRCb3ggPSB0ZXh0UmVuZGVyZXIubGFzdFRleHRCb3goKTsKLSAgICAgICAgICAgIGZv
ciAoYXV0byBib3ggPSB0ZXh0UmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94
LT5uZXh0VGV4dEJveCgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGJveCA9IHRleHRSZW5k
ZXJlci5maXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA8PSBib3gtPnN0YXJ0KCkgKyBib3gtPmxlbigp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID4gYm94LT5zdGFydCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3M7CkBAIC04MzgsNyArODM4
LDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3Np
bmdSdWxlIHJ1bGUpIGNvbnN0CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHRleHRPZmZzZXQgPSBj
dXJyZW50UG9zLm9mZnNldEluTGVhZk5vZGUoKTsKICAgICAgICAgICAgIGF1dG8gbGFzdFRleHRC
b3ggPSB0ZXh0UmVuZGVyZXIubGFzdFRleHRCb3goKTsKLSAgICAgICAgICAgIGZvciAoYXV0byBi
b3ggPSB0ZXh0UmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4
dEJveCgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIGJveCA9IHRleHRSZW5kZXJlci5maXJz
dFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAodGV4dE9mZnNldCA8PSBib3gtPmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICh0ZXh0T2Zmc2V0ID49IGJveC0+c3RhcnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjdXJyZW50UG9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggMTMwYzgwMjY4OTA0
NjlkZTVmNmI1YTZmMzg2YjUwYzI3YmY3MGRmYy4uMTcxOGRmNDdhZGIwMzU1YzBlZWEzMGJhM2I4
NDBhNmI2MzMwOTRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tD
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IFUKICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKSk7CiAKICAgICAvLyBDaGVjayBpZiBhbiBhcHByb3ByaWF0ZSBjYWNoZSBhbHJlYWR5
IGV4aXN0cyBpbiBtZW1vcnkuCi0gICAgZm9yIChhdXRvIGdyb3VwIDogbV9jYWNoZXNJbk1lbW9y
eS52YWx1ZXMoKSkgeworICAgIGZvciAoYXV0byogZ3JvdXAgOiBtX2NhY2hlc0luTWVtb3J5LnZh
bHVlcygpKSB7CiAgICAgICAgIEFTU0VSVCghZ3JvdXAtPmlzT2Jzb2xldGUoKSk7CiAKICAgICAg
ICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gZ3JvdXAtPm5ld2VzdENhY2hlKCkpIHsK
QEAgLTEyODQsNyArMTI4NCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmVtcHR5
KCkKICAgICAvLyBDbGVhciB0aGUgc3RvcmFnZSBJRHMgZm9yIHRoZSBjYWNoZXMgaW4gbWVtb3J5
LgogICAgIC8vIFRoZSBjYWNoZXMgd2lsbCBzdGlsbCB3b3JrLCBidXQgY2FjaGVkIHJlc291cmNl
cyB3aWxsIG5vdCBiZSBzYXZlZCB0byBkaXNrIAogICAgIC8vIHVudGlsIGEgY2FjaGUgdXBkYXRl
IHByb2Nlc3MgaGFzIGJlZW4gaW5pdGlhdGVkLgotICAgIGZvciAoYXV0byBncm91cCA6IG1fY2Fj
aGVzSW5NZW1vcnkudmFsdWVzKCkpCisgICAgZm9yIChhdXRvKiBncm91cCA6IG1fY2FjaGVzSW5N
ZW1vcnkudmFsdWVzKCkpCiAgICAgICAgIGdyb3VwLT5jbGVhclN0b3JhZ2VJRCgpOwogCiAgICAg
Y2hlY2tGb3JEZWxldGVkUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IGM0ZDk2M2VhODZmNGE4ZjZhNDYzMWFlZTA0N2MwNzg2ZDhmOWUyNDUuLjJj
NzZmNjNmZTExNWU5NmNmNWRmM2IzMDk3YzJhZjNjN2VhODg0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC02NDksNyArNjQ5LDcgQEAgRWxlbWVudCogRHJhZ0Nv
bnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVt
ZW50KiBzdGEKICAgICAgICAgc3RhdGUudHlwZSA9IERyYWdTb3VyY2VBY3Rpb25Ob25lOwogI2Vu
ZGlmCiAKLSAgICBmb3IgKGF1dG8gcmVuZGVyZXIgPSBzdGFydEVsZW1lbnQtPnJlbmRlcmVyKCk7
IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgeworICAgIGZvciAoYXV0
byogcmVuZGVyZXIgPSBzdGFydEVsZW1lbnQtPnJlbmRlcmVyKCk7IHJlbmRlcmVyOyByZW5kZXJl
ciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gcmVu
ZGVyZXItPm5vblBzZXVkb0VsZW1lbnQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50KSB7CiAgICAg
ICAgICAgICAvLyBBbm9ueW1vdXMgcmVuZGVyIGJsb2NrcyBkb24ndCBjb3JyZXNwb25kIHRvIGFj
dHVhbCBET00gZWxlbWVudHMsIHNvIHdlIHNraXAgb3ZlciB0aGVtCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRleCAwZmI0
Y2Y5ZjYxNjc2M2UyMzExMTI5NDU4Nzc1ZTZmNTlhYjEyYTlkLi5mMzBmMTM5NWUwY2QwYjFjODZi
MzMwMTRmMTA0MjUwMWU4MzE1ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lk
IENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBSZW5kZQogICAgIH0KICAgICAKICAgICAvLyBOb3cgcmVtb3ZlIHRoZSBh
bmltYXRpb25zIGZyb20gdGhlIGxpc3QuCi0gICAgZm9yIChhdXRvIG5hbWVGb3JSZW1vdmFsIDog
YW5pbXNUb0JlUmVtb3ZlZCkKKyAgICBmb3IgKGF1dG8qIG5hbWVGb3JSZW1vdmFsIDogYW5pbXNU
b0JlUmVtb3ZlZCkKICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMucmVtb3ZlKG5hbWVGb3JS
ZW1vdmFsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggYmYzNWM0N2QzZGUy
ZTMzODFiNjkyODE5MzQ0NmUxOWZhNWYwODNjOS4uMWY1ZmM3ODA3ZjFjYjVjNmVkYzA2NGMzYmM2
ZmY2ZWY4NzQ2YzE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0zMzIsNyArMzMy
LDcgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbVdpbGxTbGVlcCgp
CiAgICAgaWYgKG1faW50ZXJydXB0ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0
byBzZXNzaW9uIDogbV9zZXNzaW9ucykKKyAgICBmb3IgKGF1dG8qIHNlc3Npb24gOiBtX3Nlc3Np
b25zKQogICAgICAgICBzZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6U3lzdGVtU2xlZXApOwogfQogCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN5c3RlbURpZFdha2UoKQogICAgIGlmIChtX2ludGVycnVw
dGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8gc2Vzc2lvbiA6IG1fc2Vzc2lv
bnMpCisgICAgZm9yIChhdXRvKiBzZXNzaW9uIDogbV9zZXNzaW9ucykKICAgICAgICAgc2Vzc2lv
bi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5j
cHAKaW5kZXggZTY4MzQyOWI0ZjVmNmZhYzM5OWM2ZDc0Mzc0MmI5MzIyMmJlMjAwYy4uZTBlZTcx
NjU0NTIyN2MwZWUwYTlmZmFmOWU1ZjY3ODEyZThhZjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgdm9p
ZCBGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSh1bnNpZ25lZCBwdXJnZUNvdW50KQog
ICAgICAgICBpZiAoZW50cnkudmFsdWUgJiYgIWNhY2hlZEZvbnRzKCkuY29udGFpbnMoKmVudHJ5
LnZhbHVlKSkKICAgICAgICAgICAgIGtleXNUb1JlbW92ZS5hcHBlbmQoZW50cnkua2V5KTsKICAg
ICB9Ci0gICAgZm9yIChhdXRvIGtleSA6IGtleXNUb1JlbW92ZSkKKyAgICBmb3IgKGF1dG8mIGtl
eSA6IGtleXNUb1JlbW92ZSkKICAgICAgICAgZm9udFBsYXRmb3JtRGF0YUNhY2hlKCkucmVtb3Zl
KGtleSk7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4IDQ2MzVkOGI1
MTNjMTlmZTJhNDgzNjgzNzAwMzFhODZkNzUwM2FiNmIuLjE1ZDExYjA1MTZmODQwMzk0MDk3NWIx
ZWQzNTU1NzcxMTlhNzY4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIEZsb2F0
UG9pbnRHcmFwaDo6UG9seWdvbiB3YWxrR3JhcGhBbmRFeHRyYWN0UG9seWdvbihGbG9hdFBvaW50
R3JhcGg6Ok5vZGUKICAgICAgICAgLy8gcG9pbnQgd2l0aCB0aGUgZ3JlYXRlc3QgaW50ZXJuYWwg
YW5nbGUuCiAgICAgICAgIEZsb2F0UG9pbnRHcmFwaDo6Tm9kZSogbmV4dE5vZGUgPSBudWxscHRy
OwogICAgICAgICBmbG9hdCBuZXh0Tm9kZUFuZ2xlID0gMDsKLSAgICAgICAgZm9yIChhdXRvIHBv
dGVudGlhbE5leHROb2RlIDogY3VycmVudE5vZGUtPm5leHRQb2ludHMoKSkgeworICAgICAgICBm
b3IgKGF1dG8qIHBvdGVudGlhbE5leHROb2RlIDogY3VycmVudE5vZGUtPm5leHRQb2ludHMoKSkg
ewogICAgICAgICAgICAgaWYgKHBvdGVudGlhbE5leHROb2RlID09IGN1cnJlbnROb2RlKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXgg
ZDI5YjExNDBlZmEzYTkxMTMzODg2NjVlYWE4NTY4ZTYzMTNhZmZkOC4uYWJlNDg5YmFiYWQzZTVk
ZTA4ODE4M2ViNzgyOTY1ZjhkOTkzYzk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpA
QCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYgc3RyZWFtKQogICAgICAgICB9CiAgICAgfQog
ICAgIG1fcHJldmlld0xheWVyID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8gdHJhY2sgOiBtX01l
ZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCkpIHsKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9N
ZWRpYVN0cmVhbVByaXZhdGUtPnRyYWNrcygpKSB7CiAgICAgICAgIGlmICh0cmFjay0+dHlwZSgp
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKQogICAgICAgICAgICAgbV9wcmV2
aWV3TGF5ZXIgPSBzdGF0aWNfY2FzdDxBVlZpZGVvQ2FwdHVyZVNvdXJjZSo+KHRyYWNrLT5zb3Vy
Y2UoKSktPnByZXZpZXdMYXllcigpOwogICAgIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxheUludGVybmFsKCkKIHsKICAg
ICBtX3BsYXlpbmcgPSB0cnVlOwogCi0gICAgZm9yIChhdXRvIHRyYWNrIDogbV9NZWRpYVN0cmVh
bVByaXZhdGUtPnRyYWNrcygpKQorICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX01lZGlhU3RyZWFt
UHJpdmF0ZS0+dHJhY2tzKCkpCiAgICAgICAgIHRyYWNrLT5zb3VyY2UoKS0+c3RhcnRQcm9kdWNp
bmdEYXRhKCk7CiB9CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGF1c2VJbnRlcm5hbCgpCiB7CiAgICAgbV9wbGF5aW5nID0g
ZmFsc2U7CiAKLSAgICBmb3IgKGF1dG8gdHJhY2sgOiBtX01lZGlhU3RyZWFtUHJpdmF0ZS0+dHJh
Y2tzKCkpCisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fTWVkaWFTdHJlYW1Qcml2YXRlLT50cmFj
a3MoKSkKICAgICAgICAgdHJhY2stPnNvdXJjZSgpLT5zdG9wUHJvZHVjaW5nRGF0YSgpOwogfQog
CkBAIC0yMjksNyArMjI5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKIHsKLSAgICBmb3IgKGF1
dG8gdHJhY2sgOiBtX01lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCkpIHsKKyAgICBmb3IgKGF1
dG8mIHRyYWNrIDogbV9NZWRpYVN0cmVhbVByaXZhdGUtPnRyYWNrcygpKSB7CiAgICAgICAgIGlm
ICh0cmFjay0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvKQogICAg
ICAgICAgICAgdHJhY2stPnNvdXJjZSgpLT5zZXRNdXRlZChtdXRlZCk7CiAgICAgfQpAQCAtMjM4
LDcgKzIzOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
ZXRNdXRlZChib29sIG11dGVkKQogRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6bmF0dXJhbFNpemUoKSBjb25zdAogewogICAgIEZsb2F0U2l6ZSBmbG9hdFNp
emUoMCwgMCk7Ci0gICAgZm9yIChhdXRvIHRyYWNrIDogbV9NZWRpYVN0cmVhbVByaXZhdGUtPnRy
YWNrcygpKSB7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fTWVkaWFTdHJlYW1Qcml2YXRlLT50
cmFja3MoKSkgewogICAgICAgICBpZiAodHJhY2stPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpWaWRlbykgewogICAgICAgICAgICAgQVZWaWRlb0NhcHR1cmVTb3VyY2UqIHNv
dXJjZSA9IChBVlZpZGVvQ2FwdHVyZVNvdXJjZSopdHJhY2stPnNvdXJjZSgpOwogICAgICAgICAg
ICAgaWYgKCFzb3VyY2UtPnN0b3BwZWQoKSAmJiB0cmFjay0+ZW5hYmxlZCgpKSB7CkBAIC0yNTQs
NyArMjU0LDcgQEAgRmxvYXRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6bmF0dXJhbFNpemUoKSBjb25zdAogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6aGFzVmlkZW8oKSBjb25zdAogewotICAgIGZvciAoYXV0byB0cmFjayA6IG1f
TWVkaWFTdHJlYW1Qcml2YXRlLT50cmFja3MoKSkgeworICAgIGZvciAoYXV0byYgdHJhY2sgOiBt
X01lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCkpIHsKICAgICAgICAgaWYgKHRyYWNrLT50eXBl
KCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8pCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC0yNjMsNyArMjYzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6Omhhc1ZpZGVvKCkgY29uc3QKIAogYm9vbCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKIHsKLSAgICBmb3Ig
KGF1dG8gdHJhY2sgOiBtX01lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCkpIHsKKyAgICBmb3Ig
KGF1dG8mIHRyYWNrIDogbV9NZWRpYVN0cmVhbVByaXZhdGUtPnRyYWNrcygpKSB7CiAgICAgICAg
IGlmICh0cmFjay0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggOWY0ODRl
MDU2YzIyZDk5YmFjZDlhMWE4NTM4YzczYzkzZmVlZjdkOC4uNDFiZDc5M2VmYjA2Yzc5NGMwZmZj
NmNmMWEyMThhYWZmODcxNzQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNzkwLDcgKzE3OTAsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKQogICAgIHBy
aW1hcnlMYXllcigpLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX2NoaWxkcmVuVHJhbnNmb3JtKTsK
IAogICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygp
KSB7Ci0gICAgICAgIGZvciAoYXV0byAmIGxheWVyIDogbGF5ZXJDbG9uZU1hcC0+dmFsdWVzKCkp
CisgICAgICAgIGZvciAoYXV0byYgbGF5ZXIgOiBsYXllckNsb25lTWFwLT52YWx1ZXMoKSkKICAg
ICAgICAgICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX2NoaWxkcmVuVHJhbnNmb3Jt
KTsKICAgICB9CiB9CkBAIC0xODAwLDcgKzE4MDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlTWFza3NUb0JvdW5kcygpCiAgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtX21h
c2tzVG9Cb3VuZHMpOwogCiAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXll
ckNsb25lcy5nZXQoKSkgewotICAgICAgICBmb3IgKGF1dG8gJiBsYXllciA6IGxheWVyQ2xvbmVN
YXAtPnZhbHVlcygpKQorICAgICAgICBmb3IgKGF1dG8mIGxheWVyIDogbGF5ZXJDbG9uZU1hcC0+
dmFsdWVzKCkpCiAgICAgICAgICAgICBsYXllci0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9C
b3VuZHMpOwogICAgIH0KIH0KQEAgLTE4MTUsNyArMTgxNSw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjp1cGRhdGVDb250ZW50c1Zpc2liaWxpdHkoKQogICAgICAgICBtX2xheWVyLT5zZXRDb250
ZW50cyhudWxscHRyKTsKIAogICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBt
X2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gJiBsYXllciA6IGxh
eWVyQ2xvbmVNYXAtPnZhbHVlcygpKQorICAgICAgICAgICAgZm9yIChhdXRvJiBsYXllciA6IGxh
eWVyQ2xvbmVNYXAtPnZhbHVlcygpKQogICAgICAgICAgICAgICAgIGxheWVyLT5zZXRDb250ZW50
cyhudWxscHRyKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE4MzMsNyArMTgzMyw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c09wYXF1ZShmbG9hdCBwYWdlU2NhbGVGYWN0
b3IpCiAgICAgbV9sYXllci0+c2V0T3BhcXVlKGNvbnRlbnRzT3BhcXVlKTsKIAogICAgIGlmIChM
YXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAg
Zm9yIChhdXRvICYgbGF5ZXIgOiBsYXllckNsb25lTWFwLT52YWx1ZXMoKSkKKyAgICAgICAgZm9y
IChhdXRvJiBsYXllciA6IGxheWVyQ2xvbmVNYXAtPnZhbHVlcygpKQogICAgICAgICAgICAgbGF5
ZXItPnNldE9wYXF1ZShjb250ZW50c09wYXF1ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDBlOGRmYmNjN2YzY2ZiMjMyMTQ4NDE0OGFmZDYwYzYz
Nzk3OWU2MWEuLjc3MGMyZjJjY2QzNTYzNzVmNjU4MjljMDg2MTI3ODJlMjIxYmYxYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KEhUTUxW
aWRlb0VsZW1lbnQqIHZpZGUKICAgICAgICAgbV92aWRlb0VsZW1lbnQtPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKG51bGxwdHIpOwogCiAgICAgaWYgKG1fdmlkZW9FbGVtZW50ICYmIG1faXNMaXN0
ZW5pbmcpIHsKLSAgICAgICAgZm9yIChhdXRvIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1l
cygpKQorICAgICAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygp
KQogICAgICAgICAgICAgbV92aWRlb0VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lLCB0aGlzLCBmYWxzZSk7CiAgICAgfQogICAgIG1faXNMaXN0ZW5pbmcgPSBmYWxzZTsKQEAg
LTk4LDcgKzk4LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGUKICAgICBpZiAoIW1fdmlkZW9F
bGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8gZXZlbnROYW1lIDogb2Jz
ZXJ2ZWRFdmVudE5hbWVzKCkpCisgICAgZm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2
ZW50TmFtZXMoKSkKICAgICAgICAgbV92aWRlb0VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCB0aGlzLCBmYWxzZSk7CiAgICAgbV9pc0xpc3RlbmluZyA9IHRydWU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggMjgyMjQ2YTJmNmNiZWVmMzk4MWZjMzAxMjE2M2EzMDEzNGJh
Nzc1My4uZWUyMTgyZGYyMzQzMDgxOTRhOTAxZDU5MWY4NDI0MTg4ODQ4NzIyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlcikKIAogICAgIG1fc3RvcHBlZCA9IHRy
dWU7CiAKLSAgICBmb3IgKGF1dG8gb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgIGZvciAo
YXV0byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgewogICAgICAgICBpZiAob2JzZXJ2ZXIgIT0g
Y2FsbGluZ09ic2VydmVyKQogICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0b3BwZWQoKTsK
ICAgICB9CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1
ZXN0U3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyKQogICAgIGlmIChzdG9wcGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7
CisgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7CiAgICAgICAgIGlmIChv
YnNlcnZlci0+cHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRl
eCAzNDlkMTE1ZjU3ZDQ2OWU4M2I4ZGVlMzk0MDRiMWM1NmQwNDI0MDkxLi45YTVjNThmMjdjMDU2
MDhlZmUyY2M3MTRhOWI0M2UxYTg3OTk4NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2tQYWludHNDb250
aW51YXRpb25PdXRsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrID0gZW5jbG9zaW5nQW5vbnltb3Vz
QmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChh
dXRvIGJveCA9ICZyZW5kZXJlcigpOyBib3ggIT0gY29udGFpbmluZ0Jsb2NrOyBib3ggPSAmYm94
LT5wYXJlbnQoKS0+ZW5jbG9zaW5nQm94TW9kZWxPYmplY3QoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChhdXRvKiBib3ggPSAmcmVuZGVyZXIoKTsgYm94ICE9IGNvbnRhaW5pbmdC
bG9jazsgYm94ID0gJmJveC0+cGFyZW50KCktPmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm94LT5oYXNTZWxmUGFpbnRpbmdMYXll
cigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9ja1Bh
aW50c0NvbnRpbnVhdGlvbk91dGxpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApp
bmRleCAzZjNjMjIyODhhZGE4MTAzMWI5ZGE3ZmRkMTRmNjYxOTk1ZGM4YmFjLi5kNWM4YWIyMDgz
OGJmOGJhYWNmNmFlOTU5ZjRhMmVmMTRhNDVjMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKQEAgLTEwMzksNyArMTAzOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmNsZWFyTGF5b3V0T3ZlcmZsb3coKQogCiB2b2lkIFJlbmRlckJsb2NrOjphZGRPdmVyZmxvd0Zy
b21CbG9ja0NoaWxkcmVuKCkKIHsKLSAgICBmb3IgKGF1dG8gY2hpbGQgPSBmaXJzdENoaWxkQm94
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7CisgICAgZm9yIChh
dXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYgKCFjaGlsZC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93
UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY2hpbGQpOwog
ICAgIH0KQEAgLTExOTIsNyArMTE5Miw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNpbXBsaWZpZWRO
b3JtYWxGbG93TGF5b3V0KCkKICAgICAgICAgICAgIGJveC0+Y29tcHV0ZU92ZXJmbG93KGJveC0+
bGluZVRvcCgpLCBib3gtPmxpbmVCb3R0b20oKSwgdGV4dEJveERhdGFNYXApOwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0Q2hpbGRCb3goKTsg
Ym94OyBib3ggPSBib3gtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBi
b3ggPSBmaXJzdENoaWxkQm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0U2libGluZ0JveCgpKSB7
CiAgICAgICAgICAgICBpZiAoIWJveC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAg
ICAgICAgICAgYm94LT5sYXlvdXRJZk5lZWRlZCgpOwogICAgICAgICB9CkBAIC0xNDUxLDcgKzE0
NTEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogCiB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIFBhaW50SW5mbyYgcGFpbnRJbmZvRm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KQog
ewotICAgIGZvciAoYXV0byBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RD
aGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewogICAg
ICAgICBpZiAoIXBhaW50Q2hpbGQoKmNoaWxkLCBwYWludEluZm8sIHBhaW50T2Zmc2V0LCBwYWlu
dEluZm9Gb3JDaGlsZCwgdXNlUHJpbnRSZWN0KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yNTA3LDcgKzI1MDcsNyBAQCBib29sIFJlbmRlckJsb2NrOjpoaXRUZXN0Q29udGVudHMo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmCiAgICAgSGl0VGVz
dEFjdGlvbiBjaGlsZEhpdFRlc3QgPSBoaXRUZXN0QWN0aW9uOwogICAgIGlmIChoaXRUZXN0QWN0
aW9uID09IEhpdFRlc3RDaGlsZEJsb2NrQmFja2dyb3VuZHMpCiAgICAgICAgIGNoaWxkSGl0VGVz
dCA9IEhpdFRlc3RDaGlsZEJsb2NrQmFja2dyb3VuZDsKLSAgICBmb3IgKGF1dG8gY2hpbGQgPSBs
YXN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzU2libGluZ0JveCgp
KSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGxhc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nQm94KCkpIHsKICAgICAgICAgTGF5b3V0UG9pbnQgY2hp
bGRQb2ludCA9IGZsaXBGb3JXcml0aW5nTW9kZUZvckNoaWxkKGNoaWxkLCBhY2N1bXVsYXRlZE9m
ZnNldCk7CiAgICAgICAgIGlmICghY2hpbGQtPmhhc1NlbGZQYWludGluZ0xheWVyKCkgJiYgIWNo
aWxkLT5pc0Zsb2F0aW5nKCkgJiYgY2hpbGQtPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwg
bG9jYXRpb25JbkNvbnRhaW5lciwgY2hpbGRQb2ludCwgY2hpbGRIaXRUZXN0KSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjYyOSw3ICsyNjI5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJl
bmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29u
c3QgUmUKICAgICAgICAgICAgIHx8ICghYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludEluTG9naWNh
bENvbnRlbnRzLnkoKSA9PSBsb2dpY2FsVG9wRm9yQ2hpbGQoKmxhc3RDYW5kaWRhdGVCb3gpKSkK
ICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3Vu
ZGFyaWVzKCp0aGlzLCAqbGFzdENhbmRpZGF0ZUJveCwgcG9pbnRJbkNvbnRlbnRzKTsKIAotICAg
ICAgICBmb3IgKGF1dG8gY2hpbGRCb3ggPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkQm94OyBjaGls
ZEJveCA9IGNoaWxkQm94LT5uZXh0U2libGluZ0JveCgpKSB7CisgICAgICAgIGZvciAoYXV0byog
Y2hpbGRCb3ggPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkQm94OyBjaGlsZEJveCA9IGNoaWxkQm94
LT5uZXh0U2libGluZ0JveCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzQ2hpbGRIaXRUZXN0Q2Fu
ZGlkYXRlKCpjaGlsZEJveCwgcmVnaW9uLCBwb2ludEluTG9naWNhbENvbnRlbnRzKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIExheW91dFVuaXQgY2hpbGRMb2dpY2Fs
Qm90dG9tID0gbG9naWNhbFRvcEZvckNoaWxkKCpjaGlsZEJveCkgKyBsb2dpY2FsSGVpZ2h0Rm9y
Q2hpbGQoKmNoaWxkQm94KTsKQEAgLTI5MTUsNyArMjkxNSw3IEBAIE9wdGlvbmFsPGludD4gUmVu
ZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVj
dGlvbikKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKIAogICAgIGJvb2wgaGF2ZU5v
cm1hbEZsb3dDaGlsZCA9IGZhbHNlOwotICAgIGZvciAoYXV0byBib3ggPSBsYXN0Q2hpbGRCb3go
KTsgYm94OyBib3ggPSBib3gtPnByZXZpb3VzU2libGluZ0JveCgpKSB7CisgICAgZm9yIChhdXRv
KiBib3ggPSBsYXN0Q2hpbGRCb3goKTsgYm94OyBib3ggPSBib3gtPnByZXZpb3VzU2libGluZ0Jv
eCgpKSB7CiAgICAgICAgIGlmIChib3gtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBoYXZlTm9ybWFsRmxvd0NoaWxkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5k
ZXggNThjNDk1NGM2NDQzMmUwOTQyN2M0OTNiNWM3YzQ4ZGYwN2MzNWFiYi4uM2JmYmRkNGQxNjFk
NzBhMDI3M2UxYWQ5MTE2NTIxN2Y0M2YxMTQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6d2lsbEJlRGVzdHJveWVkKCkKICAgICAgICAgICAgIC8vIHRoYXQgd2lsbCBvdXRs
YXN0IHRoaXMgYmxvY2suIEluIHRoZSBub24tYW5vbnltb3VzIGJsb2NrIGNhc2UgdGhvc2UKICAg
ICAgICAgICAgIC8vIGNoaWxkcmVuIHdpbGwgYmUgZGVzdHJveWVkIGJ5IHRoZSB0aW1lIHdlIHJl
dHVybiBmcm9tIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgICAgICBpZiAoaXNBbm9ueW1vdXNCbG9j
aygpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0Um9vdEJveCgpOyBi
b3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0
byogYm94ID0gZmlyc3RSb290Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0Um9vdEJveCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhdXRvIGNoaWxkQm94ID0gYm94LT5maXJzdENo
aWxkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZEJveC0+cmVtb3ZlRnJvbVBhcmVu
dCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIwMzgsNyArMjAzOCw3IEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVTdHlsZXNGb3JDb2x1
bW5DaGlsZHJlbigpCiB7Ci0gICAgZm9yIChhdXRvIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBj
aGlsZCAmJiAoY2hpbGQtPmlzSW5GbG93UmVuZGVyRmxvd1RocmVhZCgpIHx8IGNoaWxkLT5pc1Jl
bmRlck11bHRpQ29sdW1uU2V0KCkpOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKQor
ICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkICYmIChjaGlsZC0+
aXNJbkZsb3dSZW5kZXJGbG93VGhyZWFkKCkgfHwgY2hpbGQtPmlzUmVuZGVyTXVsdGlDb2x1bW5T
ZXQoKSk7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpCiAgICAgICAgIGNoaWxkLT5z
ZXRTdHlsZShSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5
bGUoKSwgQkxPQ0spKTsKIH0KIApAQCAtMjkzNCw3ICsyOTM0LDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmFkanVzdEZvckJvcmRlckZpdChMYXlvdXRVbml0IHgsIExheW91dFVuaXQmIGxlZnQs
IExheW91dFUKICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkgewogICAgICAgICBjb25zdF9jYXN0
PFJlbmRlckJsb2NrRmxvdyY+KCp0aGlzKS5lbnN1cmVMaW5lQm94ZXMoKTsKIAotICAgICAgICBm
b3IgKGF1dG8gYm94ID0gZmlyc3RSb290Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0Um9vdEJv
eCgpKSB7CisgICAgICAgIGZvciAoYXV0byogYm94ID0gZmlyc3RSb290Qm94KCk7IGJveDsgYm94
ID0gYm94LT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgICAgICBpZiAoYm94LT5maXJzdENoaWxk
KCkpCiAgICAgICAgICAgICAgICAgbGVmdCA9IHN0ZDo6bWluKGxlZnQsIHggKyBMYXlvdXRVbml0
KGJveC0+Zmlyc3RDaGlsZCgpLT54KCkpKTsKICAgICAgICAgICAgIGlmIChib3gtPmxhc3RDaGls
ZCgpKQpAQCAtMzIxOSw3ICszMjE5LDcgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93
OjpsaW5lQXRJbmRleChpbnQgaSkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkgewotICAgICAgICBmb3IgKGF1dG8gYm94ID0gZmlyc3RS
b290Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAgIGZvciAo
YXV0byogYm94ID0gZmlyc3RSb290Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0Um9vdEJveCgp
KSB7CiAgICAgICAgICAgICBpZiAoIWktLSkKICAgICAgICAgICAgICAgICByZXR1cm4gYm94Owog
ICAgICAgICB9CkBAIC0zMjQ4LDggKzMyNDgsOCBAQCBpbnQgUmVuZGVyQmxvY2tGbG93OjpsaW5l
Q291bnQoY29uc3QgUm9vdElubGluZUJveCogc3RvcFJvb3RJbmxpbmVCb3gsIGJvb2wqIGZvdQog
ICAgICAgICAgICAgQVNTRVJUKCFzdG9wUm9vdElubGluZUJveCk7CiAgICAgICAgICAgICByZXR1
cm4gc2ltcGxlTGluZUxheW91dC0+bGluZUNvdW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9y
IChhdXRvIGJveCA9IGZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3go
KSkgewotICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgZm9yIChhdXRvKiBib3ggPSBmaXJz
dFJvb3RCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRSb290Qm94KCkpIHsKKyAgICAgICAgICAg
ICsrY291bnQ7CiAgICAgICAgICAgICBpZiAoYm94ID09IHN0b3BSb290SW5saW5lQm94KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGZvdW5kKQogICAgICAgICAgICAgICAgICAgICAqZm91bmQgPSB0
cnVlOwpAQCAtMzI4MCwxMyArMzI4MCwxMyBAQCBzdGF0aWMgaW50IGdldEhlaWdodEZvckxpbmVD
b3VudChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBpbnQgbGluZUNvdW50LCBibwogICAg
ICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoYmxvY2suY2hpbGRyZW5JbmxpbmUoKSkgewotICAg
ICAgICBmb3IgKGF1dG8gYm94ID0gYmxvY2suZmlyc3RSb290Qm94KCk7IGJveDsgYm94ID0gYm94
LT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAgIGZvciAoYXV0byogYm94ID0gYmxvY2suZmlyc3RS
b290Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgICAgICBp
ZiAoKytjb3VudCA9PSBsaW5lQ291bnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGJveC0+bGlu
ZUJvdHRvbSgpICsgKGluY2x1ZGVCb3R0b20gPyAoYmxvY2suYm9yZGVyQm90dG9tKCkgKyBibG9j
ay5wYWRkaW5nQm90dG9tKCkpIDogTGF5b3V0VW5pdCgpKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIFJlbmRlckJveCogbm9ybWFsRmxvd0NoaWxkV2l0aG91dExpbmVzID0gbnVs
bHB0cjsKLSAgICAgICAgZm9yIChhdXRvIG9iaiA9IGJsb2NrLmZpcnN0Q2hpbGRCb3goKTsgb2Jq
OyBvYmogPSBvYmotPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBvYmog
PSBibG9jay5maXJzdENoaWxkQm94KCk7IG9iajsgb2JqID0gb2JqLT5uZXh0U2libGluZ0JveCgp
KSB7CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyQmxvY2tGbG93Pigqb2JqKSAmJiBzaG91bGRD
aGVja0xpbmVzKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKm9iaikpKSB7CiAgICAgICAgICAg
ICAgICAgaW50IHJlc3VsdCA9IGdldEhlaWdodEZvckxpbmVDb3VudChkb3duY2FzdDxSZW5kZXJC
bG9ja0Zsb3c+KCpvYmopLCBsaW5lQ291bnQsIGZhbHNlLCBjb3VudCk7CiAgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdCAhPSAtMSkKQEAgLTMzMTYsNyArMzMxNiw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2tGbG93OjpjbGVhclRydW5jYXRpb24oKQogICAgICAgICBlbnN1cmVMaW5lQm94ZXMoKTsKIAog
ICAgICAgICBzZXRIYXNNYXJrdXBUcnVuY2F0aW9uKGZhbHNlKTsKLSAgICAgICAgZm9yIChhdXRv
IGJveCA9IGZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3goKSkKKyAg
ICAgICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdFJvb3RCb3goKTsgYm94OyBib3ggPSBib3gtPm5l
eHRSb290Qm94KCkpCiAgICAgICAgICAgICBib3gtPmNsZWFyVHJ1bmNhdGlvbigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMzMyOSw4ICszMzI5LDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmNsZWFyVHJ1bmNhdGlvbigpCiAKIGJvb2wgUmVuZGVyQmxvY2tGbG93Ojpjb250YWluc05v
blplcm9CaWRpTGV2ZWwoKSBjb25zdAogewotICAgIGZvciAoYXV0byByb290ID0gZmlyc3RSb290
Qm94KCk7IHJvb3Q7IHJvb3QgPSByb290LT5uZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgIGZvciAo
YXV0byBib3ggPSByb290LT5maXJzdExlYWZDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExl
YWZDaGlsZCgpKSB7CisgICAgZm9yIChhdXRvKiByb290ID0gZmlyc3RSb290Qm94KCk7IHJvb3Q7
IHJvb3QgPSByb290LT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAgIGZvciAoYXV0byogYm94ID0g
cm9vdC0+Zmlyc3RMZWFmQ2hpbGQoKTsgYm94OyBib3ggPSBib3gtPm5leHRMZWFmQ2hpbGQoKSkg
ewogICAgICAgICAgICAgaWYgKGJveC0+YmlkaUxldmVsKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
aW5kZXggODFmN2Q4NmEzZDY3ZTY2Y2M5NDQ4MzdhNzZmNzk5OTBmYzg0YzEyYi4uMzQzZjVhNDA1
NWNkMTAzNWVlMTMwMWNmMmUwMGM0ZDFkMDU1ZTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKQEAgLTMyNzgsNyArMzI3OCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJ
bmxpbmVTdGF0aWNEaXN0YW5jZShMZW5ndGgmIGxvZ2ljYWxMZWZ0LCBMZW5ndGgmIGxvZ2ljYWxS
aWdoCiAgICAgLy8gRklYTUU6IFRoZSBzdGF0aWMgZGlzdGFuY2UgY29tcHV0YXRpb24gaGFzIG5v
dCBiZWVuIHBhdGNoZWQgZm9yIG1peGVkIHdyaXRpbmcgbW9kZXMgeWV0LgogICAgIGlmIChjaGls
ZC0+cGFyZW50KCktPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKSB7CiAgICAgICAgIExheW91
dFVuaXQgc3RhdGljUG9zaXRpb24gPSBjaGlsZC0+bGF5ZXIoKS0+c3RhdGljSW5saW5lUG9zaXRp
b24oKSAtIGNvbnRhaW5lckJsb2NrLT5ib3JkZXJMb2dpY2FsTGVmdCgpOwotICAgICAgICBmb3Ig
KGF1dG8gY3VycmVudCA9IGNoaWxkLT5wYXJlbnQoKTsgY3VycmVudCAmJiBjdXJyZW50ICE9IGNv
bnRhaW5lckJsb2NrOyBjdXJyZW50ID0gY3VycmVudC0+Y29udGFpbmVyKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvKiBjdXJyZW50ID0gY2hpbGQtPnBhcmVudCgpOyBjdXJyZW50ICYmIGN1cnJlbnQg
IT0gY29udGFpbmVyQmxvY2s7IGN1cnJlbnQgPSBjdXJyZW50LT5jb250YWluZXIoKSkgewogICAg
ICAgICAgICAgaWYgKGlzPFJlbmRlckJveD4oKmN1cnJlbnQpKSB7CiAgICAgICAgICAgICAgICAg
c3RhdGljUG9zaXRpb24gKz0gZG93bmNhc3Q8UmVuZGVyQm94PigqY3VycmVudCkubG9naWNhbExl
ZnQoKTsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uICYmIGlzPFJlbmRlckJsb2NrPigqY3Vy
cmVudCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXgg
N2M5NzFiYjhmZjQxMDE1NGYyM2NmMzFjMzI0M2RiNTJmZjI1OGEyYi4uMmNlNjAxMmQxNjY0MTNk
Y2E5MzVkZGFhZWIwODMyNDQzMWJiNWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OndpbGxC
ZURlc3Ryb3llZCgpCiAgICAgICAgICAgICAvLyBub3QgaGF2ZSBhIHBhcmVudCB0aGF0IG1lYW5z
IHRoZXkgYXJlIGVpdGhlciBhbHJlYWR5IGRpc2Nvbm5lY3RlZCBvcgogICAgICAgICAgICAgLy8g
cm9vdCBsaW5lcyB0aGF0IGNhbiBqdXN0IGJlIGRlc3Ryb3llZCB3aXRob3V0IGRpc2Nvbm5lY3Rp
bmcuCiAgICAgICAgICAgICBpZiAoZmlyc3RMaW5lQm94KCktPnBhcmVudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0TGluZUJveCgpOyBib3g7IGJveCA9IGJveC0+
bmV4dExpbmVCb3goKSkKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGJveCA9IGZpcnN0TGlu
ZUJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExpbmVCb3goKSkKICAgICAgICAgICAgICAgICAg
ICAgYm94LT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAocGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCAzNTFiNzA0MzFlZWZlYmVhZDVkMDI2NTYyOTFmZjNmNDMxMGM1MWQyLi4zNDk4YzdjYzg0
NGEzNDQzZDlhNDQzZGM2NTQ0ZDUwZjEyM2FhMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTkxNCw3ICs5MTQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVCbGVuZE1vZGUoKQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVBbmNlc3RvckNoYWlu
SGFzQmxlbmRpbmdEZXNjZW5kYW50cygpCiB7Ci0gICAgZm9yIChhdXRvIGxheWVyID0gdGhpczsg
bGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CisgICAgZm9yIChhdXRvKiBsYXllciA9
IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewogICAgICAgICBpZiAoIWxh
eWVyLT5oYXNOb3RJc29sYXRlZEJsZW5kaW5nRGVzY2VuZGFudHNTdGF0dXNEaXJ0eSgpICYmIGxh
eWVyLT5oYXNOb3RJc29sYXRlZEJsZW5kaW5nRGVzY2VuZGFudHMoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBsYXllci0+bV9oYXNOb3RJc29sYXRlZEJsZW5kaW5nRGVzY2VuZGFudHMg
PSB0cnVlOwpAQCAtOTI5LDcgKzkyOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUFuY2Vz
dG9yQ2hhaW5IYXNCbGVuZGluZ0Rlc2NlbmRhbnRzKCkKIAogdm9pZCBSZW5kZXJMYXllcjo6ZGly
dHlBbmNlc3RvckNoYWluSGFzQmxlbmRpbmdEZXNjZW5kYW50cygpCiB7Ci0gICAgZm9yIChhdXRv
IGxheWVyID0gdGhpczsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CisgICAgZm9y
IChhdXRvKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewog
ICAgICAgICBpZiAobGF5ZXItPmhhc05vdElzb2xhdGVkQmxlbmRpbmdEZXNjZW5kYW50c1N0YXR1
c0RpcnR5KCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0xMjg1LDEzICsxMjg1
LDEzIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnVwZGF0ZTNEVHJhbnNmb3JtZWREZXNjZW5kYW50U3Rh
dHVzKCkKICAgICAgICAgLy8gVHJhbnNmb3JtZWQgb3IgcHJlc2VydmUtM2QgZGVzY2VuZGFudHMg
Y2FuIG9ubHkgYmUgaW4gdGhlIHotb3JkZXIgbGlzdHMsIG5vdAogICAgICAgICAvLyBpbiB0aGUg
bm9ybWFsIGZsb3cgbGlzdCwgc28gd2Ugb25seSBuZWVkIHRvIGNoZWNrIHRob3NlLgogICAgICAg
ICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc2l0aXZlWk9yZGVyTGlzdCA9IHBvc1pPcmRl
ckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvIGxheWVyIDogKnBvc2l0aXZlWk9yZGVy
TGlzdCkKKyAgICAgICAgICAgIGZvciAoYXV0byogbGF5ZXIgOiAqcG9zaXRpdmVaT3JkZXJMaXN0
KQogICAgICAgICAgICAgICAgIG1faGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnQgfD0gbGF5ZXIt
PnVwZGF0ZTNEVHJhbnNmb3JtZWREZXNjZW5kYW50U3RhdHVzKCk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBOb3cgY2hlY2sgb3VyIG5lZ2F0aXZlIHotaW5kZXggY2hpbGRyZW4uCiAgICAgICAg
IGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnYXRpdmVaT3JkZXJMaXN0ID0gbmVnWk9yZGVy
TGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gbGF5ZXIgOiAqbmVnYXRpdmVaT3JkZXJM
aXN0KQorICAgICAgICAgICAgZm9yIChhdXRvKiBsYXllciA6ICpuZWdhdGl2ZVpPcmRlckxpc3Qp
CiAgICAgICAgICAgICAgICAgbV9oYXMzRFRyYW5zZm9ybWVkRGVzY2VuZGFudCB8PSBsYXllci0+
dXBkYXRlM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRTdGF0dXMoKTsKICAgICAgICAgfQogICAgICAg
ICAKQEAgLTM4NTAsNyArMzg1MCw3IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1PdmVybGFwVGVzdHMo
T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwJiBvdmVybGFwVGVzdFJlcXVlc3RzLCBjb25zCiAgICAgICAg
IHJlcXVlc3Qua2V5LT5zZXRPdmVybGFwVGVzdFJlc3VsdCh0cnVlKTsKICAgICAgICAgb3Zlcmxh
cHBlZFJlcXVlc3RDbGllbnRzLmFwcGVuZChyZXF1ZXN0LmtleSk7CiAgICAgfQotICAgIGZvciAo
YXV0byBjbGllbnQgOiBvdmVybGFwcGVkUmVxdWVzdENsaWVudHMpCisgICAgZm9yIChhdXRvKiBj
bGllbnQgOiBvdmVybGFwcGVkUmVxdWVzdENsaWVudHMpCiAgICAgICAgIG92ZXJsYXBUZXN0UmVx
dWVzdHMucmVtb3ZlKGNsaWVudCk7CiB9CiAKQEAgLTQyMDcsNyArNDIwNyw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMCiAgICAgcmVuZGVyZXIoKS52aWV3KCkuZmxvd1RocmVhZENvbnRyb2xs
ZXIoKS5jb2xsZWN0Rml4ZWRQb3NpdGlvbmVkTGF5ZXJzKGZpeGVkTGF5ZXJzKTsKIAogICAgIC8v
IFBhaW50IHRoZSBsYXllcnMKLSAgICBmb3IgKGF1dG8gZml4ZWRMYXllciA6IGZpeGVkTGF5ZXJz
KQorICAgIGZvciAoYXV0byogZml4ZWRMYXllciA6IGZpeGVkTGF5ZXJzKQogICAgICAgICBmaXhl
ZExheWVyLT5wYWludExheWVyKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiB9
CiAKQEAgLTQ0MzAsNyArNDQzMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0CiAgICAgTGF5
ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIodGhpcyk7CiAjZW5kaWYKIAot
ICAgIGZvciAoYXV0byBjaGlsZExheWVyIDogKmxpc3QpIHsKKyAgICBmb3IgKGF1dG8qIGNoaWxk
TGF5ZXIgOiAqbGlzdCkgewogICAgICAgICBpZiAoY2hpbGRMYXllci0+aXNGbG93VGhyZWFkQ29s
bGVjdGluZ0dyYXBoaWNzTGF5ZXJzVW5kZXJSZWdpb25zKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgY2hpbGRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8s
IHBhaW50RmxhZ3MpOwpAQCAtNTk3NCw3ICs1OTc0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXll
cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIs
IGMKICNlbmRpZgogCiAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0
ID0gdGhpcy0+bmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byBjdXJMYXllciA6
ICpuZWdaT3JkZXJMaXN0KSB7CisgICAgICAgIGZvciAoYXV0byogY3VyTGF5ZXIgOiAqbmVnWk9y
ZGVyTGlzdCkgewogICAgICAgICAgICAgaWYgKGZsYWdzICYgSW5jbHVkZUNvbXBvc2l0ZWREZXNj
ZW5kYW50cyB8fCAhY3VyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgICAgICAgICAg
TGF5b3V0UmVjdCBjaGlsZFVuaW9uQm91bmRzID0gY3VyTGF5ZXItPmNhbGN1bGF0ZUxheWVyQm91
bmRzKHRoaXMsIGN1ckxheWVyLT5vZmZzZXRGcm9tQW5jZXN0b3IodGhpcyksIGRlc2NlbmRhbnRG
bGFncyk7CiAgICAgICAgICAgICAgICAgdW5pb25Cb3VuZHMudW5pdGUoY2hpbGRVbmlvbkJvdW5k
cyk7CkBAIC01OTgzLDcgKzU5ODMsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxh
dGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgYwogICAgIH0K
IAogICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IHRoaXMtPnBv
c1pPcmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8gY3VyTGF5ZXIgOiAqcG9zWk9yZGVy
TGlzdCkgeworICAgICAgICBmb3IgKGF1dG8qIGN1ckxheWVyIDogKnBvc1pPcmRlckxpc3QpIHsK
ICAgICAgICAgICAgIC8vIFRoZSBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgaXMgaWdub3JlZCB3aGVu
IHdlIGNhbGN1bGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBSZW5kZXJWaWV3LgogICAgICAgICAgICAg
aWYgKChmbGFncyAmIEluY2x1ZGVDb21wb3NpdGVkRGVzY2VuZGFudHMgfHwgIWN1ckxheWVyLT5p
c0NvbXBvc2l0ZWQoKSkgJiYgIWN1ckxheWVyLT5pc0Zsb3dUaHJlYWRDb2xsZWN0aW5nR3JhcGhp
Y3NMYXllcnNVbmRlclJlZ2lvbnMoKSkgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgY2hp
bGRVbmlvbkJvdW5kcyA9IGN1ckxheWVyLT5jYWxjdWxhdGVMYXllckJvdW5kcyh0aGlzLCBjdXJM
YXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yKHRoaXMpLCBkZXNjZW5kYW50RmxhZ3MpOwpAQCAtNTk5
Myw3ICs1OTkzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3Vu
ZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGMKICAgICB9CiAKICAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gdGhpcy0+bm9ybWFsRmxvd0xp
c3QoKSkgewotICAgICAgICBmb3IgKGF1dG8gY3VyTGF5ZXIgOiAqbm9ybWFsRmxvd0xpc3QpIHsK
KyAgICAgICAgZm9yIChhdXRvKiBjdXJMYXllciA6ICpub3JtYWxGbG93TGlzdCkgewogICAgICAg
ICAgICAgLy8gUmVuZGVyVmlldyB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRv
Y3VtZW50LCBiZWZvcmUgcmVhY2hpbmcgdGhpcyBwb2ludCwKICAgICAgICAgICAgIC8vIHNvIHRo
ZXJlJ3Mgbm8gd2F5IHdlIGNvdWxkIGhpdCBhIFJlbmRlck5hbWVkRmxvd1RocmVhZCBoZXJlLgog
ICAgICAgICAgICAgQVNTRVJUKCFjdXJMYXllci0+aXNGbG93VGhyZWFkQ29sbGVjdGluZ0dyYXBo
aWNzTGF5ZXJzVW5kZXJSZWdpb25zKCkpOwpAQCAtNjM0OCwyNCArNjM0OCwyNCBAQCB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0xheWVyTGlzdHNJZk5lZWRlZChib29sIHJlY3Vy
c2l2ZSkKICAgICAKICAgICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlm
IChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCA9IG5lZ1pPcmRlckxpc3QoKSkgewotICAgICAg
ICAgICAgZm9yIChhdXRvIGNoaWxkTGF5ZXIgOiAqbGlzdCkKKyAgICAgICAgICAgIGZvciAoYXV0
byogY2hpbGRMYXllciA6ICpsaXN0KQogICAgICAgICAgICAgICAgIGxheWVyc1RvVXBkYXRlLmFw
cGVuZChjaGlsZExheWVyKTsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAoVmVjdG9y
PFJlbmRlckxheWVyKj4qIGxpc3QgPSBub3JtYWxGbG93TGlzdCgpKSB7Ci0gICAgICAgIGZvciAo
YXV0byBjaGlsZExheWVyIDogKmxpc3QpCisgICAgICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6
ICpsaXN0KQogICAgICAgICAgICAgbGF5ZXJzVG9VcGRhdGUuYXBwZW5kKGNoaWxkTGF5ZXIpOwog
ICAgIH0KICAgICAKICAgICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlm
IChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCA9IHBvc1pPcmRlckxpc3QoKSkgewotICAgICAg
ICAgICAgZm9yIChhdXRvIGNoaWxkTGF5ZXIgOiAqbGlzdCkKKyAgICAgICAgICAgIGZvciAoYXV0
byogY2hpbGRMYXllciA6ICpsaXN0KQogICAgICAgICAgICAgICAgIGxheWVyc1RvVXBkYXRlLmFw
cGVuZChjaGlsZExheWVyKTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBmb3IgKGF1dG8g
Y2hpbGRMYXllciA6IGxheWVyc1RvVXBkYXRlKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZExheWVy
IDogbGF5ZXJzVG9VcGRhdGUpIHsKICAgICAgICAgY2hpbGRMYXllci0+dXBkYXRlTGF5ZXJMaXN0
c0lmTmVlZGVkKCk7CiAgICAgICAgIGlmIChyZWN1cnNpdmUpCiAgICAgICAgICAgICBjaGlsZExh
eWVyLT51cGRhdGVEZXNjZW5kYW50c0xheWVyTGlzdHNJZk5lZWRlZCh0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOWI2NmU0NzdkNzMwNTUwMTA2
NDM2ODA3NjI4ODFjODM0NTAzMzIwYi4uNjUwYzAwMTU5ODNmZmIxZDY1MGI1MzY3MTZkMTAwZDc4
NWI2MGZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAg
LTE3MTIsNyArMTcxMiw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp1cGRhdGVIaXRUZXN0UmVzdWx0
KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgLy8gSWYgd2Ug
aGl0IHRoZSBhbm9ueW1vdXMgcmVuZGVyZXJzIGluc2lkZSBnZW5lcmF0ZWQgY29udGVudCB3ZSBz
aG91bGQKICAgICAvLyBhY3R1YWxseSBoaXQgdGhlIGdlbmVyYXRlZCBjb250ZW50IHNvIHdhbGsg
dXAgdG8gdGhlIFBzZXVkb0VsZW1lbnQuCiAgICAgaWYgKCFub2RlICYmIHBhcmVudCgpICYmIHBh
cmVudCgpLT5pc0JlZm9yZU9yQWZ0ZXJDb250ZW50KCkpIHsKLSAgICAgICAgZm9yIChhdXRvIHJl
bmRlcmVyID0gcGFyZW50KCk7IHJlbmRlcmVyICYmICFub2RlOyByZW5kZXJlciA9IHJlbmRlcmVy
LT5wYXJlbnQoKSkKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJlciA9IHBhcmVudCgpOyByZW5k
ZXJlciAmJiAhbm9kZTsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkpCiAgICAgICAgICAg
ICBub2RlID0gcmVuZGVyZXItPmVsZW1lbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAppbmRleCBjNTcxYTI4MGY1N2E2
YTQ1OGExNDc2MDIxMDVlOGI5YzdmMDUxYTczLi5kOTQzZjNhNTgxZmYwY2I1ZjYxNzViY2Q5ODE0
ZjY0MDc1ODYwZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dExpbmVCb3hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRMaW5lQm94ZXMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hl
czo6ZXh0cmFjdChJbmxpbmVUZXh0Qm94JiBib3gpCiAgICAgaWYgKGJveC5wcmV2VGV4dEJveCgp
KQogICAgICAgICBib3gucHJldlRleHRCb3goKS0+c2V0TmV4dFRleHRCb3gobnVsbHB0cik7CiAg
ICAgYm94LnNldFByZXZpb3VzVGV4dEJveChudWxscHRyKTsKLSAgICBmb3IgKGF1dG8gY3VycmVu
dCA9ICZib3g7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0VGV4dEJveCgpKQorICAg
IGZvciAoYXV0byogY3VycmVudCA9ICZib3g7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5u
ZXh0VGV4dEJveCgpKQogICAgICAgICBjdXJyZW50LT5zZXRFeHRyYWN0ZWQoKTsKIAogICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSZW5kZXJUZXh0TGluZUJv
eGVzOjphdHRhY2goSW5saW5lVGV4dEJveCYgYm94KQogICAgIH0gZWxzZQogICAgICAgICBtX2Zp
cnN0ID0gJmJveDsKICAgICBJbmxpbmVUZXh0Qm94KiBsYXN0ID0gbnVsbHB0cjsKLSAgICBmb3Ig
KGF1dG8gY3VycmVudCA9ICZib3g7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0VGV4
dEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBjdXJyZW50ID0gJmJveDsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgY3VycmVudC0+c2V0RXh0cmFj
dGVkKGZhbHNlKTsKICAgICAgICAgbGFzdCA9IGN1cnJlbnQ7CiAgICAgfQpAQCAtMTEyLDcgKzEx
Miw3IEBAIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6cmVtb3ZlQWxsRnJvbVBhcmVudChSZW5k
ZXJUZXh0JiByZW5kZXJlcikKICAgICAgICAgICAgIHJlbmRlcmVyLnBhcmVudCgpLT5kaXJ0eUxp
bmVzRnJvbUNoYW5nZWRDaGlsZChyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgZm9yIChhdXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgp
KQorICAgIGZvciAoYXV0byogYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0
Qm94KCkpCiAgICAgICAgIGJveC0+cmVtb3ZlRnJvbVBhcmVudCgpOwogfQogCkBAIC0xMjEsNyAr
MTIxLDcgQEAgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpkZWxldGVBbGwoKQogICAgIGlmICgh
bV9maXJzdCkKICAgICAgICAgcmV0dXJuOwogICAgIElubGluZVRleHRCb3gqIG5leHQ7Ci0gICAg
Zm9yIChhdXRvIGN1cnJlbnQgPSBtX2ZpcnN0OyBjdXJyZW50OyBjdXJyZW50ID0gbmV4dCkgewor
ICAgIGZvciAoYXV0byogY3VycmVudCA9IG1fZmlyc3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBuZXh0
KSB7CiAgICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0VGV4dEJveCgpOwogICAgICAgICBkZWxl
dGUgY3VycmVudDsKICAgICB9CkBAIC0xNTMsNyArMTUzLDcgQEAgSW50UmVjdCBSZW5kZXJUZXh0
TGluZUJveGVzOjpib3VuZGluZ0JveChjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlcikgY29uc3QK
ICAgICAvLyBSZXR1cm4gdGhlIHdpZHRoIG9mIHRoZSBtaW5pbWFsIGxlZnQgc2lkZSBhbmQgdGhl
IG1heGltYWwgcmlnaHQgc2lkZS4KICAgICBmbG9hdCBsb2dpY2FsTGVmdFNpZGUgPSAwOwogICAg
IGZsb2F0IGxvZ2ljYWxSaWdodFNpZGUgPSAwOwotICAgIGZvciAoYXV0byBjdXJyZW50ID0gbV9m
aXJzdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRUZXh0Qm94KCkpIHsKKyAgICBm
b3IgKGF1dG8qIGN1cnJlbnQgPSBtX2ZpcnN0OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+
bmV4dFRleHRCb3goKSkgewogICAgICAgICBpZiAoY3VycmVudCA9PSBtX2ZpcnN0IHx8IGN1cnJl
bnQtPmxvZ2ljYWxMZWZ0KCkgPCBsb2dpY2FsTGVmdFNpZGUpCiAgICAgICAgICAgICBsb2dpY2Fs
TGVmdFNpZGUgPSBjdXJyZW50LT5sb2dpY2FsTGVmdCgpOwogICAgICAgICBpZiAoY3VycmVudCA9
PSBtX2ZpcnN0IHx8IGN1cnJlbnQtPmxvZ2ljYWxSaWdodCgpID4gbG9naWNhbFJpZ2h0U2lkZSkK
QEAgLTE4NCw3ICsxODQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHRMaW5lQm94ZXM6OnZpc3Vh
bE92ZXJmbG93Qm91bmRpbmdCb3goY29uc3QgUmVuZGVyVGV4dCYgcmVuZAogICAgIC8vIFJldHVy
biB0aGUgd2lkdGggb2YgdGhlIG1pbmltYWwgbGVmdCBzaWRlIGFuZCB0aGUgbWF4aW1hbCByaWdo
dCBzaWRlLgogICAgIGF1dG8gbG9naWNhbExlZnRTaWRlID0gTGF5b3V0VW5pdDo6bWF4KCk7CiAg
ICAgYXV0byBsb2dpY2FsUmlnaHRTaWRlID0gTGF5b3V0VW5pdDo6bWluKCk7Ci0gICAgZm9yIChh
dXRvIGN1cnJlbnQgPSBtX2ZpcnN0OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFRl
eHRCb3goKSkgeworICAgIGZvciAoYXV0byogY3VycmVudCA9IG1fZmlyc3Q7IGN1cnJlbnQ7IGN1
cnJlbnQgPSBjdXJyZW50LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGxvZ2ljYWxMZWZ0U2lk
ZSA9IHN0ZDo6bWluKGxvZ2ljYWxMZWZ0U2lkZSwgY3VycmVudC0+bG9naWNhbExlZnRWaXN1YWxP
dmVyZmxvdygpKTsKICAgICAgICAgbG9naWNhbFJpZ2h0U2lkZSA9IHN0ZDo6bWF4KGxvZ2ljYWxS
aWdodFNpZGUsIGN1cnJlbnQtPmxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93KCkpOwogICAgIH0K
QEAgLTIwMSw3ICsyMDEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHRMaW5lQm94ZXM6OnZpc3Vh
bE92ZXJmbG93Qm91bmRpbmdCb3goY29uc3QgUmVuZGVyVGV4dCYgcmVuZAogCiBib29sIFJlbmRl
clRleHRMaW5lQm94ZXM6Omhhc1JlbmRlcmVkVGV4dCgpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRv
IGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9y
IChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewog
ICAgICAgICBpZiAoYm94LT5sZW4oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTIzMyw3ICsyMzMsNyBAQCBpbnQgUmVuZGVyVGV4dExpbmVCb3hlczo6Y2FyZXRNYXhPZmZz
ZXQoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIpIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGV4dExp
bmVCb3hlczo6Y29udGFpbnNPZmZzZXQoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIHVuc2ln
bmVkIG9mZnNldCwgT2Zmc2V0VHlwZSB0eXBlKSBjb25zdAogewotICAgIGZvciAoYXV0byBib3gg
PSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgIGZvciAoYXV0
byogYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAg
ICAgaWYgKG9mZnNldCA8IGJveC0+c3RhcnQoKSAmJiAhcmVuZGVyZXIuY29udGFpbnNSZXZlcnNl
ZFRleHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgdW5zaWduZWQgYm94
RW5kID0gYm94LT5zdGFydCgpICsgYm94LT5sZW4oKTsKQEAgLTI1Miw3ICsyNTIsNyBAQCBib29s
IFJlbmRlclRleHRMaW5lQm94ZXM6OmNvbnRhaW5zT2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmIHJl
bmRlcmVyLCB1bnNpZ25lZCBvZgogdW5zaWduZWQgUmVuZGVyVGV4dExpbmVCb3hlczo6Y291bnRD
aGFyYWN0ZXJPZmZzZXRzVW50aWwodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogewogICAgIHVuc2ln
bmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9yIChhdXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0g
Ym94LT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7
IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICBpZiAob2Zmc2V0IDwgYm94LT5z
dGFydCgpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgaWYgKG9mZnNldCA8
PSBib3gtPnN0YXJ0KCkgKyBib3gtPmxlbigpKSB7CkBAIC00MDIsNyArNDAyLDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlclRleHRMaW5lQm94ZXM6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgUmVu
ZGVyVGV4dCYgcmVuZGVyZXIKICAgICBib29sIGJsb2Nrc0FyZUZsaXBwZWQgPSByZW5kZXJlci5z
dHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCk7CiAKICAgICBJbmxpbmVUZXh0Qm94
KiBsYXN0Qm94ID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8gYm94ID0gbV9maXJzdDsgYm94OyBi
b3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIGJveCA9IG1fZmlyc3Q7
IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGlmIChib3gtPmlzTGlu
ZUJyZWFrKCkgJiYgIWJveC0+cHJldkxlYWZDaGlsZCgpICYmIGJveC0+bmV4dExlYWZDaGlsZCgp
ICYmICFib3gtPm5leHRMZWFmQ2hpbGQoKS0+aXNMaW5lQnJlYWsoKSkKICAgICAgICAgICAgIGJv
eCA9IGJveC0+bmV4dFRleHRCb3goKTsKIApAQCAtNDQwLDcgKzQ0MCw3IEBAIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJUZXh0TGluZUJveGVzOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IFJlbmRlclRl
eHQmIHJlbmRlcmVyCiB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OnNldFNlbGVjdGlvblN0YXRl
KFJlbmRlclRleHQmIHJlbmRlcmVyLCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHN0YXRl
KQogewogICAgIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkluc2lkZSB8fCBz
dGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKLSAgICAgICAgZm9yIChhdXRv
IGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQorICAgICAgICBm
b3IgKGF1dG8qIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQog
ICAgICAgICAgICAgYm94LT5yb290KCkuc2V0SGFzU2VsZWN0ZWRDaGlsZHJlbihzdGF0ZSA9PSBS
ZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkluc2lkZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC00NTYsNyArNDU2LDcgQEAgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpzZXRTZWxlY3Rpb25T
dGF0ZShSZW5kZXJUZXh0JiByZW5kZXJlciwgUmVuZGVyT2JqZWN0OjoKICAgICB9IGVsc2UgaWYg
KHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5kKQogICAgICAgICBzdGFydCA9IDA7
CiAKLSAgICBmb3IgKGF1dG8gYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0
Qm94KCkpIHsKKyAgICBmb3IgKGF1dG8qIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5u
ZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIGlmIChib3gtPmlzU2VsZWN0ZWQoc3RhcnQsIGVuZCkp
CiAgICAgICAgICAgICBib3gtPnJvb3QoKS5zZXRIYXNTZWxlY3RlZENoaWxkcmVuKHRydWUpOwog
ICAgIH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgSW50UmVjdCBlbGxpcHNpc1JlY3RGb3JC
b3goY29uc3QgSW5saW5lVGV4dEJveCYgYm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaQogTGF5b3V0
UmVjdCBSZW5kZXJUZXh0TGluZUJveGVzOjpzZWxlY3Rpb25SZWN0Rm9yUmFuZ2UodW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsKICAgICBMYXlvdXRSZWN0IHJlY3Q7Ci0gICAgZm9yIChh
dXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CisgICAg
Zm9yIChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkg
ewogICAgICAgICByZWN0LnVuaXRlKGJveC0+bG9jYWxTZWxlY3Rpb25SZWN0KHN0YXJ0LCBlbmQp
KTsKICAgICAgICAgcmVjdC51bml0ZShlbGxpcHNpc1JlY3RGb3JCb3goKmJveCwgc3RhcnQsIGVu
ZCkpOwogICAgIH0KQEAgLTQ5Niw3ICs0OTYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHRMaW5l
Qm94ZXM6OnNlbGVjdGlvblJlY3RGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZQog
CiB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c0ZvclJhbmdl
KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMp
CiB7Ci0gICAgZm9yIChhdXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4
dEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+
bmV4dFRleHRCb3goKSkgewogICAgICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgICAgIHJlY3Qu
dW5pdGUoYm94LT5sb2NhbFNlbGVjdGlvblJlY3Qoc3RhcnQsIGVuZCkpOwogICAgICAgICByZWN0
LnVuaXRlKGVsbGlwc2lzUmVjdEZvckJveCgqYm94LCBzdGFydCwgZW5kKSk7CkBAIC01MDgsNyAr
NTA4LDcgQEAgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHNG
b3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQKIFZlY3RvcjxJbnRSZWN0PiBSZW5kZXJU
ZXh0TGluZUJveGVzOjphYnNvbHV0ZVJlY3RzKGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkgY29uc3QKIHsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7Ci0gICAgZm9yIChh
dXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQorICAgIGZv
ciAoYXV0byogYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpCiAg
ICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRl
ZE9mZnNldCArIGJveC0+dG9wTGVmdCgpLCBib3gtPnNpemUoKSkpKTsKICAgICByZXR1cm4gcmVj
dHM7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgc3RhdGljIEZsb2F0UmVjdCBsb2NhbFF1YWRGb3JU
ZXh0Qm94KGNvbnN0IElubGluZVRleHRCb3gmIGJveCwgdW5zaWduZWQgc3RhcnQsIHUKIFZlY3Rv
cjxJbnRSZWN0PiBSZW5kZXJUZXh0TGluZUJveGVzOjphYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoY29u
c3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJv
b2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBWZWN0
b3I8SW50UmVjdD4gcmVjdHM7Ci0gICAgZm9yIChhdXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94
ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBib3ggPSBtX2ZpcnN0OyBi
b3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICAvLyBOb3RlOiBib3gtPmVu
ZCgpIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGNoYXJhY3Rlciwgbm90IHRoZSBpbmRl
eCBwYXN0IGl0CiAgICAgICAgIGlmIChzdGFydCA8PSBib3gtPnN0YXJ0KCkgJiYgYm94LT5lbmQo
KSA8IGVuZCkgewogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5kYXJpZXMgPSBib3gtPmNhbGN1
bGF0ZUJvdW5kYXJpZXMoKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCBWZWN0b3I8SW50UmVjdD4gUmVu
ZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKGNvbnN0IFJlbmRlclRleHQm
IHJlbgogVmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFk
cyhjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgYm9vbCogd2FzRml4ZWQsIENsaXBwaW5nT3B0
aW9uIG9wdGlvbikgY29uc3QKIHsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKLSAgICBm
b3IgKGF1dG8gYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsK
KyAgICBmb3IgKGF1dG8qIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJv
eCgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVCb3Vu
ZGFyaWVzKCk7CiAKICAgICAgICAgLy8gU2hvcnRlbiB0aGUgd2lkdGggb2YgdGhpcyB0ZXh0IGJv
eCBpZiBpdCBlbmRzIGluIGFuIGVsbGlwc2lzLgpAQCAtNTg0LDcgKzU4NCw3IEBAIFZlY3RvcjxG
bG9hdFF1YWQ+IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVy
VGV4dCYgcmVuZGVyZXIsCiBWZWN0b3I8RmxvYXRRdWFkPiBSZW5kZXJUZXh0TGluZUJveGVzOjph
YnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sKiB3YXNG
aXhlZCkgY29uc3QKIHsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKLSAgICBmb3IgKGF1
dG8gYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICBm
b3IgKGF1dG8qIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7
CiAgICAgICAgIC8vIE5vdGU6IGJveC0+ZW5kKCkgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxh
c3QgY2hhcmFjdGVyLCBub3QgdGhlIGluZGV4IHBhc3QgaXQKICAgICAgICAgaWYgKHN0YXJ0IDw9
IGJveC0+c3RhcnQoKSAmJiBib3gtPmVuZCgpIDwgZW5kKSB7CiAgICAgICAgICAgICBGbG9hdFJl
Y3QgYm91bmRhcmllcyA9IGJveC0+Y2FsY3VsYXRlQm91bmRhcmllcygpOwpAQCAtNjEwLDcgKzYx
MCw3IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUXVh
ZHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiByCiAKIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hl
czo6ZGlydHlBbGwoKQogewotICAgIGZvciAoYXV0byBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9
IGJveC0+bmV4dFRleHRCb3goKSkKKyAgICBmb3IgKGF1dG8qIGJveCA9IG1fZmlyc3Q7IGJveDsg
Ym94ID0gYm94LT5uZXh0VGV4dEJveCgpKQogICAgICAgICBib3gtPmRpcnR5TGluZUJveGVzKCk7
CiB9CiAKQEAgLTYyMSw3ICs2MjEsNyBAQCBib29sIFJlbmRlclRleHRMaW5lQm94ZXM6OmRpcnR5
UmFuZ2UoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZwogCiAgICAg
Ly8gRGlydHkgYWxsIHRleHQgYm94ZXMgdGhhdCBpbmNsdWRlIGNoYXJhY3RlcnMgaW4gYmV0d2Vl
biBvZmZzZXQgYW5kIG9mZnNldCtsZW4uCiAgICAgYm9vbCBkaXJ0aWVkTGluZXMgPSBmYWxzZTsK
LSAgICBmb3IgKGF1dG8gY3VycmVudCA9IG1fZmlyc3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJy
ZW50LT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBjdXJyZW50ID0gbV9maXJzdDsg
Y3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkbid0IHJlbHkgb24gdGhlIGVuZCBvZiBhIGRpcnR5IGxpbmUgYm94
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MjY0CiAgICAg
ICAgIC8vIFRleHQgcnVuIGlzIGVudGlyZWx5IGJlZm9yZSB0aGUgYWZmZWN0ZWQgcmFuZ2UuCiAg
ICAgICAgIGlmIChjdXJyZW50LT5lbmQoKSA8IHN0YXJ0KQpAQCAtNjc1LDcgKzY3NSw3IEBAIGJv
b2wgUmVuZGVyVGV4dExpbmVCb3hlczo6ZGlydHlSYW5nZShSZW5kZXJUZXh0JiByZW5kZXJlciwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnCiAgICAgICAgIGZpcnN0Um9vdEJveC0+bWFya0RpcnR5KCk7
CiAgICAgICAgIGRpcnRpZWRMaW5lcyA9IHRydWU7CiAgICAgfQotICAgIGZvciAoYXV0byBjdXJy
ZW50ID0gZmlyc3RSb290Qm94OyBjdXJyZW50ICYmIGN1cnJlbnQgIT0gbGFzdFJvb3RCb3g7IGN1
cnJlbnQgPSBjdXJyZW50LT5uZXh0Um9vdEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBjdXJyZW50
ID0gZmlyc3RSb290Qm94OyBjdXJyZW50ICYmIGN1cnJlbnQgIT0gbGFzdFJvb3RCb3g7IGN1cnJl
bnQgPSBjdXJyZW50LT5uZXh0Um9vdEJveCgpKSB7CiAgICAgICAgIGlmIChjdXJyZW50LT5saW5l
QnJlYWtPYmooKSA9PSAmcmVuZGVyZXIgJiYgY3VycmVudC0+bGluZUJyZWFrUG9zKCkgPiBlbmQp
CiAgICAgICAgICAgICBjdXJyZW50LT5zZXRMaW5lQnJlYWtQb3MoY3VycmVudC0+bGluZUJyZWFr
UG9zKCkgKyBsZW5ndGhEZWx0YSk7CiAgICAgfQpAQCAtNjkzLDcgKzY5Myw3IEBAIGlubGluZSB2
b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogI2lmICFB
U1NFUlRfRElTQUJMRUQKICNpZmRlZiBDSEVDS19DT05TSVNURU5DWQogICAgIGNvbnN0IElubGlu
ZVRleHRCb3gqIHByZXYgPSBudWxscHRyOwotICAgIGZvciAoYXV0byBjaGlsZCA9IG1fZmlyc3Q7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0VGV4dEJveCgpKSB7CisgICAgZm9yIChhdXRvKiBj
aGlsZCA9IG1fZmlyc3Q7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0VGV4dEJveCgpKSB7CiAg
ICAgICAgIEFTU0VSVChjaGlsZC0+cmVuZGVyZXIoKSA9PSB0aGlzKTsKICAgICAgICAgQVNTRVJU
KGNoaWxkLT5wcmV2VGV4dEJveCgpID09IHByZXYpOwogICAgICAgICBwcmV2ID0gY2hpbGQ7CkBA
IC03MTQsNyArNzE0LDcgQEAgUmVuZGVyVGV4dExpbmVCb3hlczo6flJlbmRlclRleHRMaW5lQm94
ZXMoKQogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRAogdm9p
ZCBSZW5kZXJUZXh0TGluZUJveGVzOjppbnZhbGlkYXRlUGFyZW50Q2hpbGRMaXN0cygpCiB7Ci0g
ICAgZm9yIChhdXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgp
KQorICAgIGZvciAoYXV0byogYm94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0
Qm94KCkpCiAgICAgICAgIGJveC0+aW52YWxpZGF0ZVBhcmVudENoaWxkTGlzdCgpOwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5k
ZXggOTUyODkwM2VlMjMyNGRiMzFhMzMxMzdjMTIxYmQ3NGM3NjBhNTYyMi4uNzBmOTA1YWU0NzRj
M2VlZDI0ZDVmZjEzODQwNzJmN2E0ODFiZDVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgd3JpdGUo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgaW50IGluZGVudCwgUmVuZGVy
QXNUZXh0QmVoYXZpCiAgICAgICAgICAgICAgICAgd3JpdGVTaW1wbGVMaW5lKHRzLCB0ZXh0LCBy
dW4ucmVjdCgpLCBydW4udGV4dCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSB0ZXh0LmZpcnN0VGV4dEJveCgpOyBib3g7IGJv
eCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBib3ggPSB0
ZXh0LmZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewogICAg
ICAgICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgICAgICAg
ICB3cml0ZVRleHRSdW4odHMsIHRleHQsICpib3gpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3Bw
CmluZGV4IDliZWViOTIxZDQxNmUwNTczMDliNmVmMjkyNDQ0OWJlNDA2YmZjNmMuLjE0NDc1OTZk
ZGIxNDhiYzQyZjM4MzMzYjFiYzg0YzllODVhNTI2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKQEAgLTE3Niw3
ICsxNzYsNyBAQCB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6bWVhc3VyZVRleHRSZW5kZXJl
cihSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0LCBNZWFzdQogCiB2b2lkIFNWR1RleHRNZXRyaWNz
QnVpbGRlcjo6d2Fsa1RyZWUoUmVuZGVyRWxlbWVudCYgc3RhcnQsIFJlbmRlclNWR0lubGluZVRl
eHQqIHN0b3BBdExlYWYsIE1lYXN1cmVUZXh0RGF0YSogZGF0YSkKIHsKLSAgICBmb3IgKGF1dG8g
Y2hpbGQgPSBzdGFydC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IHN0YXJ0LmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGlzPFJlbmRl
clNWR0lubGluZVRleHQ+KCpjaGlsZCkpIHsKICAgICAgICAgICAgIFJlbmRlclNWR0lubGluZVRl
eHQmIHRleHQgPSBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PigqY2hpbGQpOwogICAgICAg
ICAgICAgaWYgKHN0b3BBdExlYWYgJiYgc3RvcEF0TGVhZiAhPSAmdGV4dCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IDk1NDIzOWY0NTI1NjQ3Y2Q3MTVjYWE3Y2VjY2Qz
NWE4OTE5MzJjMjYuLjk0OGQyYjU0YjY4MTc3MmM2YWVmN2Y0YWFkZjRhMzBjMTFhMWUxZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTY3Niw3ICs2NzYsNyBAQCBFbGVt
ZW50KiBTVkdTVkdFbGVtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlk
KQogICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKHRoaXMpKQogICAg
ICAgICByZXR1cm4gZWxlbWVudDsKICAgICBpZiAodHJlZVNjb3BlKCkuY29udGFpbnNNdWx0aXBs
ZUVsZW1lbnRzV2l0aElkKGlkKSkgewotICAgICAgICBmb3IgKGF1dG8gZWxlbWVudCA6ICp0cmVl
U2NvcGUoKS5nZXRBbGxFbGVtZW50c0J5SWQoaWQpKSB7CisgICAgICAgIGZvciAoYXV0byogZWxl
bWVudCA6ICp0cmVlU2NvcGUoKS5nZXRBbGxFbGVtZW50c0J5SWQoaWQpKSB7CiAgICAgICAgICAg
ICBpZiAoZWxlbWVudC0+aXNEZXNjZW5kYW50T2YodGhpcykpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CmluZGV4IDI4MWEzY2FkNmY4ODFiMWE2YzA2ZTEyYTZiYzgyNTRlMmIwMmY2ZjIuLjgzN2I2YmNi
NDU5ZGRhZjBlMzE5ODUwMTlhYjJkNThjNDViMjdmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQpAQCAtMTcyMCw3ICsxNzIwLDcgQEAgLSAodm9pZClnZXREaWN0YXRpb25S
ZXN1bHRSYW5nZXM6KE5TQXJyYXkgKiopb3V0UmFuZ2VzIGFuZE1ldGFkYXRhczooTlNBcnJheSAq
KikKICAgICAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSByb290OyBub2RlOyBub2RlID0gTm9kZVRy
YXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsKICAgICAgICAgYXV0byBtYXJrZXJzID0gZG9jdW1lbnQt
Pm1hcmtlcnMoKS5tYXJrZXJzRm9yKG5vZGUpOwotICAgICAgICBmb3IgKGF1dG8gbWFya2VyIDog
bWFya2VycykgeworICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IG1hcmtlcnMpIHsKIAogICAg
ICAgICAgICAgaWYgKG1hcmtlci0+dHlwZSgpICE9IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25S
ZXN1bHQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKaW5kZXggYjBhYWFhMjhkOWM1MjE4NjA5Y2Q1NGI4
NjljNjk1OTllNTM5NjdiMS4uYTNmYjc3MGY1Y2RiY2RjYjVmYTc3YWI0ZDJmMGI1NDc0NDg5MGY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcApA
QCAtMTc4LDEwICsxNzgsMTAgQEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpwZW5kaW5nVmlzaXRl
ZExpbmtzVGltZXJGaXJlZCgpCiAKICAgICBWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+IGFkZGVk
VmlzaXRlZExpbmtzOwogCi0gICAgZm9yIChhdXRvIGxpbmtIYXNoIDogbV9wZW5kaW5nVmlzaXRl
ZExpbmtzKSB7CisgICAgZm9yIChhdXRvJiBsaW5rSGFzaCA6IG1fcGVuZGluZ1Zpc2l0ZWRMaW5r
cykgewogICAgICAgICBpZiAobV90YWJsZS5hZGRMaW5rSGFzaChsaW5rSGFzaCkpIHsKICAgICAg
ICAgICAgIGFkZGVkVmlzaXRlZExpbmtzLmFwcGVuZChsaW5rSGFzaCk7Ci0gICAgICAgICAgICBt
X2tleUNvdW50Kys7CisgICAgICAgICAgICArK21fa2V5Q291bnQ7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnJlc2l6ZVRhYmxl
KHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoYXV0
byBsaW5rSGFzaCA6IG1fcGVuZGluZ1Zpc2l0ZWRMaW5rcykgeworICAgIGZvciAoYXV0byYgbGlu
a0hhc2ggOiBtX3BlbmRpbmdWaXNpdGVkTGlua3MpIHsKICAgICAgICAgaWYgKG1fdGFibGUuYWRk
TGlua0hhc2gobGlua0hhc2gpKQogICAgICAgICAgICAgbV9rZXlDb3VudCsrOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggODg4MWVm
NzA1NjhhNjNiMTgxMTg4MTE2MzJiNWI1NGY0ZTJjMWY4Yy4uYjI4NTczMjU3M2JkMDZmZTMxMjdh
MmEzNDQ1OTE3NDk2MGU1YzE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTQ3OSwxMCArNDc5LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpyZWxlYXNlUmVtYWluaW5nSWNvbnNGb3JQYWdlVVJMcygpCiAgICAgaWYgKCFpY29uRGF0YWJh
c2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byBpdGVyIDogbV9wYWdlVVJMUmV0
YWluQ291bnRNYXApIHsKLSAgICAgICAgdWludDY0X3QgY291bnQgPSBpdGVyLnZhbHVlOworICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcCkgeworICAgICAgICB1
aW50NjRfdCBjb3VudCA9IGVudHJ5LnZhbHVlOwogICAgICAgICBmb3IgKHVpbnQ2NF90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgIGljb25EYXRhYmFzZS0+cmVsZWFzZUljb25G
b3JQYWdlVVJMKGl0ZXIua2V5KTsKKyAgICAgICAgICAgIGljb25EYXRhYmFzZS0+cmVsZWFzZUlj
b25Gb3JQYWdlVVJMKGVudHJ5LmtleSk7CiAgICAgfQogCiAgICAgbV9wYWdlVVJMUmV0YWluQ291
bnRNYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5MmVkNjFlZjNmZGU2ODNlODIw
N2I3ZGU2M2ZiOWExYTg3OGNhZDQ1Li40MzJlZjc3ZmY1MTJkMTM1ZWNmZTVhNjYyMDc3YTBjYjlk
ZDdlYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6
ZnVuY3Rpb248dm9pZAogCiAgICAgYXV0byBuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgPSBjb21w
dXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YUZldGNoKGRhdGFUeXBlcywgIWlzUGVy
c2lzdGVudCgpKTsKICAgICBpZiAobmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NB
Y2Nlc3NUeXBlOjpOb25lKSB7Ci0gICAgICAgIGZvciAoYXV0byBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9v
bHMoKSkgewogICAgICAgICAgICAgc3dpdGNoIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUpIHsK
ICAgICAgICAgICAgIGNhc2UgUHJvY2Vzc0FjY2Vzc1R5cGU6Ok9ubHlJZkxhdW5jaGVkOgogICAg
ICAgICAgICAgICAgIGlmICghcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCkBAIC0zNjAs
NyArMzYwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoV2Vic2l0ZURhdGFU
eXBlcyBkYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZAogCiAjaWYgRU5BQkxFKERBVEFCQVNF
X1BST0NFU1MpCiAgICAgaWYgKGRhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRh
dGFiYXNlcyAmJiBpc1BlcnNpc3RlbnQoKSkgewotICAgICAgICBmb3IgKGF1dG8gcHJvY2Vzc1Bv
b2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
cHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVEYXRhYmFz
ZVByb2Nlc3MoKTsKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5n
Q2FsbGJhY2soKTsKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJl
bW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZQog
CiAgICAgYXV0byBuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgPSBjb21wdXRlTmV0d29ya1Byb2Nl
c3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoZGF0YVR5cGVzLCAhaXNQZXJzaXN0ZW50KCkpOwog
ICAgIGlmIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0FjY2Vzc1R5cGU6Ok5v
bmUpIHsKLSAgICAgICAgZm9yIChhdXRvIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAg
ICAgICAgICBzd2l0Y2ggKG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSkgewogICAgICAgICAgICAg
Y2FzZSBQcm9jZXNzQWNjZXNzVHlwZTo6T25seUlmTGF1bmNoZWQ6CiAgICAgICAgICAgICAgICAg
aWYgKCFwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKQEAgLTYwNyw3ICs2MDcsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlw
ZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZQogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAg
ICAgaWYgKGRhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyAmJiBp
c1BlcnNpc3RlbnQoKSkgewotICAgICAgICBmb3IgKGF1dG8gcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpIHsKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVEYXRhYmFzZVByb2Nlc3MoKTsK
IAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsK
QEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vi
c2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJzaQogCiAgICAgYXV0byBu
ZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgPSBjb21wdXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBl
Rm9yRGF0YVJlbW92YWwoZGF0YVR5cGVzLCAhaXNQZXJzaXN0ZW50KCkpOwogICAgIGlmIChuZXR3
b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0FjY2Vzc1R5cGU6Ok5vbmUpIHsKLSAgICAg
ICAgZm9yIChhdXRvIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSkgewogICAgICAgICAgICAgY2FzZSBQcm9jZXNz
QWNjZXNzVHlwZTo6T25seUlmTGF1bmNoZWQ6CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIGNvbnN0IFZl
Y3RvcjxXZWJzaQogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAgICAgaWYgKGRhdGFU
eXBlcyAmIFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyAmJiBpc1BlcnNpc3RlbnQo
KSkgewotICAgICAgICBmb3IgKGF1dG8gcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKICAgICAg
ICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVEYXRhYmFzZVByb2Nlc3MoKTsKIAogICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKQEAgLTEwMDEsNyAr
MTAwMSw3IEBAIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBXZWJzaXRlRGF0YVN0b3JlOjpwbHVn
aW5zKCkgY29uc3QKIHsKICAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2luczsKIAot
ICAgIGZvciAoYXV0byBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
cGx1Z2luIDogcHJvY2Vzc1Bvb2wtPnBsdWdpbkluZm9TdG9yZSgpLnBsdWdpbnMoKSkKICAgICAg
ICAgICAgIHBsdWdpbnMuYXBwZW5kKHBsdWdpbik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9EZWFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlYWxsb2NhdG9yLmNwcAppbmRleCA4NTBlMDEyN2EyYWJkZTZmMTYzZjdkZGY2MzM2N2NiNjgx
MDFmNTZmLi5jZmMwZjcyNDg4ODJlMDgwYjUyNzUyMDQxYjk1YTFlMjA2ZDUxYzIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIERl
YWxsb2NhdG9yOjpwcm9jZXNzT2JqZWN0TG9nKCkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CiAgICAgSGVhcCogaGVhcCA9
IFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNlKCk7CiAgICAgCi0gICAgZm9yIChhdXRvIG9i
amVjdCA6IG1fb2JqZWN0TG9nKSB7CisgICAgZm9yIChhdXRvKiBvYmplY3QgOiBtX29iamVjdExv
ZykgewogICAgICAgICBpZiAoaXNTbWFsbChvYmplY3QpKSB7CiAgICAgICAgICAgICBTbWFsbExp
bmUqIGxpbmUgPSBTbWFsbExpbmU6OmdldChvYmplY3QpOwogICAgICAgICAgICAgaGVhcC0+ZGVy
ZWZTbWFsbExpbmUobG9jaywgbGluZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>