<?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>153592</bug_id>
          
          <creation_ts>2016-01-28 07:19:44 -0800</creation_ts>
          <short_desc>[css-grid] Store lines instead of tracks in GridResolvedPosition</short_desc>
          <delta_ts>2016-01-29 01:22:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>153488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Manuel Rego Casasnovas">rego</reporter>
          <assigned_to name="Manuel Rego Casasnovas">rego</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfernandez</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1159708</commentid>
    <comment_count>0</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2016-01-28 07:19:44 -0800</bug_when>
    <thetext>First step in the plan described in meta-bug #153488 would be to store grid lines indexes instead of track indexes in GridResolvedPosition.

This will mean port the following patch from Blink:
https://codereview.chromium.org/1451883002/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159714</commentid>
    <comment_count>1</comment_count>
      <attachid>270114</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2016-01-28 07:29:24 -0800</bug_when>
    <thetext>Created attachment 270114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159755</commentid>
    <comment_count>2</comment_count>
      <attachid>270114</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-01-28 09:56:34 -0800</bug_when>
    <thetext>Comment on attachment 270114
Patch

Makes total sense</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160059</commentid>
    <comment_count>3</comment_count>
      <attachid>270114</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-29 01:22:36 -0800</bug_when>
    <thetext>Comment on attachment 270114
Patch

Clearing flags on attachment: 270114

Committed r195808: &lt;http://trac.webkit.org/changeset/195808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160060</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-29 01:22:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270114</attachid>
            <date>2016-01-28 07:29:24 -0800</date>
            <delta_ts>2016-01-29 01:22:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153592-20160128162857.patch</filename>
            <type>text/plain</type>
            <size>29358</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNjNWNiZWRjNTliNjA5
ZWVlNjI1YzhjMWFiYmQ1OGRlMmNlZjY1ZC4uZWFjNzZjNjFlNWZjMTBmMGJkYWQ2MmEyNTdlMTQ4
N2Y2YjcxNzNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE2LTAxLTI4ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZ3Jp
ZF0gU3RvcmUgbGluZXMgaW5zdGVhZCBvZiB0cmFja3MgaW4gR3JpZFJlc29sdmVkUG9zaXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIER1ZSB0byB0
aGUgbmV3IGZlYXR1cmUgdGhhdCBhbGxvd3MgdG8gY3JlYXRlIGltcGxpY2l0IHRyYWNrcyBiZWZv
cmUgdGhlCisgICAgICAgIGV4cGxpY2l0IG9uZXMsIHdlIHdpbGwgbmVlZCB0byB1c2UgbGluZXMg
aW5zdGVhZCBvZiB0cmFja3MgaW4gdGhlCisgICAgICAgIGNvZGUgdG8gYmUgYWJsZSB0byBpbXBs
ZW1lbnQgaXQgcHJvcGVybHkuCisKKyAgICAgICAgVGhpcyBpcyBqdXN0IGEgZmlyc3Qgc2ltcGxl
IHBhdGNoIHVzaW5nIGxpbmVzIGluc3RlYWQgb2YgdHJhY2tzIGluCisgICAgICAgIEdyaWRSZXNv
bHZlZFBvc2l0aW9uLiBJdCBtb2RpZmllcyB0aGUgY29kZSB0aGF0IHdhcyB1c2luZyBpdCwgYXMg
aXQgd2FzCisgICAgICAgIGNvbnNpZGVyaW5nIHRoYXQgdGhlIHJlc29sdmVkRmluYWxQb3NpdGlv
biB3YXMgYSB0cmFjayBpbmRleCBhbmQKKyAgICAgICAgbm90IGEgbGluZSBpbmRleC4KKworICAg
ICAgICBTbyBpZiB3ZSd2ZSBhbiBpdGVtIHBvc2l0aW9uZWQgbGlrZToKKyAgICAgICAgICBncmlk
LWNvbHVtbjogMiAvIDU7CisgICAgICAgICAgZ3JpZC1yb3c6IDEgLyBzcGFuIDI7CisKKyAgICAg
ICAgQmVmb3JlIHdlIHdlcmUgc3RvcmluZyB0aGlzIGluZm9ybWF0aW9uIG9uIHRoZSBHcmlkU3Bh
bjoKKyAgICAgICAgKiBjb2x1bW5zOgorICAgICAgICAgICogcmVzb2x2ZWRJbml0aWFsUG9zaXRp
b246IDEKKyAgICAgICAgICAqIHJlc29sdmVkRmluYWxQb3NpdGlvbjogIDMKKyAgICAgICAgKiBy
b3dzOgorICAgICAgICAgICogcmVzb2x2ZWRJbml0aWFsUG9zaXRpb246IDAKKyAgICAgICAgICAq
IHJlc29sdmVkRmluYWxQb3NpdGlvbjogIDEKKworICAgICAgICBBbmQgbm93IHdlJ3JlIHN0b3Jp
bmc6CisgICAgICAgICogY29sdW1uczoKKyAgICAgICAgICAqIHJlc29sdmVkSW5pdGlhbFBvc2l0
aW9uOiAxCisgICAgICAgICAgKiByZXNvbHZlZEZpbmFsUG9zaXRpb246ICA0CisgICAgICAgICog
cm93czoKKyAgICAgICAgICAqIHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uOiAwCisgICAgICAgICAg
KiByZXNvbHZlZEZpbmFsUG9zaXRpb246ICAyCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBj
aGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JQb3NpdGlvbik6CisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
R3JpZFRlbXBsYXRlQXJlYXNSb3cpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1w
bGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZEl0ZXJhdG9y
OjpuZXh0RW1wdHlHcmlkQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21w
dXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6ZW5zdXJlR3JpZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxh
dGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6b2Zmc2V0QW5kQnJlYWR0aEZvclBvc2l0aW9uZWRDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0Fs
aWdubWVudE9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29sdW1uQXhp
c09mZnNldEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJvd0F4aXNP
ZmZzZXRGb3JDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZENvb3JkaW5hdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWRTcGFuOjpHcmlkU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdl
clNwYW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OmVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmlkQ29vcmRpbmF0ZTo6R3JpZENvb3JkaW5hdGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0
ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1l
ZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZl
R3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlv
bi5oOgorCiAyMDE2LTAxLTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRml4IGNsZWFuIENNYWtlIGJ1aWxkIGFmdGVyIHIxOTU3MTEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHAKaW5k
ZXggNWFkNzFmYmRkMzZjZjhkYzAwMzQyMDM4ZDEzN2NhYWZlNmFlYTNmNy4uZDY4MzkwYzNlZTVl
N2I2YjI5MzgyMDc3ZGNjYjZjMDUzYWU3YjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIHN0YXRp
YyBTdHJpbmcgc3RyaW5nRm9yUG9zaXRpb24oY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFy
ZWFNYXAsIHNpemVfdCByb3csCiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogZ3JpZEFyZWFN
YXApIHsKICAgICAgICAgY29uc3QgR3JpZENvb3JkaW5hdGUmIGNvb3JkaW5hdGUgPSBpdC52YWx1
ZTsKLSAgICAgICAgaWYgKHJvdyA+PSBjb29yZGluYXRlLnJvd3MucmVzb2x2ZWRJbml0aWFsUG9z
aXRpb24udG9JbnQoKSAmJiByb3cgPD0gY29vcmRpbmF0ZS5yb3dzLnJlc29sdmVkRmluYWxQb3Np
dGlvbi50b0ludCgpKQorICAgICAgICBpZiAocm93ID49IGNvb3JkaW5hdGUucm93cy5yZXNvbHZl
ZEluaXRpYWxQb3NpdGlvbi50b0ludCgpICYmIHJvdyA8IGNvb3JkaW5hdGUucm93cy5yZXNvbHZl
ZEZpbmFsUG9zaXRpb24udG9JbnQoKSkKICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGl0
LmtleSk7CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IGdyaWRBcmVhTWFwKSB7
CiAgICAgICAgIGNvbnN0IEdyaWRDb29yZGluYXRlJiBjb29yZGluYXRlID0gaXQudmFsdWU7Ci0g
ICAgICAgIGlmIChjb2x1bW4gPj0gY29vcmRpbmF0ZS5jb2x1bW5zLnJlc29sdmVkSW5pdGlhbFBv
c2l0aW9uLnRvSW50KCkgJiYgY29sdW1uIDw9IGNvb3JkaW5hdGUuY29sdW1ucy5yZXNvbHZlZEZp
bmFsUG9zaXRpb24udG9JbnQoKSAmJiBjYW5kaWRhdGVzLmNvbnRhaW5zKGl0LmtleSkpCisgICAg
ICAgIGlmIChjb2x1bW4gPj0gY29vcmRpbmF0ZS5jb2x1bW5zLnJlc29sdmVkSW5pdGlhbFBvc2l0
aW9uLnRvSW50KCkgJiYgY29sdW1uIDwgY29vcmRpbmF0ZS5jb2x1bW5zLnJlc29sdmVkRmluYWxQ
b3NpdGlvbi50b0ludCgpICYmIGNhbmRpZGF0ZXMuY29udGFpbnMoaXQua2V5KSkKICAgICAgICAg
ICAgIHJldHVybiBpdC5rZXk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IGFkNzdhZTdhOTYwZWQ4NmRhYTViMTZkNzBlNDFkYzQxMjBjNDFiOTQuLjRiMDMzYTY1MWFkOWQz
MTliYWNiMGYwM2FhNTUzYWM1OWY3YmQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC02MTk1LDIwICs2MTk1LDIwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZUFy
ZWFzUm93KE5hbWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVhTWFwLCBjb25zdCB1CiAKICAgICAgICAg
Ly8gV2UgaGFuZGxlIHNldmVyYWwgZ3JpZCBhcmVhcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXQgb25j
ZSB0byBzaW1wbGlmeSB0aGUgdmFsaWRhdGlvbiBjb2RlLgogICAgICAgICB1bnNpZ25lZCBsb29r
QWhlYWRDb2x1bW47Ci0gICAgICAgIGZvciAobG9va0FoZWFkQ29sdW1uID0gY3VycmVudENvbHVt
bjsgbG9va0FoZWFkQ29sdW1uIDwgY29sdW1uQ291bnQgLSAxOyArK2xvb2tBaGVhZENvbHVtbikg
ewotICAgICAgICAgICAgaWYgKGNvbHVtbk5hbWVzW2xvb2tBaGVhZENvbHVtbiArIDFdICE9IGdy
aWRBcmVhTmFtZSkKKyAgICAgICAgZm9yIChsb29rQWhlYWRDb2x1bW4gPSBjdXJyZW50Q29sdW1u
ICsgMTsgbG9va0FoZWFkQ29sdW1uIDwgY29sdW1uQ291bnQ7ICsrbG9va0FoZWFkQ29sdW1uKSB7
CisgICAgICAgICAgICBpZiAoY29sdW1uTmFtZXNbbG9va0FoZWFkQ29sdW1uXSAhPSBncmlkQXJl
YU5hbWUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRv
IGdyaWRBcmVhSXRlcmF0b3IgPSBncmlkQXJlYU1hcC5maW5kKGdyaWRBcmVhTmFtZSk7CiAgICAg
ICAgIGlmIChncmlkQXJlYUl0ZXJhdG9yID09IGdyaWRBcmVhTWFwLmVuZCgpKQotICAgICAgICAg
ICAgZ3JpZEFyZWFNYXAuYWRkKGdyaWRBcmVhTmFtZSwgR3JpZENvb3JkaW5hdGUoR3JpZFNwYW4o
cm93Q291bnQsIHJvd0NvdW50KSwgR3JpZFNwYW4oY3VycmVudENvbHVtbiwgbG9va0FoZWFkQ29s
dW1uKSkpOworICAgICAgICAgICAgZ3JpZEFyZWFNYXAuYWRkKGdyaWRBcmVhTmFtZSwgR3JpZENv
b3JkaW5hdGUoR3JpZFNwYW4ocm93Q291bnQsIHJvd0NvdW50ICsgMSksIEdyaWRTcGFuKGN1cnJl
bnRDb2x1bW4sIGxvb2tBaGVhZENvbHVtbikpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBHcmlkQ29vcmRpbmF0ZSYgZ3JpZENvb3JkaW5hdGUgPSBncmlkQXJlYUl0ZXJhdG9yLT52YWx1
ZTsKIAogICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjaGVja3MgdGVzdCB0aGF0IHRoZSBn
cmlkIGFyZWEgaXMgYSBzaW5nbGUgZmlsbGVkLWluIHJlY3RhbmdsZS4KICAgICAgICAgICAgIC8v
IDEuIFRoZSBuZXcgcm93IGlzIGFkamFjZW50IHRvIHRoZSBwcmV2aW91c2x5IHBhcnNlZCByb3cu
Ci0gICAgICAgICAgICBpZiAocm93Q291bnQgIT0gZ3JpZENvb3JkaW5hdGUucm93cy5yZXNvbHZl
ZEZpbmFsUG9zaXRpb24ubmV4dCgpLnRvSW50KCkpCisgICAgICAgICAgICBpZiAocm93Q291bnQg
IT0gZ3JpZENvb3JkaW5hdGUucm93cy5yZXNvbHZlZEZpbmFsUG9zaXRpb24udG9JbnQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIC8vIDIuIFRoZSBuZXcg
YXJlYSBzdGFydHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2Vk
IGFyZWEuCkBAIC02MjIxLDcgKzYyMjEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VHcmlkVGVt
cGxhdGVBcmVhc1JvdyhOYW1lZEdyaWRBcmVhTWFwJiBncmlkQXJlYU1hcCwgY29uc3QgdQogCiAg
ICAgICAgICAgICArK2dyaWRDb29yZGluYXRlLnJvd3MucmVzb2x2ZWRGaW5hbFBvc2l0aW9uOwog
ICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRDb2x1bW4gPSBsb29rQWhlYWRDb2x1bW47CisgICAg
ICAgIGN1cnJlbnRDb2x1bW4gPSBsb29rQWhlYWRDb2x1bW4gLSAxOwogICAgIH0KIAogICAgIG1f
dmFsdWVMaXN0LT5uZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKaW5kZXggMzk1YmU5MTBlMmY2OTFjODM0MGViMWZiYzYyYmUwNTRkN2EzMzM4MS4uOWUy
MWUzODQ5OTgzZTZiNmYyODY5Njc2ZjJkYzg5N2RmOTc3ZWZhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtODgwLDcgKzg4MCw3IEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zy
b21HcmlkQXJlYShjb25zCiAgICAgICAgIH0KICAgICAgICAgewogICAgICAgICAgICAgYXV0byYg
ZW5kVmVjdG9yID0gbmFtZWRHcmlkTGluZXMuYWRkKGFyZWEua2V5ICsgIi1lbmQiLCBWZWN0b3I8
dW5zaWduZWQ+KCkpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgIGVuZFZlY3Rvci5hcHBl
bmQoYXJlYVNwYW4ucmVzb2x2ZWRGaW5hbFBvc2l0aW9uLm5leHQoKS50b0ludCgpKTsKKyAgICAg
ICAgICAgIGVuZFZlY3Rvci5hcHBlbmQoYXJlYVNwYW4ucmVzb2x2ZWRGaW5hbFBvc2l0aW9uLnRv
SW50KCkpOwogICAgICAgICAgICAgc3RkOjpzb3J0KGVuZFZlY3Rvci5iZWdpbigpLCBlbmRWZWN0
b3IuZW5kKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCmluZGV4IDhjNDY4ZWQ3OGY5OWVjMTg1NmIyNGVjYmY3MGM4MTk1YTJiMjZjZGIu
LjE0MWU3NGNiMTQ4NmNhZmQ0NWEyNWNhN2FmMmRkMDMyNjQwOTIzN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKICAg
ICAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsg
Kyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICAgICAgaWYgKGlzRW1wdHlBcmVhRW5vdWdo
KHJvd1NwYW4sIGNvbHVtblNwYW4pKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEdyaWRDb29yZGluYXRlPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRDb29yZGluYXRl
PihHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiAtIDEpLCBHcmlkU3Bh
bihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbiAtIDEpKTsKKyAgICAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZENvb3JkaW5hdGU+IHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8R3JpZENvb3JkaW5hdGU+KEdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5k
ZXggKyByb3dTcGFuKSwgR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNv
bHVtblNwYW4pKTsKICAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIHRoZSBpdGVyYXRvciB0byBh
dm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdvdWxkIHJldHVybiB0aGUgc2FtZSBncmlk
IGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4
OwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01NjYsNyArNTY2LDcgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGkKICAgICAvLyA0LiBHcm93IGFsbCBHcmlkIHRyYWNrcyBoYXZp
bmcgYSBmcmFjdGlvbiBhcyB0aGUgTWF4VHJhY2tTaXppbmdGdW5jdGlvbi4KICAgICBkb3VibGUg
ZmxleEZyYWN0aW9uID0gMDsKICAgICBpZiAoaGFzRGVmaW5pdGVGcmVlU3BhY2UpCi0gICAgICAg
IGZsZXhGcmFjdGlvbiA9IGZpbmRGbGV4RmFjdG9yVW5pdFNpemUodHJhY2tzLCBHcmlkU3Bhbigw
LCB0cmFja3Muc2l6ZSgpIC0gMSksIGRpcmVjdGlvbiwgaW5pdGlhbEZyZWVTcGFjZS52YWx1ZSgp
KTsKKyAgICAgICAgZmxleEZyYWN0aW9uID0gZmluZEZsZXhGYWN0b3JVbml0U2l6ZSh0cmFja3Ms
IEdyaWRTcGFuKDAsIHRyYWNrcy5zaXplKCkpLCBkaXJlY3Rpb24sIGluaXRpYWxGcmVlU3BhY2Uu
dmFsdWUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2tJbmRl
eCA6IGZsZXhpYmxlU2l6ZWRUcmFja3NJbmRleCkKICAgICAgICAgICAgIGZsZXhGcmFjdGlvbiA9
IHN0ZDo6bWF4KGZsZXhGcmFjdGlvbiwgbm9ybWFsaXplZEZsZXhGcmFjdGlvbih0cmFja3NbdHJh
Y2tJbmRleF0sIGdyaWRUcmFja1NpemUoZGlyZWN0aW9uLCB0cmFja0luZGV4KS5tYXhUcmFja0Jy
ZWFkdGgoKS5mbGV4KCkpKTsKQEAgLTExMjEsMTggKzExMjEsMTggQEAgYm9vbCBSZW5kZXJHcmlk
Ojp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmUKIH0KICNlbmRpZgogCi12b2lkIFJlbmRlckdyaWQ6OmVuc3VyZUdyaWRTaXplKHVu
c2lnbmVkIG1heGltdW1Sb3dJbmRleCwgdW5zaWduZWQgbWF4aW11bUNvbHVtbkluZGV4KQordm9p
ZCBSZW5kZXJHcmlkOjplbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6ZSwgdW5z
aWduZWQgbWF4aW11bUNvbHVtblNpemUpCiB7CiAgICAgY29uc3QgdW5zaWduZWQgb2xkUm93Q291
bnQgPSBncmlkUm93Q291bnQoKTsKLSAgICBpZiAobWF4aW11bVJvd0luZGV4ID49IG9sZFJvd0Nv
dW50KSB7Ci0gICAgICAgIG1fZ3JpZC5ncm93KG1heGltdW1Sb3dJbmRleCArIDEpOworICAgIGlm
IChtYXhpbXVtUm93U2l6ZSA+IG9sZFJvd0NvdW50KSB7CisgICAgICAgIG1fZ3JpZC5ncm93KG1h
eGltdW1Sb3dTaXplKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCByb3cgPSBvbGRSb3dDb3VudDsg
cm93IDwgZ3JpZFJvd0NvdW50KCk7ICsrcm93KQogICAgICAgICAgICAgbV9ncmlkW3Jvd10uZ3Jv
dyhncmlkQ29sdW1uQ291bnQoKSk7CiAgICAgfQogCi0gICAgaWYgKG1heGltdW1Db2x1bW5JbmRl
eCA+PSBncmlkQ29sdW1uQ291bnQoKSkgeworICAgIGlmIChtYXhpbXVtQ29sdW1uU2l6ZSA+IGdy
aWRDb2x1bW5Db3VudCgpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsgcm93IDwg
Z3JpZFJvd0NvdW50KCk7ICsrcm93KQotICAgICAgICAgICAgbV9ncmlkW3Jvd10uZ3JvdyhtYXhp
bXVtQ29sdW1uSW5kZXggKyAxKTsKKyAgICAgICAgICAgIG1fZ3JpZFtyb3ddLmdyb3cobWF4aW11
bUNvbHVtblNpemUpOwogICAgIH0KIH0KIApAQCAtMTIwMCwyMSArMTIwMCwyMSBAQCB2b2lkIFJl
bmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcigpCiAgICAgICAg
IGF1dG8gdW5yZXNvbHZlZFJvd1Bvc2l0aW9ucyA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjp1bnJl
c29sdmVkU3BhbkZyb21TdHlsZShzdHlsZSgpLCAqY2hpbGQsIEZvclJvd3MpOwogICAgICAgICBp
ZiAoIXVucmVzb2x2ZWRSb3dQb3NpdGlvbnMucmVxdWlyZXNBdXRvUGxhY2VtZW50KCkpIHsKICAg
ICAgICAgICAgIEdyaWRTcGFuIHJvd1Bvc2l0aW9ucyA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpy
ZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZSh1bnJlc29sdmVkUm93UG9zaXRpb25zLCBzdHls
ZSgpKTsKLSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJ
bmRleCwgcm93UG9zaXRpb25zLnJlc29sdmVkRmluYWxQb3NpdGlvbi5uZXh0KCkudG9JbnQoKSk7
CisgICAgICAgICAgICBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1heChtYXhpbXVtUm93SW5kZXgs
IHJvd1Bvc2l0aW9ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24udG9JbnQoKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVm
aW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgogICAgICAgICAg
ICAgR3JpZFNwYW4gcG9zaXRpb25zID0gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlk
UG9zaXRpb25zRnJvbUF1dG9QbGFjZW1lbnRQb3NpdGlvbihzdHlsZSgpLCAqY2hpbGQsIEZvclJv
d3MsIEdyaWRSZXNvbHZlZFBvc2l0aW9uKDApKTsKLSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRl
eCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwgcG9zaXRpb25zLnJlc29sdmVkRmluYWxQb3Np
dGlvbi5uZXh0KCkudG9JbnQoKSk7CisgICAgICAgICAgICBtYXhpbXVtUm93SW5kZXggPSBzdGQ6
Om1heChtYXhpbXVtUm93SW5kZXgsIHBvc2l0aW9ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24udG9J
bnQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIHVucmVzb2x2ZWRDb2x1bW5Qb3NpdGlv
bnMgPSBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6dW5yZXNvbHZlZFNwYW5Gcm9tU3R5bGUoc3R5bGUo
KSwgKmNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICAgICAgaWYgKCF1bnJlc29sdmVkQ29sdW1uUG9z
aXRpb25zLnJlcXVpcmVzQXV0b1BsYWNlbWVudCgpKSB7CiAgICAgICAgICAgICBHcmlkU3BhbiBj
b2x1bW5Qb3NpdGlvbnMgPSBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6cmVzb2x2ZUdyaWRQb3NpdGlv
bnNGcm9tU3R5bGUodW5yZXNvbHZlZENvbHVtblBvc2l0aW9ucywgc3R5bGUoKSk7Ci0gICAgICAg
ICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgsIGNv
bHVtblBvc2l0aW9ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24ubmV4dCgpLnRvSW50KCkpOworICAg
ICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3RkOjptYXgobWF4aW11bUNvbHVtbkluZGV4
LCBjb2x1bW5Qb3NpdGlvbnMucmVzb2x2ZWRGaW5hbFBvc2l0aW9uLnRvSW50KCkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBh
IGRlZmluaXRlIGNvbHVtbiBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bhbi4KICAg
ICAgICAgICAgIEdyaWRTcGFuIHBvc2l0aW9ucyA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNv
bHZlR3JpZFBvc2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24oc3R5bGUoKSwgKmNoaWxk
LCBGb3JDb2x1bW5zLCBHcmlkUmVzb2x2ZWRQb3NpdGlvbigwKSk7Ci0gICAgICAgICAgICBtYXhp
bXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgsIHBvc2l0aW9ucy5y
ZXNvbHZlZEZpbmFsUG9zaXRpb24ubmV4dCgpLnRvSW50KCkpOworICAgICAgICAgICAgbWF4aW11
bUNvbHVtbkluZGV4ID0gc3RkOjptYXgobWF4aW11bUNvbHVtbkluZGV4LCBwb3NpdGlvbnMucmVz
b2x2ZWRGaW5hbFBvc2l0aW9uLnRvSW50KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzEw
LDcgKzEzMTAsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1Pbkdy
aWQoUmVuZGVyQm94JiBncmlkSXRlbSwgQXV0b1BsYWNlbWVudAogICAgICAgICAgICAgICAgIC8v
IENoZWNrIHRoYXQgaXQgZml0cyBpbiB0aGUgbWlub3IgYXhpcyBkaXJlY3Rpb24sIGFzIHdlIHNo
b3VsZG4ndCBncm93IGluIHRoYXQgZGlyZWN0aW9uIGhlcmUgKGl0IHdhcyBhbHJlYWR5IG1hbmFn
ZWQgaW4gcG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCkpLgogICAgICAgICAg
ICAgICAgIEdyaWRSZXNvbHZlZFBvc2l0aW9uIG1pbm9yQXhpc0ZpbmFsUG9zaXRpb25JbmRleCA9
IGF1dG9QbGFjZW1lbnRNaW5vckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gZW1wdHlH
cmlkQXJlYS0+Y29sdW1ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24gOiBlbXB0eUdyaWRBcmVhLT5y
b3dzLnJlc29sdmVkRmluYWxQb3NpdGlvbjsKICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBlbmRPZk1pbm9yQXhpcyA9IGF1dG9QbGFjZW1lbnRNaW5vckF4aXNEaXJlY3Rpb24oKSA9PSBG
b3JDb2x1bW5zID8gZ3JpZENvbHVtbkNvdW50KCkgOiBncmlkUm93Q291bnQoKTsKLSAgICAgICAg
ICAgICAgICBpZiAobWlub3JBeGlzRmluYWxQb3NpdGlvbkluZGV4LnRvSW50KCkgPCBlbmRPZk1p
bm9yQXhpcykKKyAgICAgICAgICAgICAgICBpZiAobWlub3JBeGlzRmluYWxQb3NpdGlvbkluZGV4
LnRvSW50KCkgPD0gZW5kT2ZNaW5vckF4aXMpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgICAgICAgICAgLy8gRGlzY2FyZCBlbXB0eSBncmlkIGFyZWEgYXMgaXQgZG9lcyBu
b3QgZml0IGluIHRoZSBtaW5vciBheGlzIGRpcmVjdGlvbi4KQEAgLTE0NzcsMTIgKzE0NzcsMTIg
QEAgdm9pZCBSZW5kZXJHcmlkOjpvZmZzZXRBbmRCcmVhZHRoRm9yUG9zaXRpb25lZENoaWxkKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWQKICAgICAgICAgfHwgKHBvc2l0aW9ucy5yZXNvbHZl
ZEluaXRpYWxQb3NpdGlvbi50b0ludCgpID4gbGFzdFRyYWNrSW5kZXgpOwogICAgIGJvb2wgZW5k
SXNBdXRvID0gZW5kUG9zaXRpb24uaXNBdXRvKCkKICAgICAgICAgfHwgKGVuZFBvc2l0aW9uLmlz
TmFtZWRHcmlkQXJlYSgpICYmIEdyaWRSZXNvbHZlZFBvc2l0aW9uOjppc05vbkV4aXN0ZW50TmFt
ZWRMaW5lT3JBcmVhKGVuZFBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgc3R5bGUoKSwgKGRpcmVj
dGlvbiA9PSBGb3JDb2x1bW5zKSA/IENvbHVtbkVuZFNpZGUgOiBSb3dFbmRTaWRlKSkKLSAgICAg
ICAgfHwgKHBvc2l0aW9ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24udG9JbnQoKSA+IGxhc3RUcmFj
a0luZGV4KTsKKyAgICAgICAgfHwgKHBvc2l0aW9ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24ucHJl
digpLnRvSW50KCkgPiBsYXN0VHJhY2tJbmRleCk7CiAKICAgICBHcmlkUmVzb2x2ZWRQb3NpdGlv
biBmaXJzdFBvc2l0aW9uID0gR3JpZFJlc29sdmVkUG9zaXRpb24oMCk7CiAgICAgR3JpZFJlc29s
dmVkUG9zaXRpb24gaW5pdGlhbFBvc2l0aW9uID0gc3RhcnRJc0F1dG8gPyBmaXJzdFBvc2l0aW9u
IDogcG9zaXRpb25zLnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uOwogICAgIEdyaWRSZXNvbHZlZFBv
c2l0aW9uIGxhc3RQb3NpdGlvbiA9IEdyaWRSZXNvbHZlZFBvc2l0aW9uKGxhc3RUcmFja0luZGV4
KTsKLSAgICBHcmlkUmVzb2x2ZWRQb3NpdGlvbiBmaW5hbFBvc2l0aW9uID0gZW5kSXNBdXRvID8g
bGFzdFBvc2l0aW9uIDogcG9zaXRpb25zLnJlc29sdmVkRmluYWxQb3NpdGlvbjsKKyAgICBHcmlk
UmVzb2x2ZWRQb3NpdGlvbiBmaW5hbFBvc2l0aW9uID0gZW5kSXNBdXRvID8gbGFzdFBvc2l0aW9u
IDogcG9zaXRpb25zLnJlc29sdmVkRmluYWxQb3NpdGlvbi5wcmV2KCk7CiAKICAgICAvLyBQb3Np
dGlvbmVkIGNoaWxkcmVuIGRvIG5vdCBncm93IHRoZSBncmlkLCBzbyB3ZSBuZWVkIHRvIGNsYW1w
IHRoZSBwb3NpdGlvbnMgdG8gYXZvaWQgZW5kaW5nIHVwIG91dHNpZGUgb2YgaXQuCiAgICAgaW5p
dGlhbFBvc2l0aW9uID0gc3RkOjptaW48R3JpZFJlc29sdmVkUG9zaXRpb24+KGluaXRpYWxQb3Np
dGlvbiwgbGFzdFBvc2l0aW9uKTsKQEAgLTE1NDMsMTAgKzE1NDMsMTAgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNl
dHMoY29uc3QgUmUKICAgICBjb25zdCBhdXRvJiBsaW5lUG9zaXRpb25zID0gKGRpcmVjdGlvbiA9
PSBGb3JDb2x1bW5zKSA/IG1fY29sdW1uUG9zaXRpb25zIDogbV9yb3dQb3NpdGlvbnM7CiAKICAg
ICBMYXlvdXRVbml0IGluaXRpYWxUcmFja1Bvc2l0aW9uID0gbGluZVBvc2l0aW9uc1tzcGFuLnJl
c29sdmVkSW5pdGlhbFBvc2l0aW9uLnRvSW50KCldOwotICAgIExheW91dFVuaXQgZmluYWxUcmFj
a1Bvc2l0aW9uID0gbGluZVBvc2l0aW9uc1tzcGFuLnJlc29sdmVkRmluYWxQb3NpdGlvbi50b0lu
dCgpXTsKKyAgICBMYXlvdXRVbml0IGZpbmFsVHJhY2tQb3NpdGlvbiA9IGxpbmVQb3NpdGlvbnNb
c3Bhbi5yZXNvbHZlZEZpbmFsUG9zaXRpb24ucHJldigpLnRvSW50KCldOwogCiAgICAgLy8gVHJh
Y2sgUG9zaXRpb25zIHZlY3RvciBzdG9yZXMgdGhlICdzdGFydCcgZ3JpZCBsaW5lIG9mIGVhY2gg
dHJhY2ssIHNvIHdlIGhhdmUgdG8gYWRkIGxhc3QgdHJhY2sncyBiYXNlU2l6ZS4KLSAgICByZXR1
cm4gZmluYWxUcmFja1Bvc2l0aW9uIC0gaW5pdGlhbFRyYWNrUG9zaXRpb24gKyB0cmFja3Nbc3Bh
bi5yZXNvbHZlZEZpbmFsUG9zaXRpb24udG9JbnQoKV0uYmFzZVNpemUoKTsKKyAgICByZXR1cm4g
ZmluYWxUcmFja1Bvc2l0aW9uIC0gaW5pdGlhbFRyYWNrUG9zaXRpb24gKyB0cmFja3Nbc3Bhbi5y
ZXNvbHZlZEZpbmFsUG9zaXRpb24ucHJldigpLnRvSW50KCldLmJhc2VTaXplKCk7CiB9CiAKIHZv
aWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVHcmlkUG9zaXRpb25zKEdyaWRTaXppbmdEYXRhJiBzaXpp
bmdEYXRhKQpAQCAtMTgzNiw3ICsxODM2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpjb2x1
bW5BeGlzT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIHN0YXJ0UG9zaXRpb247CiAgICAgY2FzZSBHcmlkQXhpc0VuZDoKICAgICBjYXNl
IEdyaWRBeGlzQ2VudGVyOiB7Ci0gICAgICAgIHVuc2lnbmVkIGNoaWxkRW5kTGluZSA9IHJvd3NT
cGFuLnJlc29sdmVkRmluYWxQb3NpdGlvbi5uZXh0KCkudG9JbnQoKTsKKyAgICAgICAgdW5zaWdu
ZWQgY2hpbGRFbmRMaW5lID0gcm93c1NwYW4ucmVzb2x2ZWRGaW5hbFBvc2l0aW9uLnRvSW50KCk7
CiAgICAgICAgIExheW91dFVuaXQgZW5kT2ZSb3cgPSBtX3Jvd1Bvc2l0aW9uc1tjaGlsZEVuZExp
bmVdOwogICAgICAgICAvLyBtX3Jvd1Bvc2l0aW9ucyBpbmNsdWRlIGd1dHRlcnMgc28gd2UgbmVl
ZCB0byBzdWJzdHJhY3QgdGhlbSB0byBnZXQgdGhlIGFjdHVhbCBlbmQgcG9zaXRpb24gZm9yIGEg
Z2l2ZW4KICAgICAgICAgLy8gcm93ICh0aGlzIGRvZXMgbm90IGhhdmUgdG8gYmUgZG9uZSBmb3Ig
dGhlIGxhc3QgdHJhY2sgYXMgdGhlcmUgYXJlIG5vIG1vcmUgbV9yb3dQb3NpdGlvbnMgYWZ0ZXIg
aXQpCkBAIC0xODcwLDcgKzE4NzAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6OnJvd0F4aXNP
ZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKSBjb25zdAogICAgICAgICByZXR1
cm4gc3RhcnRQb3NpdGlvbjsKICAgICBjYXNlIEdyaWRBeGlzRW5kOgogICAgIGNhc2UgR3JpZEF4
aXNDZW50ZXI6IHsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRFbmRMaW5lID0gY29sdW1uc1NwYW4u
cmVzb2x2ZWRGaW5hbFBvc2l0aW9uLm5leHQoKS50b0ludCgpOworICAgICAgICB1bnNpZ25lZCBj
aGlsZEVuZExpbmUgPSBjb2x1bW5zU3Bhbi5yZXNvbHZlZEZpbmFsUG9zaXRpb24udG9JbnQoKTsK
ICAgICAgICAgTGF5b3V0VW5pdCBlbmRPZkNvbHVtbiA9IG1fY29sdW1uUG9zaXRpb25zW2NoaWxk
RW5kTGluZV07CiAgICAgICAgIC8vIG1fY29sdW1uUG9zaXRpb25zIGluY2x1ZGUgZ3V0dGVycyBz
byB3ZSBuZWVkIHRvIHN1YnN0cmFjdCB0aGVtIHRvIGdldCB0aGUgYWN0dWFsIGVuZCBwb3NpdGlv
biBmb3IgYSBnaXZlbgogICAgICAgICAvLyBjb2x1bW4gKHRoaXMgZG9lcyBub3QgaGF2ZSB0byBi
ZSBkb25lIGZvciB0aGUgbGFzdCB0cmFjayBhcyB0aGVyZSBhcmUgbm8gbW9yZSBtX2NvbHVtblBv
c2l0aW9ucyBhZnRlciBpdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4
IDQxZmRkN2VkYzNmYTBmZmI3NjczOTRiOTc3N2JiNTIwZmIxNDU3NTMuLjQ1YjYzYzdjYTc5ZTlj
NzEyNDMwODFmMjIzNGQ5MGQ0N2UxNzIyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgY29tcHV0
ZVVzZWRCcmVhZHRoT2ZNYXhMZW5ndGgoY29uc3QgR3JpZExlbmd0aCYsIExheW91dFVuaXQgdXNl
ZEJyZWFkdGgsIExheW91dFVuaXQgbWF4U2l6ZSkgY29uc3Q7CiAgICAgdm9pZCByZXNvbHZlQ29u
dGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBH
cmlkU2l6aW5nRGF0YSYpOwogCi0gICAgdm9pZCBlbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhp
bXVtUm93SW5kZXgsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5JbmRleCk7CisgICAgdm9pZCBlbnN1
cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVt
blNpemUpOwogICAgIHZvaWQgaW5zZXJ0SXRlbUludG9HcmlkKFJlbmRlckJveCYsIGNvbnN0IEdy
aWRDb29yZGluYXRlJik7CiAgICAgdm9pZCBwbGFjZUl0ZW1zT25HcmlkKCk7CiAgICAgdm9pZCBw
b3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQ29vcmRpbmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRDb29yZGluYXRlLmgKaW5kZXggMzNmY2ViNTFlNDIyN2Vj
ODZjZDg1MjdjM2JhNjZhNDkwMzIzZmRhOS4uNzc4ZDJiMzc3Y2UwNmEzOGRlNDNkYTdlMGM5ZThk
MGE3NjJjZjY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRDb29yZGluYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRD
b29yZGluYXRlLmgKQEAgLTQ0LDE1ICs0NCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25z
dCB1bnNpZ25lZCBrR3JpZE1heFRyYWNrcyA9IDEwMDAwMDA7CiAKIC8vIEEgc3BhbiBpbiBhIHNp
bmdsZSBkaXJlY3Rpb24gKGVpdGhlciByb3dzIG9yIGNvbHVtbnMpLiBOb3RlIHRoYXQgfHJlc29s
dmVkSW5pdGlhbFBvc2l0aW9ufAotLy8gYW5kIHxyZXNvbHZlZEZpbmFsUG9zaXRpb258IGFyZSBn
cmlkIGFyZWFzJyBpbmRleGVzLCBOT1QgZ3JpZCBsaW5lcycuIEl0ZXJhdGluZyBvdmVyIHRoZQot
Ly8gc3BhbiBzaG91bGQgaW5jbHVkZSBib3RoIHxyZXNvbHZlZEluaXRpYWxQb3NpdGlvbnwgYW5k
IHxyZXNvbHZlZEZpbmFsUG9zaXRpb258IHRvIGJlIGNvcnJlY3QuCisvLyBhbmQgfHJlc29sdmVk
RmluYWxQb3NpdGlvbnwgYXJlIGdyaWQgbGluZXMnIGluZGV4ZXMuCisvLyBJdGVyYXRpbmcgb3Zl
ciB0aGUgc3BhbiBzaG91bGRuJ3QgaW5jbHVkZSB8cmVzb2x2ZWRGaW5hbFBvc2l0aW9ufCB0byBi
ZSBjb3JyZWN0LgogY2xhc3MgR3JpZFNwYW4gewogcHVibGljOgogICAgIEdyaWRTcGFuKGNvbnN0
IEdyaWRSZXNvbHZlZFBvc2l0aW9uJiByZXNvbHZlZEluaXRpYWxQb3NpdGlvbiwgY29uc3QgR3Jp
ZFJlc29sdmVkUG9zaXRpb24mIHJlc29sdmVkRmluYWxQb3NpdGlvbikKICAgICAgICAgOiByZXNv
bHZlZEluaXRpYWxQb3NpdGlvbihzdGQ6Om1pbihyZXNvbHZlZEluaXRpYWxQb3NpdGlvbi50b0lu
dCgpLCBrR3JpZE1heFRyYWNrcyAtIDEpKQogICAgICAgICAsIHJlc29sdmVkRmluYWxQb3NpdGlv
bihzdGQ6Om1pbihyZXNvbHZlZEZpbmFsUG9zaXRpb24udG9JbnQoKSwga0dyaWRNYXhUcmFja3Mp
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uIDw9IHJlc29s
dmVkRmluYWxQb3NpdGlvbik7CisgICAgICAgIEFTU0VSVChyZXNvbHZlZEluaXRpYWxQb3NpdGlv
biA8IHJlc29sdmVkRmluYWxQb3NpdGlvbik7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEdyaWRTcGFuJiBvKSBjb25zdApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAg
ICB1bnNpZ25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcmVz
b2x2ZWRGaW5hbFBvc2l0aW9uLnRvSW50KCkgLSByZXNvbHZlZEluaXRpYWxQb3NpdGlvbi50b0lu
dCgpICsgMTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVkRmluYWxQb3NpdGlvbi50b0ludCgpIC0g
cmVzb2x2ZWRJbml0aWFsUG9zaXRpb24udG9JbnQoKTsKICAgICB9CiAKICAgICBHcmlkUmVzb2x2
ZWRQb3NpdGlvbiByZXNvbHZlZEluaXRpYWxQb3NpdGlvbjsKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogCiAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBy
ZXNvbHZlZEZpbmFsUG9zaXRpb24ubmV4dCgpOworICAgICAgICByZXR1cm4gcmVzb2x2ZWRGaW5h
bFBvc2l0aW9uOwogICAgIH0KIH07CiAKQEAgLTg2LDggKzg2LDggQEAgY2xhc3MgR3JpZENvb3Jk
aW5hdGUgewogcHVibGljOgogICAgIC8vIEhhc2hNYXAgcmVxdWlyZXMgYSBkZWZhdWx0IGNvbnN0
dWN0b3IuCiAgICAgR3JpZENvb3JkaW5hdGUoKQotICAgICAgICA6IGNvbHVtbnMoMCwgMCkKLSAg
ICAgICAgLCByb3dzKDAsIDApCisgICAgICAgIDogY29sdW1ucygwLCAxKQorICAgICAgICAsIHJv
d3MoMCwgMSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZlZFBvc2l0aW9uLmNwcAppbmRleCAyMWFkZDBiMWIwOWZm
YmVmNzVmZjRhZGEyODU2ZWRlZTM5OWFhMTg2Li45YTBmNGRmNThlMzNkMjRlZDA3NzM0Yzg5M2I0
MWQ2ZjdjZTg1NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZFJlc29sdmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5jcHAKQEAgLTEwOSwxMSArMTA5LDYgQEAgc3RhdGlj
IHVuc2lnbmVkIGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlk
Q29udGFpbmVyU3R5bGUsIEcKICAgICByZXR1cm4gaXNDb2x1bW5TaWRlKHNpZGUpID8gR3JpZFJl
c29sdmVkUG9zaXRpb246OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGdyaWRDb250YWluZXJTdHls
ZSkgOiBHcmlkUmVzb2x2ZWRQb3NpdGlvbjo6ZXhwbGljaXRHcmlkUm93Q291bnQoZ3JpZENvbnRh
aW5lclN0eWxlKTsKIH0KIAotc3RhdGljIEdyaWRSZXNvbHZlZFBvc2l0aW9uIGFkanVzdEdyaWRQ
b3NpdGlvbkZvclJvd0VuZENvbHVtbkVuZFNpZGUodW5zaWduZWQgcmVzb2x2ZWRQb3NpdGlvbikK
LXsKLSAgICByZXR1cm4gcmVzb2x2ZWRQb3NpdGlvbiA/IEdyaWRSZXNvbHZlZFBvc2l0aW9uKHJl
c29sdmVkUG9zaXRpb24gLSAxKSA6IEdyaWRSZXNvbHZlZFBvc2l0aW9uKDApOwotfQotCiBzdGF0
aWMgR3JpZFJlc29sdmVkUG9zaXRpb24gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkZyb21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBjb25zdCBHcmlkUG9z
aXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgQVNTRVJUKCFw
b3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwpAQCAtMTM1LDI2ICsxMzAsMjEgQEAg
c3RhdGljIEdyaWRSZXNvbHZlZFBvc2l0aW9uIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25G
cm9tU3R5bGUoY29uc3QgUmVuZGVyU3QKICAgICByZXR1cm4gaXQtPnZhbHVlW25hbWVkR3JpZExp
bmVJbmRleF07CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgZmlyc3ROYW1lZEdyaWRMaW5l
QmVmb3JlUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24sIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4m
IGdyaWRMaW5lcykKK3N0YXRpYyBHcmlkU3BhbiByZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5h
bWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IEdyaWRSZXNv
bHZlZFBvc2l0aW9uJiByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIGNvbnN0IEdyaWRQb3NpdGlv
biYgcG9zaXRpb24sIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGdyaWRMaW5lcykKIHsKLSAgICAv
LyBUaGUgZ3JpZCBsaW5lIGluZXF1YWxpdHkgbmVlZHMgdG8gYmUgc3RyaWN0ICh3aGljaCBkb2Vz
bid0IG1hdGNoIHRoZSBhZnRlciAvIGVuZCBjYXNlKSBiZWNhdXNlIHxwb3NpdGlvbnwgaXMKLSAg
ICAvLyBhbHJlYWR5IGNvbnZlcnRlZCB0byBhbiBpbmRleCBpbiBvdXIgZ3JpZCByZXByZXNlbnRh
dGlvbiAoaWUgb25lIHdhcyByZW1vdmVkIGZyb20gdGhlIGdyaWQgbGluZSB0byBhY2NvdW50IGZv
cgotICAgIC8vIHRoZSBzaWRlKS4KLSAgICB1bnNpZ25lZCBmaXJzdExpbmVCZWZvcmVQb3NpdGlv
bkluZGV4ID0gMDsKLSAgICBhdXRvIGZpcnN0TGluZUJlZm9yZVBvc2l0aW9uID0gc3RkOjpsb3dl
cl9ib3VuZChncmlkTGluZXMuYmVnaW4oKSwgZ3JpZExpbmVzLmVuZCgpLCBwb3NpdGlvbik7Ci0g
ICAgaWYgKGZpcnN0TGluZUJlZm9yZVBvc2l0aW9uICE9IGdyaWRMaW5lcy5lbmQoKSkgewotICAg
ICAgICBpZiAoKmZpcnN0TGluZUJlZm9yZVBvc2l0aW9uID4gcG9zaXRpb24gJiYgZmlyc3RMaW5l
QmVmb3JlUG9zaXRpb24gIT0gZ3JpZExpbmVzLmJlZ2luKCkpCi0gICAgICAgICAgICAtLWZpcnN0
TGluZUJlZm9yZVBvc2l0aW9uOworICAgIGlmICghcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLnRv
SW50KCkpCisgICAgICAgIHJldHVybiBHcmlkU3BhbihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24s
IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbi5uZXh0KCkpOwogCisgICAgdW5zaWduZWQgZmlyc3RM
aW5lQmVmb3JlUG9zaXRpb25JbmRleCA9IDA7CisgICAgYXV0byBmaXJzdExpbmVCZWZvcmVQb3Np
dGlvbiA9IHN0ZDo6bG93ZXJfYm91bmQoZ3JpZExpbmVzLmJlZ2luKCksIGdyaWRMaW5lcy5lbmQo
KSwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLnRvSW50KCkpOworICAgIGlmIChmaXJzdExpbmVC
ZWZvcmVQb3NpdGlvbiAhPSBncmlkTGluZXMuZW5kKCkpCiAgICAgICAgIGZpcnN0TGluZUJlZm9y
ZVBvc2l0aW9uSW5kZXggPSBmaXJzdExpbmVCZWZvcmVQb3NpdGlvbiAtIGdyaWRMaW5lcy5iZWdp
bigpOwotICAgIH0KLSAgICByZXR1cm4gZmlyc3RMaW5lQmVmb3JlUG9zaXRpb25JbmRleDsKLX0K
IAotc3RhdGljIEdyaWRTcGFuIHJlc29sdmVSb3dTdGFydENvbHVtblN0YXJ0TmFtZWRHcmlkTGlu
ZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgR3JpZFJlc29sdmVkUG9zaXRp
b24mIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
biwgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgZ3JpZExpbmVzKQotewotICAgIHVuc2lnbmVkIGdy
aWRMaW5lSW5kZXggPSBzdGQ6Om1heDxpbnQ+KDAsIGZpcnN0TmFtZWRHcmlkTGluZUJlZm9yZVBv
c2l0aW9uKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbi50b0ludCgpLCBncmlkTGluZXMpIC0gcG9z
aXRpb24uc3BhblBvc2l0aW9uKCkgKyAxKTsKKyAgICB1bnNpZ25lZCBncmlkTGluZUluZGV4ID0g
c3RkOjptYXg8aW50PigwLCBmaXJzdExpbmVCZWZvcmVQb3NpdGlvbkluZGV4IC0gcG9zaXRpb24u
c3BhblBvc2l0aW9uKCkpOworCiAgICAgR3JpZFJlc29sdmVkUG9zaXRpb24gcmVzb2x2ZWRHcmlk
TGluZVBvc2l0aW9uID0gR3JpZFJlc29sdmVkUG9zaXRpb24oZ3JpZExpbmVzW2dyaWRMaW5lSW5k
ZXhdKTsKKyAgICBpZiAocmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uID49IHJlc29sdmVkT3Bwb3Np
dGVQb3NpdGlvbikKKyAgICAgICAgcmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uID0gcmVzb2x2ZWRP
cHBvc2l0ZVBvc2l0aW9uLnByZXYoKTsKICAgICByZXR1cm4gR3JpZFNwYW4oc3RkOjptaW48R3Jp
ZFJlc29sdmVkUG9zaXRpb24+KHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiwgcmVzb2x2ZWRPcHBv
c2l0ZVBvc2l0aW9uKSwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKIH0KIApAQCAtMTY3LDkg
KzE1Nyw5IEBAIHN0YXRpYyBHcmlkU3BhbiByZXNvbHZlUm93RW5kQ29sdW1uRW5kTmFtZWRHcmlk
TGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpCiAgICAgICAgIGZpcnN0TGluZUFmdGVy
T3Bwb3NpdGVQb3NpdGlvbkluZGV4ID0gZmlyc3RMaW5lQWZ0ZXJPcHBvc2l0ZVBvc2l0aW9uIC0g
Z3JpZExpbmVzLmJlZ2luKCk7CiAKICAgICB1bnNpZ25lZCBncmlkTGluZUluZGV4ID0gc3RkOjpt
aW48dW5zaWduZWQ+KGdyaWRMaW5lcy5zaXplKCkgLSAxLCBmaXJzdExpbmVBZnRlck9wcG9zaXRl
UG9zaXRpb25JbmRleCArIHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpIC0gMSk7Ci0gICAgR3JpZFJl
c29sdmVkUG9zaXRpb24gcmVzb2x2ZWRHcmlkTGluZVBvc2l0aW9uID0gYWRqdXN0R3JpZFBvc2l0
aW9uRm9yUm93RW5kQ29sdW1uRW5kU2lkZShncmlkTGluZXNbZ3JpZExpbmVJbmRleF0pOwotICAg
IGlmIChyZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24gPCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24p
Ci0gICAgICAgIHJlc29sdmVkR3JpZExpbmVQb3NpdGlvbiA9IHJlc29sdmVkT3Bwb3NpdGVQb3Np
dGlvbjsKKyAgICBHcmlkUmVzb2x2ZWRQb3NpdGlvbiByZXNvbHZlZEdyaWRMaW5lUG9zaXRpb24g
PSBncmlkTGluZXNbZ3JpZExpbmVJbmRleF07CisgICAgaWYgKHJlc29sdmVkR3JpZExpbmVQb3Np
dGlvbiA8PSByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pCisgICAgICAgIHJlc29sdmVkR3JpZExp
bmVQb3NpdGlvbiA9IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbi5uZXh0KCk7CiAgICAgcmV0dXJu
IEdyaWRTcGFuKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRHcmlkTGluZVBvc2l0
aW9uKTsKIH0KIApAQCAtMTg1LDggKzE3NSwxMSBAQCBzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZU5h
bWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlcgog
CiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbmFtZWQgZ3JpZCBsaW5lIG9mIHRoYXQgbmFtZSwgd2Ug
cmVzb2x2ZSB0aGUgcG9zaXRpb24gdG8gJ2F1dG8nICh3aGljaCBpcyBlcXVpdmFsZW50IHRvICdz
cGFuIDEnIGluIHRoaXMgY2FzZSkuCiAgICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcvQXJj
aGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDEzSnVuLzAzOTQuaHRtbC4KLSAgICBpZiAoaXQgPT0g
Z3JpZExpbmVzTmFtZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBHcmlkU3BhbihyZXNvbHZlZE9w
cG9zaXRlUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbik7CisgICAgaWYgKGl0ID09
IGdyaWRMaW5lc05hbWVzLmVuZCgpKSB7CisgICAgICAgIGlmIChpc1N0YXJ0U2lkZShzaWRlKSAm
JiByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24udG9JbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBH
cmlkU3BhbihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24ucHJldigpLCByZXNvbHZlZE9wcG9zaXRl
UG9zaXRpb24pOworICAgICAgICByZXR1cm4gR3JpZFNwYW4ocmVzb2x2ZWRPcHBvc2l0ZVBvc2l0
aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24ubmV4dCgpKTsKKyAgICB9CiAKICAgICBpZiAo
c2lkZSA9PSBSb3dTdGFydFNpZGUgfHwgc2lkZSA9PSBDb2x1bW5TdGFydFNpZGUpCiAgICAgICAg
IHJldHVybiByZXNvbHZlUm93U3RhcnRDb2x1bW5TdGFydE5hbWVkR3JpZExpbmVQb3NpdGlvbkFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcG9zaXRpb24s
IGl0LT52YWx1ZSk7CkBAIC0xOTYsOCArMTg5LDExIEBAIHN0YXRpYyBHcmlkU3BhbiByZXNvbHZl
TmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVy
CiAKIHN0YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9z
aXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgY29uc3QgR3JpZFJl
c29sdmVkUG9zaXRpb24mIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0
aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewotICAgIGlmIChwb3NpdGlv
bi5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIEdyaWRTcGFuKHJlc29sdmVkT3Bwb3NpdGVQb3Np
dGlvbiwgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uKTsKKyAgICBpZiAocG9zaXRpb24uaXNBdXRv
KCkpIHsKKyAgICAgICAgaWYgKGlzU3RhcnRTaWRlKHNpZGUpICYmIHJlc29sdmVkT3Bwb3NpdGVQ
b3NpdGlvbi50b0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIEdyaWRTcGFuKHJlc29sdmVkT3Bw
b3NpdGVQb3NpdGlvbi5wcmV2KCksIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbik7CisgICAgICAg
IHJldHVybiBHcmlkU3BhbihyZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24sIHJlc29sdmVkT3Bwb3Np
dGVQb3NpdGlvbi5uZXh0KCkpOworICAgIH0KIAogICAgIEFTU0VSVChwb3NpdGlvbi5pc1NwYW4o
KSk7CiAgICAgQVNTRVJUKHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpID4gMCk7CkBAIC0yMDksOCAr
MjA1LDExIEBAIHN0YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9z
aXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIGdyCiAKICAgICAvLyAnc3BhbiAxJyBpcyBj
b250YWluZWQgaW5zaWRlIGEgc2luZ2xlIGdyaWQgdHJhY2sgcmVnYXJkbGVzcyBvZiB0aGUgZGly
ZWN0aW9uLgogICAgIC8vIFRoYXQncyB3aHkgdGhlIENTUyBzcGFuIHZhbHVlIGlzIG9uZSBtb3Jl
IHRoYW4gdGhlIG9mZnNldCB3ZSBhcHBseS4KLSAgICB1bnNpZ25lZCBwb3NpdGlvbk9mZnNldCA9
IHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpIC0gMTsKKyAgICB1bnNpZ25lZCBwb3NpdGlvbk9mZnNl
dCA9IHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpOwogICAgIGlmIChpc1N0YXJ0U2lkZShzaWRlKSkg
eworICAgICAgICBpZiAoIXJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbi50b0ludCgpKQorICAgICAg
ICAgICAgcmV0dXJuIEdyaWRTcGFuKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcmVzb2x2ZWRP
cHBvc2l0ZVBvc2l0aW9uLm5leHQoKSk7CisKICAgICAgICAgdW5zaWduZWQgaW5pdGlhbFJlc29s
dmVkUG9zaXRpb24gPSBzdGQ6Om1heDxpbnQ+KDAsIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbi50
b0ludCgpIC0gcG9zaXRpb25PZmZzZXQpOwogICAgICAgICByZXR1cm4gR3JpZFNwYW4oaW5pdGlh
bFJlc29sdmVkUG9zaXRpb24sIHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbik7CiAgICAgfQpAQCAt
MjI1LDcgKzIyNCw3IEBAIEdyaWRTcGFuIEdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlR3Jp
ZFBvc2l0aW9uc0Zyb21BdXRvUGxhY2VtZW50UG9zaXRpb24oY29uCiAgICAgLy8gVGhpcyBtZXRo
b2Qgd2lsbCBvbmx5IGJlIHVzZWQgd2hlbiBib3RoIHBvc2l0aW9ucyBuZWVkIHRvIGJlIHJlc29s
dmVkIGFnYWluc3QgdGhlIG9wcG9zaXRlIG9uZS4KICAgICBBU1NFUlQodW5yZXNvbHZlZFNwYW4u
cmVxdWlyZXNBdXRvUGxhY2VtZW50KCkpOwogCi0gICAgR3JpZFJlc29sdmVkUG9zaXRpb24gcmVz
b2x2ZWRGaW5hbFBvc2l0aW9uID0gcmVzb2x2ZWRJbml0aWFsUG9zaXRpb247CisgICAgR3JpZFJl
c29sdmVkUG9zaXRpb24gcmVzb2x2ZWRGaW5hbFBvc2l0aW9uID0gcmVzb2x2ZWRJbml0aWFsUG9z
aXRpb24ubmV4dCgpOwogCiAgICAgaWYgKHVucmVzb2x2ZWRTcGFuLmluaXRpYWxQb3NpdGlvbigp
LmlzU3BhbigpKQogICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBv
c2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24s
IHVucmVzb2x2ZWRTcGFuLmluaXRpYWxQb3NpdGlvbigpLCB1bnJlc29sdmVkU3Bhbi5maW5hbFBv
c2l0aW9uU2lkZSgpKTsKQEAgLTMxNSw3ICszMTQsNyBAQCBHcmlkU3BhbiBHcmlkUmVzb2x2ZWRQ
b3NpdGlvbjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgR3JpZFVucmVzb2x2
ZQogICAgIGlmICh1bnJlc29sdmVkU3Bhbi5pbml0aWFsUG9zaXRpb24oKS5zaG91bGRCZVJlc29s
dmVkQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKSkgewogICAgICAgICAvLyBJbmZlciB0aGUgcG9z
aXRpb24gZnJvbSB0aGUgZmluYWwgcG9zaXRpb24gKCdhdXRvIC8gMScgb3IgJ3NwYW4gMiAvIDMn
IGNhc2UpLgogICAgICAgICBhdXRvIGZpbmFsUmVzb2x2ZWRQb3NpdGlvbiA9IHJlc29sdmVHcmlk
UG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCB1bnJlc29sdmVkU3Bhbi5maW5h
bFBvc2l0aW9uKCksIHVucmVzb2x2ZWRTcGFuLmZpbmFsUG9zaXRpb25TaWRlKCkpOwotICAgICAg
ICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRD
b250YWluZXJTdHlsZSwgZmluYWxSZXNvbHZlZFBvc2l0aW9uLnByZXYoKSwgdW5yZXNvbHZlZFNw
YW4uaW5pdGlhbFBvc2l0aW9uKCksIHVucmVzb2x2ZWRTcGFuLmluaXRpYWxQb3NpdGlvblNpZGUo
KSk7CisgICAgICAgIHJldHVybiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9z
aXRpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBmaW5hbFJlc29sdmVkUG9zaXRpb24sIHVucmVzb2x2
ZWRTcGFuLmluaXRpYWxQb3NpdGlvbigpLCB1bnJlc29sdmVkU3Bhbi5pbml0aWFsUG9zaXRpb25T
aWRlKCkpOwogICAgIH0KIAogICAgIGlmICh1bnJlc29sdmVkU3Bhbi5maW5hbFBvc2l0aW9uKCku
c2hvdWxkQmVSZXNvbHZlZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsKQEAgLTMyOSw4ICsz
MjgsMTAgQEAgR3JpZFNwYW4gR3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVHcmlkUG9zaXRp
b25zRnJvbVN0eWxlKGNvbnN0IEdyaWRVbnJlc29sdmUKIAogICAgIGlmIChyZXNvbHZlZEluaXRp
YWxQb3NpdGlvbiA+IHJlc29sdmVkRmluYWxQb3NpdGlvbikKICAgICAgICAgc3RkOjpzd2FwKHJl
c29sdmVkSW5pdGlhbFBvc2l0aW9uLCByZXNvbHZlZEZpbmFsUG9zaXRpb24pOworICAgIGVsc2Ug
aWYgKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uID09IHJlc29sdmVkRmluYWxQb3NpdGlvbikKKyAg
ICAgICAgcmVzb2x2ZWRGaW5hbFBvc2l0aW9uID0gcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24ubmV4
dCgpOwogCi0gICAgcmV0dXJuIEdyaWRTcGFuKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLCBzdGQ6
Om1heChyZXNvbHZlZEluaXRpYWxQb3NpdGlvbiwgcmVzb2x2ZWRGaW5hbFBvc2l0aW9uLnByZXYo
KSkpOworICAgIHJldHVybiBHcmlkU3BhbihyZXNvbHZlZEluaXRpYWxQb3NpdGlvbiwgc3RkOjpt
YXgocmVzb2x2ZWRJbml0aWFsUG9zaXRpb24sIHJlc29sdmVkRmluYWxQb3NpdGlvbikpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkUmVzb2x2ZWRQb3NpdGlvbi5oCmluZGV4IDhlNjk2MDUzYjY2NzRmMTg3
NDhlODQzYjkxOWIyY2IzZDg4ZTgxM2MuLjJiZWIyYjJmMTlkN2M1NTg2NjU5NGM5NDU2NmUzMmZj
OWY3NDQ3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Hcmlk
UmVzb2x2ZWRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9H
cmlkUmVzb2x2ZWRQb3NpdGlvbi5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgR3Jp
ZFBvc2l0aW9uU2lkZSBtX2ZpbmFsUG9zaXRpb25TaWRlOwogfTsKIAotLy8gVGhpcyBjbGFzcyBy
ZXByZXNlbnRzIGFuIGluZGV4IGludG8gb25lIG9mIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBncmlk
IGFycmF5LgorLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgbGluZSBpbmRleCBpbnRvIG9uZSBv
ZiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZ3JpZCBhcnJheS4KIC8vIFdyYXBzIGFuIHVuc2lnbmVk
IGludGVnZXIganVzdCBmb3IgdGhlIHB1cnBvc2Ugb2Yga25vd2luZyB3aGF0IHdlIG1hbmlwdWxh
dGUgaW4gdGhlIGdyaWQgY29kZS4KIGNsYXNzIEdyaWRSZXNvbHZlZFBvc2l0aW9uIHsKIHB1Ymxp
YzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>