<?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>41691</bug_id>
          
          <creation_ts>2010-07-06 06:03:11 -0700</creation_ts>
          <short_desc>Web Inspector: provide line numbers for inline styles.</short_desc>
          <delta_ts>2010-07-07 00:41:49 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>hyatt</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>247044</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-06 06:03:11 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247071</commentid>
    <comment_count>1</comment_count>
      <attachid>60631</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-06 07:51:51 -0700</bug_when>
    <thetext>Created attachment 60631
[PATCH] Proposed change.

We will probably need Dave&apos;s blessing for this one, but please review it before I add him to the CC list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247317</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-06 22:44:13 -0700</bug_when>
    <thetext>Comments for the patch: In order to provide rules of inline css with proper line numbers, I get current line number from the parser upon HTMLStyleElement creation (I store it in int there). Then I extend StyleElement&apos;s interface to accept the line number baseline that is used in the CSSParser when constructing rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247318</commentid>
    <comment_count>3</comment_count>
      <attachid>60631</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-06 22:44:18 -0700</bug_when>
    <thetext>Comment on attachment 60631
[PATCH] Proposed change.

&gt; +        * inspector/styles-source-lines-expected.txt: Removed.
&gt; +        * inspector/styles-source-lines.html:

This test is still here, but probably changed. Should there be
results checked in for it, or do you want those generated?


&gt;  bool CSSStyleSheet::parseString(const String &amp;string, bool strict)
&gt;  {
&gt; +    return parseStringAtLine(string, strict, 0);
&gt; +}
...
&gt;      virtual bool parseString(const String&amp;, bool strict = true);

Can this be inlined? Are compilers smart enough to do it anyways?


&gt; +    int m_startLine;

My comment would have been to make these counters &quot;unsigned&quot;. But
there are already plenty of line counters as &quot;int&quot;. This is fine then.

Looks good to me (with those updated test results)!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247321</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-06 22:47:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comments for the patch: In order to provide rules of inline css with proper line numbers, I get current line number from the parser upon HTMLStyleElement creation (I store it in int there). Then I extend StyleElement&apos;s interface to accept the line number baseline that is used in the CSSParser when constructing rules.

Dave, could you take a look at it? It adds an argument to StyleElement and stores int in HTMLStyleElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247329</commentid>
    <comment_count>5</comment_count>
      <attachid>60631</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-06 23:03:44 -0700</bug_when>
    <thetext>Comment on attachment 60631
[PATCH] Proposed change.

&gt; +++ b/WebCore/html/HTMLStyleElement.cpp
&gt; @@ -37,7 +38,10 @@ inline HTMLStyleElement::HTMLStyleElement(const QualifiedName&amp; tagName, Document
&gt;      : HTMLElement(tagName, document)
&gt;      , m_loading(false)
&gt;      , m_createdByParser(createdByParser)
&gt; +    , m_startLine(0)
&gt;  {
&gt; +    if (createdByParser &amp;&amp; document &amp;&amp; document-&gt;scriptableDocumentParser())
&gt; +        m_startLine = document-&gt;scriptableDocumentParser()-&gt;lineNumber();
&gt;      ASSERT(hasTagName(styleTag));
&gt;  }

One last thing, move this after the ASSERT.
An extra int per style element should be fine.
r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247365</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-07 00:41:49 -0700</bug_when>
    <thetext>Landed with review comments addressed. Also renamed startLine to startLineNumber:

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	M	LayoutTests/http/tests/inspector/inspector-test.js
	M	LayoutTests/inspector/elements-tests.js
	A	LayoutTests/inspector/resources/styles-source-lines-inline-iframe.html
	M	LayoutTests/inspector/styles-iframe.html
	M	LayoutTests/inspector/styles-source-lines-expected.txt
	A	LayoutTests/inspector/styles-source-lines-inline-expected.txt
	A	LayoutTests/inspector/styles-source-lines-inline.html
	M	LayoutTests/inspector/styles-source-lines.html
	M	WebCore/ChangeLog
	M	WebCore/css/CSSParser.cpp
	M	WebCore/css/CSSParser.h
	M	WebCore/css/CSSStyleSheet.cpp
	M	WebCore/css/CSSStyleSheet.h
	M	WebCore/dom/StyleElement.cpp
	M	WebCore/dom/StyleElement.h
	M	WebCore/html/HTMLStyleElement.cpp
	M	WebCore/html/HTMLStyleElement.h
	M	WebCore/inspector/InspectorCSSStore.cpp
	M	WebCore/inspector/InspectorDOMAgent.cpp
	M	WebCore/inspector/front-end/DOMAgent.js
	M	WebCore/inspector/front-end/StylesSidebarPane.js
	M	WebCore/svg/SVGStyleElement.cpp
Committed r62630</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60631</attachid>
            <date>2010-07-06 07:51:51 -0700</date>
            <delta_ts>2010-07-06 23:03:43 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>inline_style</filename>
            <type>text/plain</type>
            <size>20627</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZTc3ZDVkLi5lNzIwODExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDct
MDYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlk
ZSBsaW5lIG51bWJlcnMgZm9yIGlubGluZSBzdHlsZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNjkxCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKHJ1bkFmdGVySWZyYW1lSXNM
b2FkZWQuc3RlcCk6CisgICAgICAgIChydW5BZnRlcklmcmFtZUlzTG9hZGVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZWxlbWVudHMtdGVzdHMuanM6CisgICAgICAgICogaW5zcGVjdG9yL3Jlc291
cmNlcy9zdHlsZXMtc291cmNlLWxpbmVzLWlubGluZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c3R5bGVzLXNvdXJjZS1saW5lcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLmh0bWw6CisKIDIwMTAt
MDctMDUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCA3MTRhMzIxLi5hNzNjMTY0IDEw
MDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcwpAQCAtODQsNiArODQsMTggQEAgZnVuY3Rpb24gZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9u
dGVuZChjYWxsSWQsIGpzb25SZXN1bHQpCiAgICAgfQogfQogCitmdW5jdGlvbiBydW5BZnRlcklm
cmFtZUlzTG9hZGVkKGNvbnRpbnVhdGlvbikKK3sKKyAgICBmdW5jdGlvbiBzdGVwKCkKKyAgICB7
CisgICAgICAgIGlmICghd2luZG93LmlmcmFtZUxvYWRlZCkKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoc3RlcCwgMTAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGludWF0aW9uKCk7
CisgICAgfQorICAgIHNldFRpbWVvdXQoc3RlcCwgMTAwKTsKK30KKwogLy8gRnJvbnQtZW5kIHV0
aWxpdGllcy4KIAogZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFRyZWVPdXRsaW5lKHRyZWVJdGVtLCBy
ZXN1bHQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdHMu
anMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdHMuanMKaW5kZXggMTkxMmY3
OC4uNGQ3Mjc3ZCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRl
c3RzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0cy5qcwpAQCAt
MSwxMiArMSwzIEBACi1mdW5jdGlvbiBkdW1wQXJyYXkocmVzdWx0KQotewotICAgIGlmIChyZXN1
bHQgaW5zdGFuY2VvZiBBcnJheSkgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3Vs
dC5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0pOwotICAgIH0gZWxz
ZQotICAgICAgICBvdXRwdXQocmVzdWx0KTsKLX0KLQogLy8gRnJvbnRlbmQgZnVuY3Rpb25zLgog
CiBmdW5jdGlvbiBmcm9udGVuZF9leHBhbmRET01TdWJ0cmVlKG5vZGUpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5l
LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtc291
cmNlLWxpbmVzLWlubGluZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jNjczOGNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9zdHlsZXMtc291cmNlLWxpbmVzLWlubGluZS1pZnJhbWUuaHRtbApAQCAtMCww
ICsxLDIwIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmJhciB7CisgICAgY29sb3I6IHJl
ZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gaWZyYW1lT25sb2FkKCkKK3sKKyAg
ICB3aW5kb3cucGFyZW50LmlmcmFtZUxvYWRlZCA9IHRydWU7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKworPGJvZHkgb25sb2FkPSJpZnJhbWVPbmxvYWQoKSI+Cis8ZGl2IGlkPSJiYXIiIGNsYXNz
PSJiYXIiPkJhcjwvZGl2PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy1pZnJhbWUuaHRtbAppbmRleCA4YTJmNGQ2Li44YzlmYmQwIDEwMDc1NQotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMtaWZyYW1lLmh0bWwKQEAgLTksMTggKzksNiBAQAogPHNjcmlwdCBz
cmM9ImVsZW1lbnRzLXRlc3RzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIHJ1
bkFmdGVySWZyYW1lSXNMb2FkZWQoY29udGludWF0aW9uKQotewotICAgIGZ1bmN0aW9uIHN0ZXAo
KQotICAgIHsKLSAgICAgICAgaWYgKCF3aW5kb3cuaWZyYW1lTG9hZGVkKQotICAgICAgICAgICAg
c2V0VGltZW91dChzdGVwLCAxMDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250aW51
YXRpb24oKTsKLSAgICB9Ci0gICAgc2V0VGltZW91dChzdGVwLCAxMDApOwotfQotCiBmdW5jdGlv
biBkb2l0KCkKIHsKICAgICBydW5BZnRlcklmcmFtZUlzTG9hZGVkKGZ1bmN0aW9uKCkgewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWY5ZWRkLi4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotVGVzdHMgdGhhdCBwcm9wZXIgc291cmNl
IGxpbmVzIGFyZSByZXBvcnRlZCBmb3IgdGhlIHBhcnNlZCBzdHlsZXMuCi0KLUxpbmU6NQlib2R5
LCAuYXRfbGluZV81OjpiZWZvcmUKLUxpbmU6MTkJYm9keSwgLmF0X2xpbmVfMTkKLUxpbmU6MzMJ
Ym9keSwgLmF0X2xpbmVfMzMKLUxpbmU6NDAJYm9keSwgLmF0X2xpbmVfNDAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLWlubGlu
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU0MTk3
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNl
LWxpbmVzLWlubGluZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorVGVzdHMgdGhhdCBl
bGVtZW50cyBwYW5lbCBzaG93cyBwcm9wZXIgaW5saW5lIHN0eWxlIGxvY2F0aW9ucyBpbiB0aGUg
c2lkZWJhciBwYW5lbC4KKworCitbZXhwYW5kZWRdIGVsZW1lbnQuc3R5bGUgeyAoZWxlbWVudOKA
mXMg4oCcc3R5bGXigJ0gYXR0cmlidXRlKQorZGlzcGxheTogbm9uZTsKKworPT09PT09PT0gTWF0
Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gLmZvbyB7IChzdHlsZXMtc291cmNl
LWxpbmVzLWlubGluZS5odG1sOjcpCitjb2xvcjogYmx1ZTsKKworW2V4cGFuZGVkXSBkaXYgeyAo
dXNlciBhZ2VudCBzdHlsZXNoZWV0KQorLy0tIG92ZXJsb2FkZWQgLS0vIGRpc3BsYXk6IGJsb2Nr
OworCisKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7IChlbGVtZW504oCZcyDigJxzdHlsZeKA
nSBhdHRyaWJ1dGUpCisKKz09PT09PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CitbZXhw
YW5kZWRdIC5iYXIgeyAocmVzb3VyY2VzL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLWlmcmFt
ZS5odG1sOjQpCitjb2xvcjogcmVkOworCitbZXhwYW5kZWRdIGRpdiB7ICh1c2VyIGFnZW50IHN0
eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLWlubGluZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5saW5lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTBlZjdjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLWxpbmVzLWlubGluZS5odG1sCkBAIC0wLDAgKzEs
NjIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImVsZW1lbnRzLXRl
c3RzLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorLmZvbyB7CisgICAgY29sb3I6IGJsdWU7Cit9
Cis8L3N0eWxlPgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBkb2l0KCkKK3sKKyAgICBydW5BZnRl
cklmcmFtZUlzTG9hZGVkKGZ1bmN0aW9uKCkgeworCSAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1
bHQpCisJICAgIHsKKwkgICAgICAgIGR1bXBBcnJheShyZXN1bHQpOworCSAgICAgICAgbm90aWZ5
RG9uZSgpOworCSAgICB9CisJICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2R1
bXBTdHlsZXMiLCBjYWxsYmFjayk7CisgICAgfSk7Cit9CisKKy8vIEZyb250ZW5kIGZ1bmN0aW9u
cy4KKworZnVuY3Rpb24gZnJvbnRlbmRfZHVtcFN0eWxlcyh0ZXN0Q29udHJvbGxlcikKK3sKKyAg
ICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgZnJvbnRlbmRfZXhwYW5kRE9N
U3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRlbmRfc2VsZWN0RWxlbWVu
dENvbnRpbnVhdGlvbik7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRDb250
aW51YXRpb24odGVzdENvbnRyb2xsZXIpCit7CisgICAgZnJvbnRlbmRfc2VsZWN0RWxlbWVudEFu
ZFJ1bih0ZXN0Q29udHJvbGxlciwgImZvbyIsIGZyb250ZW5kX3NlbGVjdEVsZW1lbnRDb250aW51
YXRpb24yKTsKK30KKworZnVuY3Rpb24gZnJvbnRlbmRfc2VsZWN0RWxlbWVudENvbnRpbnVhdGlv
bjIodGVzdENvbnRyb2xsZXIpCit7CisgICAgdmFyIHJlc3VsdCA9IGZyb250ZW5kX2dldFNlbGVj
dGVkRWxlbWVudFN0eWxlcyh0cnVlKTsKKyAgICBmdW5jdGlvbiBkdW1wU2VsZWN0ZWRFbGVtZW50
U3R5bGVzKCkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoZnJvbnRlbmRf
Z2V0U2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpKTsKKyAgICAgICAgdGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZShyZXN1bHQpOworICAgIH0KKyAgICBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5k
UnVuKHRlc3RDb250cm9sbGVyLCAiYmFyIiwgZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyk7Cit9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxwPgor
VGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzaG93cyBwcm9wZXIgaW5saW5lIHN0eWxlIGxvY2F0
aW9ucyBpbiB0aGUgc2lkZWJhciBwYW5lbC4KKzwvcD4KKworPGRpdiBpZD0iZm9vIiBjbGFzcz0i
Zm9vIiBzdHlsZT0iZGlzcGxheTpub25lIj5Gb288L2Rpdj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvc3R5bGVzLXNvdXJjZS1saW5lcy1pbmxpbmUtaWZyYW1lLmh0bWwiPgorCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1s
aW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMuaHRt
bAppbmRleCBlMGJiMjI2Li41MTcxNTBhIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzLXNvdXJjZS1saW5lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMtc291cmNlLWxpbmVzLmh0bWwKQEAgLTgsNyArOCw3IEBACiAtLT4KIAogPHN0eWxlIHR5
cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KLWJvZHksIC5hdF9saW5lXzU6Oi8qCitib2R5
LCAuYXRfbGluZV8xNTo6LyoKIE11bHRpbGluZSBjb21tZW50CiBiZWZvcmUgcHNldWRvIGVsZW1l
bnQKICAgICAgICAgICAgICAgKi9iZWZvcmUgCkBAIC0yMyw3ICsyMyw3IEBAIE11bHRpbGluZSBj
b21tZW50IGZvbGxvd2VkIHdpdGggd2hpdGVzcGFjZQogCiAqLwogCi1ib2R5LCAuYXRfbGluZV8x
OQorYm9keSwgLmF0X2xpbmVfMjkKIAogCiB7CkBAIC0zOCw3ICszOCw3IEBAIGJvZHksIC5hdF9s
aW5lXzE5CiAKIGZvbGxvd2VkIGJ5IHNlbGVjdG9yCiAqL2JvZHksCi0uYXRfbGluZV8zMworLmF0
X2xpbmVfNDMKIAogewogICAgIGZvbnQtc2l6ZToKQEAgLTQ2LDcgKzQ2LDcgQEAgZm9sbG93ZWQg
Ynkgc2VsZWN0b3IKIH0KIAogCi1ib2R5LCAuYXRfbGluZV80MAorYm9keSwgLmF0X2xpbmVfNTAK
IHsKICAgICBib3JkZXI6IDFweCBzb2xpZAogICAgIHJlZDsKQEAgLTYzLDcgKzYzLDcgQEAgZnVu
Y3Rpb24gZG9pdCgpCiAgICAgewogICAgICAgICB2YXIgbWF0Y2hlZENTU1J1bGVzID0gc3R5bGVz
Lm1hdGNoZWRDU1NSdWxlczsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGVkQ1NT
UnVsZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIG91dHB1dCgiTGluZToiICsgbWF0Y2hl
ZENTU1J1bGVzW2ldLnNvdXJjZUxpbmUgKyAiXHQiICsgbWF0Y2hlZENTU1J1bGVzW2ldLnNlbGVj
dG9yVGV4dCk7CisgICAgICAgICAgICBvdXRwdXQoIkxpbmU6IiArIChtYXRjaGVkQ1NTUnVsZXNb
aV0uc291cmNlTGluZSArIDEpICsgIlx0IiArIG1hdGNoZWRDU1NSdWxlc1tpXS5zZWxlY3RvclRl
eHQpOwogICAgICAgICB9CiAgICAgICAgIG5vdGlmeURvbmUoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDExZjczZGEuLmI3
YTdkMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTAtMDctMDYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBsaW5lIG51bWJlcnMgZm9yIGlubGluZSBz
dHlsZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxNjkxCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2UtbGluZXMtaW5s
aW5lLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVNoZWV0KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6
cGFyc2VTdHJpbmdBdExpbmUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAg
ICAgICogZG9tL1N0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1l
bnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50OjpjcmVhdGVTaGVl
dCk6CisgICAgICAgICogZG9tL1N0eWxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFN0
eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpIVE1M
U3R5bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmZpbmlz
aFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU1N0b3JlOjpnZXRSdWxlUmFuZ2VzRm9yU3R5bGVTaGVldCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZWNsYXJhdGlvbi5wYXJzZVJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
aWVzU2VjdGlvbi5lbHNlLmxpbmtpZnlVbmNvcHlhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uKToKKwogMjAxMC0wNy0wNSAgUGF2ZWwgRmVsZG1hbiAg
PHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlr
aGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMzJlMTNhNS4uNTNlYzZjZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC0yMzEsMTIgKzIzMSwxMyBAQCB2b2lkIENTU1BhcnNlcjo6c2V0dXBQYXJzZXIoY29uc3QgY2hh
ciogcHJlZml4LCBjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgY2hhcgogICAgIHJlc2V0UnVs
ZUJvZHlNYXJrcygpOwogfQogCi12b2lkIENTU1BhcnNlcjo6cGFyc2VTaGVldChDU1NTdHlsZVNo
ZWV0KiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIFN0eWxlUnVsZVJhbmdlcyogcnVsZVJh
bmdlTWFwKQordm9pZCBDU1NQYXJzZXI6OnBhcnNlU2hlZXQoQ1NTU3R5bGVTaGVldCogc2hlZXQs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQgc3RhcnRMaW5lLCBTdHlsZVJ1bGVSYW5nZXMqIHJ1
bGVSYW5nZU1hcCkKIHsKICAgICBtX3N0eWxlU2hlZXQgPSBzaGVldDsKICAgICBtX2RlZmF1bHRO
YW1lc3BhY2UgPSBzdGFyQXRvbTsgLy8gUmVzZXQgdGhlIGRlZmF1bHQgbmFtZXNwYWNlLgogICAg
IG1fcnVsZVJhbmdlcyA9IHJ1bGVSYW5nZU1hcDsKIAorICAgIG1fbGluZSA9IHN0YXJ0TGluZTsK
ICAgICBzZXR1cFBhcnNlcigiIiwgc3RyaW5nLCAiIik7CiAgICAgY3NzeXlwYXJzZSh0aGlzKTsK
ICAgICBtX3J1bGVSYW5nZXMgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmggYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCA4MWIxYWUyLi43ZGI1NmYyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENTU1Bh
cnNlcihib29sIHN0cmljdFBhcnNpbmcgPSB0cnVlKTsKICAgICAgICAgfkNTU1BhcnNlcigpOwog
Ci0gICAgICAgIHZvaWQgcGFyc2VTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJiwg
U3R5bGVSdWxlUmFuZ2VzKiBydWxlUmFuZ2VNYXAgPSAwKTsKKyAgICAgICAgdm9pZCBwYXJzZVNo
ZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRMaW5lID0gMCwgU3R5
bGVSdWxlUmFuZ2VzKiBydWxlUmFuZ2VNYXAgPSAwKTsKICAgICAgICAgUGFzc1JlZlB0cjxDU1NS
dWxlPiBwYXJzZVJ1bGUoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwogICAgICAgICBQ
YXNzUmVmUHRyPENTU1J1bGU+IHBhcnNlS2V5ZnJhbWVSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25z
dCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBwYXJzZVZhbHVlKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiwgaW50IHByb3BJZCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmNwcAppbmRleCAyMjdkMzdjLi44NDIwYmY1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cApAQCAtMTgzLDkgKzE4MywxNCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIENTU1N0eWxlU2hlZXQ6
OmRldGVybWluZU5hbWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeAogCiBib29sIENT
U1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyAmc3RyaW5nLCBib29sIHN0cmlj
dCkKIHsKKyAgICByZXR1cm4gcGFyc2VTdHJpbmdBdExpbmUoc3RyaW5nLCBzdHJpY3QsIDApOwor
fQorCitib29sIENTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIHN0cmljdCwgaW50IHN0YXJ0TGluZSkKK3sKICAgICBzZXRTdHJpY3RQYXJz
aW5nKHN0cmljdCk7CiAgICAgQ1NTUGFyc2VyIHAoc3RyaWN0KTsKLSAgICBwLnBhcnNlU2hlZXQo
dGhpcywgc3RyaW5nKTsKKyAgICBwLnBhcnNlU2hlZXQodGhpcywgc3RyaW5nLCBzdGFydExpbmUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggNGM1OTE0NC4uOWFm
ZDlhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSB0cnVl
KTsKIAorICAgIGJvb2wgcGFyc2VTdHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJp
Y3QsIGludCBzdGFydExpbmUpOworCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGNoZWNrTG9hZGVkKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9T
dHlsZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAppbmRleCBhMzIz
ZTE2Li4wY2YxMzRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKQEAgLTM2LDEzICszNiwxMyBAQCBTdHls
ZUVsZW1lbnQ6OlN0eWxlRWxlbWVudCgpCiBTdHlsZVNoZWV0KiBTdHlsZUVsZW1lbnQ6OnNoZWV0
KEVsZW1lbnQqIGUpCiB7CiAgICAgaWYgKCFtX3NoZWV0KQotICAgICAgICBjcmVhdGVTaGVldChl
KTsKKyAgICAgICAgY3JlYXRlU2hlZXQoZSwgMCk7CiAgICAgcmV0dXJuIG1fc2hlZXQuZ2V0KCk7
CiB9CiAKIHZvaWQgU3R5bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudChEb2N1bWVudCos
IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgcHJvY2VzcyhlbGVtZW50KTsKKyAgICBwcm9jZXNz
KGVsZW1lbnQsIDApOwogfQogCiB2b2lkIFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgU3R5bGVFbGVtZW50
OjpyZW1vdmVkRnJvbURvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgZG9jdW1l
bnQtPnVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKIH0KIAotdm9pZCBTdHlsZUVsZW1lbnQ6OnByb2Nl
c3MoRWxlbWVudCogZSkKK3ZvaWQgU3R5bGVFbGVtZW50Ojpwcm9jZXNzKEVsZW1lbnQqIGUsIGlu
dCBzdGFydExpbmUpCiB7CiAgICAgaWYgKCFlIHx8ICFlLT5pbkRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTgyLDEwICs4MiwxMCBAQCB2b2lkIFN0eWxlRWxlbWVudDo6cHJvY2VzcyhF
bGVtZW50KiBlKQogICAgIH0KICAgICBBU1NFUlQocCA9PSB0ZXh0ICsgcmVzdWx0TGVuZ3RoKTsK
IAotICAgIGNyZWF0ZVNoZWV0KGUsIHNoZWV0VGV4dCk7CisgICAgY3JlYXRlU2hlZXQoZSwgc3Rh
cnRMaW5lLCBzaGVldFRleHQpOwogfQogCi12b2lkIFN0eWxlRWxlbWVudDo6Y3JlYXRlU2hlZXQo
RWxlbWVudCogZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBTdHlsZUVsZW1lbnQ6OmNyZWF0
ZVNoZWV0KEVsZW1lbnQqIGUsIGludCBzdGFydExpbmUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlLT5kb2N1bWVudCgpOwogICAgIGlmIChtX3NoZWV0
KSB7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTdHlsZUVsZW1lbnQ6OmNyZWF0ZVNoZWV0KEVs
ZW1lbnQqIGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRQ
ZW5kaW5nU2hlZXQoKTsKICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7CiAgICAgICAgICAg
ICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKGUsIFN0cmluZygpLCBLVVJMKCksIGRv
Y3VtZW50LT5pbnB1dEVuY29kaW5nKCkpOwotICAgICAgICAgICAgbV9zaGVldC0+cGFyc2VTdHJp
bmcodGV4dCwgIWRvY3VtZW50LT5pbkNvbXBhdE1vZGUoKSk7CisgICAgICAgICAgICBtX3NoZWV0
LT5wYXJzZVN0cmluZ0F0TGluZSh0ZXh0LCAhZG9jdW1lbnQtPmluQ29tcGF0TW9kZSgpLCBzdGFy
dExpbmUpOwogICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWEobWVkaWFMaXN0LmdldCgpKTsK
ICAgICAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGUtPnRpdGxlKCkpOwogICAgICAgICAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQu
aCBiL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5oCmluZGV4IDlkM2FjODQuLmY0Y2FkYTEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL1N0
eWxlRWxlbWVudC5oCkBAIC00MSw5ICs0MSw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgaW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoRG9jdW1lbnQqLCBFbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVk
RnJvbURvY3VtZW50KERvY3VtZW50Kik7Ci0gICAgdm9pZCBwcm9jZXNzKEVsZW1lbnQqKTsKKyAg
ICB2b2lkIHByb2Nlc3MoRWxlbWVudCosIGludCBzdGFydExpbmUpOwogCi0gICAgdm9pZCBjcmVh
dGVTaGVldChFbGVtZW50KiBlLCBjb25zdCBTdHJpbmcmIHRleHQgPSBTdHJpbmcoKSk7CisgICAg
dm9pZCBjcmVhdGVTaGVldChFbGVtZW50KiBlLCBpbnQgc3RhcnRMaW5lLCBjb25zdCBTdHJpbmcm
IHRleHQgPSBTdHJpbmcoKSk7CiAKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gbV9zaGVldDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCA3OWJhZmU2Li5hMzFl
ZDQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcg
KzM4LDEwIEBAIGlubGluZSBIVE1MU3R5bGVFbGVtZW50OjpIVE1MU3R5bGVFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAgICAgOiBIVE1MRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIG1fbG9hZGluZyhmYWxzZSkKICAgICAsIG1fY3JlYXRlZEJ5
UGFyc2VyKGNyZWF0ZWRCeVBhcnNlcikKKyAgICAsIG1fc3RhcnRMaW5lKDApCiB7CisgICAgaWYg
KGNyZWF0ZWRCeVBhcnNlciAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC0+c2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKCkpCisgICAgICAgIG1fc3RhcnRMaW5lID0gZG9jdW1lbnQtPnNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcigpLT5saW5lTnVtYmVyKCk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc3R5
bGVUYWcpKTsKIH0KIApAQCAtNTgsNyArNjIsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIAogdm9pZCBIVE1MU3R5bGVFbGVt
ZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogewotICAgIFN0eWxlRWxlbWVudDo6cHJvY2Vz
cyh0aGlzKTsKKyAgICBTdHlsZUVsZW1lbnQ6OnByb2Nlc3ModGhpcywgbV9zdGFydExpbmUpOwog
ICAgIFN0eWxlRWxlbWVudDo6c2hlZXQodGhpcyk7CiAgICAgbV9jcmVhdGVkQnlQYXJzZXIgPSBm
YWxzZTsKICAgICBIVE1MRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CkBAIC04Myw3
ICs4Nyw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiB2
b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnRE
ZWx0YSkKIHsKICAgICBpZiAoIWNoYW5nZWRCeVBhcnNlcikKLSAgICAgICAgU3R5bGVFbGVtZW50
Ojpwcm9jZXNzKHRoaXMpOworICAgICAgICBTdHlsZUVsZW1lbnQ6OnByb2Nlc3ModGhpcywgMCk7
CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9y
ZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFN0eWxl
RWxlbWVudC5oCmluZGV4IDBmOGE4M2IuLjUyOTU4ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
aApAQCAtNjUsNiArNjUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2xvYWRpbmc7CiAgICAg
Ym9vbCBtX2NyZWF0ZWRCeVBhcnNlcjsKKyAgICBpbnQgbV9zdGFydExpbmU7CiB9OwogCiB9IC8v
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9y
ZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5jcHAKaW5kZXggN2Jj
OTQ3YS4uMGVmYTAyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
U3RvcmUuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcApA
QCAtMTI1LDcgKzEyNSw3IEBAIEhhc2hNYXA8bG9uZywgU291cmNlUmFuZ2U+IEluc3BlY3RvckNT
U1N0b3JlOjpnZXRSdWxlUmFuZ2VzRm9yU3R5bGVTaGVldChDU1NTdHlsCiAgICAgICAgICAgICBS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gbmV3U3R5bGVTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0
ZShzdHlsZVNoZWV0LT5vd25lck5vZGUoKSk7CiAgICAgICAgICAgICBDU1NQYXJzZXIgcDsKICAg
ICAgICAgICAgIENTU1BhcnNlcjo6U3R5bGVSdWxlUmFuZ2VzIHJ1bGVSYW5nZU1hcDsKLSAgICAg
ICAgICAgIHAucGFyc2VTaGVldChuZXdTdHlsZVNoZWV0LmdldCgpLCByZXNvdXJjZS0+c291cmNl
U3RyaW5nKCksICZydWxlUmFuZ2VNYXApOworICAgICAgICAgICAgcC5wYXJzZVNoZWV0KG5ld1N0
eWxlU2hlZXQuZ2V0KCksIHJlc291cmNlLT5zb3VyY2VTdHJpbmcoKSwgMCwgJnJ1bGVSYW5nZU1h
cCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBuZXdTdHlsZVNo
ZWV0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgQ1NTU3R5
bGVSdWxlKiBydWxlID0gYXNDU1NTdHlsZVJ1bGUobmV3U3R5bGVTaGVldC0+aXRlbShpKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFydWxlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IGEyZjJlMTUuLjhkNzdkMzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKQEAgLTE0NzQsNiArMTQ3NCw3IEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKERvY3VtZW50KiBvd25lckRvY3VtZW50LCBD
U1NTCiAgICAgcmVzdWx0LnNldCgic2VsZWN0b3JUZXh0IiwgcnVsZS0+c2VsZWN0b3JUZXh0KCkp
OwogICAgIHJlc3VsdC5zZXQoImNzc1RleHQiLCBydWxlLT5jc3NUZXh0KCkpOwogICAgIHJlc3Vs
dC5zZXQoInNvdXJjZUxpbmUiLCBydWxlLT5zb3VyY2VMaW5lKCkpOworICAgIHJlc3VsdC5zZXQo
ImRvY3VtZW50VVJMIiwgZG9jdW1lbnRVUkxTdHJpbmcob3duZXJEb2N1bWVudCkpOwogICAgIGlm
IChwYXJlbnRTdHlsZVNoZWV0KSB7CiAgICAgICAgIFNjcmlwdE9iamVjdCBwYXJlbnRTdHlsZVNo
ZWV0VmFsdWUgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICAgICAgcmVzdWx0
LnNldCgicGFyZW50U3R5bGVTaGVldCIsIHBhcmVudFN0eWxlU2hlZXRWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5kZXggZWU4NWQxYy4uNTRlODQ1NiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwpAQCAtNTQzLDYgKzU0Myw3IEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUnVsZSA9IGZ1bmN0aW9uKHBh
eWxvYWQpCiAgICAgcnVsZS5pc1VzZXIgPSBwYXlsb2FkLmlzVXNlcjsKICAgICBydWxlLmlzVmlh
SW5zcGVjdG9yID0gcGF5bG9hZC5pc1ZpYUluc3BlY3RvcjsKICAgICBydWxlLnNvdXJjZUxpbmUg
PSBwYXlsb2FkLnNvdXJjZUxpbmU7CisgICAgcnVsZS5kb2N1bWVudFVSTCA9IHBheWxvYWQuZG9j
dW1lbnRVUkw7CiAgICAgaWYgKHBheWxvYWQucGFyZW50U3R5bGVTaGVldCkKICAgICAgICAgcnVs
ZS5wYXJlbnRTdHlsZVNoZWV0ID0geyBocmVmOiBwYXlsb2FkLnBhcmVudFN0eWxlU2hlZXQuaHJl
ZiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lk
ZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMKaW5kZXggNjQ5YjlkMC4uNWY1YTVhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtNjQ5LDIwICs2NDksMjQgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24gPSBmdW5jdGlvbihzdHlsZVJ1bGUsIHN1
YnRpdGxlLCBjb21wdXRlZFN0eWwKICAgICAgICAgdGhpcy5oZWFkZXJFbGVtZW50LmFkZFN0eWxl
Q2xhc3MoImhpZGRlbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghc3VidGl0bGUpIHsK
LSAgICAgICAgICAgIGlmICh0aGlzLnN0eWxlUnVsZS5wYXJlbnRTdHlsZVNoZWV0ICYmIHRoaXMu
c3R5bGVSdWxlLnBhcmVudFN0eWxlU2hlZXQuaHJlZikgewotICAgICAgICAgICAgICAgIHZhciB1
cmwgPSB0aGlzLnN0eWxlUnVsZS5wYXJlbnRTdHlsZVNoZWV0LmhyZWY7Ci0gICAgICAgICAgICAg
ICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHVybCwgInJl
c291cmNlcyIsIHRoaXMucnVsZS5zb3VyY2VMaW5lICsgMSk7CisgICAgICAgICAgICBmdW5jdGlv
biBsaW5raWZ5VW5jb3B5YWJsZSh1cmwsIGxpbmUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHVybCwg
InJlc291cmNlcyIsIGxpbmUgKyAxKTsKICAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0
ZSgiZGF0YS11bmNvcHlhYmxlIiwgbGluay50ZXh0Q29udGVudCk7CiAgICAgICAgICAgICAgICAg
bGluay50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVt
ZW50LmFwcGVuZENoaWxkKGxpbmspOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc1VzZXJBZ2Vu
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbGluazsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHRoaXMuc3R5bGVSdWxlLnBhcmVudFN0eWxlU2hlZXQgJiYgdGhpcy5zdHlsZVJ1
bGUucGFyZW50U3R5bGVTaGVldC5ocmVmKQorICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVF
bGVtZW50LmFwcGVuZENoaWxkKGxpbmtpZnlVbmNvcHlhYmxlKHRoaXMuc3R5bGVSdWxlLnBhcmVu
dFN0eWxlU2hlZXQuaHJlZiwgdGhpcy5ydWxlLnNvdXJjZUxpbmUpKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGlzVXNlckFnZW50KQogICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJ1c2VyIGFnZW50IHN0eWxlc2hlZXQiKTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKGlzVXNlcikKICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygidXNlciBzdHlsZXNoZWV0Iik7CiAgICAgICAgICAgICBlbHNlIGlmIChpc1ZpYUluc3Bl
Y3RvcikKICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
dmlhIGluc3BlY3RvciIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN1YnRp
dGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJpbmxpbmUgc3R5bGVzaGVldCIpOworICAgICAg
ICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKGxpbmtpZnlVbmNvcHlh
YmxlKHRoaXMucnVsZS5kb2N1bWVudFVSTCwgdGhpcy5ydWxlLnNvdXJjZUxpbmUpKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoaXNJbmhlcml0ZWQpCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
YWRkU3R5bGVDbGFzcygic2hvdy1pbmhlcml0ZWQiKTsgLy8gVGhpcyBvbmUgaXMgcmVsYXRlZCB0
byBpbmhlcml0ZWQgcnVsZXMsIG5vdCBjb21wdGVkIHN0eWxlLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5j
cHAKaW5kZXggZDk5NzA3NC4uNDhmYmU2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCkBAIC0x
MTQsNyArMTE0LDcgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQo
KQogdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291
bnREZWx0YSkKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFy
c2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwotICAgIFN0
eWxlRWxlbWVudDo6cHJvY2Vzcyh0aGlzKTsKKyAgICBTdHlsZUVsZW1lbnQ6OnByb2Nlc3ModGhp
cywgMCk7CiB9CiAKIFN0eWxlU2hlZXQqIFNWR1N0eWxlRWxlbWVudDo6c2hlZXQoKQo=
</data>
<flag name="review"
          id="48259"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="48360"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>