<?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>156880</bug_id>
          
          <creation_ts>2016-04-21 16:35:53 -0700</creation_ts>
          <short_desc>Crash under WebCore::DataDetection::detectContentInRange()</short_desc>
          <delta_ts>2016-04-22 14:32:09 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1186013</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-21 16:35:53 -0700</bug_when>
    <thetext>Crash under WebCore::DataDetection::detectContentInRange():
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000014
Thread[0]
[  0] 0x00000001931ca83c WebCore`WebCore::Node::insertBefore(WTF::PassRefPtr&lt;WebCore::Node&gt;, WebCore::Node*, int&amp;) + 24 at Node.cpp:406:9
[  1] 0x00000001929ff7b3 WebCore`WebCore::DataDetection::detectContentInRange(WTF::RefPtr&lt;WebCore::Range&gt;&amp;, WebCore::DataDetectorTypes) + 9171 at DataDetection.mm:603:13
[  2] 0x00000001929ff7b3 WebCore`WebCore::DataDetection::detectContentInRange(WTF::RefPtr&lt;WebCore::Range&gt;&amp;, WebCore::DataDetectorTypes) + 9171 at DataDetection.mm:603:13
[  3] 0x00000001926bdc53 WebCore`WebCore::FrameLoader::checkLoadCompleteForThisFrame() + 1347 at FrameLoader.cpp:2293:53
[  4] 0x00000001926bd5e7 WebCore`WebCore::FrameLoader::checkLoadComplete() + 371 at FrameLoader.cpp:2485:13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186014</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-21 16:36:13 -0700</bug_when>
    <thetext>rdar://problem/25622631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186016</commentid>
    <comment_count>2</comment_count>
      <attachid>276982</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-21 16:44:24 -0700</bug_when>
    <thetext>Created attachment 276982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186076</commentid>
    <comment_count>3</comment_count>
      <attachid>276982</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-21 18:41:59 -0700</bug_when>
    <thetext>Comment on attachment 276982
Patch

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

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:567
&gt; +        Vector&lt;RefPtr&lt;Range&gt;&gt;&amp; resultRanges = allResultRanges[resultIndex];

I would like auto&amp; better.

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:581
&gt; +            rangeBoundaries.uncheckedAppend(std::make_pair(range-&gt;startPosition(), range-&gt;endPosition()));

Could use braces instead of make_pair?

    rangeBoundaries.uncheckedAppend({ range-&gt;startPosition(), range-&gt;endPosition() });

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:642
&gt; +            else if (is&lt;Element&gt;(*parentNode)) {
&gt; +                if (RefPtr&lt;Attr&gt; color = downcast&lt;Element&gt;(*parentNode).getAttributeNode(&quot;color&quot;))
&gt; +                    anchorElement-&gt;setAttribute(styleAttr, color-&gt;style()-&gt;cssText());
&gt;              }

An Attr node is a really inefficient way to get the CSS color string that depends on a deprecated feature. In fact, Attr::style specifically says &quot;This function only exists to support the Obj-C bindings.&quot;

I think I had a patch fixing this, but didn’t land it.

What we want is something more like this:

    if (is&lt;StyledElement&gt;(*parentNode)) {
        if (auto* style = downcast&lt;StyledElement&gt;(*parentNode).presentationAttributeStyle()) {
            String color = style-&gt;getPropertyValue(CSSPropertyIDColor);
            if (!color.isEmpty())
                anchorElement-&gt;setInlineStyleProperty(CSSPropertyIDColor, color);
        }
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186395</commentid>
    <comment_count>4</comment_count>
      <attachid>277092</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-22 13:31:06 -0700</bug_when>
    <thetext>Created attachment 277092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186396</commentid>
    <comment_count>5</comment_count>
      <attachid>277092</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-22 13:31:42 -0700</bug_when>
    <thetext>Comment on attachment 277092
Patch

Confirmed locally that the feature is still working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186400</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-22 13:40:15 -0700</bug_when>
    <thetext>Forgot about some of the review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186402</commentid>
    <comment_count>7</comment_count>
      <attachid>277094</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-22 13:42:00 -0700</bug_when>
    <thetext>Created attachment 277094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186446</commentid>
    <comment_count>8</comment_count>
      <attachid>277094</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-22 14:32:04 -0700</bug_when>
    <thetext>Comment on attachment 277094
Patch

Clearing flags on attachment: 277094

Committed r199910: &lt;http://trac.webkit.org/changeset/199910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186447</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-22 14:32:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276982</attachid>
            <date>2016-04-21 16:44:24 -0700</date>
            <delta_ts>2016-04-22 13:31:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156880-20160421164446.patch</filename>
            <type>text/plain</type>
            <size>11254</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5ODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMwMGJmYzhhNmUzNmEx
MTcwZjg4ODc4MzdmMWExMWNmY2FlMjM1Yy4uNDY0YTUyOGI0ZTQyMzQzNTk3ZTIyOWMxMGI1ZGY0
Y2ZmM2M1NmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDE2LTA0LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQ3Jhc2ggdW5kZXIgV2ViQ29y
ZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2ODgwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yNTYyMjYzMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSB3b3VsZCBzb21ldGltZXMgY3Jhc2ggdW5kZXIgV2ViQ29yZTo6RGF0YURl
dGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoKQorICAgICAgICB3aGVuIGRlcmVmZXJlbmNp
bmcgYSBudWxsIHBhcmVudE5vZGUgcG9pbnRlci4gVGhpcyBwYXRjaCBhZGRzIGEgbnVsbCBjaGVj
aworICAgICAgICBmb3IgcGFyZW50Tm9kZSBpbiB0aGUgZm9yKCkgbG9vcC4gSXQgYWxzbyBkb2Vz
IHNvbWUgY2xlYW4gdXAgYW5kIG9wdGltaXphdGlvbgorICAgICAgICBzaW5jZSBJIHdhcyBwYXNz
aW5nIGJ5LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgorCisy
MDE2LTA0LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgRHJv
cCBbVXNlUG9pbnRlcnNFdmVuRm9yTm9uTnVsbGFibGVPYmplY3RBcmd1bWVudHNdIGZyb20gUmFu
Z2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njgw
NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5k
ZXggMGQwNmNlYTQwNTU3MmE2YzNkMDY4MjlmMmM4NDg2MDlmOGE5YWRkZC4uMjM1OWU0YmI4YWNm
Zjk0YmMzZGQ3ODUyYjZiYzEzMDUzY2IyMzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTE2LDEwICs1MTYsOCBAQCBOU0FycmF5ICpE
YXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZQogICAgIGZvciAoYXV0byYgcmVzdWx0IDogYWxsUmVzdWx0cykgewogICAg
ICAgICBERFF1ZXJ5UmFuZ2UgcXVlcnlSYW5nZSA9IHNvZnRMaW5rX0RhdGFEZXRlY3RvcnNDb3Jl
X0REUmVzdWx0R2V0UXVlcnlSYW5nZUZvclVSTGlmaWNhdGlvbihyZXN1bHQuZ2V0KCkpOwogICAg
ICAgICBDRkluZGV4IGl0ZXJhdG9yVGFyZ2V0QWR2YW5jZUNvdW50ID0gKENGSW5kZXgpc29mdExp
bmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FuUXVlcnlHZXRGcmFnbWVudE1ldGFEYXRhKHNjYW5R
dWVyeS5nZXQoKSwgcXVlcnlSYW5nZS5zdGFydC5xdWVyeUluZGV4KTsKLSAgICAgICAgd2hpbGUg
KGl0ZXJhdG9yQ291bnQgPCBpdGVyYXRvclRhcmdldEFkdmFuY2VDb3VudCkgeworICAgICAgICBm
b3IgKDsgaXRlcmF0b3JDb3VudCA8IGl0ZXJhdG9yVGFyZ2V0QWR2YW5jZUNvdW50OyArK2l0ZXJh
dG9yQ291bnQpCiAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7Ci0gICAgICAgICAgICBp
dGVyYXRvckNvdW50Kys7Ci0gICAgICAgIH0KIAogICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdl
Pj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJhbmdlID0g
aXRlcmF0b3IucmFuZ2UoKTsKQEAgLTUzNCwxMiArNTMyLDExIEBAIE5TQXJyYXkgKkRhdGFEZXRl
Y3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwg
RGF0YURlCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHdoaWxlIChmcmFnbWVudEluZGV4
IDwgcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgewotICAgICAgICAgICAgZnJhZ21lbnRJbmRl
eCsrOworICAgICAgICAgICAgKytmcmFnbWVudEluZGV4OwogICAgICAgICAgICAgaXRlcmF0b3JU
YXJnZXRBZHZhbmNlQ291bnQgPSAoQ0ZJbmRleClzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9E
RFNjYW5RdWVyeUdldEZyYWdtZW50TWV0YURhdGEoc2NhblF1ZXJ5LmdldCgpLCBmcmFnbWVudElu
ZGV4KTsKLSAgICAgICAgICAgIHdoaWxlIChpdGVyYXRvckNvdW50IDwgaXRlcmF0b3JUYXJnZXRB
ZHZhbmNlQ291bnQpIHsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyYXRvckNvdW50IDwgaXRlcmF0
b3JUYXJnZXRBZHZhbmNlQ291bnQ7ICsraXRlcmF0b3JDb3VudCkKICAgICAgICAgICAgICAgICBp
dGVyYXRvci5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JDb3VudCsrOwotICAg
ICAgICAgICAgfQorCiAgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSBpdGVyYXRvci5yYW5nZSgp
OwogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBmcmFnbWVudFJhbmdlID0gKGZyYWdtZW50SW5k
ZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgPyAgUmFuZ2U6OmNyZWF0ZShjdXJyZW50
UmFuZ2UtPm93bmVyRG9jdW1lbnQoKSwgJmN1cnJlbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKSwg
Y3VycmVudFJhbmdlLT5zdGFydE9mZnNldCgpLCAmY3VycmVudFJhbmdlLT5lbmRDb250YWluZXIo
KSwgY3VycmVudFJhbmdlLT5zdGFydE9mZnNldCgpICsgcXVlcnlSYW5nZS5lbmQub2Zmc2V0KSA6
IGN1cnJlbnRSYW5nZTsKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJldmlvdXNSYW5nZSA9
IGZyYWdtZW50UmFuZ2VzLmxhc3QoKTsKQEAgLTU0OSw3ICs1NDYsNyBAQCBOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgZnJhZ21lbnRS
YW5nZXMuYXBwZW5kKGZyYWdtZW50UmFuZ2UpOwogICAgICAgICB9Ci0gICAgICAgIGFsbFJlc3Vs
dFJhbmdlcy5hcHBlbmQoZnJhZ21lbnRSYW5nZXMpOworICAgICAgICBhbGxSZXN1bHRSYW5nZXMu
YXBwZW5kKFdURk1vdmUoZnJhZ21lbnRSYW5nZXMpKTsKICAgICB9CiAgICAgCiAgICAgQ0ZUaW1l
Wm9uZVJlZiB0eiA9IENGVGltZVpvbmVDb3B5RGVmYXVsdCgpOwpAQCAtNTY0LDI3ICs1NjEsMjgg
QEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJh
bmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUKICAgICAvLyB3ZSBhcmUgYWJvdXQgdG8gcHJvY2Vz
cyBhIGRpZmZlcmVudCB0ZXh0IG5vZGUuCiAgICAgcmVzdWx0Q291bnQgPSBhbGxSZXN1bHRzLnNp
emUoKTsKICAgICAKLSAgICBmb3IgKENGSW5kZXggcmVzdWx0SW5kZXggPSAwOyByZXN1bHRJbmRl
eCA8IHJlc3VsdENvdW50OyByZXN1bHRJbmRleCsrKSB7CisgICAgZm9yIChDRkluZGV4IHJlc3Vs
dEluZGV4ID0gMDsgcmVzdWx0SW5kZXggPCByZXN1bHRDb3VudDsgKytyZXN1bHRJbmRleCkgewog
ICAgICAgICBERFJlc3VsdFJlZiBjb3JlUmVzdWx0ID0gYWxsUmVzdWx0c1tyZXN1bHRJbmRleF0u
Z2V0KCk7CiAgICAgICAgIEREUXVlcnlSYW5nZSBxdWVyeVJhbmdlID0gc29mdExpbmtfRGF0YURl
dGVjdG9yc0NvcmVfRERSZXN1bHRHZXRRdWVyeVJhbmdlRm9yVVJMaWZpY2F0aW9uKGNvcmVSZXN1
bHQpOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gcmVzdWx0UmFuZ2VzID0gYWxsUmVz
dWx0UmFuZ2VzW3Jlc3VsdEluZGV4XTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiBy
ZXN1bHRSYW5nZXMgPSBhbGxSZXN1bHRSYW5nZXNbcmVzdWx0SW5kZXhdOwogCiAgICAgICAgIC8v
IENvbXBhcmUgdGhlIHF1ZXJ5IG9mZnNldHMgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGdvIGJhY2t3
YXJkcwogICAgICAgICBpZiAocXVlcnlPZmZzZXRDb21wYXJlKGxhc3RNb2RpZmllZFF1ZXJ5T2Zm
c2V0LCBxdWVyeVJhbmdlLnN0YXJ0KSA+PSAwKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgaWYgKCFyZXN1bHRSYW5nZXMuc2l6ZSgpKQorICAgICAgICBpZiAocmVzdWx0UmFuZ2Vz
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE5TU3RyaW5nICpp
ZGVudGlmaWVyID0gZGF0YURldGVjdG9yU3RyaW5nRm9yUGF0aChpbmRleFBhdGhzW3Jlc3VsdElu
ZGV4XS5nZXQoKSk7Ci0gICAgICAgIE5TU3RyaW5nICpjb3JyZXNwb25kaW5nVVJMID0gY29uc3Ry
dWN0VVJMU3RyaW5nRm9yUmVzdWx0KGNvcmVSZXN1bHQsIGlkZW50aWZpZXIsIHJlZmVyZW5jZURh
dGUsIChOU1RpbWVab25lICopdHosIHR5cGVzKTsKLSAgICAgICAgYm9vbCBkaWRNb2RpZnlET00g
PSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIC8vIFN0b3JlIHRoZSByYW5nZSBib3VuZGFyaWVz
IGFzIFBvc2l0aW9uLCBiZWNhdXNlIHRoZSBET00gY291bGQgY2hhbmdlIGlmIHdlIGZpbmQKICAg
ICAgICAgLy8gb2xkIGRhdGEgZGV0ZWN0b3IgbGluay4KICAgICAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxQb3NpdGlvbiwgUG9zaXRpb24+PiByYW5nZUJvdW5kYXJpZXM7CisgICAgICAgIHJhbmdlQm91
bmRhcmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdFJhbmdlcy5zaXplKCkpOwogICAg
ICAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmVzdWx0UmFuZ2VzKQotICAgICAgICAgICAgcmFuZ2VC
b3VuZGFyaWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihyYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBy
YW5nZS0+ZW5kUG9zaXRpb24oKSkpOworICAgICAgICAgICAgcmFuZ2VCb3VuZGFyaWVzLnVuY2hl
Y2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihyYW5nZS0+c3RhcnRQb3NpdGlvbigpLCByYW5nZS0+
ZW5kUG9zaXRpb24oKSkpOworCisgICAgICAgIE5TU3RyaW5nICppZGVudGlmaWVyID0gZGF0YURl
dGVjdG9yU3RyaW5nRm9yUGF0aChpbmRleFBhdGhzW3Jlc3VsdEluZGV4XS5nZXQoKSk7CisgICAg
ICAgIE5TU3RyaW5nICpjb3JyZXNwb25kaW5nVVJMID0gY29uc3RydWN0VVJMU3RyaW5nRm9yUmVz
dWx0KGNvcmVSZXN1bHQsIGlkZW50aWZpZXIsIHJlZmVyZW5jZURhdGUsIChOU1RpbWVab25lICop
dHosIHR5cGVzKTsKKyAgICAgICAgYm9vbCBkaWRNb2RpZnlET00gPSBmYWxzZTsKIAogICAgICAg
ICBpZiAoIWNvcnJlc3BvbmRpbmdVUkwgfHwgc2VhcmNoRm9yTGlua1JlbW92aW5nRXhpc3RpbmdE
RExpbmtzKHJlc3VsdFJhbmdlcy5maXJzdCgpLT5zdGFydENvbnRhaW5lcigpLCByZXN1bHRSYW5n
ZXMubGFzdCgpLT5lbmRDb250YWluZXIoKSwgZGlkTW9kaWZ5RE9NKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtNTkyLDkgKzU5MCwxMCBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRl
Y3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAg
ICAgICBpZiAoZGlkTW9kaWZ5RE9NKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgRE9NIHdhcyBt
b2RpZmllZCBiZWNhdXNlIHNvbWUgb2xkIGxpbmtzIHdlcmUgcmVtb3ZlZCwKICAgICAgICAgICAg
IC8vIHdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlIHJhbmdlcyBiZWNhdXNlIHRoZXkgY291bGQgbm8g
bG9uZ2VyIGJlIHZhbGlkLgotICAgICAgICAgICAgcmVzdWx0UmFuZ2VzLmNsZWFyKCk7CisgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2VzLnNpemUoKSA9PSByYW5nZUJvdW5kYXJpZXMuc2l6
ZSgpKTsKKyAgICAgICAgICAgIHJlc3VsdFJhbmdlcy5zaHJpbmsoMCk7IC8vIEtlZXAgY2FwYWNp
dHkgYXMgd2UgYXJlIGdvaW5nIHRvIHJlcG9wdWxhdGUgdGhlIFZlY3RvciByaWdodCBhd2F5IHdp
dGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zLgogICAgICAgICAgICAgZm9yIChhdXRvJiByYW5n
ZUJvdW5kYXJ5IDogcmFuZ2VCb3VuZGFyaWVzKQotICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdl
cy5hcHBlbmQoUmFuZ2U6OmNyZWF0ZSgqcmFuZ2VCb3VuZGFyeS5maXJzdC5kb2N1bWVudCgpLCBy
YW5nZUJvdW5kYXJ5LmZpcnN0LCByYW5nZUJvdW5kYXJ5LnNlY29uZCkpOworICAgICAgICAgICAg
ICAgIHJlc3VsdFJhbmdlcy51bmNoZWNrZWRBcHBlbmQoUmFuZ2U6OmNyZWF0ZSgqcmFuZ2VCb3Vu
ZGFyeS5maXJzdC5kb2N1bWVudCgpLCByYW5nZUJvdW5kYXJ5LmZpcnN0LCByYW5nZUJvdW5kYXJ5
LnNlY29uZCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBsYXN0TW9kaWZpZWRRdWVy
eU9mZnNldCA9IHF1ZXJ5UmFuZ2UuZW5kOwpAQCAtNjA1LDggKzYwNCwxMSBAQCBOU0FycmF5ICpE
YXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0
UmFuZ2UsIERhdGFEZQogI2VuZGlmCiAKICAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6IHJlc3Vs
dFJhbmdlcykgewotICAgICAgICAgICAgTm9kZSogcGFyZW50Tm9kZSA9IHJhbmdlLT5zdGFydENv
bnRhaW5lcigpLnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIFRleHQmIGN1cnJlbnRUZXh0Tm9k
ZSA9IGRvd25jYXN0PFRleHQ+KHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKKyAgICAgICAgICAg
IGF1dG8qIHBhcmVudE5vZGUgPSByYW5nZS0+c3RhcnRDb250YWluZXIoKS5wYXJlbnROb2RlKCk7
CisgICAgICAgICAgICBpZiAoIXBhcmVudE5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRUZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KHJh
bmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAgICAgICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9
IGN1cnJlbnRUZXh0Tm9kZS5kb2N1bWVudCgpOwogICAgICAgICAgICAgU3RyaW5nIHRleHROb2Rl
RGF0YTsKICAgICAgICAgICAgIApAQCAtNjE1LDQwICs2MTcsNDAgQEAgTlNBcnJheSAqRGF0YURl
dGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdl
LCBEYXRhRGUKICAgICAgICAgICAgICAgICAgICAgbGFzdFRleHROb2RlVG9VcGRhdGUtPnNldERh
dGEobGFzdE5vZGVDb250ZW50KTsKICAgICAgICAgICAgICAgICBjb250ZW50T2Zmc2V0ID0gMDsK
ICAgICAgICAgICAgICAgICBpZiAocmFuZ2UtPnN0YXJ0T2Zmc2V0KCkgPiAwKQotICAgICAgICAg
ICAgICAgICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuc3Vic3RyaW5nRGF0YSgw
LCByYW5nZS0+c3RhcnRPZmZzZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAg
ICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5n
KDAsIHJhbmdlLT5zdGFydE9mZnNldCgpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5zdWJzdHJpbmdEYXRhKGNvbnRl
bnRPZmZzZXQsIHJhbmdlLT5zdGFydE9mZnNldCgpIC0gY29udGVudE9mZnNldCwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CisgICAgICAgICAgICAgICAgdGV4dE5vZGVEYXRhID0gY3VycmVudFRleHRO
b2RlLmRhdGEoKS5zdWJzdHJpbmcoY29udGVudE9mZnNldCwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkg
LSBjb250ZW50T2Zmc2V0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCF0ZXh0Tm9k
ZURhdGEuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5ld05vZGUg
PSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHROb2RlRGF0YSk7Ci0gICAgICAgICAgICAgICAg
cGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKG5ld05vZGUsICZjdXJyZW50VGV4dE5vZGUsIEFTU0VS
VF9OT19FWENFUFRJT04pOworICAgICAgICAgICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9y
ZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHROb2RlRGF0YSksICZjdXJyZW50VGV4dE5vZGUp
OwogICAgICAgICAgICAgICAgIGNvbnRlbnRPZmZzZXQgPSByYW5nZS0+c3RhcnRPZmZzZXQoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBh
Y3R1YWwgYW5jaG9yIG5vZGUgYW5kIGluc2VydCBpdCBiZWZvcmUgdGhlIGN1cnJlbnQgbm9kZS4K
LSAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5zdWJzdHJpbmdEYXRh
KHJhbmdlLT5zdGFydE9mZnNldCgpLCByYW5nZS0+ZW5kT2Zmc2V0KCkgLSByYW5nZS0+c3RhcnRP
ZmZzZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4g
bmV3Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgdGV4dE5vZGVEYXRhKTsKLSAgICAgICAg
ICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShuZXdOb2RlLCAmY3VycmVudFRleHROb2RlLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRU
ZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5nKHJhbmdlLT5zdGFydE9mZnNldCgpLCByYW5nZS0+ZW5k
T2Zmc2V0KCkgLSByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICBSZWY8VGV4dD4g
bmV3VGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHROb2RlRGF0YSk7CisgICAg
ICAgICAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUobmV3VGV4dE5vZGUuY29weVJlZigpLCAm
Y3VycmVudFRleHROb2RlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgUmVmUHRyPEhUTUxB
bmNob3JFbGVtZW50PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CisgICAgICAgICAgICBSZWY8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvckVsZW1l
bnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgIGFu
Y2hvckVsZW1lbnQtPnNldEhyZWYoY29ycmVzcG9uZGluZ1VSTCk7CiAgICAgICAgICAgICBhbmNo
b3JFbGVtZW50LT5zZXREaXIoImx0ciIpOwogICAgICAgICAgICAgaWYgKHNob3VsZFVzZUxpZ2h0
TGlua3MpCi0gICAgICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6c3R5bGVBdHRyLCBkYXRhRGV0ZWN0b3JzTGlua1N0eWxlKTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBjb2xvciA9IGRvd25jYXN0PEVsZW1l
bnQ+KHBhcmVudE5vZGUpLT5nZXRBdHRyaWJ1dGVOb2RlKCJjb2xvciIpOwotICAgICAgICAgICAg
ICAgIGlmIChjb2xvcikKLSAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBjb2xvci0+c3R5bGUoKS0+Y3NzVGV4dCgpKTsK
KyAgICAgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBk
YXRhRGV0ZWN0b3JzTGlua1N0eWxlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzPEVsZW1lbnQ+
KCpwYXJlbnROb2RlKSkgeworICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXR0cj4gY29sb3Ig
PSBkb3duY2FzdDxFbGVtZW50PigqcGFyZW50Tm9kZSkuZ2V0QXR0cmlidXRlTm9kZSgiY29sb3Ii
KSkKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgY29sb3ItPnN0eWxlKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhbmNob3JFbGVtZW50LT5Ob2RlOjphcHBlbmRDaGlsZChuZXdOb2RlLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKLSAgICAgICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShhbmNob3JF
bGVtZW50LCAmY3VycmVudFRleHROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAg
ICAgIGFuY2hvckVsZW1lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUobmV3VGV4dE5vZGUpKTsKICAg
ICAgICAgICAgIC8vIEFkZCBhIHNwZWNpYWwgYXR0cmlidXRlIHRvIG1hcmsgdGhpcyBVUkxpZmlj
YXRpb24gYXMgdGhlIHJlc3VsdCBvZiBkYXRhIGRldGVjdG9ycy4KICAgICAgICAgICAgIGFuY2hv
ckVsZW1lbnQtPnNldEF0dHJpYnV0ZSh4X2FwcGxlX2RhdGFfZGV0ZWN0b3JzQXR0ciwgInRydWUi
KTsKICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZSh4X2FwcGxlX2RhdGFf
ZGV0ZWN0b3JzX3R5cGVBdHRyLCBkYXRhRGV0ZWN0b3JUeXBlRm9yQ2F0ZWdvcnkoc29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRDYXRlZ29yeShjb3JlUmVzdWx0KSkpOwogICAg
ICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKHhfYXBwbGVfZGF0YV9kZXRlY3Rv
cnNfcmVzdWx0QXR0ciwgaWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIHBhcmVudE5vZGUtPmlu
c2VydEJlZm9yZShXVEZNb3ZlKGFuY2hvckVsZW1lbnQpLCAmY3VycmVudFRleHROb2RlKTsKKwog
ICAgICAgICAgICAgY29udGVudE9mZnNldCA9IHJhbmdlLT5lbmRPZmZzZXQoKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgbGFzdE5vZGVDb250ZW50ID0gY3VycmVudFRleHROb2RlLnN1YnN0
cmluZ0RhdGEocmFuZ2UtPmVuZE9mZnNldCgpLCBjdXJyZW50VGV4dE5vZGUubGVuZ3RoKCkgLSBy
YW5nZS0+ZW5kT2Zmc2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAgICAgbGFz
dE5vZGVDb250ZW50ID0gY3VycmVudFRleHROb2RlLmRhdGEoKS5zdWJzdHJpbmcocmFuZ2UtPmVu
ZE9mZnNldCgpLCBjdXJyZW50VGV4dE5vZGUubGVuZ3RoKCkgLSByYW5nZS0+ZW5kT2Zmc2V0KCkp
OwogICAgICAgICAgICAgbGFzdFRleHROb2RlVG9VcGRhdGUgPSAmY3VycmVudFRleHROb2RlOwog
ICAgICAgICB9ICAgICAgICAKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277092</attachid>
            <date>2016-04-22 13:31:06 -0700</date>
            <delta_ts>2016-04-22 13:41:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156880-20160422133130.patch</filename>
            <type>text/plain</type>
            <size>11535</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5ODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMzMmY5NmM1MDdlZmIx
NWJiMDE3NDVkN2FmMWE3OThmYjBkNWI0YS4uZTFjM2RiZDA5NGNhYjhhNjY0YjQwMzllMDNhODNj
YzI4NmI5ZjljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA0LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggdW5kZXIgV2ViQ29y
ZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2ODgwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yNTYyMjYzMT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBXZSB3b3VsZCBzb21ldGltZXMgY3Jhc2ggdW5kZXIgV2ViQ29yZTo6RGF0YURldGVj
dGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoKQorICAgICAgICB3aGVuIGRlcmVmZXJlbmNpbmcg
YSBudWxsIHBhcmVudE5vZGUgcG9pbnRlci4gVGhpcyBwYXRjaCBhZGRzIGEgbnVsbCBjaGVjawor
ICAgICAgICBmb3IgcGFyZW50Tm9kZSBpbiB0aGUgZm9yKCkgbG9vcC4gSXQgYWxzbyBkb2VzIHNv
bWUgY2xlYW4gdXAgYW5kIG9wdGltaXphdGlvbgorICAgICAgICBzaW5jZSBJIHdhcyBwYXNzaW5n
IGJ5LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgorCiAyMDE2
LTA0LTIyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0
aW5nIHRvIGZpeCBXaW5kb3dzIGJ1aWxkLiBBZGQgaXNIaWRkZW4gaW1wbGVtZW50YXRpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMGQw
NmNlYTQwNTU3MmE2YzNkMDY4MjlmMmM4NDg2MDlmOGE5YWRkZC4uZDE5N2NlN2YwMDQ5NWRiNTcw
ZjI5YjgzODNmMDcxOGVmN2FkOGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiTm9kZVRyYXZl
cnNhbC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgorI2lt
cG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJUZXh0
SXRlcmF0b3IuaCIKICNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgpAQCAtNTE2LDEwICs1MTcs
OCBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8
UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgIGZvciAoYXV0byYgcmVzdWx0IDogYWxs
UmVzdWx0cykgewogICAgICAgICBERFF1ZXJ5UmFuZ2UgcXVlcnlSYW5nZSA9IHNvZnRMaW5rX0Rh
dGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0UXVlcnlSYW5nZUZvclVSTGlmaWNhdGlvbihyZXN1
bHQuZ2V0KCkpOwogICAgICAgICBDRkluZGV4IGl0ZXJhdG9yVGFyZ2V0QWR2YW5jZUNvdW50ID0g
KENGSW5kZXgpc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FuUXVlcnlHZXRGcmFnbWVu
dE1ldGFEYXRhKHNjYW5RdWVyeS5nZXQoKSwgcXVlcnlSYW5nZS5zdGFydC5xdWVyeUluZGV4KTsK
LSAgICAgICAgd2hpbGUgKGl0ZXJhdG9yQ291bnQgPCBpdGVyYXRvclRhcmdldEFkdmFuY2VDb3Vu
dCkgeworICAgICAgICBmb3IgKDsgaXRlcmF0b3JDb3VudCA8IGl0ZXJhdG9yVGFyZ2V0QWR2YW5j
ZUNvdW50OyArK2l0ZXJhdG9yQ291bnQpCiAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7
Ci0gICAgICAgICAgICBpdGVyYXRvckNvdW50Kys7Ci0gICAgICAgIH0KIAogICAgICAgICBWZWN0
b3I8UmVmUHRyPFJhbmdlPj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4g
Y3VycmVudFJhbmdlID0gaXRlcmF0b3IucmFuZ2UoKTsKQEAgLTUzNCwxMiArNTMzLDExIEBAIE5T
QXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHdoaWxl
IChmcmFnbWVudEluZGV4IDwgcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgewotICAgICAgICAg
ICAgZnJhZ21lbnRJbmRleCsrOworICAgICAgICAgICAgKytmcmFnbWVudEluZGV4OwogICAgICAg
ICAgICAgaXRlcmF0b3JUYXJnZXRBZHZhbmNlQ291bnQgPSAoQ0ZJbmRleClzb2Z0TGlua19EYXRh
RGV0ZWN0b3JzQ29yZV9ERFNjYW5RdWVyeUdldEZyYWdtZW50TWV0YURhdGEoc2NhblF1ZXJ5Lmdl
dCgpLCBmcmFnbWVudEluZGV4KTsKLSAgICAgICAgICAgIHdoaWxlIChpdGVyYXRvckNvdW50IDwg
aXRlcmF0b3JUYXJnZXRBZHZhbmNlQ291bnQpIHsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyYXRv
ckNvdW50IDwgaXRlcmF0b3JUYXJnZXRBZHZhbmNlQ291bnQ7ICsraXRlcmF0b3JDb3VudCkKICAg
ICAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaXRlcmF0
b3JDb3VudCsrOwotICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSBp
dGVyYXRvci5yYW5nZSgpOwogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBmcmFnbWVudFJhbmdl
ID0gKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgPyAgUmFuZ2U6
OmNyZWF0ZShjdXJyZW50UmFuZ2UtPm93bmVyRG9jdW1lbnQoKSwgJmN1cnJlbnRSYW5nZS0+c3Rh
cnRDb250YWluZXIoKSwgY3VycmVudFJhbmdlLT5zdGFydE9mZnNldCgpLCAmY3VycmVudFJhbmdl
LT5lbmRDb250YWluZXIoKSwgY3VycmVudFJhbmdlLT5zdGFydE9mZnNldCgpICsgcXVlcnlSYW5n
ZS5lbmQub2Zmc2V0KSA6IGN1cnJlbnRSYW5nZTsKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cHJldmlvdXNSYW5nZSA9IGZyYWdtZW50UmFuZ2VzLmxhc3QoKTsKQEAgLTU0OSw3ICs1NDcsNyBA
QCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFu
Z2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGZyYWdtZW50UmFuZ2UpOwogICAgICAgICB9Ci0g
ICAgICAgIGFsbFJlc3VsdFJhbmdlcy5hcHBlbmQoZnJhZ21lbnRSYW5nZXMpOworICAgICAgICBh
bGxSZXN1bHRSYW5nZXMuYXBwZW5kKFdURk1vdmUoZnJhZ21lbnRSYW5nZXMpKTsKICAgICB9CiAg
ICAgCiAgICAgQ0ZUaW1lWm9uZVJlZiB0eiA9IENGVGltZVpvbmVDb3B5RGVmYXVsdCgpOwpAQCAt
NTY0LDI3ICs1NjIsMjggQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudElu
UmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUKICAgICAvLyB3ZSBhcmUg
YWJvdXQgdG8gcHJvY2VzcyBhIGRpZmZlcmVudCB0ZXh0IG5vZGUuCiAgICAgcmVzdWx0Q291bnQg
PSBhbGxSZXN1bHRzLnNpemUoKTsKICAgICAKLSAgICBmb3IgKENGSW5kZXggcmVzdWx0SW5kZXgg
PSAwOyByZXN1bHRJbmRleCA8IHJlc3VsdENvdW50OyByZXN1bHRJbmRleCsrKSB7CisgICAgZm9y
IChDRkluZGV4IHJlc3VsdEluZGV4ID0gMDsgcmVzdWx0SW5kZXggPCByZXN1bHRDb3VudDsgKyty
ZXN1bHRJbmRleCkgewogICAgICAgICBERFJlc3VsdFJlZiBjb3JlUmVzdWx0ID0gYWxsUmVzdWx0
c1tyZXN1bHRJbmRleF0uZ2V0KCk7CiAgICAgICAgIEREUXVlcnlSYW5nZSBxdWVyeVJhbmdlID0g
c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRRdWVyeVJhbmdlRm9yVVJMaWZp
Y2F0aW9uKGNvcmVSZXN1bHQpOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gcmVzdWx0
UmFuZ2VzID0gYWxsUmVzdWx0UmFuZ2VzW3Jlc3VsdEluZGV4XTsKKyAgICAgICAgVmVjdG9yPFJl
ZlB0cjxSYW5nZT4+JiByZXN1bHRSYW5nZXMgPSBhbGxSZXN1bHRSYW5nZXNbcmVzdWx0SW5kZXhd
OwogCiAgICAgICAgIC8vIENvbXBhcmUgdGhlIHF1ZXJ5IG9mZnNldHMgdG8gbWFrZSBzdXJlIHdl
IGRvbid0IGdvIGJhY2t3YXJkcwogICAgICAgICBpZiAocXVlcnlPZmZzZXRDb21wYXJlKGxhc3RN
b2RpZmllZFF1ZXJ5T2Zmc2V0LCBxdWVyeVJhbmdlLnN0YXJ0KSA+PSAwKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgaWYgKCFyZXN1bHRSYW5nZXMuc2l6ZSgpKQorICAgICAgICBp
ZiAocmVzdWx0UmFuZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIE5TU3RyaW5nICppZGVudGlmaWVyID0gZGF0YURldGVjdG9yU3RyaW5nRm9yUGF0aChpbmRl
eFBhdGhzW3Jlc3VsdEluZGV4XS5nZXQoKSk7Ci0gICAgICAgIE5TU3RyaW5nICpjb3JyZXNwb25k
aW5nVVJMID0gY29uc3RydWN0VVJMU3RyaW5nRm9yUmVzdWx0KGNvcmVSZXN1bHQsIGlkZW50aWZp
ZXIsIHJlZmVyZW5jZURhdGUsIChOU1RpbWVab25lICopdHosIHR5cGVzKTsKLSAgICAgICAgYm9v
bCBkaWRNb2RpZnlET00gPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIC8vIFN0b3JlIHRoZSBy
YW5nZSBib3VuZGFyaWVzIGFzIFBvc2l0aW9uLCBiZWNhdXNlIHRoZSBET00gY291bGQgY2hhbmdl
IGlmIHdlIGZpbmQKICAgICAgICAgLy8gb2xkIGRhdGEgZGV0ZWN0b3IgbGluay4KICAgICAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxQb3NpdGlvbiwgUG9zaXRpb24+PiByYW5nZUJvdW5kYXJpZXM7Cisg
ICAgICAgIHJhbmdlQm91bmRhcmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdFJhbmdl
cy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmVzdWx0UmFuZ2VzKQotICAg
ICAgICAgICAgcmFuZ2VCb3VuZGFyaWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihyYW5nZS0+c3Rh
cnRQb3NpdGlvbigpLCByYW5nZS0+ZW5kUG9zaXRpb24oKSkpOworICAgICAgICAgICAgcmFuZ2VC
b3VuZGFyaWVzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihyYW5nZS0+c3RhcnRQb3Np
dGlvbigpLCByYW5nZS0+ZW5kUG9zaXRpb24oKSkpOworCisgICAgICAgIE5TU3RyaW5nICppZGVu
dGlmaWVyID0gZGF0YURldGVjdG9yU3RyaW5nRm9yUGF0aChpbmRleFBhdGhzW3Jlc3VsdEluZGV4
XS5nZXQoKSk7CisgICAgICAgIE5TU3RyaW5nICpjb3JyZXNwb25kaW5nVVJMID0gY29uc3RydWN0
VVJMU3RyaW5nRm9yUmVzdWx0KGNvcmVSZXN1bHQsIGlkZW50aWZpZXIsIHJlZmVyZW5jZURhdGUs
IChOU1RpbWVab25lICopdHosIHR5cGVzKTsKKyAgICAgICAgYm9vbCBkaWRNb2RpZnlET00gPSBm
YWxzZTsKIAogICAgICAgICBpZiAoIWNvcnJlc3BvbmRpbmdVUkwgfHwgc2VhcmNoRm9yTGlua1Jl
bW92aW5nRXhpc3RpbmdERExpbmtzKHJlc3VsdFJhbmdlcy5maXJzdCgpLT5zdGFydENvbnRhaW5l
cigpLCByZXN1bHRSYW5nZXMubGFzdCgpLT5lbmRDb250YWluZXIoKSwgZGlkTW9kaWZ5RE9NKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTkyLDkgKzU5MSwxMCBAQCBOU0FycmF5ICpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFu
Z2UsIERhdGFEZQogICAgICAgICBpZiAoZGlkTW9kaWZ5RE9NKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGUgRE9NIHdhcyBtb2RpZmllZCBiZWNhdXNlIHNvbWUgb2xkIGxpbmtzIHdlcmUgcmVtb3Zl
ZCwKICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlIHJhbmdlcyBiZWNhdXNl
IHRoZXkgY291bGQgbm8gbG9uZ2VyIGJlIHZhbGlkLgotICAgICAgICAgICAgcmVzdWx0UmFuZ2Vz
LmNsZWFyKCk7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0UmFuZ2VzLnNpemUoKSA9PSByYW5n
ZUJvdW5kYXJpZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIHJlc3VsdFJhbmdlcy5zaHJpbmsoMCk7
IC8vIEtlZXAgY2FwYWNpdHkgYXMgd2UgYXJlIGdvaW5nIHRvIHJlcG9wdWxhdGUgdGhlIFZlY3Rv
ciByaWdodCBhd2F5IHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zLgogICAgICAgICAgICAg
Zm9yIChhdXRvJiByYW5nZUJvdW5kYXJ5IDogcmFuZ2VCb3VuZGFyaWVzKQotICAgICAgICAgICAg
ICAgIHJlc3VsdFJhbmdlcy5hcHBlbmQoUmFuZ2U6OmNyZWF0ZSgqcmFuZ2VCb3VuZGFyeS5maXJz
dC5kb2N1bWVudCgpLCByYW5nZUJvdW5kYXJ5LmZpcnN0LCByYW5nZUJvdW5kYXJ5LnNlY29uZCkp
OworICAgICAgICAgICAgICAgIHJlc3VsdFJhbmdlcy51bmNoZWNrZWRBcHBlbmQoUmFuZ2U6OmNy
ZWF0ZSgqcmFuZ2VCb3VuZGFyeS5maXJzdC5kb2N1bWVudCgpLCByYW5nZUJvdW5kYXJ5LmZpcnN0
LCByYW5nZUJvdW5kYXJ5LnNlY29uZCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBs
YXN0TW9kaWZpZWRRdWVyeU9mZnNldCA9IHF1ZXJ5UmFuZ2UuZW5kOwpAQCAtNjA1LDggKzYwNSwx
MSBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8
UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogI2VuZGlmCiAKICAgICAgICAgZm9yIChhdXRv
JiByYW5nZSA6IHJlc3VsdFJhbmdlcykgewotICAgICAgICAgICAgTm9kZSogcGFyZW50Tm9kZSA9
IHJhbmdlLT5zdGFydENvbnRhaW5lcigpLnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIFRleHQm
IGN1cnJlbnRUZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KHJhbmdlLT5zdGFydENvbnRhaW5lcigp
KTsKKyAgICAgICAgICAgIGF1dG8qIHBhcmVudE5vZGUgPSByYW5nZS0+c3RhcnRDb250YWluZXIo
KS5wYXJlbnROb2RlKCk7CisgICAgICAgICAgICBpZiAoIXBhcmVudE5vZGUpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8mIGN1cnJlbnRUZXh0Tm9kZSA9IGRv
d25jYXN0PFRleHQ+KHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAgICAgICAgICAgIERvY3Vt
ZW50JiBkb2N1bWVudCA9IGN1cnJlbnRUZXh0Tm9kZS5kb2N1bWVudCgpOwogICAgICAgICAgICAg
U3RyaW5nIHRleHROb2RlRGF0YTsKICAgICAgICAgICAgIApAQCAtNjE1LDQwICs2MTgsNDMgQEAg
TlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdl
PiYgY29udGV4dFJhbmdlLCBEYXRhRGUKICAgICAgICAgICAgICAgICAgICAgbGFzdFRleHROb2Rl
VG9VcGRhdGUtPnNldERhdGEobGFzdE5vZGVDb250ZW50KTsKICAgICAgICAgICAgICAgICBjb250
ZW50T2Zmc2V0ID0gMDsKICAgICAgICAgICAgICAgICBpZiAocmFuZ2UtPnN0YXJ0T2Zmc2V0KCkg
PiAwKQotICAgICAgICAgICAgICAgICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUu
c3Vic3RyaW5nRGF0YSgwLCByYW5nZS0+c3RhcnRPZmZzZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CisgICAgICAgICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5k
YXRhKCkuc3Vic3RyaW5nKDAsIHJhbmdlLT5zdGFydE9mZnNldCgpKTsKICAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5zdWJz
dHJpbmdEYXRhKGNvbnRlbnRPZmZzZXQsIHJhbmdlLT5zdGFydE9mZnNldCgpIC0gY29udGVudE9m
ZnNldCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICAgICAgdGV4dE5vZGVEYXRh
ID0gY3VycmVudFRleHROb2RlLmRhdGEoKS5zdWJzdHJpbmcoY29udGVudE9mZnNldCwgcmFuZ2Ut
PnN0YXJ0T2Zmc2V0KCkgLSBjb250ZW50T2Zmc2V0KTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKCF0ZXh0Tm9kZURhdGEuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PE5vZGU+IG5ld05vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHROb2RlRGF0YSk7Ci0g
ICAgICAgICAgICAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKG5ld05vZGUsICZjdXJyZW50
VGV4dE5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAgICAgICAgIHBhcmVudE5v
ZGUtPmluc2VydEJlZm9yZShUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHROb2RlRGF0YSksICZj
dXJyZW50VGV4dE5vZGUpOwogICAgICAgICAgICAgICAgIGNvbnRlbnRPZmZzZXQgPSByYW5nZS0+
c3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBhY3R1YWwgYW5jaG9yIG5vZGUgYW5kIGluc2VydCBpdCBiZWZvcmUgdGhl
IGN1cnJlbnQgbm9kZS4KLSAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9k
ZS5zdWJzdHJpbmdEYXRhKHJhbmdlLT5zdGFydE9mZnNldCgpLCByYW5nZS0+ZW5kT2Zmc2V0KCkg
LSByYW5nZS0+c3RhcnRPZmZzZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAg
ICBSZWZQdHI8Tm9kZT4gbmV3Tm9kZSA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgdGV4dE5vZGVE
YXRhKTsKLSAgICAgICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShuZXdOb2RlLCAmY3Vy
cmVudFRleHROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIHRleHROb2Rl
RGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5nKHJhbmdlLT5zdGFydE9mZnNl
dCgpLCByYW5nZS0+ZW5kT2Zmc2V0KCkgLSByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAg
ICAgICBSZWY8VGV4dD4gbmV3VGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIHRleHRO
b2RlRGF0YSk7CisgICAgICAgICAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUobmV3VGV4dE5v
ZGUuY29weVJlZigpLCAmY3VycmVudFRleHROb2RlKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgICAgICAgICBSZWY8SFRNTEFuY2hvckVsZW1l
bnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
ICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEhyZWYoY29ycmVzcG9uZGluZ1VSTCk7CiAg
ICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXREaXIoImx0ciIpOwogICAgICAgICAgICAgaWYg
KHNob3VsZFVzZUxpZ2h0TGlua3MpCi0gICAgICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0
QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBkYXRhRGV0ZWN0b3JzTGlua1N0eWxlKTsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdHRyPiBjb2xvciA9
IGRvd25jYXN0PEVsZW1lbnQ+KHBhcmVudE5vZGUpLT5nZXRBdHRyaWJ1dGVOb2RlKCJjb2xvciIp
OwotICAgICAgICAgICAgICAgIGlmIChjb2xvcikKLSAgICAgICAgICAgICAgICAgICAgYW5jaG9y
RWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyLCBjb2xvci0+c3R5bGUo
KS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1
dGUoc3R5bGVBdHRyLCBkYXRhRGV0ZWN0b3JzTGlua1N0eWxlKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKGlzPFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnROb2RlKSkgeworICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBzdHlsZSA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnROb2RlKS5wcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBj
b2xvciA9IHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Q29sb3IpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNvbG9yLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFuY2hvckVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xv
ciwgY29sb3IpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGFuY2hvckVsZW1lbnQtPk5vZGU6OmFwcGVuZENoaWxkKG5ld05vZGUsIEFTU0VSVF9OT19FWENF
UFRJT04pOwotICAgICAgICAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKGFuY2hvckVsZW1l
bnQsICZjdXJyZW50VGV4dE5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAgICAg
YW5jaG9yRWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShuZXdUZXh0Tm9kZSkpOwogICAgICAg
ICAgICAgLy8gQWRkIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayB0aGlzIFVSTGlmaWNhdGlv
biBhcyB0aGUgcmVzdWx0IG9mIGRhdGEgZGV0ZWN0b3JzLgogICAgICAgICAgICAgYW5jaG9yRWxl
bWVudC0+c2V0QXR0cmlidXRlKHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNBdHRyLCAidHJ1ZSIpOwog
ICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKHhfYXBwbGVfZGF0YV9kZXRl
Y3RvcnNfdHlwZUF0dHIsIGRhdGFEZXRlY3RvclR5cGVGb3JDYXRlZ29yeShzb2Z0TGlua19EYXRh
RGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldENhdGVnb3J5KGNvcmVSZXN1bHQpKSk7CiAgICAgICAg
ICAgICBhbmNob3JFbGVtZW50LT5zZXRBdHRyaWJ1dGUoeF9hcHBsZV9kYXRhX2RldGVjdG9yc19y
ZXN1bHRBdHRyLCBpZGVudGlmaWVyKTsKKworICAgICAgICAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0
QmVmb3JlKFdURk1vdmUoYW5jaG9yRWxlbWVudCksICZjdXJyZW50VGV4dE5vZGUpOworCiAgICAg
ICAgICAgICBjb250ZW50T2Zmc2V0ID0gcmFuZ2UtPmVuZE9mZnNldCgpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBsYXN0Tm9kZUNvbnRlbnQgPSBjdXJyZW50VGV4dE5vZGUuc3Vic3RyaW5n
RGF0YShyYW5nZS0+ZW5kT2Zmc2V0KCksIGN1cnJlbnRUZXh0Tm9kZS5sZW5ndGgoKSAtIHJhbmdl
LT5lbmRPZmZzZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBsYXN0Tm9k
ZUNvbnRlbnQgPSBjdXJyZW50VGV4dE5vZGUuZGF0YSgpLnN1YnN0cmluZyhyYW5nZS0+ZW5kT2Zm
c2V0KCksIGN1cnJlbnRUZXh0Tm9kZS5sZW5ndGgoKSAtIHJhbmdlLT5lbmRPZmZzZXQoKSk7CiAg
ICAgICAgICAgICBsYXN0VGV4dE5vZGVUb1VwZGF0ZSA9ICZjdXJyZW50VGV4dE5vZGU7CiAgICAg
ICAgIH0gICAgICAgIAogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277094</attachid>
            <date>2016-04-22 13:42:00 -0700</date>
            <delta_ts>2016-04-22 14:32:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156880-20160422134224.patch</filename>
            <type>text/plain</type>
            <size>11506</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5ODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMzMmY5NmM1MDdlZmIx
NWJiMDE3NDVkN2FmMWE3OThmYjBkNWI0YS4uZTFjM2RiZDA5NGNhYjhhNjY0YjQwMzllMDNhODNj
YzI4NmI5ZjljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA0LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggdW5kZXIgV2ViQ29y
ZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2ODgwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yNTYyMjYzMT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBXZSB3b3VsZCBzb21ldGltZXMgY3Jhc2ggdW5kZXIgV2ViQ29yZTo6RGF0YURldGVj
dGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoKQorICAgICAgICB3aGVuIGRlcmVmZXJlbmNpbmcg
YSBudWxsIHBhcmVudE5vZGUgcG9pbnRlci4gVGhpcyBwYXRjaCBhZGRzIGEgbnVsbCBjaGVjawor
ICAgICAgICBmb3IgcGFyZW50Tm9kZSBpbiB0aGUgZm9yKCkgbG9vcC4gSXQgYWxzbyBkb2VzIHNv
bWUgY2xlYW4gdXAgYW5kIG9wdGltaXphdGlvbgorICAgICAgICBzaW5jZSBJIHdhcyBwYXNzaW5n
IGJ5LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgorCiAyMDE2
LTA0LTIyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0
aW5nIHRvIGZpeCBXaW5kb3dzIGJ1aWxkLiBBZGQgaXNIaWRkZW4gaW1wbGVtZW50YXRpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMGQw
NmNlYTQwNTU3MmE2YzNkMDY4MjlmMmM4NDg2MDlmOGE5YWRkZC4uZDJlY2FiZjIwZWFjODYwZGU1
ZGM4MzNiZWUxZTUxYmVhOTJiMjdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRGF0YURldGVjdGlvbi5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiTm9kZVRyYXZl
cnNhbC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgorI2lt
cG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJUZXh0
SXRlcmF0b3IuaCIKICNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgpAQCAtNTE2LDEwICs1MTcs
OCBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8
UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgIGZvciAoYXV0byYgcmVzdWx0IDogYWxs
UmVzdWx0cykgewogICAgICAgICBERFF1ZXJ5UmFuZ2UgcXVlcnlSYW5nZSA9IHNvZnRMaW5rX0Rh
dGFEZXRlY3RvcnNDb3JlX0REUmVzdWx0R2V0UXVlcnlSYW5nZUZvclVSTGlmaWNhdGlvbihyZXN1
bHQuZ2V0KCkpOwogICAgICAgICBDRkluZGV4IGl0ZXJhdG9yVGFyZ2V0QWR2YW5jZUNvdW50ID0g
KENGSW5kZXgpc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTY2FuUXVlcnlHZXRGcmFnbWVu
dE1ldGFEYXRhKHNjYW5RdWVyeS5nZXQoKSwgcXVlcnlSYW5nZS5zdGFydC5xdWVyeUluZGV4KTsK
LSAgICAgICAgd2hpbGUgKGl0ZXJhdG9yQ291bnQgPCBpdGVyYXRvclRhcmdldEFkdmFuY2VDb3Vu
dCkgeworICAgICAgICBmb3IgKDsgaXRlcmF0b3JDb3VudCA8IGl0ZXJhdG9yVGFyZ2V0QWR2YW5j
ZUNvdW50OyArK2l0ZXJhdG9yQ291bnQpCiAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7
Ci0gICAgICAgICAgICBpdGVyYXRvckNvdW50Kys7Ci0gICAgICAgIH0KIAogICAgICAgICBWZWN0
b3I8UmVmUHRyPFJhbmdlPj4gZnJhZ21lbnRSYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4g
Y3VycmVudFJhbmdlID0gaXRlcmF0b3IucmFuZ2UoKTsKQEAgLTUzNCwxMiArNTMzLDExIEBAIE5T
QXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4m
IGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHdoaWxl
IChmcmFnbWVudEluZGV4IDwgcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgewotICAgICAgICAg
ICAgZnJhZ21lbnRJbmRleCsrOworICAgICAgICAgICAgKytmcmFnbWVudEluZGV4OwogICAgICAg
ICAgICAgaXRlcmF0b3JUYXJnZXRBZHZhbmNlQ291bnQgPSAoQ0ZJbmRleClzb2Z0TGlua19EYXRh
RGV0ZWN0b3JzQ29yZV9ERFNjYW5RdWVyeUdldEZyYWdtZW50TWV0YURhdGEoc2NhblF1ZXJ5Lmdl
dCgpLCBmcmFnbWVudEluZGV4KTsKLSAgICAgICAgICAgIHdoaWxlIChpdGVyYXRvckNvdW50IDwg
aXRlcmF0b3JUYXJnZXRBZHZhbmNlQ291bnQpIHsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyYXRv
ckNvdW50IDwgaXRlcmF0b3JUYXJnZXRBZHZhbmNlQ291bnQ7ICsraXRlcmF0b3JDb3VudCkKICAg
ICAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaXRlcmF0
b3JDb3VudCsrOwotICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjdXJyZW50UmFuZ2UgPSBp
dGVyYXRvci5yYW5nZSgpOwogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBmcmFnbWVudFJhbmdl
ID0gKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5lbmQucXVlcnlJbmRleCkgPyAgUmFuZ2U6
OmNyZWF0ZShjdXJyZW50UmFuZ2UtPm93bmVyRG9jdW1lbnQoKSwgJmN1cnJlbnRSYW5nZS0+c3Rh
cnRDb250YWluZXIoKSwgY3VycmVudFJhbmdlLT5zdGFydE9mZnNldCgpLCAmY3VycmVudFJhbmdl
LT5lbmRDb250YWluZXIoKSwgY3VycmVudFJhbmdlLT5zdGFydE9mZnNldCgpICsgcXVlcnlSYW5n
ZS5lbmQub2Zmc2V0KSA6IGN1cnJlbnRSYW5nZTsKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cHJldmlvdXNSYW5nZSA9IGZyYWdtZW50UmFuZ2VzLmxhc3QoKTsKQEAgLTU0OSw3ICs1NDcsNyBA
QCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFu
Z2U+JiBjb250ZXh0UmFuZ2UsIERhdGFEZQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgZnJhZ21lbnRSYW5nZXMuYXBwZW5kKGZyYWdtZW50UmFuZ2UpOwogICAgICAgICB9Ci0g
ICAgICAgIGFsbFJlc3VsdFJhbmdlcy5hcHBlbmQoZnJhZ21lbnRSYW5nZXMpOworICAgICAgICBh
bGxSZXN1bHRSYW5nZXMuYXBwZW5kKFdURk1vdmUoZnJhZ21lbnRSYW5nZXMpKTsKICAgICB9CiAg
ICAgCiAgICAgQ0ZUaW1lWm9uZVJlZiB0eiA9IENGVGltZVpvbmVDb3B5RGVmYXVsdCgpOwpAQCAt
NTY0LDI3ICs1NjIsMjggQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudElu
UmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUKICAgICAvLyB3ZSBhcmUg
YWJvdXQgdG8gcHJvY2VzcyBhIGRpZmZlcmVudCB0ZXh0IG5vZGUuCiAgICAgcmVzdWx0Q291bnQg
PSBhbGxSZXN1bHRzLnNpemUoKTsKICAgICAKLSAgICBmb3IgKENGSW5kZXggcmVzdWx0SW5kZXgg
PSAwOyByZXN1bHRJbmRleCA8IHJlc3VsdENvdW50OyByZXN1bHRJbmRleCsrKSB7CisgICAgZm9y
IChDRkluZGV4IHJlc3VsdEluZGV4ID0gMDsgcmVzdWx0SW5kZXggPCByZXN1bHRDb3VudDsgKyty
ZXN1bHRJbmRleCkgewogICAgICAgICBERFJlc3VsdFJlZiBjb3JlUmVzdWx0ID0gYWxsUmVzdWx0
c1tyZXN1bHRJbmRleF0uZ2V0KCk7CiAgICAgICAgIEREUXVlcnlSYW5nZSBxdWVyeVJhbmdlID0g
c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRRdWVyeVJhbmdlRm9yVVJMaWZp
Y2F0aW9uKGNvcmVSZXN1bHQpOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gcmVzdWx0
UmFuZ2VzID0gYWxsUmVzdWx0UmFuZ2VzW3Jlc3VsdEluZGV4XTsKKyAgICAgICAgYXV0byYgcmVz
dWx0UmFuZ2VzID0gYWxsUmVzdWx0UmFuZ2VzW3Jlc3VsdEluZGV4XTsKIAogICAgICAgICAvLyBD
b21wYXJlIHRoZSBxdWVyeSBvZmZzZXRzIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBnbyBiYWNrd2Fy
ZHMKICAgICAgICAgaWYgKHF1ZXJ5T2Zmc2V0Q29tcGFyZShsYXN0TW9kaWZpZWRRdWVyeU9mZnNl
dCwgcXVlcnlSYW5nZS5zdGFydCkgPj0gMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGlmICghcmVzdWx0UmFuZ2VzLnNpemUoKSkKKyAgICAgICAgaWYgKHJlc3VsdFJhbmdlcy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBOU1N0cmluZyAqaWRl
bnRpZmllciA9IGRhdGFEZXRlY3RvclN0cmluZ0ZvclBhdGgoaW5kZXhQYXRoc1tyZXN1bHRJbmRl
eF0uZ2V0KCkpOwotICAgICAgICBOU1N0cmluZyAqY29ycmVzcG9uZGluZ1VSTCA9IGNvbnN0cnVj
dFVSTFN0cmluZ0ZvclJlc3VsdChjb3JlUmVzdWx0LCBpZGVudGlmaWVyLCByZWZlcmVuY2VEYXRl
LCAoTlNUaW1lWm9uZSAqKXR6LCB0eXBlcyk7Ci0gICAgICAgIGJvb2wgZGlkTW9kaWZ5RE9NID0g
ZmFsc2U7CiAgICAgICAgIAogICAgICAgICAvLyBTdG9yZSB0aGUgcmFuZ2UgYm91bmRhcmllcyBh
cyBQb3NpdGlvbiwgYmVjYXVzZSB0aGUgRE9NIGNvdWxkIGNoYW5nZSBpZiB3ZSBmaW5kCiAgICAg
ICAgIC8vIG9sZCBkYXRhIGRldGVjdG9yIGxpbmsuCiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8
UG9zaXRpb24sIFBvc2l0aW9uPj4gcmFuZ2VCb3VuZGFyaWVzOworICAgICAgICByYW5nZUJvdW5k
YXJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZXN1bHRSYW5nZXMuc2l6ZSgpKTsKICAgICAg
ICAgZm9yIChhdXRvJiByYW5nZSA6IHJlc3VsdFJhbmdlcykKLSAgICAgICAgICAgIHJhbmdlQm91
bmRhcmllcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIocmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcmFu
Z2UtPmVuZFBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIHJhbmdlQm91bmRhcmllcy51bmNoZWNr
ZWRBcHBlbmQoeyByYW5nZS0+c3RhcnRQb3NpdGlvbigpLCByYW5nZS0+ZW5kUG9zaXRpb24oKSB9
KTsKKworICAgICAgICBOU1N0cmluZyAqaWRlbnRpZmllciA9IGRhdGFEZXRlY3RvclN0cmluZ0Zv
clBhdGgoaW5kZXhQYXRoc1tyZXN1bHRJbmRleF0uZ2V0KCkpOworICAgICAgICBOU1N0cmluZyAq
Y29ycmVzcG9uZGluZ1VSTCA9IGNvbnN0cnVjdFVSTFN0cmluZ0ZvclJlc3VsdChjb3JlUmVzdWx0
LCBpZGVudGlmaWVyLCByZWZlcmVuY2VEYXRlLCAoTlNUaW1lWm9uZSAqKXR6LCB0eXBlcyk7Cisg
ICAgICAgIGJvb2wgZGlkTW9kaWZ5RE9NID0gZmFsc2U7CiAKICAgICAgICAgaWYgKCFjb3JyZXNw
b25kaW5nVVJMIHx8IHNlYXJjaEZvckxpbmtSZW1vdmluZ0V4aXN0aW5nRERMaW5rcyhyZXN1bHRS
YW5nZXMuZmlyc3QoKS0+c3RhcnRDb250YWluZXIoKSwgcmVzdWx0UmFuZ2VzLmxhc3QoKS0+ZW5k
Q29udGFpbmVyKCksIGRpZE1vZGlmeURPTSkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU5
Miw5ICs1OTEsMTAgQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFu
Z2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUKICAgICAgICAgaWYgKGRpZE1v
ZGlmeURPTSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIERPTSB3YXMgbW9kaWZpZWQgYmVjYXVz
ZSBzb21lIG9sZCBsaW5rcyB3ZXJlIHJlbW92ZWQsCiAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRv
IHJlY3JlYXRlIHRoZSByYW5nZXMgYmVjYXVzZSB0aGV5IGNvdWxkIG5vIGxvbmdlciBiZSB2YWxp
ZC4KLSAgICAgICAgICAgIHJlc3VsdFJhbmdlcy5jbGVhcigpOworICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdFJhbmdlcy5zaXplKCkgPT0gcmFuZ2VCb3VuZGFyaWVzLnNpemUoKSk7CisgICAgICAg
ICAgICByZXN1bHRSYW5nZXMuc2hyaW5rKDApOyAvLyBLZWVwIGNhcGFjaXR5IGFzIHdlIGFyZSBn
b2luZyB0byByZXBvcHVsYXRlIHRoZSBWZWN0b3IgcmlnaHQgYXdheSB3aXRoIHRoZSBzYW1lIG51
bWJlciBvZiBpdGVtcy4KICAgICAgICAgICAgIGZvciAoYXV0byYgcmFuZ2VCb3VuZGFyeSA6IHJh
bmdlQm91bmRhcmllcykKLSAgICAgICAgICAgICAgICByZXN1bHRSYW5nZXMuYXBwZW5kKFJhbmdl
OjpjcmVhdGUoKnJhbmdlQm91bmRhcnkuZmlyc3QuZG9jdW1lbnQoKSwgcmFuZ2VCb3VuZGFyeS5m
aXJzdCwgcmFuZ2VCb3VuZGFyeS5zZWNvbmQpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRSYW5n
ZXMudW5jaGVja2VkQXBwZW5kKFJhbmdlOjpjcmVhdGUoKnJhbmdlQm91bmRhcnkuZmlyc3QuZG9j
dW1lbnQoKSwgcmFuZ2VCb3VuZGFyeS5maXJzdCwgcmFuZ2VCb3VuZGFyeS5zZWNvbmQpKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgbGFzdE1vZGlmaWVkUXVlcnlPZmZzZXQgPSBxdWVy
eVJhbmdlLmVuZDsKQEAgLTYwNSw4ICs2MDUsMTEgQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6
ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRyPFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUK
ICNlbmRpZgogCiAgICAgICAgIGZvciAoYXV0byYgcmFuZ2UgOiByZXN1bHRSYW5nZXMpIHsKLSAg
ICAgICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSByYW5nZS0+c3RhcnRDb250YWluZXIoKS5wYXJl
bnROb2RlKCk7Ci0gICAgICAgICAgICBUZXh0JiBjdXJyZW50VGV4dE5vZGUgPSBkb3duY2FzdDxU
ZXh0PihyYW5nZS0+c3RhcnRDb250YWluZXIoKSk7CisgICAgICAgICAgICBhdXRvKiBwYXJlbnRO
b2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkucGFyZW50Tm9kZSgpOworICAgICAgICAgICAg
aWYgKCFwYXJlbnROb2RlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBhdXRvJiBjdXJyZW50VGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PihyYW5nZS0+c3RhcnRDb250
YWluZXIoKSk7CiAgICAgICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjdXJyZW50VGV4dE5v
ZGUuZG9jdW1lbnQoKTsKICAgICAgICAgICAgIFN0cmluZyB0ZXh0Tm9kZURhdGE7CiAgICAgICAg
ICAgICAKQEAgLTYxNSw0MCArNjE4LDQzIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVj
dENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAg
ICAgICAgICAgICAgICAgIGxhc3RUZXh0Tm9kZVRvVXBkYXRlLT5zZXREYXRhKGxhc3ROb2RlQ29u
dGVudCk7CiAgICAgICAgICAgICAgICAgY29udGVudE9mZnNldCA9IDA7CiAgICAgICAgICAgICAg
ICAgaWYgKHJhbmdlLT5zdGFydE9mZnNldCgpID4gMCkKLSAgICAgICAgICAgICAgICAgICAgdGV4
dE5vZGVEYXRhID0gY3VycmVudFRleHROb2RlLnN1YnN0cmluZ0RhdGEoMCwgcmFuZ2UtPnN0YXJ0
T2Zmc2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAgICAgICAgICAgICB0ZXh0
Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuZGF0YSgpLnN1YnN0cmluZygwLCByYW5nZS0+c3Rh
cnRPZmZzZXQoKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0ZXh0Tm9k
ZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuc3Vic3RyaW5nRGF0YShjb250ZW50T2Zmc2V0LCByYW5n
ZS0+c3RhcnRPZmZzZXQoKSAtIGNvbnRlbnRPZmZzZXQsIEFTU0VSVF9OT19FWENFUFRJT04pOwor
ICAgICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vi
c3RyaW5nKGNvbnRlbnRPZmZzZXQsIHJhbmdlLT5zdGFydE9mZnNldCgpIC0gY29udGVudE9mZnNl
dCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghdGV4dE5vZGVEYXRhLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdOb2RlID0gVGV4dDo6Y3JlYXRl
KGRvY3VtZW50LCB0ZXh0Tm9kZURhdGEpOwotICAgICAgICAgICAgICAgIHBhcmVudE5vZGUtPmlu
c2VydEJlZm9yZShuZXdOb2RlLCAmY3VycmVudFRleHROb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKKyAgICAgICAgICAgICAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUoVGV4dDo6Y3JlYXRl
KGRvY3VtZW50LCB0ZXh0Tm9kZURhdGEpLCAmY3VycmVudFRleHROb2RlKTsKICAgICAgICAgICAg
ICAgICBjb250ZW50T2Zmc2V0ID0gcmFuZ2UtPnN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgYWN0dWFsIGFuY2hvciBu
b2RlIGFuZCBpbnNlcnQgaXQgYmVmb3JlIHRoZSBjdXJyZW50IG5vZGUuCi0gICAgICAgICAgICB0
ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuc3Vic3RyaW5nRGF0YShyYW5nZS0+c3RhcnRP
ZmZzZXQoKSwgcmFuZ2UtPmVuZE9mZnNldCgpIC0gcmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIEFTU0VS
VF9OT19FWENFUFRJT04pOwotICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5ld05vZGUgPSBUZXh0
OjpjcmVhdGUoZG9jdW1lbnQsIHRleHROb2RlRGF0YSk7Ci0gICAgICAgICAgICBwYXJlbnROb2Rl
LT5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgJmN1cnJlbnRUZXh0Tm9kZSwgQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgICAgICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuZGF0YSgp
LnN1YnN0cmluZyhyYW5nZS0+c3RhcnRPZmZzZXQoKSwgcmFuZ2UtPmVuZE9mZnNldCgpIC0gcmFu
Z2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgUmVmPFRleHQ+IG5ld1RleHROb2RlID0g
VGV4dDo6Y3JlYXRlKGRvY3VtZW50LCB0ZXh0Tm9kZURhdGEpOworICAgICAgICAgICAgcGFyZW50
Tm9kZS0+aW5zZXJ0QmVmb3JlKG5ld1RleHROb2RlLmNvcHlSZWYoKSwgJmN1cnJlbnRUZXh0Tm9k
ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFJlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4g
YW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAg
ICAgICAgICAgUmVmPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hv
ckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5z
ZXRIcmVmKGNvcnJlc3BvbmRpbmdVUkwpOwogICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0
RGlyKCJsdHIiKTsKICAgICAgICAgICAgIGlmIChzaG91bGRVc2VMaWdodExpbmtzKQotICAgICAg
ICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0
ciwgZGF0YURldGVjdG9yc0xpbmtTdHlsZSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBSZWZQdHI8QXR0cj4gY29sb3IgPSBkb3duY2FzdDxFbGVtZW50PihwYXJlbnROb2Rl
KS0+Z2V0QXR0cmlidXRlTm9kZSgiY29sb3IiKTsKLSAgICAgICAgICAgICAgICBpZiAoY29sb3Ip
Ci0gICAgICAgICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OnN0eWxlQXR0ciwgY29sb3ItPnN0eWxlKCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAg
ICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgZGF0YURldGVjdG9yc0xp
bmtTdHlsZSk7CisgICAgICAgICAgICBlbHNlIGlmIChpczxTdHlsZWRFbGVtZW50PigqcGFyZW50
Tm9kZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogc3R5bGUgPSBkb3duY2FzdDxTdHls
ZWRFbGVtZW50PigqcGFyZW50Tm9kZSkucHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSkgewor
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29sb3IgPSBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUNvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2xvci5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yKTsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50LT5Ob2RlOjphcHBlbmRD
aGlsZChuZXdOb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgICAgIHBhcmVudE5v
ZGUtPmluc2VydEJlZm9yZShhbmNob3JFbGVtZW50LCAmY3VycmVudFRleHROb2RlLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPmFwcGVuZENoaWxkKFdU
Rk1vdmUobmV3VGV4dE5vZGUpKTsKICAgICAgICAgICAgIC8vIEFkZCBhIHNwZWNpYWwgYXR0cmli
dXRlIHRvIG1hcmsgdGhpcyBVUkxpZmljYXRpb24gYXMgdGhlIHJlc3VsdCBvZiBkYXRhIGRldGVj
dG9ycy4KICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEF0dHJpYnV0ZSh4X2FwcGxlX2Rh
dGFfZGV0ZWN0b3JzQXR0ciwgInRydWUiKTsKICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNl
dEF0dHJpYnV0ZSh4X2FwcGxlX2RhdGFfZGV0ZWN0b3JzX3R5cGVBdHRyLCBkYXRhRGV0ZWN0b3JU
eXBlRm9yQ2F0ZWdvcnkoc29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRDYXRl
Z29yeShjb3JlUmVzdWx0KSkpOwogICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmli
dXRlKHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNfcmVzdWx0QXR0ciwgaWRlbnRpZmllcik7CisKKyAg
ICAgICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShXVEZNb3ZlKGFuY2hvckVsZW1lbnQp
LCAmY3VycmVudFRleHROb2RlKTsKKwogICAgICAgICAgICAgY29udGVudE9mZnNldCA9IHJhbmdl
LT5lbmRPZmZzZXQoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbGFzdE5vZGVDb250ZW50
ID0gY3VycmVudFRleHROb2RlLnN1YnN0cmluZ0RhdGEocmFuZ2UtPmVuZE9mZnNldCgpLCBjdXJy
ZW50VGV4dE5vZGUubGVuZ3RoKCkgLSByYW5nZS0+ZW5kT2Zmc2V0KCksIEFTU0VSVF9OT19FWENF
UFRJT04pOworICAgICAgICAgICAgbGFzdE5vZGVDb250ZW50ID0gY3VycmVudFRleHROb2RlLmRh
dGEoKS5zdWJzdHJpbmcocmFuZ2UtPmVuZE9mZnNldCgpLCBjdXJyZW50VGV4dE5vZGUubGVuZ3Ro
KCkgLSByYW5nZS0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICAgICAgbGFzdFRleHROb2RlVG9VcGRh
dGUgPSAmY3VycmVudFRleHROb2RlOwogICAgICAgICB9ICAgICAgICAKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>