<?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>134595</bug_id>
          
          <creation_ts>2014-07-03 09:03:51 -0700</creation_ts>
          <short_desc>Stores to PropertyTable use the Structure as the owner</short_desc>
          <delta_ts>2014-07-15 14:06:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1020267</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-03 09:03:51 -0700</bug_when>
    <thetext>Since PropertyTable is the object that does the marking of these references, it should be the owner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020291</commentid>
    <comment_count>1</comment_count>
      <attachid>234353</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-03 10:20:26 -0700</bug_when>
    <thetext>Created attachment 234353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020293</commentid>
    <comment_count>2</comment_count>
      <attachid>234353</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-03 10:24:41 -0700</bug_when>
    <thetext>Comment on attachment 234353
Patch

More logical, simpler slightly faster code, but what other benefit is there to having the correct owner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020295</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-03 10:31:05 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 234353 [details])
&gt; More logical, simpler slightly faster code, but what other benefit is there to having the correct owner?

It&apos;s a correctness issue for generational garbage collection. If the owner is the Structure instead of the PropertyTable, there&apos;s the possibility that the new value won&apos;t be visited during the next EdenCollection. Imagine the following situation:

Structure: old gen
PropertyTable: old gen
specificValue: young gen

In the current code, the Structure will be recorded in the remembered set as the object to visit during the next EdenCollection. When we visit it, the Structure will see that all of its children (including the PropertyTable) are already marked and return early. The specificValue in the PropertyTable will then not be marked, causing it to be prematurely collected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020300</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-03 10:40:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It&apos;s a correctness issue for generational garbage collection.

Could you create a stress test that demonstrates the bug? Maybe not worth the effort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020863</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-07 11:32:31 -0700</bug_when>
    <thetext>Typically (always?), a Structure is allocated after a specific value, so it may be impossible to trigger the scenario where the Structure is old and a specific value is new (in a test or in real life).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022553</commentid>
    <comment_count>6</comment_count>
      <attachid>234353</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-15 14:06:10 -0700</bug_when>
    <thetext>Comment on attachment 234353
Patch

Clearing flags on attachment: 234353

Committed r171115: &lt;http://trac.webkit.org/changeset/171115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022554</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-15 14:06:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234353</attachid>
            <date>2014-07-03 10:20:26 -0700</date>
            <delta_ts>2014-07-15 14:06:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134595-20140703102007.patch</filename>
            <type>text/plain</type>
            <size>19835</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwNzU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDE0LTA3LTAzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcmVzIHRvIFByb3BlcnR5VGFibGUgdXNlIHRoZSBTdHJ1Y3R1cmUgYXMgdGhl
IG93bmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzQ1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW5jZSBQcm9wZXJ0eVRhYmxlIGlzIHRoZSBvYmplY3QgdGhhdCBkb2VzIHRoZSBtYXJraW5nIG9m
IHRoZXNlIHJlZmVyZW5jZXMsIGl0IHNob3VsZCBiZSB0aGUgb3duZXIuCisKKyAgICAgICAgQWxz
byByZW1vdmVkIHNvbWUgdW51c2VkIHBhcmFtZXRlcnMgdG8gb3RoZXIgbWV0aG9kcyB0aGF0IGhp
c3RvcmljYWxseSB1c2VkIHRoZSBTdHJ1Y3R1cmUgYXMgdGhlIG93bmVyLgorCisgICAgICAgICog
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRFbnVtZXJhdGlvbkNhY2hlKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChKU0M6
OlByb3BlcnR5VGFibGU6OmNvcHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5j
cHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmNsb25lKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpk
ZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmF0
dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRvRGlj
dGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnByZXZlbnRFeHRl
bnNpb25zVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dGFrZVByb3BlcnR5
VGFibGVPckNsb25lSWZQaW5uZWQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om5vblByb3Bl
cnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFi
bGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmlu
Zyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWx1ZSk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZXRPYmpl
Y3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzZXRQcmV2aW91c0lE
KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpzZXRFbnVtZXJhdGlvbkNhY2hlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldFByZXZpb3VzSUQpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSk6
CisKIDIwMTQtMDctMDEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IERlYnVnZ2VyJ3MgYnJlYWtwb2ludCBsaXN0IHNob3VsZCBub3QgYmUgYSBWZWN0b3IuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oCShyZXZpc2lvbiAxNzA3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3
ICsxMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25D
YWNoZS5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURh
dGE6OnNldEVudW1lcmF0aW9uQ2FjaGUoVk0mIHZtLCBjb25zdCBTdHJ1Y3R1cmUqLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKiB2YWx1ZSkKKyAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0
YTo6c2V0RW51bWVyYXRpb25DYWNoZShWTSYgdm0sIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIHZh
bHVlKQogICAgIHsKICAgICAgICAgbV9lbnVtZXJhdGlvbkNhY2hlLnNldCh2bSwgdGhpcywgdmFs
dWUpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTcwNzUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1
LDcgKzIyNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpKTsKIAogICAgICAgICByZXN1bHQgPSBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBuZXdTdHJp
bmcucmVsZWFzZSgpKTsKLSAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2Jq
ZWN0VG9TdHJpbmdWYWx1ZSh2bSwgdGhpc09iamVjdCwgcmVzdWx0KTsKKyAgICAgICAgdGhpc09i
amVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZSh2bSwgcmVzdWx0KTsK
ICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCShyZXZpc2lvbiAxNzA3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsOCArMTYzLDggQEAg
cHVibGljOgogCiAgICAgLy8gQ29uc3RydWN0b3IgaXMgcGFzc2VkIGFuIGluaXRpYWwgY2FwYWNp
dHksIGEgUHJvcGVydHlUYWJsZSB0byBjb3B5LCBvciBib3RoLgogICAgIHN0YXRpYyBQcm9wZXJ0
eVRhYmxlKiBjcmVhdGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwotICAgIHN0YXRp
YyBQcm9wZXJ0eVRhYmxlKiBjbG9uZShWTSYsIEpTQ2VsbCogb3duZXIsIGNvbnN0IFByb3BlcnR5
VGFibGUmKTsKLSAgICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCBKU0NlbGwqIG93
bmVyLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKKyAg
ICBzdGF0aWMgUHJvcGVydHlUYWJsZSogY2xvbmUoVk0mLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7
CisgICAgc3RhdGljIFByb3BlcnR5VGFibGUqIGNsb25lKFZNJiwgdW5zaWduZWQgaW5pdGlhbENh
cGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CiAgICAgflByb3BlcnR5VGFibGUoKTsKIAog
ICAgIC8vIE9yZGVyZWQgaXRlcmF0aW9uIG1ldGhvZHMuCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVi
bGljOgogICAgIFByb3BlcnR5T2Zmc2V0IG5leHRPZmZzZXQoUHJvcGVydHlPZmZzZXQgaW5saW5l
Q2FwYWNpdHkpOwogCiAgICAgLy8gQ29weSB0aGlzIFByb3BlcnR5VGFibGUsIGVuc3VyaW5nIHRo
ZSBjb3B5IGhhcyBhdCBsZWFzdCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQuCi0gICAgUHJvcGVydHlU
YWJsZSogY29weShWTSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKKyAg
ICBQcm9wZXJ0eVRhYmxlKiBjb3B5KFZNJiwgdW5zaWduZWQgbmV3Q2FwYWNpdHkpOwogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHNpemVfdCBzaXplSW5NZW1vcnkoKTsKQEAgLTIxNCw4ICsyMTQsOCBA
QCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUHJvcGVydHlUYWJsZShWTSYsIHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSk7Ci0gICAgUHJvcGVydHlUYWJsZShWTSYsIEpTQ2VsbCosIGNvbnN0
IFByb3BlcnR5VGFibGUmKTsKLSAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgSlNDZWxsKiwgdW5zaWdu
ZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAgUHJvcGVydHlU
YWJsZShWTSYsIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKKyAgICBQcm9wZXJ0eVRhYmxlKFZNJiwg
dW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CiAKICAgICBQ
cm9wZXJ0eVRhYmxlKGNvbnN0IFByb3BlcnR5VGFibGUmKTsKICAgICAvLyBVc2VkIHRvIGluc2Vy
dCBhIHZhbHVlIGtub3duIG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZSB3ZSBrbm93
IGNhcGFjaXR5IHRvIGJlIGF2YWlsYWJsZS4KQEAgLTQ5OCwxNSArNDk4LDE1IEBAIGlubGluZSBQ
cm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpuZXgKICAgICByZXR1cm4gb2Zmc2V0Rm9yUHJv
cGVydHlOdW1iZXIoc2l6ZSgpLCBpbmxpbmVDYXBhY2l0eSk7CiB9CiAKLWlubGluZSBQcm9wZXJ0
eVRhYmxlKiBQcm9wZXJ0eVRhYmxlOjpjb3B5KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgdW5zaWdu
ZWQgbmV3Q2FwYWNpdHkpCitpbmxpbmUgUHJvcGVydHlUYWJsZSogUHJvcGVydHlUYWJsZTo6Y29w
eShWTSYgdm0sIHVuc2lnbmVkIG5ld0NhcGFjaXR5KQogewogICAgIEFTU0VSVChuZXdDYXBhY2l0
eSA+PSBtX2tleUNvdW50KTsKIAogICAgIC8vIEZhc3QgY2FzZTsgaWYgdGhlIG5ldyB0YWJsZSB3
aWxsIGJlIHRoZSBzYW1lIG1faW5kZXhTaXplIGFzIHRoaXMgb25lLCB3ZSBjYW4gbWVtY3B5IGl0
LAogICAgIC8vIHNhdmUgcmVoYXNoaW5nIGFsbCBrZXlzLgogICAgIGlmIChzaXplRm9yQ2FwYWNp
dHkobmV3Q2FwYWNpdHkpID09IG1faW5kZXhTaXplKQotICAgICAgICByZXR1cm4gUHJvcGVydHlU
YWJsZTo6Y2xvbmUodm0sIG93bmVyLCAqdGhpcyk7Ci0gICAgcmV0dXJuIFByb3BlcnR5VGFibGU6
OmNsb25lKHZtLCBvd25lciwgbmV3Q2FwYWNpdHksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIFBy
b3BlcnR5VGFibGU6OmNsb25lKHZtLCAqdGhpcyk7CisgICAgcmV0dXJuIFByb3BlcnR5VGFibGU6
OmNsb25lKHZtLCBuZXdDYXBhY2l0eSwgKnRoaXMpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAJ
KHJldmlzaW9uIDE3MDc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNiArNDQsMTYgQEAgUHJvcGVydHlU
YWJsZSogUHJvcGVydHlUYWJsZTo6Y3JlYXRlKFZNJgogICAgIHJldHVybiB0YWJsZTsKIH0KIAot
UHJvcGVydHlUYWJsZSogUHJvcGVydHlUYWJsZTo6Y2xvbmUoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKK1Byb3BlcnR5VGFibGUqIFByb3BlcnR5VGFi
bGU6OmNsb25lKFZNJiB2bSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiB7Ci0gICAgUHJv
cGVydHlUYWJsZSogdGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9wZXJ0eVRh
YmxlPih2bS5oZWFwKSkgUHJvcGVydHlUYWJsZSh2bSwgb3duZXIsIG90aGVyKTsKKyAgICBQcm9w
ZXJ0eVRhYmxlKiB0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5VGFi
bGU+KHZtLmhlYXApKSBQcm9wZXJ0eVRhYmxlKHZtLCBvdGhlcik7CiAgICAgdGFibGUtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gdGFibGU7CiB9CiAKLVByb3BlcnR5VGFibGUqIFBy
b3BlcnR5VGFibGU6OmNsb25lKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlh
bENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKK1Byb3BlcnR5VGFibGUqIFBy
b3BlcnR5VGFibGU6OmNsb25lKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25z
dCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKIHsKLSAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3BlcnR5VGFibGU+KHZtLmhlYXApKSBQcm9wZXJ0
eVRhYmxlKHZtLCBvd25lciwgaW5pdGlhbENhcGFjaXR5LCBvdGhlcik7CisgICAgUHJvcGVydHlU
YWJsZSogdGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxQcm9wZXJ0eVRhYmxlPih2
bS5oZWFwKSkgUHJvcGVydHlUYWJsZSh2bSwgaW5pdGlhbENhcGFjaXR5LCBvdGhlcik7CiAgICAg
dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gdGFibGU7CiB9CkBAIC02OSw3
ICs2OSw3IEBAIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnMKICAgICBB
U1NFUlQoaXNQb3dlck9mMihtX2luZGV4U2l6ZSkpOwogfQogCi1Qcm9wZXJ0eVRhYmxlOjpQcm9w
ZXJ0eVRhYmxlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3Ro
ZXIpCitQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgY29uc3QgUHJvcGVydHlU
YWJsZSYgb3RoZXIpCiAgICAgOiBKU0NlbGwodm0sIHZtLnByb3BlcnR5VGFibGVTdHJ1Y3R1cmUu
Z2V0KCkpCiAgICAgLCBtX2luZGV4U2l6ZShvdGhlci5tX2luZGV4U2l6ZSkKICAgICAsIG1faW5k
ZXhNYXNrKG90aGVyLm1faW5kZXhNYXNrKQpAQCAtODQsNyArODQsNyBAQCBQcm9wZXJ0eVRhYmxl
OjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgSlNDCiAgICAgaXRlcmF0b3IgZW5kID0gdGhpcy0+ZW5k
KCk7CiAgICAgZm9yIChpdGVyYXRvciBpdGVyID0gYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgewogICAgICAgICBpdGVyLT5rZXktPnJlZigpOwotICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcihvd25lciwgaXRlci0+c3BlY2lmaWNWYWx1ZS5nZXQoKSk7CisgICAgICAgIHZtLmhlYXAu
d3JpdGVCYXJyaWVyKHRoaXMsIGl0ZXItPnNwZWNpZmljVmFsdWUuZ2V0KCkpOwogICAgIH0KIAog
ICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgpAQCAtOTMsNyArOTMsNyBA
QCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgSlNDCiAgICAgICAgIG1fZGVs
ZXRlZE9mZnNldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Pigqb3RoZXJE
ZWxldGVkT2Zmc2V0cykpOwogfQogCi1Qcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0
eVRhYmxlJiBvdGhlcikKK1Byb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNp
Z25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgIDog
SlNDZWxsKHZtLCB2bS5wcm9wZXJ0eVRhYmxlU3RydWN0dXJlLmdldCgpKQogICAgICwgbV9pbmRl
eFNpemUoc2l6ZUZvckNhcGFjaXR5KGluaXRpYWxDYXBhY2l0eSkpCiAgICAgLCBtX2luZGV4TWFz
ayhtX2luZGV4U2l6ZSAtIDEpCkBAIC0xMDksNyArMTA5LDcgQEAgUHJvcGVydHlUYWJsZTo6UHJv
cGVydHlUYWJsZShWTSYgdm0sIEpTQwogICAgICAgICBBU1NFUlQoY2FuSW5zZXJ0KCkpOwogICAg
ICAgICByZWluc2VydCgqaXRlcik7CiAgICAgICAgIGl0ZXItPmtleS0+cmVmKCk7Ci0gICAgICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKG93bmVyLCBpdGVyLT5zcGVjaWZpY1ZhbHVlLmdldCgpKTsK
KyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgaXRlci0+c3BlY2lmaWNWYWx1ZS5n
ZXQoKSk7CiAgICAgfQogCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3Iu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJl
dmlzaW9uIDE3MDc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVj
dHVyZShWTSYgdm0sIFN0cnVjdHVyZSogCiAgICAgQVNTRVJUKCFwcmV2aW91cy0+dHlwZUluZm8o
KS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpOwogICAgIGlmIChwcmV2aW91cy0+bV9oYXNSYXJlRGF0
YSAmJiBwcmV2aW91cy0+cmFyZURhdGEoKS0+bmVlZHNDbG9uaW5nKCkpCiAgICAgICAgIGNsb25l
UmFyZURhdGFGcm9tKHZtLCBwcmV2aW91cyk7Ci0gICAgc2V0UHJldmlvdXNJRCh2bSwgdGhpcywg
cHJldmlvdXMpOworICAgIHNldFByZXZpb3VzSUQodm0sIHByZXZpb3VzKTsKIAogICAgIHByZXZp
b3VzLT5ub3RpZnlUcmFuc2l0aW9uRnJvbVRoaXNTdHJ1Y3R1cmUoKTsKICAgICBpZiAocHJldmlv
dXMtPm1fZ2xvYmFsT2JqZWN0KQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgU3RydWN0dXJlOjpt
YXRlcmlhbGl6ZVByb3BlcnR5TWFwKFYKICAgICBmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVy
aWFsaXphdGlvbihzdHJ1Y3R1cmVzLCBzdHJ1Y3R1cmUsIHRhYmxlKTsKICAgICAKICAgICBpZiAo
dGFibGUpIHsKLSAgICAgICAgdGFibGUgPSB0YWJsZS0+Y29weSh2bSwgc3RydWN0dXJlLCBudW1i
ZXJPZlNsb3RzRm9yTGFzdE9mZnNldChtX29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOworICAg
ICAgICB0YWJsZSA9IHRhYmxlLT5jb3B5KHZtLCBudW1iZXJPZlNsb3RzRm9yTGFzdE9mZnNldCht
X29mZnNldCwgbV9pbmxpbmVDYXBhY2l0eSkpOwogICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay51
bmxvY2soKTsKICAgICB9CiAgICAgCkBAIC00NTAsNyArNDUwLDcgQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgIHRyYW5zaXRpb24tPm1fbmFtZUluUHJldmlv
dXMgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAgdHJhbnNpdGlvbi0+bV9hdHRyaWJ1dGVzSW5Q
cmV2aW91cyA9IGF0dHJpYnV0ZXM7CiAgICAgdHJhbnNpdGlvbi0+bV9zcGVjaWZpY1ZhbHVlSW5Q
cmV2aW91cy5zZXRNYXlCZU51bGwodm0sIHRyYW5zaXRpb24sIHNwZWNpZmljVmFsdWUpOwotICAg
IHRyYW5zaXRpb24tPnByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVy
ZS0+dGFrZVByb3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQodm0sIHRyYW5zaXRpb24pKTsKKyAg
ICB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1
cmUtPnRha2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKHZtKSk7CiAgICAgdHJhbnNpdGlv
bi0+bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPm1fb2Zmc2V0OwogCiAgICAgb2Zmc2V0ID0gdHJhbnNp
dGlvbi0+cHV0U3BlY2lmaWNWYWx1ZSh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY1ZhbHVlKTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y2hh
bmdlUHJvdG90eXBlVHJhCiAKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgc3Ry
dWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nhcnkodm0sIGRlZmVyR0MpOwot
ICAgIHRyYW5zaXRpb24tPnByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRyYW5zaXRpb24sIHN0cnVj
dHVyZS0+Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKHZtLCB0cmFuc2l0aW9uKSk7CisgICAg
dHJhbnNpdGlvbi0+cHJvcGVydHlUYWJsZSgpLnNldCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJl
LT5jb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcodm0pKTsKICAgICB0cmFuc2l0aW9uLT5tX29m
ZnNldCA9IHN0cnVjdHVyZS0+bV9vZmZzZXQ7CiAgICAgdHJhbnNpdGlvbi0+cGluKCk7CiAKQEAg
LTUwMiw3ICs1MDIsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25U
CiAKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgc3RydWN0dXJlLT5tYXRlcmlh
bGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nhcnkodm0sIGRlZmVyR0MpOwotICAgIHRyYW5zaXRpb24t
PnByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+Y29weVByb3Bl
cnR5VGFibGVGb3JQaW5uaW5nKHZtLCB0cmFuc2l0aW9uKSk7CisgICAgdHJhbnNpdGlvbi0+cHJv
cGVydHlUYWJsZSgpLnNldCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5jb3B5UHJvcGVydHlU
YWJsZUZvclBpbm5pbmcodm0pKTsKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IHN0cnVjdHVy
ZS0+bV9vZmZzZXQ7CiAgICAgdHJhbnNpdGlvbi0+cGluKCk7CiAKQEAgLTUyNCw3ICs1MjQsNyBA
QCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhCiAgICAgICAgIFN0cnVj
dHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKIAogICAgICAgICBzdHJ1
Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSh2bSwgZGVmZXJHQyk7Ci0g
ICAgICAgIHRyYW5zaXRpb24tPnByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRyYW5zaXRpb24sIHN0
cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKHZtLCB0cmFuc2l0aW9uKSk7Cisg
ICAgICAgIHRyYW5zaXRpb24tPnByb3BlcnR5VGFibGUoKS5zZXQodm0sIHRyYW5zaXRpb24sIHN0
cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKHZtKSk7CiAgICAgICAgIHRyYW5z
aXRpb24tPm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsKICAgICAgICAgdHJhbnNpdGlv
bi0+cGluKCk7CiAgICAgICAgIApAQCAtNTQ4LDcgKzU0OCw3IEBAIFN0cnVjdHVyZSogU3RydWN0
dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2kKIAogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsK
ICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSh2bSwgZGVm
ZXJHQyk7Ci0gICAgdHJhbnNpdGlvbi0+cHJvcGVydHlUYWJsZSgpLnNldCh2bSwgdHJhbnNpdGlv
biwgc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcodm0sIHRyYW5zaXRpb24p
KTsKKyAgICB0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KHZtLCB0cmFuc2l0aW9uLCBz
dHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyh2bSkpOwogICAgIHRyYW5zaXRp
b24tPm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsKICAgICB0cmFuc2l0aW9uLT5tX2Rp
Y3Rpb25hcnlLaW5kID0ga2luZDsKICAgICB0cmFuc2l0aW9uLT5waW4oKTsKQEAgLTYxMSw3ICs2
MTEsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNUCiAKICAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwSWZOZWNlc3Nhcnkodm0sIGRlZmVyR0MpOwotICAgIHRyYW5zaXRpb24tPnByb3BlcnR5
VGFibGUoKS5zZXQodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGVG
b3JQaW5uaW5nKHZtLCB0cmFuc2l0aW9uKSk7CisgICAgdHJhbnNpdGlvbi0+cHJvcGVydHlUYWJs
ZSgpLnNldCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZUZvclBp
bm5pbmcodm0pKTsKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IHN0cnVjdHVyZS0+bV9vZmZz
ZXQ7CiAgICAgdHJhbnNpdGlvbi0+bV9wcmV2ZW50RXh0ZW5zaW9ucyA9IHRydWU7CiAgICAgdHJh
bnNpdGlvbi0+cGluKCk7CkBAIC02MjAsMTMgKzYyMCwxMyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVy
ZTo6cHJldmVudEV4dGVuc2lvbnNUCiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVByb3Bl
cnR5VGFibGUqIFN0cnVjdHVyZTo6dGFrZVByb3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQoVk0m
IHZtLCBTdHJ1Y3R1cmUqIG93bmVyKQorUHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjp0YWtlUHJv
cGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZChWTSYgdm0pCiB7CiAgICAgRGVmZXJHQyBkZWZlckdD
KHZtLmhlYXApOwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeUZvclBpbm5p
bmcodm0sIGRlZmVyR0MpOwogICAgIAogICAgIGlmIChtX2lzUGlubmVkUHJvcGVydHlUYWJsZSkK
LSAgICAgICAgcmV0dXJuIHByb3BlcnR5VGFibGUoKS0+Y29weSh2bSwgb3duZXIsIHByb3BlcnR5
VGFibGUoKS0+c2l6ZSgpICsgMSk7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eVRhYmxlKCktPmNv
cHkodm0sIHByb3BlcnR5VGFibGUoKS0+c2l6ZSgpICsgMSk7CiAgICAgCiAgICAgLy8gSG9sZCB0
aGUgbG9jayB3aGlsZSBzdGVhbGluZyB0aGUgdGFibGUgLSBzbyB0aGF0IGdldENvbmN1cnJlbnRs
eSgpIG9uIGFub3RoZXIgdGhyZWFkCiAgICAgLy8gd2lsbCBlaXRoZXIgaGF2ZSB0byBieXBhc3Mg
dGhpcyBzdHJ1Y3R1cmUsIG9yIHdpbGwgZ2V0IHRvIHVzZSB0aGUgcHJvcGVydHkgdGFibGUKQEAg
LTY2Miw3ICs2NjIsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0
CiAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAg
IHRyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1dGVzOwogICAgIHRy
YW5zaXRpb24tPm1fYmxvYi5zZXRJbmRleGluZ1R5cGUoaW5kZXhpbmdUeXBlKTsKLSAgICB0cmFu
c2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPnRh
a2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKHZtLCB0cmFuc2l0aW9uKSk7CisgICAgdHJh
bnNpdGlvbi0+cHJvcGVydHlUYWJsZSgpLnNldCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT50
YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZCh2bSkpOwogICAgIHRyYW5zaXRpb24tPm1f
b2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsKICAgICBjaGVja09mZnNldCh0cmFuc2l0aW9u
LT5tX29mZnNldCwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgCkBAIC04NTIs
MTcgKzg1MiwxNyBAQCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OmNoZWNrQ29uc2lzdGVuY3koCiAK
ICNlbmRpZgogCi1Qcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlKFZN
JiB2bSwgU3RydWN0dXJlKiBvd25lcikKK1Byb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVBy
b3BlcnR5VGFibGUoVk0mIHZtKQogewogICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUodm0sIG93bmVyLCAq
cHJvcGVydHlUYWJsZSgpLmdldCgpKTsKKyAgICByZXR1cm4gUHJvcGVydHlUYWJsZTo6Y2xvbmUo
dm0sICpwcm9wZXJ0eVRhYmxlKCkuZ2V0KCkpOwogfQogCi1Qcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1
cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhWTSYgdm0sIFN0cnVjdHVyZSogb3duZXIp
CitQcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhW
TSYgdm0pCiB7CiAgICAgaWYgKHByb3BlcnR5VGFibGUoKSkKLSAgICAgICAgcmV0dXJuIFByb3Bl
cnR5VGFibGU6OmNsb25lKHZtLCBvd25lciwgKnByb3BlcnR5VGFibGUoKS5nZXQoKSk7CisgICAg
ICAgIHJldHVybiBQcm9wZXJ0eVRhYmxlOjpjbG9uZSh2bSwgKnByb3BlcnR5VGFibGUoKS5nZXQo
KSk7CiAgICAgcmV0dXJuIFByb3BlcnR5VGFibGU6OmNyZWF0ZSh2bSwgbnVtYmVyT2ZTbG90c0Zv
ckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKTsKIH0KIApAQCAtOTQ0LDcg
Kzk0NCw3IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cHV0U3BlY2lmaWNWYWwKIAogICAg
IFByb3BlcnR5T2Zmc2V0IG5ld09mZnNldCA9IHByb3BlcnR5VGFibGUoKS0+bmV4dE9mZnNldCht
X2lubGluZUNhcGFjaXR5KTsKIAotICAgIHByb3BlcnR5VGFibGUoKS0+YWRkKFByb3BlcnR5TWFw
RW50cnkodm0sIHRoaXMsIHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVl
KSwgbV9vZmZzZXQsIFByb3BlcnR5VGFibGU6OlByb3BlcnR5T2Zmc2V0TWF5Q2hhbmdlKTsKKyAg
ICBwcm9wZXJ0eVRhYmxlKCktPmFkZChQcm9wZXJ0eU1hcEVudHJ5KHZtLCBwcm9wZXJ0eVRhYmxl
KCkuZ2V0KCksIHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSwgbV9v
ZmZzZXQsIFByb3BlcnR5VGFibGU6OlByb3BlcnR5T2Zmc2V0TWF5Q2hhbmdlKTsKICAgICAKICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgcmV0dXJuIG5ld09mZnNldDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNzA3NTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzE1LDExICszMTUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmFyZURhdGEo
KS0+b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOwogICAgIH0KIAotICAgIHZvaWQgc2V0T2JqZWN0VG9T
dHJpbmdWYWx1ZShWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTU3RyaW5nKiB2YWx1ZSkK
KyAgICB2b2lkIHNldE9iamVjdFRvU3RyaW5nVmFsdWUoVk0mIHZtLCBKU1N0cmluZyogdmFsdWUp
CiAgICAgewogICAgICAgICBpZiAoIW1faGFzUmFyZURhdGEpCiAgICAgICAgICAgICBhbGxvY2F0
ZVJhcmVEYXRhKHZtKTsKLSAgICAgICAgcmFyZURhdGEoKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1
ZSh2bSwgb3duZXIsIHZhbHVlKTsKKyAgICAgICAgcmFyZURhdGEoKS0+c2V0T2JqZWN0VG9TdHJp
bmdWYWx1ZSh2bSwgdmFsdWUpOwogICAgIH0KIAogICAgIGJvb2wgc3RhdGljRnVuY3Rpb25zUmVp
ZmllZCgpCkBAIC00MjksOSArNDI5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3BlY2lmeUFs
bEZ1bmN0aW9ucyhWTSYpOwogCiAgICAgV3JpdGVCYXJyaWVyPFByb3BlcnR5VGFibGU+JiBwcm9w
ZXJ0eVRhYmxlKCk7Ci0gICAgUHJvcGVydHlUYWJsZSogdGFrZVByb3BlcnR5VGFibGVPckNsb25l
SWZQaW5uZWQoVk0mLCBTdHJ1Y3R1cmUqIG93bmVyKTsKLSAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5
UHJvcGVydHlUYWJsZShWTSYsIFN0cnVjdHVyZSogb3duZXIpOwotICAgIFByb3BlcnR5VGFibGUq
IGNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhWTSYsIFN0cnVjdHVyZSogb3duZXIpOworICAg
IFByb3BlcnR5VGFibGUqIHRha2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKFZNJik7Cisg
ICAgUHJvcGVydHlUYWJsZSogY29weVByb3BlcnR5VGFibGUoVk0mKTsKKyAgICBQcm9wZXJ0eVRh
YmxlKiBjb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmcoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoVk0mKTsKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KFZNJiB2bSwgRGVmZXJHQyYp
CiAgICAgewpAQCAtNDYxLDEyICs0NjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1hdGVy
aWFsaXplUHJvcGVydHlNYXAodm0pOwogICAgIH0KIAotICAgIHZvaWQgc2V0UHJldmlvdXNJRChW
TSYgdm0sIFN0cnVjdHVyZSogdHJhbnNpdGlvbiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
dm9pZCBzZXRQcmV2aW91c0lEKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewog
ICAgICAgICBpZiAobV9oYXNSYXJlRGF0YSkKLSAgICAgICAgICAgIHJhcmVEYXRhKCktPnNldFBy
ZXZpb3VzSUQodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZSk7CisgICAgICAgICAgICByYXJlRGF0
YSgpLT5zZXRQcmV2aW91c0lEKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3ByZXZpb3VzT3JSYXJlRGF0YS5zZXQodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZSk7
CisgICAgICAgICAgICBtX3ByZXZpb3VzT3JSYXJlRGF0YS5zZXQodm0sIHRoaXMsIHN0cnVjdHVy
ZSk7CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclByZXZpb3VzSUQoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24g
MTcwNzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgaW5saW5lIHZvaWQgU3RydWN0
dXJlOjpzZXRFbnVtZXJhdGlvbkNhYwogICAgIEFTU0VSVCghaXNEaWN0aW9uYXJ5KCkpOwogICAg
IGlmICghbV9oYXNSYXJlRGF0YSkKICAgICAgICAgYWxsb2NhdGVSYXJlRGF0YSh2bSk7Ci0gICAg
cmFyZURhdGEoKS0+c2V0RW51bWVyYXRpb25DYWNoZSh2bSwgdGhpcywgZW51bWVyYXRpb25DYWNo
ZSk7CisgICAgcmFyZURhdGEoKS0+c2V0RW51bWVyYXRpb25DYWNoZSh2bSwgZW51bWVyYXRpb25D
YWNoZSk7CiB9CiAKIGlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBTdHJ1Y3R1cmU6OmVu
dW1lcmF0aW9uQ2FjaGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZpc2lvbiAxNzA3NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSwxNCArNDksMTQgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNDbG9uaW5nKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0UHJldmlvdXNJRChWTSYsIFN0cnVjdHVyZSogdHJhbnNpdGlvbiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBzZXRQcmV2aW91c0lEKFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9p
ZCBjbGVhclByZXZpb3VzSUQoKTsKIAogICAgIEpTU3RyaW5nKiBvYmplY3RUb1N0cmluZ1ZhbHVl
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKFZNJiwgY29uc3QgSlND
ZWxsKiBvd25lciwgSlNTdHJpbmcqIHZhbHVlKTsKKyAgICB2b2lkIHNldE9iamVjdFRvU3RyaW5n
VmFsdWUoVk0mLCBKU1N0cmluZyogdmFsdWUpOwogCiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogZW51bWVyYXRpb25DYWNoZSgpOwotICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShWTSYs
IGNvbnN0IFN0cnVjdHVyZSogb3duZXIsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIHZhbHVlKTsK
KyAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoVk0mLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiB2YWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGlu
ZXMuaAkocmV2aXNpb24gMTcwNzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcg
QEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlUmFyZURhdGE6OnByZQogICAgIHJldHVybiBt
X3ByZXZpb3VzLmdldCgpOwogfQogCi1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0
UHJldmlvdXNJRChWTSYgdm0sIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoraW5s
aW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldFByZXZpb3VzSUQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBtX3ByZXZpb3VzLnNldCh2bSwgdGhpcywgc3RydWN0dXJl
KTsKIH0KQEAgLTUwLDcgKzUwLDcgQEAgaW5saW5lIEpTU3RyaW5nKiBTdHJ1Y3R1cmVSYXJlRGF0
YTo6b2JqZQogICAgIHJldHVybiBtX29iamVjdFRvU3RyaW5nVmFsdWUuZ2V0KCk7CiB9CiAKLWlu
bGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKFZNJiB2
bSwgY29uc3QgSlNDZWxsKiwgSlNTdHJpbmcqIHZhbHVlKQoraW5saW5lIHZvaWQgU3RydWN0dXJl
UmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoVk0mIHZtLCBKU1N0cmluZyogdmFsdWUp
CiB7CiAgICAgbV9vYmplY3RUb1N0cmluZ1ZhbHVlLnNldCh2bSwgdGhpcywgdmFsdWUpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>