<?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>74423</bug_id>
          
          <creation_ts>2011-12-13 11:00:10 -0800</creation_ts>
          <short_desc>[MutationObservers] Avoid allocations if no observers are present</short_desc>
          <delta_ts>2019-05-02 16:17:34 -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>DOM</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>
          
          <blocked>68729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rafael Weinstein">rafaelw</reporter>
          <assigned_to name="Rafael Weinstein">rafaelw</assigned_to>
          <cc>adamk</cc>
    
    <cc>akkaran046</cc>
    
    <cc>macpherson</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>520190</commentid>
    <comment_count>0</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-12-13 11:00:10 -0800</bug_when>
    <thetext>In order to minimize perf impact when there are no mutation observers, the mutation observers dispatch mechanism should avoid the following if it can be quickly determined that no possible observers are present:

-creating the mutation record
-creating the mutation record interest group, which
  -stack allocates a hashmap of observers (which may turn out to be empty)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520194</commentid>
    <comment_count>1</comment_count>
      <attachid>119043</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-12-13 11:07:20 -0800</bug_when>
    <thetext>Created attachment 119043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520241</commentid>
    <comment_count>2</comment_count>
      <attachid>119043</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-13 11:42:53 -0800</bug_when>
    <thetext>Comment on attachment 119043
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Reviewed by NOBODY (OOPS!).

Not sure if this&apos;ll be a problem, but I think this is supposed to come before the detailed changelog description.

&gt; Source/WebCore/dom/CharacterData.cpp:194
&gt;      OwnPtr&lt;MutationObserverInterestGroup&gt; mutationRecipients = MutationObserverInterestGroup::createForCharacterDataMutation(this);

This (and all the other similar lines) can be collapsed into the if statement.

&gt; Source/WebCore/dom/ChildListMutationScope.cpp:247
&gt; +        m_accumulations.set(target, nullptr);

As pointed out by Darin Adler in a recent review, we could skip this step, or only run it if !NDEBUG, as it&apos;s only used by assertions.  Instead, we&apos;d just use the non-presence of the Accumulator as a signal that we don&apos;t need to do anything.

&gt; Source/WebCore/dom/Element.cpp:187
&gt; +    if (mutationRecipients)

Collapse into if statement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520252</commentid>
    <comment_count>3</comment_count>
      <attachid>119043</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-12-13 11:46:55 -0800</bug_when>
    <thetext>Comment on attachment 119043
Patch

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

Feel free to committ after addressing Adam&apos;s and my feedback

&gt; Source/WebCore/dom/WebKitMutationObserver.cpp:167
&gt; +    return createIfNeeded(target, WebKitMutationObserver::ChildList, nullAtom, 0 /* oldValueFlag */);

The typical webkit way of doing this is to create a local oldValueFlag variable instead of adding a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520391</commentid>
    <comment_count>4</comment_count>
      <attachid>119043</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-12-13 14:59:05 -0800</bug_when>
    <thetext>Comment on attachment 119043
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; Not sure if this&apos;ll be a problem, but I think this is supposed to come before the detailed changelog description.

done

&gt;&gt; Source/WebCore/dom/CharacterData.cpp:194
&gt;&gt;      OwnPtr&lt;MutationObserverInterestGroup&gt; mutationRecipients = MutationObserverInterestGroup::createForCharacterDataMutation(this);
&gt; 
&gt; This (and all the other similar lines) can be collapsed into the if statement.

done

&gt;&gt; Source/WebCore/dom/Element.cpp:187
&gt;&gt; +    if (mutationRecipients)
&gt; 
&gt; Collapse into if statement

done

&gt;&gt; Source/WebCore/dom/WebKitMutationObserver.cpp:167
&gt;&gt; +    return createIfNeeded(target, WebKitMutationObserver::ChildList, nullAtom, 0 /* oldValueFlag */);
&gt; 
&gt; The typical webkit way of doing this is to create a local oldValueFlag variable instead of adding a comment.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520393</commentid>
    <comment_count>5</comment_count>
      <attachid>119088</attachid>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-12-13 14:59:35 -0800</bug_when>
    <thetext>Created attachment 119088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520493</commentid>
    <comment_count>6</comment_count>
      <attachid>119088</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-13 17:03:07 -0800</bug_when>
    <thetext>Comment on attachment 119088
Patch

Clearing flags on attachment: 119088

Committed r102721: &lt;http://trac.webkit.org/changeset/102721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520495</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-13 17:03:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119043</attachid>
            <date>2011-12-13 11:07:20 -0800</date>
            <delta_ts>2011-12-13 14:59:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74423-20111213110719.patch</filename>
            <type>text/plain</type>
            <size>12146</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ0M2MyMWZjM2UyMjRk
NTg5ZjdiYjRkYWIzNjJmYTNmYzc1ZWJhNS4uYjZjY2YxOTcyMjE4OWQ3MzhhYWRhNGQxZjBmMDE4
MTZjNzkyOGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTEyLTEzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
T2JzZXJ2ZXJzXSBBdm9pZCBhbGxvY2F0aW9ucyBpZiBubyBvYnNlcnZlcnMgYXJlIHByZXNlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDIzCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIE5vZGU6Om1heUhhdmVNdXRhdGlvbk9ic2VydmVyc09m
VHlwZSB3aGljaCBjYW4gYmUgdXNlZCB0byBjaGVjaworICAgICAgICBpZiB0aGVyZSBhcmUgYW55
IG9ic2VydmVycyBhdCBhbGwgd2hpY2ggY291bGQgcmVjZWl2ZSBhIGdpdmUgdHlwZSBvZiBtdXRh
dGlvbi4KKyAgICAgICAgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAgdXNlcyB0aGlzIHRv
IHBvc3NpYmx5IGV4aXQgZWFybHkgKHJldHVybmluZworICAgICAgICBudWxsKSBpZiBubyBvYnNl
cnZlcnMgYXJlIHByZXNlbnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gdGVzdHMgbmVlZGVkLiBUaGlzIHBhdGNoIGlzIGp1c3QgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAg
ICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVy
RGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvbkFjY3Vt
dWxhdG9yOjpNdXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVs
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbnF1ZXVl
QXR0cmlidXRlc011dGF0aW9uUmVjb3JkKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjptYXlIYXZlTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNy
ZWF0ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQ2hhcmFjdGVyRGF0YU11dGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpj
cmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjplbnF1ZXVlTXV0
YXRpb25SZWNvcmQpOgorICAgICAgICAqIGRvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmg6CisK
IDIwMTEtMTItMTMgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29t
PgogCiAgICAgICAgIFtRdF0gR2V0IHJpZCBvZiBsYXllcmluZyB2aW9sYXRpb25zIGluIGluY2x1
ZGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmNwcAppbmRleCA0MzU3NTU0MGI5YTAzOGE3YTZjNGIyYmVjNzIxZDE4ZDIzYzY2NWQzLi4yYjc4
MmYyYzg3YmY4OGI3NGQ3YjQxZjkzNDEwNTBhNmRlNWYyZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTcxLDEwICs3MSw4
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX211dGF0aW9uUmVj
aXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1
dGVzTXV0YXRpb24oaW5saW5lRGVjbC0+ZWxlbWVudCgpLCBIVE1MTmFtZXM6OnN0eWxlQXR0cik7
Ci0gICAgICAgIGlmIChtX211dGF0aW9uUmVjaXBpZW50cy0+aXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBtX211dGF0aW9uUmVjaXBpZW50cy5jbGVhcigpOworICAgICAgICBpZiAoIW1fbXV0YXRp
b25SZWNpcGllbnRzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKICAgICAgICAg
QXRvbWljU3RyaW5nIG9sZFZhbHVlID0gbV9tdXRhdGlvblJlY2lwaWVudHMtPmlzT2xkVmFsdWVS
ZXF1ZXN0ZWQoKSA/IGlubGluZURlY2wtPmVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6c3R5bGVBdHRyKSA6IG51bGxBdG9tOwogICAgICAgICBtX211dGF0aW9uID0gTXV0YXRpb25S
ZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZXMoaW5saW5lRGVjbC0+ZWxlbWVudCgpLCBIVE1MTmFtZXM6
OnN0eWxlQXR0ciwgb2xkVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmlu
ZGV4IDIxYjUyYjM1ZmM2ODhmY2M4Yjc3NDM2ODIzODQ0OWNiOTljMDlmNTIuLmJmYTgwZjEzNTdj
ZjZjYmE1OTYzMGJkZGIwZTMwNjQ1NTZkODEyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5jcHAKQEAgLTE5Miw3ICsxOTIsOCBAQCB2b2lkIENoYXJhY3RlckRhdGE6OmRpc3BhdGNo
TW9kaWZpZWRFdmVudChjb25zdCBTdHJpbmcmIG9sZERhdGEpCiB7CiAjaWYgRU5BQkxFKE1VVEFU
SU9OX09CU0VSVkVSUykKICAgICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+
IG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVh
dGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24odGhpcyk7Ci0gICAgbXV0YXRpb25SZWNpcGllbnRz
LT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoYXJhY3RlckRh
dGEodGhpcywgb2xkRGF0YSkpOworICAgIGlmIChtdXRhdGlvblJlY2lwaWVudHMpCisgICAgICAg
IG11dGF0aW9uUmVjaXBpZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11dGF0aW9uUmVjb3Jk
OjpjcmVhdGVDaGFyYWN0ZXJEYXRhKHRoaXMsIG9sZERhdGEpKTsKICNlbmRpZgogICAgIGlmIChw
YXJlbnROb2RlKCkpCiAgICAgICAgIHBhcmVudE5vZGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKaW5kZXggMWYw
OTQzYWZkNjIyMDRiZDhlZDgxNWNjZWY2ZDRkZDc1ZDVlY2I5ZC4uNjBlZTM1MmIzMmQyYmE1NjMy
MWU1YWJmMjQwNjljNmIyYTk3ZjFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0No
aWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExp
c3RNdXRhdGlvblNjb3BlLmNwcApAQCAtMjQxLDEwICsyNDEsMTAgQEAgdm9pZCBNdXRhdGlvbkFj
Y3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRhcmdldCkKICAg
ICB9CiAKICAgICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IG9ic2VydmVy
cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RNdXRh
dGlvbih0YXJnZXQpOwotICAgIGlmIChvYnNlcnZlcnMtPmlzRW1wdHkoKSkKLSAgICAgICAgbV9h
Y2N1bXVsYXRpb25zLnNldCh0YXJnZXQsIG51bGxwdHIpOwotICAgIGVsc2UKKyAgICBpZiAob2Jz
ZXJ2ZXJzKQogICAgICAgICBtX2FjY3VtdWxhdGlvbnMuc2V0KHRhcmdldCwgYWRvcHRQdHIobmV3
IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IodGFyZ2V0LCBvYnNlcnZlcnMucmVsZWFzZSgp
KSkpOworICAgIGVsc2UKKyAgICAgICAgbV9hY2N1bXVsYXRpb25zLnNldCh0YXJnZXQsIG51bGxw
dHIpOwogfQogCiB2b2lkIE11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjpkZWNyZW1lbnRTY29w
aW5nTGV2ZWwoTm9kZSogdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGFlYTg2OTM3
ZjE0MTFiMDdhNjJiOGZiMDljNzgzZTAyYWEwZDljYTQuLmJiN2E3MzhjZjdjMzE3MDE5MTlkNDUx
ZTQ0OTkzNzE3MWUxY2M1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE4NCw3ICsxODQs
OCBAQCB2b2lkIEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0IEVsZW1l
bnQqKQogc3RhdGljIHZvaWQgZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZChFbGVtZW50
KiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgb2xkVmFsdWUpCiB7CiAgICAgT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwPiBtdXRhdGlvblJlY2lwaWVudHMgPSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKHRhcmdldCwgYXR0cmlidXRlTmFtZSk7Ci0g
ICAgbXV0YXRpb25SZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUF0dHJpYnV0ZXModGFyZ2V0LCBhdHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSkpOwor
ICAgIGlmIChtdXRhdGlvblJlY2lwaWVudHMpCisgICAgICAgIG11dGF0aW9uUmVjaXBpZW50cy0+
ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVzKHRh
cmdldCwgYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggZmU1YzVlMTJjMmExNTFlMDQ4YWU2YWM2MTdmYTdlOTY1MzdlYTQ3MC4uMTE1ODY3
ZTU4YjY3MmIyNzUwY2ZhMjUxYjNiZDRkMGE3YzQ4MzAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
MjcxNCw2ICsyNzE0LDExIEBAIHZvaWQgTm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9y
TXV0YXRpb24oSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwKICAgICB9CiB9CiAKK2Jv
b2wgTm9kZTo6bWF5SGF2ZU11dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlKQoreworICAgIHJldHVybiBkb2N1bWVudCgpLT5oYXNT
dWJ0cmVlTXV0YXRpb25PYnNlcnZlck9mVHlwZSh0eXBlKSB8fCAoaGFzUmFyZURhdGEoKSAmJiAo
cmFyZURhdGEoKS0+bXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkgfHwgcmFyZURhdGEoKS0+dHJh
bnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpKTsKK30KKwogdm9pZCBOb2RlOjpnZXRS
ZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9i
c2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiBvYnNlcnZlcnMsIFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgY29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRp
b24ob2JzZXJ2ZXJzLCB0aGlzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4
IGYwNTNmN2E2MGM4ZjYzZjYwZDRiNjE3YTU3MWRhZWQ2NDYxZmE1OTAuLjIxMDc2NTgwYmYxN2Jk
NTY0MzY4YjNjMzgxMWVhNDhmOTc2Yzk3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTk5LDYgKzU5OSw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgdm9pZCBn
ZXRSZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoSGFzaE1hcDxXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+JiwgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcjo6TXV0YXRpb25UeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5h
bWUgPSBudWxsQXRvbSk7CisgICAgYm9vbCBtYXlIYXZlTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUo
V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlKTsKICAgICBNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uKiByZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoUGFzc1JlZlB0cjxXZWJL
aXRNdXRhdGlvbk9ic2VydmVyPik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZl
cihNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKik7CiAgICAgdm9pZCByZWdpc3RlclRyYW5z
aWVudE11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IGM4YmFm
MTAzMTA0MzI0MjRmOWFjYzEyNGIzMzI2MmIxZTcwN2IzZTIuLjQ5MDI4YzJjZTJmMDM3Mzk2NzE4
ZmY3ZTJjMTI5NGRkNDEyZDFkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJL
aXRNdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0
YXRpb25PYnNlcnZlci5jcHAKQEAgLTE0OSwyOCArMTQ5LDM5IEBAIHZvaWQgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpCiAgICAgZGVsaXZlcnlJblByb2dyZXNz
ID0gZmFsc2U7CiB9CiAKK1Bhc3NPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+
IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVJZk5lZWRlZChOb2RlKiB0YXJn
ZXQsIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9s
ZFZhbHVlRmxhZykKK3sKKyAgICBpZiAoIXRhcmdldC0+bWF5SGF2ZU11dGF0aW9uT2JzZXJ2ZXJz
T2ZUeXBlKHR5cGUpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEhhc2hNYXA8V2Vi
S2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBvYnNl
cnZlcnM7CisgICAgdGFyZ2V0LT5nZXRSZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUo
b2JzZXJ2ZXJzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKKyAgICBpZiAob2JzZXJ2ZXJzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3
IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKG9ic2VydmVycywgb2xkVmFsdWVGbGFnKSk7
Cit9CisKIFBhc3NPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IE11dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGlsZExpc3RNdXRhdGlvbihOb2RlKiB0
YXJnZXQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cCh0YXJnZXQsIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCkpOworICAg
IHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQsIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkNo
aWxkTGlzdCwgbnVsbEF0b20sIDAgLyogb2xkVmFsdWVGbGFnICovKTsKIH0KIAogUGFzc093blB0
cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXA6OmNyZWF0ZUZvckNoYXJhY3RlckRhdGFNdXRhdGlvbihOb2RlKiB0YXJnZXQpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cCh0YXJn
ZXQsIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEpKTsKKyAgICByZXR1cm4g
Y3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJE
YXRhLCBudWxsQXRvbSwgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZh
bHVlKTsKIH0KIAogUGFzc093blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbihO
b2RlKiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cCh0YXJnZXQs
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUubG9jYWxO
YW1lKCkpKTsKKyAgICByZXR1cm4gY3JlYXRlSWZOZWVkZWQodGFyZ2V0LCBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyOjpBdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLCBXZWJLaXRN
dXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVPbGRWYWx1ZSk7CiB9CiAKLU11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChOb2RlKiB0YXJn
ZXQsIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUpCitNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnM+IG9ic2VydmVycywgTXV0YXRpb25S
ZWNvcmREZWxpdmVyeU9wdGlvbnMgb2xkVmFsdWVGbGFnKQorICAgIDogbV9vbGRWYWx1ZUZsYWco
b2xkVmFsdWVGbGFnKQogewotICAgIHRhcmdldC0+Z2V0UmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKG1fb2JzZXJ2ZXJzLCB0eXBlLCBhdHRyaWJ1dGVOYW1lKTsKLSAgICBpZiAodHlw
ZSAmIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZXMpCi0gICAgICAgIG1fb2xkVmFs
dWVGbGFnID0gV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlT2xkVmFsdWU7Ci0gICAg
ZWxzZSBpZiAodHlwZSAmIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGEpCi0g
ICAgICAgIG1fb2xkVmFsdWVGbGFnID0gV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVy
RGF0YU9sZFZhbHVlOworICAgIEFTU0VSVCghb2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CisgICAgbV9v
YnNlcnZlcnMuc3dhcChvYnNlcnZlcnMpOwogfQogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkKQEAgLTE4NCw5ICsxOTUsNiBAQCBib29s
IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkKIAog
dm9pZCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6ZW5xdWV1ZU11dGF0aW9uUmVjb3Jk
KFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IHBycE11dGF0aW9uKQogewotICAgIGlmIChtX29i
c2VydmVycy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFJlZlB0cjxNdXRhdGlv
blJlY29yZD4gbXV0YXRpb24gPSBwcnBNdXRhdGlvbjsKICAgICBSZWZQdHI8TXV0YXRpb25SZWNv
cmQ+IG11dGF0aW9uV2l0aE51bGxPbGRWYWx1ZTsKICAgICBmb3IgKEhhc2hNYXA8V2ViS2l0TXV0
YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPjo6aXRlcmF0b3Ig
aXRlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsr
aXRlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKaW5k
ZXggY2E0ZGFkNmYwZTE5OWY2MzdlOWE3OGQyNWVlYjM0YzFhMzc4Yzc3Ni4uYWVjMmU5MDM1ODI0
OWQwY2ZiN2RiMzE4NGYxNDJkNGIwMmQwZDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2Vi
S2l0TXV0YXRpb25PYnNlcnZlci5oCkBAIC0xMDMsMTUgKzEwMywxNSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IGNyZWF0ZUZv
ckF0dHJpYnV0ZXNNdXRhdGlvbihOb2RlKiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpOwogCiAgICAgYm9vbCBpc09sZFZhbHVlUmVxdWVzdGVkKCk7Ci0gICAgYm9v
bCBpc0VtcHR5KCkgeyByZXR1cm4gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBl
bnF1ZXVlTXV0YXRpb25SZWNvcmQoUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4pOwogcHJpdmF0
ZToKLSAgICBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChOb2RlKiB0YXJnZXQsIFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRy
aWJ1dGVOYW1lID0gbnVsbEF0b20pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE11dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwPiBjcmVhdGVJZk5lZWRlZChOb2RlKiB0YXJnZXQsIFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVOYW1lLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcpOworICAg
IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNl
cnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBvYnNlcnZlcnMsIE11dGF0aW9u
UmVjb3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZyk7CiAKICAgICBpbmxpbmUgYm9vbCBo
YXNPbGRWYWx1ZShNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvcHRpb25zKSB7IHJldHVy
biBvcHRpb25zICYgbV9vbGRWYWx1ZUZsYWc7IH0KIAogICAgIEhhc2hNYXA8V2ViS2l0TXV0YXRp
b25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBtX29ic2VydmVyczsK
LSAgICBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpEZWxpdmVyeUZsYWdzIG1fb2xkVmFsdWVGbGFn
OworICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG1fb2xkVmFsdWVGbGFnOwogfTsK
IAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119088</attachid>
            <date>2011-12-13 14:59:35 -0800</date>
            <delta_ts>2011-12-13 17:03:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74423-20111213145934.patch</filename>
            <type>text/plain</type>
            <size>13584</size>
            <attacher name="Rafael Weinstein">rafaelw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQxMWYzZTUxM2VlYjM0
ZmZhZWIyOGY5NmRjYjI5YzU1YTNhYTVhNS4uZjVkNDA4NDQ4NzI2ZGQ2MDIzNzgwYjdhZTU2Y2Rl
ZjkyOGJkYmNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTEyLTEzICBSYWZh
ZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW011dGF0aW9u
T2JzZXJ2ZXJzXSBBdm9pZCBhbGxvY2F0aW9ucyBpZiBubyBvYnNlcnZlcnMgYXJlIHByZXNlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgTm9kZTo6bWF5SGF2ZU11dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlIHdoaWNoIGNhbiBiZSB1c2Vk
IHRvIGNoZWNrCisgICAgICAgIGlmIHRoZXJlIGFyZSBhbnkgb2JzZXJ2ZXJzIGF0IGFsbCB3aGlj
aCBjb3VsZCByZWNlaXZlIGEgZ2l2ZSB0eXBlIG9mIG11dGF0aW9uLgorICAgICAgICBNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cCB1c2VzIHRoaXMgdG8gcG9zc2libHkgZXhpdCBlYXJseSAo
cmV0dXJuaW5nCisgICAgICAgIG51bGwpIGlmIG5vIG9ic2VydmVycyBhcmUgcHJlc2VudC4KKwor
ICAgICAgICBObyB0ZXN0cyBuZWVkZWQuIFRoaXMgcGF0Y2ggaXMganVzdCBhIHJlZmFjdG9yLgor
CisgICAgICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRh
OjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQpOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRhdGlv
blNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0
b3I6Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjppbmNyZW1lbnRTY29waW5nTGV2ZWwpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVucXVldWVBdHRy
aWJ1dGVzTXV0YXRpb25SZWNvcmQpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6Om1heUhhdmVNdXRhdGlvbk9ic2VydmVyc09mVHlwZSk6CisgICAgICAg
ICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRl
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA6OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0
ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXApOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmVucXVldWVNdXRhdGlv
blJlY29yZCk6CisgICAgICAgICogZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaDoKKwogMjAx
MS0xMi0xMyAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgQ2hyb21pdW0gTWFjIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDQzNTc1NTQwYjlh
MDM4YTdhNmM0YjJiZWM3MjFkMThkMjNjNjY1ZDMuLjJiNzgyZjJjODdiZjg4Yjc0ZDdiNDFmOTM0
MTA1MGE2ZGU1ZjJmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNzEsMTAgKzcxLDggQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIG1fbXV0YXRpb25SZWNpcGllbnRzID0gTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbihpbmxpbmVEZWNs
LT5lbGVtZW50KCksIEhUTUxOYW1lczo6c3R5bGVBdHRyKTsKLSAgICAgICAgaWYgKG1fbXV0YXRp
b25SZWNpcGllbnRzLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fbXV0YXRpb25SZWNpcGll
bnRzLmNsZWFyKCk7CisgICAgICAgIGlmICghbV9tdXRhdGlvblJlY2lwaWVudHMpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBBdG9taWNTdHJpbmcgb2xkVmFsdWUg
PSBtX211dGF0aW9uUmVjaXBpZW50cy0+aXNPbGRWYWx1ZVJlcXVlc3RlZCgpID8gaW5saW5lRGVj
bC0+ZWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpIDogbnVsbEF0
b207CiAgICAgICAgIG1fbXV0YXRpb24gPSBNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRl
cyhpbmxpbmVEZWNsLT5lbGVtZW50KCksIEhUTUxOYW1lczo6c3R5bGVBdHRyLCBvbGRWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggMjFiNTJiMzVmYzY4OGZjYzhi
Nzc0MzY4MjM4NDQ5Y2I5OWMwOWY1Mi4uNDU3ZjRjYjEyNjczM2JjNThkZmQ2M2YwNjcwYjQ4YTJm
ZTVhNDRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMTkxLDggKzE5
MSw4IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6dXBkYXRlUmVuZGVyZXIodW5zaWduZWQgb2Zmc2V0
T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIGxlbmd0CiB2b2lkIENoYXJhY3RlckRhdGE6OmRpc3Bh
dGNoTW9kaWZpZWRFdmVudChjb25zdCBTdHJpbmcmIG9sZERhdGEpCiB7CiAjaWYgRU5BQkxFKE1V
VEFUSU9OX09CU0VSVkVSUykKLSAgICBPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA+IG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpj
cmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24odGhpcyk7Ci0gICAgbXV0YXRpb25SZWNpcGll
bnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoYXJhY3Rl
ckRhdGEodGhpcywgb2xkRGF0YSkpOworICAgIGlmIChPd25QdHI8TXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA+IG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24odGhpcykpCisgICAgICAgIG11
dGF0aW9uUmVjaXBpZW50cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11dGF0aW9uUmVjb3JkOjpj
cmVhdGVDaGFyYWN0ZXJEYXRhKHRoaXMsIG9sZERhdGEpKTsKICNlbmRpZgogICAgIGlmIChwYXJl
bnROb2RlKCkpCiAgICAgICAgIHBhcmVudE5vZGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5jcHAKaW5kZXggMWYwOTQz
YWZkNjIyMDRiZDhlZDgxNWNjZWY2ZDRkZDc1ZDVlY2I5ZC4uNThjMDg3YjBmNmYyNjBmMDI0ZWNh
MTJmNGNhYmQ4MDcyMTZhYzM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
TGlzdE11dGF0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RN
dXRhdGlvblNjb3BlLmNwcApAQCAtMjE4LDE4ICsyMTgsMjAgQEAgdm9pZCBNdXRhdGlvbkFjY3Vt
dWxhdGlvblJvdXRlcjo6Y2hpbGRBZGRlZChOb2RlKiB0YXJnZXQsIE5vZGUqIGNoaWxkKQogewog
ICAgIEhhc2hNYXA8Tm9kZSosIE93blB0cjxDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yPiA+
OjppdGVyYXRvciBpdGVyID0gbV9hY2N1bXVsYXRpb25zLmZpbmQodGFyZ2V0KTsKICAgICBBU1NF
UlQoaXRlciAhPSBtX2FjY3VtdWxhdGlvbnMuZW5kKCkpOworICAgIGlmIChpdGVyID09IG1fYWNj
dW11bGF0aW9ucy5lbmQoKSB8fCAhaXRlci0+c2Vjb25kKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXRlci0+c2Vjb25kKQotICAgICAgICBpdGVyLT5zZWNvbmQtPmNoaWxkQWRkZWQoY2hp
bGQpOworICAgIGl0ZXItPnNlY29uZC0+Y2hpbGRBZGRlZChjaGlsZCk7CiB9CiAKIHZvaWQgTXV0
YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OndpbGxSZW1vdmVDaGlsZChOb2RlKiB0YXJnZXQsIE5v
ZGUqIGNoaWxkKQogewogICAgIEhhc2hNYXA8Tm9kZSosIE93blB0cjxDaGlsZExpc3RNdXRhdGlv
bkFjY3VtdWxhdG9yPiA+OjppdGVyYXRvciBpdGVyID0gbV9hY2N1bXVsYXRpb25zLmZpbmQodGFy
Z2V0KTsKICAgICBBU1NFUlQoaXRlciAhPSBtX2FjY3VtdWxhdGlvbnMuZW5kKCkpOworICAgIGlm
IChpdGVyID09IG1fYWNjdW11bGF0aW9ucy5lbmQoKSB8fCAhaXRlci0+c2Vjb25kKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoaXRlci0+c2Vjb25kKQotICAgICAgICBpdGVyLT5zZWNvbmQt
PndpbGxSZW1vdmVDaGlsZChjaGlsZCk7CisgICAgaXRlci0+c2Vjb25kLT53aWxsUmVtb3ZlQ2hp
bGQoY2hpbGQpOwogfQogCiB2b2lkIE11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjppbmNyZW1l
bnRTY29waW5nTGV2ZWwoTm9kZSogdGFyZ2V0KQpAQCAtMjQwLDExICsyNDIsMTIgQEAgdm9pZCBN
dXRhdGlvbkFjY3VtdWxhdGlvblJvdXRlcjo6aW5jcmVtZW50U2NvcGluZ0xldmVsKE5vZGUqIHRh
cmdldCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxNdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cD4gb2JzZXJ2ZXJzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA6OmNyZWF0ZUZvckNoaWxkTGlzdE11dGF0aW9uKHRhcmdldCk7Ci0gICAgaWYgKG9ic2VydmVy
cy0+aXNFbXB0eSgpKQotICAgICAgICBtX2FjY3VtdWxhdGlvbnMuc2V0KHRhcmdldCwgbnVsbHB0
cik7Ci0gICAgZWxzZQorICAgIGlmIChPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA+IG9ic2VydmVycyA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JD
aGlsZExpc3RNdXRhdGlvbih0YXJnZXQpKQogICAgICAgICBtX2FjY3VtdWxhdGlvbnMuc2V0KHRh
cmdldCwgYWRvcHRQdHIobmV3IENoaWxkTGlzdE11dGF0aW9uQWNjdW11bGF0b3IodGFyZ2V0LCBv
YnNlcnZlcnMucmVsZWFzZSgpKSkpOworI2lmbmRlZiBOREVCVUcKKyAgICBlbHNlCisgICAgICAg
IG1fYWNjdW11bGF0aW9ucy5zZXQodGFyZ2V0LCBudWxscHRyKTsKKyNlbmRpZgogfQogCiB2b2lk
IE11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjpkZWNyZW1lbnRTY29waW5nTGV2ZWwoTm9kZSog
dGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDVkZGY1ODk3MTA0MzkzYzg1MTVkMjRm
NDk5NGE2NzdlYTQ3NmJlYTIuLjM2MTUyMTFiOGI5NjA0YmE5YzE5NDdiZWRiNzZkYmJhNGJmZDMx
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE4Myw4ICsxODMsOCBAQCB2b2lkIEVsZW1l
bnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0IEVsZW1lbnQqKQogI2lmIEVOQUJM
RShNVVRBVElPTl9PQlNFUlZFUlMpCiBzdGF0aWMgdm9pZCBlbnF1ZXVlQXR0cmlidXRlc011dGF0
aW9uUmVjb3JkKEVsZW1lbnQqIHRhcmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSkKIHsKLSAgICBPd25QdHI8TXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA+IG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24odGFyZ2V0LCBh
dHRyaWJ1dGVOYW1lKTsKLSAgICBtdXRhdGlvblJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlvblJl
Y29yZChNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcyh0YXJnZXQsIGF0dHJpYnV0ZU5h
bWUsIG9sZFZhbHVlKSk7CisgICAgaWYgKE93blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cD4gbXV0YXRpb25SZWNpcGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbih0YXJnZXQsIGF0dHJpYnV0ZU5hbWUpKQorICAg
ICAgICBtdXRhdGlvblJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlvblJlY29yZChNdXRhdGlvblJl
Y29yZDo6Y3JlYXRlQXR0cmlidXRlcyh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGZlNWM1ZTEyYzJhMTUxZTA0OGFlNmFj
NjE3ZmE3ZTk2NTM3ZWE0NzAuLjExNTg2N2U1OGI2NzJiMjc1MGNmYTI1MWIzYmQ0ZDBhN2M0ODMw
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI3MTQsNiArMjcxNCwxMSBAQCB2b2lkIE5vZGU6OmNv
bGxlY3RNYXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25P
YnNlcnZlciosCiAgICAgfQogfQogCitib29sIE5vZGU6Om1heUhhdmVNdXRhdGlvbk9ic2VydmVy
c09mVHlwZShXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSkKK3sKKyAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+aGFzU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJPZlR5cGUodHlw
ZSkgfHwgKGhhc1JhcmVEYXRhKCkgJiYgKHJhcmVEYXRhKCktPm11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyeSgpIHx8IHJhcmVEYXRhKCktPnRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgp
KSk7Cit9CisKIHZvaWQgTm9kZTo6Z2V0UmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBl
KEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlP
cHRpb25zPiYgb2JzZXJ2ZXJzLCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUg
dHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQogewogICAgIGNvbGxlY3RN
YXRjaGluZ09ic2VydmVyc0Zvck11dGF0aW9uKG9ic2VydmVycywgdGhpcywgdHlwZSwgYXR0cmli
dXRlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBmMDUzZjdhNjBjOGY2M2Y2MGQ0YjYxN2E1NzFkYWVk
NjQ2MWZhNTkwLi4yMTA3NjU4MGJmMTdiZDU2NDM2OGIzYzM4MTFlYTQ4Zjk3NmM5N2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTU5OSw2ICs1OTksNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQogICAgIHZvaWQgZ2V0UmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzT2ZU
eXBlKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZl
cnlPcHRpb25zPiYsIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lID0gbnVsbEF0b20pOworICAgIGJvb2wgbWF5SGF2
ZU11dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9u
VHlwZSk7CiAgICAgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0ZXJNdXRhdGlv
bk9ic2VydmVyKFBhc3NSZWZQdHI8V2ViS2l0TXV0YXRpb25PYnNlcnZlcj4pOwogICAgIHZvaWQg
dW5yZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiop
OwogICAgIHZvaWQgcmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJL
aXRNdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlv
bk9ic2VydmVyLmNwcAppbmRleCBjOGJhZjEwMzEwNDMyNDI0ZjlhY2MxMjRiMzMyNjJiMWU3MDdi
M2UyLi44NDFlZDBmYzZhNDdjNWI1OTMwOTI3NDgwMzk0NmRmOWNlNTdmNzhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNDksMjggKzE0
OSw0MCBAQCB2b2lkIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMo
KQogICAgIGRlbGl2ZXJ5SW5Qcm9ncmVzcyA9IGZhbHNlOwogfQogCitQYXNzT3duUHRyPE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6
Y3JlYXRlSWZOZWVkZWQoTm9kZSogdGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBNdXRhdGlv
blJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcpCit7CisgICAgaWYgKCF0YXJnZXQt
Pm1heUhhdmVNdXRhdGlvbk9ic2VydmVyc09mVHlwZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJl
Y29yZERlbGl2ZXJ5T3B0aW9ucz4gb2JzZXJ2ZXJzOworICAgIHRhcmdldC0+Z2V0UmVnaXN0ZXJl
ZE11dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKG9ic2VydmVycywgdHlwZSwgYXR0cmlidXRlTmFtZSk7
CisgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChv
YnNlcnZlcnMsIG9sZFZhbHVlRmxhZykpOworfQorCiBQYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9y
Q2hpbGRMaXN0TXV0YXRpb24oTm9kZSogdGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAodGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyOjpDaGlsZExpc3QpKTsKKyAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBv
bGRWYWx1ZUZsYWcgPSAwOworICAgIHJldHVybiBjcmVhdGVJZk5lZWRlZCh0YXJnZXQsIFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCwgbnVsbEF0b20sIG9sZFZhbHVlRmxhZyk7CiB9
CiAKIFBhc3NPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IE11dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24oTm9kZSog
dGFyZ2V0KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgTXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXAodGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJEYXRhKSk7
CisgICAgcmV0dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cjo6Q2hhcmFjdGVyRGF0YSwgbnVsbEF0b20sIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJh
Y3RlckRhdGFPbGRWYWx1ZSk7CiB9CiAKIFBhc3NPd25QdHI8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1
dGVzTXV0YXRpb24oTm9kZSogdGFyZ2V0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAodGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzLCBhdHRyaWJ1
dGVOYW1lLmxvY2FsTmFtZSgpKSk7CisgICAgcmV0dXJuIGNyZWF0ZUlmTmVlZGVkKHRhcmdldCwg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlcywgYXR0cmlidXRlTmFtZS5sb2NhbE5h
bWUoKSwgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QXR0cmlidXRlT2xkVmFsdWUpOwogfQogCi1N
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAoTm9kZSogdGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlw
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQorTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKEhhc2hNYXA8V2ViS2l0
TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zPiBvYnNlcnZl
cnMsIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIG9sZFZhbHVlRmxhZykKKyAgICA6IG1f
b2xkVmFsdWVGbGFnKG9sZFZhbHVlRmxhZykKIHsKLSAgICB0YXJnZXQtPmdldFJlZ2lzdGVyZWRN
dXRhdGlvbk9ic2VydmVyc09mVHlwZShtX29ic2VydmVycywgdHlwZSwgYXR0cmlidXRlTmFtZSk7
Ci0gICAgaWYgKHR5cGUgJiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVzKQotICAg
ICAgICBtX29sZFZhbHVlRmxhZyA9IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZU9s
ZFZhbHVlOwotICAgIGVsc2UgaWYgKHR5cGUgJiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpDaGFy
YWN0ZXJEYXRhKQotICAgICAgICBtX29sZFZhbHVlRmxhZyA9IFdlYktpdE11dGF0aW9uT2JzZXJ2
ZXI6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZTsKKyAgICBBU1NFUlQoIW9ic2VydmVycy5pc0VtcHR5
KCkpOworICAgIG1fb2JzZXJ2ZXJzLnN3YXAob2JzZXJ2ZXJzKTsKIH0KIAogYm9vbCBNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3RlZCgpCkBAIC0xODQsOSAr
MTk2LDYgQEAgYm9vbCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJl
cXVlc3RlZCgpCiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmVucXVldWVN
dXRhdGlvblJlY29yZChQYXNzUmVmUHRyPE11dGF0aW9uUmVjb3JkPiBwcnBNdXRhdGlvbikKIHsK
LSAgICBpZiAobV9vYnNlcnZlcnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBS
ZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CiAgICAgUmVmUHRy
PE11dGF0aW9uUmVjb3JkPiBtdXRhdGlvbldpdGhOdWxsT2xkVmFsdWU7CiAgICAgZm9yIChIYXNo
TWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9u
cz46Oml0ZXJhdG9yIGl0ZXIgPSBtX29ic2VydmVycy5iZWdpbigpOyBpdGVyICE9IG1fb2JzZXJ2
ZXJzLmVuZCgpOyArK2l0ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJL
aXRNdXRhdGlvbk9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25P
YnNlcnZlci5oCmluZGV4IGNhNGRhZDZmMGUxOTlmNjM3ZTlhNzhkMjVlZWIzNGMxYTM3OGM3NzYu
LmFlYzJlOTAzNTgyNDlkMGNmYjdkYjMxODRmMTQyZDRiMDJkMGQ0ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaApAQCAtMTAzLDE1ICsxMDMsMTUgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwPiBjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24oTm9kZSogdGFyZ2V0LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKIAogICAgIGJvb2wgaXNPbGRWYWx1ZVJlcXVlc3Rl
ZCgpOwotICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsg
fQogICAgIHZvaWQgZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFBhc3NSZWZQdHI8TXV0YXRpb25SZWNv
cmQ+KTsKIHByaXZhdGU6Ci0gICAgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAoTm9kZSog
dGFyZ2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0cmlidXRlTmFtZSA9IG51bGxBdG9tKTsKKyAgICBzdGF0aWMgUGFzc093blB0
cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gY3JlYXRlSWZOZWVkZWQoTm9kZSogdGFy
Z2V0LCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgYXR0cmlidXRlTmFtZSwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb2xkVmFs
dWVGbGFnKTsKKyAgICBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cChIYXNoTWFwPFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4gb2JzZXJ2
ZXJzLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBvbGRWYWx1ZUZsYWcpOwogCiAgICAg
aW5saW5lIGJvb2wgaGFzT2xkVmFsdWUoTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgb3B0
aW9ucykgeyByZXR1cm4gb3B0aW9ucyAmIG1fb2xkVmFsdWVGbGFnOyB9CiAKICAgICBIYXNoTWFw
PFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4g
bV9vYnNlcnZlcnM7Ci0gICAgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6RGVsaXZlcnlGbGFncyBt
X29sZFZhbHVlRmxhZzsKKyAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBtX29sZFZh
bHVlRmxhZzsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>