<?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>130704</bug_id>
          
          <creation_ts>2014-03-24 17:43:48 -0700</creation_ts>
          <short_desc>Prevent &apos;removetrack&apos; events from firing when all inband text tracks are removed.</short_desc>
          <delta_ts>2014-03-31 09:39:41 -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>Media</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994037</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-24 17:43:48 -0700</bug_when>
    <thetext>This patch fixes a bug where the &apos;removetrack&apos; event was being fired when following the W3C logic to &quot;forget the media element&apos;s media-resource-specific track&quot; algorithm.

It is based on the Blink work done in &lt;https://codereview.chromium.org/177243018/&gt;, though it diverges a bit due to the drift in code since the fork.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994038</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-03-24 17:44:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/16414074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994044</commentid>
    <comment_count>2</comment_count>
      <attachid>227711</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-24 17:56:29 -0700</bug_when>
    <thetext>Created attachment 227711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994068</commentid>
    <comment_count>3</comment_count>
      <attachid>227711</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-24 19:38:40 -0700</bug_when>
    <thetext>Comment on attachment 227711
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.h:293
&gt; +    void removeTextTrack(TextTrack*, bool scheduleEvent = true);

Is the default value used by any of the call sites?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994071</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-24 19:53:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 227711 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=227711&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:293
&gt; &gt; +    void removeTextTrack(TextTrack*, bool scheduleEvent = true);
&gt; 
&gt; Is the default value used by any of the call sites?

Yes, mainly in the MediaSources.cpp file. I wanted to make sure the behavior of these locations was unchanged.

Do we need to suppress the remove track event for audio or video track handling? I don&apos;t think the WebVTT spec says anything about those operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994172</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-25 07:55:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 227711 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=227711&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/html/HTMLMediaElement.h:293
&gt; &gt; &gt; +    void removeTextTrack(TextTrack*, bool scheduleEvent = true);
&gt; &gt; 
&gt; &gt; Is the default value used by any of the call sites?
&gt; 
&gt; Yes, mainly in the MediaSources.cpp file. I wanted to make sure the behavior of these locations was unchanged.
&gt; 
You changed HTMLMediaElement::didRemoveTextTrack to pass true explicitly - removeTextTrack(textTrack.get(), true). We should probably be consistent one way or the other.

&gt; Do we need to suppress the remove track event for audio or video track handling? I don&apos;t think the WebVTT spec says anything about those operations.

The WebVTT spec wouldn&apos;t, but the HTML spec might. I can look later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994222</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-25 09:51:28 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; You changed HTMLMediaElement::didRemoveTextTrack to pass true explicitly - removeTextTrack(textTrack.get(), true). We should probably be consistent one way or the other.

I reverted that line. Now all uses that expect the event to be triggered are called without the argument. We only pass the argument in case where we want to suppress the event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994223</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-25 09:52:58 -0700</bug_when>
    <thetext>Committed r166238: &lt;http://trac.webkit.org/changeset/166238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995890</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-31 09:39:41 -0700</bug_when>
    <thetext>The test is very flaky, filed bug 130971.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227711</attachid>
            <date>2014-03-24 17:56:29 -0700</date>
            <delta_ts>2014-03-24 19:38:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130704-20140324175607.patch</filename>
            <type>text/plain</type>
            <size>18038</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjIxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTAzLTI0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFByZXZlbnQgJ3JlbW92ZXRy
YWNrJyBldmVudHMgZnJvbSBmaXJpbmcgd2hlbiBhbGwgaW5iYW5kIHRleHQgdHJhY2tzIGFyZSBy
ZW1vdmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMwNzA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdDogbWVkaWEvdHJhY2svdHJhY2stcmVtb3ZlLXRyYWNrLmh0bWwKKworICAgICAgICBCYXNl
ZCBvbiB0aGUgQmxpbmsgY2hhbmdlIChwYXRjaCBieSBhY29sd2VsbEBjaHJvbWl1bS5vcmcpOgor
ICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzE3NzI0MzAxOC8KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCk6IFJlb3JkZXIgc3RlcHMgdG8gbWF0Y2ggVzND
IHNwZWNpZmljYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpub25l
U3VwcG9ydGVkKTogRm9yZ2V0IHRyYWNrcyBhcyByZXF1aXJlZCBieSBzcGVjaWZpY2F0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkKTog
Rm9yZ2V0IHRyYWNrcyBhcyByZXF1aXJlZCBieSBzcGVjaWZpY2F0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKTogT25seSByZXF1ZXN0IHRo
ZSAncmVtb3ZldHJhY2tzJyBldmVudCBpZgorICAgICAgICByZXF1ZXN0ZWQgYnkgY2FsbGVyLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHJhY2tz
KTogUmVuYW1lZCB0byAnZm9yZ2V0UmVzb3VyY2VTcGVjaWZpY1RyYWNrcycKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBwb3J0ZWQpOiBTcGVjaWZ5IHRoYXQgd2Ug
d2FudCB0aGUgJ3JlbW92ZXRyYWNrcycgZXZlbnQKKyAgICAgICAgZmlyZWQgZm9yIHRoaXMgdXNl
IGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9h
ZCk6IFN3aXRjaCB0byBuZXcgJ2ZvcmdldFJlc291cmNlU3BlY2lmaWNUcmFja3MnIG5hbWUuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OnJlbW92ZSk6IE9ubHkg
ZmlyZSB0aGUgJ3JlbW92ZXRyYWNrJyBldmVudCBpZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0Lgor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oOiBBZGQgZGVmYXVsdCBhcmd1bWVu
dCB0byBmaXJlIHRoZSAncmVtb3ZldHJhY2snIGV2ZW50CisgICAgICAgIHdoZW4gcmVtb3Zpbmcg
YSB0cmFjay4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwOgorICAgICAg
ICAoVHJhY2tMaXN0QmFzZTo6cmVtb3ZlKTogT25seSBmaXJlIHRoZSAncmVtb3ZldHJhY2snIGV2
ZW50IGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCisgICAgICAgICogaHRtbC90cmFjay9UcmFj
a0xpc3RCYXNlLmg6IEFkZCBkZWZhdWx0IGFyZ3VtZW50IHRvIGZpcmUgdGhlICdyZW1vdmV0cmFj
aycgZXZlbnQuCisKIDIwMTQtMDMtMjQgIFRoaWFnbyBkZSBCYXJyb3MgTGFjZXJkYSAgPHRoaWFn
by5sYWNlcmRhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgT3B0aW1pemluZyBzdHJpbmcgY29u
c3RydWN0aW9uIGZvciB0eXBlIGVycm9yIGluIEpTTmF2aWdhdG9yQ3VzdG9tLmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjYyMDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NzgsMTQgKzk3OCw0MCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVG
b3JMb2FkKCkKIAogICAgIC8vIDQgLSBJZiB0aGUgbWVkaWEgZWxlbWVudCdzIG5ldHdvcmtTdGF0
ZSBpcyBub3Qgc2V0IHRvIE5FVFdPUktfRU1QVFksIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzCiAg
ICAgaWYgKG1fbmV0d29ya1N0YXRlICE9IE5FVFdPUktfRU1QVFkpIHsKKyAgICAgICAgLy8gNC4x
IC0gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgZW1wdGllZCBhdCB0
aGUgbWVkaWEgZWxlbWVudC4KKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW1w
dGllZEV2ZW50KTsKKworICAgICAgICAvLyA0LjIgLSBJZiBhIGZldGNoaW5nIHByb2Nlc3MgaXMg
aW4gcHJvZ3Jlc3MgZm9yIHRoZSBtZWRpYSBlbGVtZW50LCB0aGUgdXNlciBhZ2VudCBzaG91bGQg
c3RvcCBpdC4KICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX0VNUFRZOworCisgICAg
ICAgIC8vIDQuMyAtIEZvcmdldCB0aGUgbWVkaWEgZWxlbWVudCdzIG1lZGlhLXJlc291cmNlLXNw
ZWNpZmljIHRyYWNrcy4KKyAgICAgICAgZm9yZ2V0UmVzb3VyY2VTcGVjaWZpY1RyYWNrcygpOwor
CisgICAgICAgIC8vIDQuNCAtIElmIHJlYWR5U3RhdGUgaXMgbm90IHNldCB0byBIQVZFX05PVEhJ
TkcsIHRoZW4gc2V0IGl0IHRvIHRoYXQgc3RhdGUuCiAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IEhB
VkVfTk9USElORzsKICAgICAgICAgbV9yZWFkeVN0YXRlTWF4aW11bSA9IEhBVkVfTk9USElORzsK
LSAgICAgICAgcmVmcmVzaENhY2hlZFRpbWUoKTsKKworICAgICAgICAvLyA0LjUgLSBJZiB0aGUg
cGF1c2VkIGF0dHJpYnV0ZSBpcyBmYWxzZSwgdGhlbiBzZXQgaXQgdG8gdHJ1ZS4KICAgICAgICAg
bV9wYXVzZWQgPSB0cnVlOworCisgICAgICAgIC8vIDQuNiAtIElmIHNlZWtpbmcgaXMgdHJ1ZSwg
c2V0IGl0IHRvIGZhbHNlLgogICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKKworICAgICAgICAv
LyA0LjcgLSBTZXQgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gdG8gMC4KKyAgICAgICAg
Ly8gICAgICAgU2V0IHRoZSBvZmZpY2lhbCBwbGF5YmFjayBwb3NpdGlvbiB0byAwLgorICAgICAg
ICAvLyAgICAgICBJZiB0aGlzIGNoYW5nZWQgdGhlIG9mZmljaWFsIHBsYXliYWNrIHBvc2l0aW9u
LCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHRpbWV1cGRh
dGUgYXQgdGhlIG1lZGlhIGVsZW1lbnQuCisgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3IgZmlyaW5nIHRoaXMgZXZlbnQuIGUuZy4sIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnRp
bWVVcGRhdGVFdmVudCk7CisKKyAgICAgICAgLy8gNC44IC0gU2V0IHRoZSBpbml0aWFsIHBsYXli
YWNrIHBvc2l0aW9uIHRvIDAuCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgbGVzcyBzdWJ0
bGUuIFRoZSBwb3NpdGlvbiBvbmx5IGJlY29tZXMgMCBiZWNhdXNlIG9mIHRoZSBjcmVhdGVNZWRp
YVBsYXllcigpIGNhbGwKKyAgICAgICAgLy8gYWJvdmUuCisgICAgICAgIHJlZnJlc2hDYWNoZWRU
aW1lKCk7CisKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKLSAgICAgICAgc2NoZWR1
bGVFdmVudChldmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsKKworICAgICAgICAvLyA0LjkgLSBT
ZXQgdGhlIHRpbWVsaW5lIG9mZnNldCB0byBOb3QtYS1OdW1iZXIgKE5hTikuCisgICAgICAgIC8v
IDQuMTAgLSBVcGRhdGUgdGhlIGR1cmF0aW9uIGF0dHJpYnV0ZSB0byBOb3QtYS1OdW1iZXIgKE5h
TikuCisKICAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQpAQCAtMTAxMSw2ICsxMDM3LDkgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAgLy8gMiAtIEFzeW5jaHJv
bm91c2x5IGF3YWl0IGEgc3RhYmxlIHN0YXRlLgogCiAgICAgbV9wbGF5ZWRUaW1lUmFuZ2VzID0g
VGltZVJhbmdlczo6Y3JlYXRlKCk7CisKKyAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgd2hldGhl
ciB0aGVzZSBjYW4gYmUgbW92ZWQgaW50byBtX25ldHdvcmtTdGF0ZSAhPSBORVRXT1JLX0VNUFRZ
IGJsb2NrIGFib3ZlCisgICAgLy8gc28gdGhleSBhcmUgY2xvc2VyIHRvIHRoZSByZWxldmFudCBz
cGVjIHN0ZXBzLgogICAgIG1fbGFzdFNlZWtUaW1lID0gMDsKIAogICAgIC8vIFRoZSBzcGVjIGRv
ZXNuJ3Qgc2F5IHRvIGJsb2NrIHRoZSBsb2FkIGV2ZW50IHVudGlsIHdlIGFjdHVhbGx5IHJ1biB0
aGUgYXN5bmNocm9ub3VzIHNlY3Rpb24KQEAgLTE3OTIsNiArMTgyMSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bm9uZVN1cHBvcnRlZCgpCiAgICAgbV9lcnJvciA9IE1lZGlhRXJyb3I6OmNy
ZWF0ZShNZWRpYUVycm9yOjpNRURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQpOwogCiAgICAgLy8g
Ni4yIC0gRm9yZ2V0IHRoZSBtZWRpYSBlbGVtZW50J3MgbWVkaWEtcmVzb3VyY2Utc3BlY2lmaWMg
dGV4dCB0cmFja3MuCisgICAgZm9yZ2V0UmVzb3VyY2VTcGVjaWZpY1RyYWNrcygpOwogCiAgICAg
Ly8gNi4zIC0gU2V0IHRoZSBlbGVtZW50J3MgbmV0d29ya1N0YXRlIGF0dHJpYnV0ZSB0byB0aGUg
TkVUV09SS19OT19TT1VSQ0UgdmFsdWUuCiAgICAgbV9uZXR3b3JrU3RhdGUgPSBORVRXT1JLX05P
X1NPVVJDRTsKQEAgLTE5MTcsMTEgKzE5NDcsMTggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYUxvYWRpbmdGYWlsZQogICAgIC8vIDxzb3VyY2U+IGNoaWxkcmVuLCBzY2hlZHVsZSB0aGUg
bmV4dCBvbmUKICAgICBpZiAobV9yZWFkeVN0YXRlIDwgSEFWRV9NRVRBREFUQSAmJiBtX2xvYWRT
dGF0ZSA9PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpIHsKICAgICAgICAgCisgICAgICAgIC8v
IHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0KKyAgICAgICAgLy8gU3RlcCA5Lk90aGVyd2lz
ZS45IC0gRmFpbGVkIHdpdGggZWxlbWVudHM6IFF1ZXVlIGEgdGFzaywgdXNpbmcgdGhlIERPTSBt
YW5pcHVsYXRpb24gdGFzayBzb3VyY2UsIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgZXJy
b3IgYXQgdGhlIGNhbmRpZGF0ZSBlbGVtZW50LgogICAgICAgICBpZiAobV9jdXJyZW50U291cmNl
Tm9kZSkKICAgICAgICAgICAgIG1fY3VycmVudFNvdXJjZU5vZGUtPnNjaGVkdWxlRXJyb3JFdmVu
dCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpzZXROZXR3b3JrU3RhdGUgLSBlcnJvciBldmVudCBub3Qgc2VudCwgPHNvdXJjZT4gd2Fz
IHJlbW92ZWQiKTsKICAgICAgICAgCisgICAgICAgIC8vIDkuT3RoZXJ3aXNlLjEwIC0gQXN5bmNo
cm9ub3VzbHkgYXdhaXQgYSBzdGFibGUgc3RhdGUuIFRoZSBzeW5jaHJvbm91cyBzZWN0aW9uIGNv
bnNpc3RzIG9mIGFsbCB0aGUgcmVtYWluaW5nIHN0ZXBzIG9mIHRoaXMgYWxnb3JpdGhtIHVudGls
IHRoZSBhbGdvcml0aG0gc2F5cyB0aGUgc3luY2hyb25vdXMgc2VjdGlvbiBoYXMgZW5kZWQuCisg
ICAgICAgIAorICAgICAgICAvLyA5Lk90aGVyd2lzZS4xMSAtIEZvcmdldCB0aGUgbWVkaWEgZWxl
bWVudCdzIG1lZGlhLXJlc291cmNlLXNwZWNpZmljIHRyYWNrcy4KKyAgICAgICAgZm9yZ2V0UmVz
b3VyY2VTcGVjaWZpY1RyYWNrcygpOworCiAgICAgICAgIGlmIChoYXZlUG90ZW50aWFsU291cmNl
Q2hpbGQoKSkgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0
TmV0d29ya1N0YXRlIC0gc2NoZWR1bGluZyBuZXh0IDxzb3VyY2U+Iik7CiAgICAgICAgICAgICBz
Y2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpOwpAQCAtMzM2NSw3ICszNDAyLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKAogICAgIG1fYXVkaW9UcmFja3MtPnJlbW92
ZSh0cmFjayk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKFRl
eHRUcmFjayogdHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhU
ZXh0VHJhY2sqIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQpCiB7CiAgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNzUsNyArMzQxMiw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKFQKICAgICBpZiAoY3VlcykKICAgICAgICAgdGV4dFRy
YWNrUmVtb3ZlQ3Vlcyh0cmFjaywgY3Vlcyk7CiAgICAgdHJhY2stPmNsZWFyQ2xpZW50KCk7Ci0g
ICAgbV90ZXh0VHJhY2tzLT5yZW1vdmUodHJhY2spOworICAgIG1fdGV4dFRyYWNrcy0+cmVtb3Zl
KHRyYWNrLCBzY2hlZHVsZUV2ZW50KTsKIAogICAgIGNsb3NlQ2FwdGlvblRyYWNrc0NoYW5nZWQo
KTsKIH0KQEAgLTMzODgsNyArMzQyNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3Zl
VmlkZW9UcmFjaygKICAgICBtX3ZpZGVvVHJhY2tzLT5yZW1vdmUodHJhY2spOwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEluYmFuZFRyYWNrcygpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmZvcmdldFJlc291cmNlU3BlY2lmaWNUcmFja3MoKQogewogICAgIHdoaWxlICht
X2F1ZGlvVHJhY2tzICYmICBtX2F1ZGlvVHJhY2tzLT5sZW5ndGgoKSkKICAgICAgICAgcmVtb3Zl
QXVkaW9UcmFjayhtX2F1ZGlvVHJhY2tzLT5sYXN0SXRlbSgpKTsKQEAgLTMzOTksNyArMzQzNiw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHIKICAgICAgICAgICAg
IFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0oaSk7CiAKICAgICAgICAgICAg
IGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCi0gICAgICAgICAg
ICAgICAgcmVtb3ZlVGV4dFRyYWNrKHRyYWNrKTsKKyAgICAgICAgICAgICAgICByZW1vdmVUZXh0
VHJhY2sodHJhY2ssIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzUzMCw3ICszNTY3
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUZXh0VHJhYwogICAgIC8vIFdo
ZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQgdGhlIG9sZCBw
YXJlbnQgd2FzIGEgbWVkaWEgZWxlbWVudCwgCiAgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBt
dXN0IHJlbW92ZSB0aGUgdHJhY2sgZWxlbWVudCdzIGNvcnJlc3BvbmRpbmcgdGV4dCB0cmFjayBm
cm9tIHRoZSAKICAgICAvLyBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcy4KLSAg
ICByZW1vdmVUZXh0VHJhY2sodGV4dFRyYWNrLmdldCgpKTsKKyAgICByZW1vdmVUZXh0VHJhY2so
dGV4dFRyYWNrLmdldCgpLCB0cnVlKTsKIAogICAgIHNpemVfdCBpbmRleCA9IG1fdGV4dFRyYWNr
c1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLmZpbmQodGV4dFRyYWNrLmdldCgpKTsKICAgICBp
ZiAoaW5kZXggIT0gbm90Rm91bmQpCkBAIC00NTE5LDcgKzQ1NTYsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKLSAgICByZW1vdmVBbGxJbmJhbmRUcmFja3MoKTsKKyAgICBmb3JnZXRSZXNvdXJjZVNw
ZWNpZmljVHJhY2tzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCkBAIC01
NDI0LDcgKzU0NjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVy
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICByZW1vdmVBbGxJbmJhbmRU
cmFja3MoKTsKKyAgICBmb3JnZXRSZXNvdXJjZVNwZWNpZmljVHJhY2tzKCk7CiAjZW5kaWYKICAg
ICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVhdGUodGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxNjYyMDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDkg
KzI5MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFRleHRUcmFjayhQYXNzUmVmUHRyPFRleHRU
cmFjaz4pOwogICAgIHZvaWQgYWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2s+KTsK
ICAgICB2b2lkIHJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayopOwotICAgIHZvaWQgcmVtb3Zl
VGV4dFRyYWNrKFRleHRUcmFjayopOworICAgIHZvaWQgcmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFj
ayosIGJvb2wgc2NoZWR1bGVFdmVudCA9IHRydWUpOwogICAgIHZvaWQgcmVtb3ZlVmlkZW9UcmFj
ayhWaWRlb1RyYWNrKik7Ci0gICAgdm9pZCByZW1vdmVBbGxJbmJhbmRUcmFja3MoKTsKKyAgICB2
b2lkIGZvcmdldFJlc291cmNlU3BlY2lmaWNUcmFja3MoKTsKICAgICB2b2lkIGNsb3NlQ2FwdGlv
blRyYWNrc0NoYW5nZWQoKTsKICAgICB2b2lkIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tD
aGFuZ2VzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcAkocmV2aXNpb24gMTY2MjAxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQg
VGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGUKICAgICBzY2hlZHVsZUFkZFRyYWNr
RXZlbnQodHJhY2sucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUo
VHJhY2tCYXNlKiB0cmFjaykKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRyYWNrQmFzZSog
dHJhY2ssIGJvb2wgc2NoZWR1bGVFdmVudCkKIHsKICAgICBUZXh0VHJhY2sqIHRleHRUcmFjayA9
IHRvVGV4dFRyYWNrKHRyYWNrKTsKICAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+KiB0cmFj
a3MgPSAwOwpAQCAtMjE5LDcgKzIxOSw5IEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRy
YWNrQmFzZSogdHIKIAogICAgIFJlZlB0cjxUcmFja0Jhc2U+IHRyYWNrUmVmID0gKCp0cmFja3Mp
W2luZGV4XTsKICAgICB0cmFja3MtPnJlbW92ZShpbmRleCk7Ci0gICAgc2NoZWR1bGVSZW1vdmVU
cmFja0V2ZW50KHRyYWNrUmVmLnJlbGVhc2UoKSk7CisKKyAgICBpZiAoc2NoZWR1bGVFdmVudCkK
KyAgICAgICAgc2NoZWR1bGVSZW1vdmVUcmFja0V2ZW50KHRyYWNrUmVmLnJlbGVhc2UoKSk7CiB9
CiAKIGJvb2wgVGV4dFRyYWNrTGlzdDo6Y29udGFpbnMoVHJhY2tCYXNlKiB0cmFjaykgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCShyZXZpc2lv
biAxNjYyMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgVGV4dFRyYWNrKiBs
YXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIGl0ZW0obGVuZ3RoKCkgLSAxKTsgfQogCiAgICAgdm9p
ZCBhcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
KFRyYWNrQmFzZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoVHJhY2tCYXNl
KiwgYm9vbCBzY2hlZHVsZUV2ZW50ID0gdHJ1ZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBFdmVudFRh
cmdldAogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tMaXN0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmNwcAkocmV2aXNpb24gMTY2MjAxKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBA
QCB1bnNpZ25lZCBUcmFja0xpc3RCYXNlOjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX2lu
YmFuZFRyYWNrcy5zaXplKCk7CiB9CiAKLXZvaWQgVHJhY2tMaXN0QmFzZTo6cmVtb3ZlKFRyYWNr
QmFzZSogdHJhY2spCit2b2lkIFRyYWNrTGlzdEJhc2U6OnJlbW92ZShUcmFja0Jhc2UqIHRyYWNr
LCBib29sIHNjaGVkdWxlRXZlbnQpCiB7CiAgICAgc2l6ZV90IGluZGV4ID0gbV9pbmJhbmRUcmFj
a3MuZmluZCh0cmFjayk7CiAgICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKQEAgLTcwLDcg
KzcwLDggQEAgdm9pZCBUcmFja0xpc3RCYXNlOjpyZW1vdmUoVHJhY2tCYXNlKiB0cgogCiAgICAg
bV9pbmJhbmRUcmFja3MucmVtb3ZlKGluZGV4KTsKIAotICAgIHNjaGVkdWxlUmVtb3ZlVHJhY2tF
dmVudCh0cmFja1JlZi5yZWxlYXNlKCkpOworICAgIGlmIChzY2hlZHVsZUV2ZW50KQorICAgICAg
ICBzY2hlZHVsZVJlbW92ZVRyYWNrRXZlbnQodHJhY2tSZWYucmVsZWFzZSgpKTsKIH0KIAogYm9v
bCBUcmFja0xpc3RCYXNlOjpjb250YWlucyhUcmFja0Jhc2UqIHRyYWNrKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgJKHJldmlzaW9uIDE2NjIw
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSopIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoVHJhY2tCYXNlKik7CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZShUcmFja0Jhc2UqLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKTsKIAogICAg
IC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0ID0gMDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjIxMSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDE0LTAzLTI0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAg
IFByZXZlbnQgJ3JlbW92ZXRyYWNrJyBldmVudHMgZnJvbSBmaXJpbmcgd2hlbiBhbGwgaW5iYW5k
IHRleHQgdHJhY2tzIGFyZSByZW1vdmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQmFzZWQgb24gdGhlIEJsaW5rIGNoYW5nZSAocGF0Y2ggYnkgYWNv
bHdlbGxAY2hyb21pdW0ub3JnKToKKyAgICAgICAgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVt
Lm9yZy8xNzcyNDMwMTgvCisKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1yZW1vdmUtdHJh
Y2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1yZW1v
dmUtdHJhY2suaHRtbDogQWRkZWQuCisKIDIwMTQtMDMtMjQgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFhTUyBBdWRpdG9yIGRvZXNuJ3QgYmxvY2sgPHNjcmlw
dD4gaW5qZWN0ZWQgYmVmb3JlIGFuIGV4aXN0aW5nIDxzY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1yZW1vdmUtdHJhY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXJlbW92ZS10cmFjay1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1yZW1vdmUt
dHJhY2stZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorCitQQVNT
IFRlc3RzIHRoYXQgdGhlICdyZW1vdmV0cmFjaycgZXZlbnQgaXMgZmlyZWQgd2hlbiBhbiBvdXQt
b2YtYmFuZCBUZXh0VHJhY2sgaXMgcmVtb3ZlZC4gCitQQVNTIFRlc3RzIHRoYXQgdGhlICdyZW1v
dmV0cmFjaycgZXZlbnQgaXMgTk9UIGZpcmVkIGZvciBpbmJhbmQgVGV4dFRyYWNrIG9uIGEgZmFp
bGVkIGxvYWQuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1yZW1vdmUt
dHJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1y
ZW1vdmUtdHJhY2suaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLXJlbW92ZS10cmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIg
Lz4KKworICAgICAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgICAgIGFzeW5jX3Rlc3QoZnVuY3Rpb24odGVzdCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOwor
ICAgICAgICAgICAgICAgIHZhciB0cmFjazsKKworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRy
YWNrUmVtb3ZlZCgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGV2ZW50LnRhcmdldCwgdmlkZW8udGV4dFRyYWNrcyk7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQgaW5zdGFuY2VvZiB3aW5kb3cuVHJhY2tFdmVudCwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudHJhY2ssIHRy
YWNrKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdC5kb25lKCk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgdmFyIHRyYWNrRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3RyYWNrJyk7CisgICAgICAgICAgICAgICAgdmlkZW8uYXBwZW5kQ2hpbGQodHJhY2tF
bGVtZW50KTsKKworICAgICAgICAgICAgICAgIHRyYWNrRWxlbWVudC5zcmMgPSAnY2FwdGlvbnMt
d2VidnR0L3RjMDA0LXdlYnZ0dC1maWxlLnZ0dCc7CisgICAgICAgICAgICAgICAgdHJhY2tFbGVt
ZW50LnRyYWNrLm1vZGUgPSAnaGlkZGVuJzsKKworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModmlkZW8udGV4dFRyYWNrcy5sZW5ndGgsIDEpOworCisgICAgICAgICAgICAgICAgdHJhY2sg
PSB2aWRlby50ZXh0VHJhY2tzWzBdOworICAgICAgICAgICAgICAgIHZpZGVvLnJlbW92ZUNoaWxk
KHRyYWNrRWxlbWVudCk7CisgICAgICAgICAgICAgICAgdmlkZW8udGV4dFRyYWNrcy5hZGRFdmVu
dExpc3RlbmVyKCJyZW1vdmV0cmFjayIsIHRlc3Quc3RlcF9mdW5jKHRyYWNrUmVtb3ZlZCkpOwor
ICAgICAgICAgICAgfSwgIlRlc3RzIHRoYXQgdGhlICdyZW1vdmV0cmFjaycgZXZlbnQgaXMgZmly
ZWQgd2hlbiBhbiBvdXQtb2YtYmFuZCBUZXh0VHJhY2sgaXMgcmVtb3ZlZC4iKTsKKworICAgICAg
ICAgICAgYXN5bmNfdGVzdChmdW5jdGlvbih0ZXN0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7CisKKyAg
ICAgICAgICAgICAgICAvLyBDcmVhdGUgYW4gb3V0LW9mLWJhbmQgdGV4dCB0cmFjayBieSBhZGRp
bmcgYSB0cmFjayBlbGVtZW50LgorICAgICAgICAgICAgICAgIHZhciB0cmFja0VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpOworCisgICAgICAgICAgICAgICAgdHJhY2tF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgdGVzdC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgiJ2Vycm9yJyBldmVudCBvbiB0cmFjayBlbGVtZW50IHNob3VsZCBub3QgZmlyZS4iKQorICAg
ICAgICAgICAgICAgIH0pKTsKKworICAgICAgICAgICAgICAgIHZpZGVvLmFwcGVuZENoaWxkKHRy
YWNrRWxlbWVudCk7CisgICAgICAgICAgICAgICAgdHJhY2tFbGVtZW50LnNyYyA9ICdjYXB0aW9u
cy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0JzsKKyAgICAgICAgICAgICAgICB0cmFja0Vs
ZW1lbnQudHJhY2subW9kZSA9ICdoaWRkZW4nOworCisgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgdmFyIG91
dE9mQmFuZFRyYWNrID0gdmlkZW8udGV4dFRyYWNrc1swXTsKKworICAgICAgICAgICAgICAgIC8v
IExvYWQgYSBtZWRpYSBmaWxlIHdpdGggYW4gaW5iYW5kIHRleHQgdHJhY2suCisgICAgICAgICAg
ICAgICAgdmFyIGluYmFuZFRyYWNrID0gbnVsbDsKKyAgICAgICAgICAgICAgICB2YXIgdXJsID0g
Ii4uL2NvbnRlbnQvY291bnRpbmctY2FwdGlvbmVkLm1vdiIKKworICAgICAgICAgICAgICAgIHZh
ciBmaXJzdEFkZFRyYWNrSGFuZGxlciA9IHRlc3Quc3RlcF9mdW5jKGZ1bmN0aW9uKCkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFy
Z2V0LCB2aWRlby50ZXh0VHJhY2tzKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhldmVudCBpbnN0YW5jZW9mIHdpbmRvdy5UcmFja0V2ZW50LCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGV2ZW50LnRyYWNrID09IG91dE9mQmFuZFRyYWNrKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGluYmFuZFRyYWNrLCBudWxsKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCwgMik7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudHJhY2ssIHZpZGVvLnRleHRUcmFj
a3NbMV0pOworICAgICAgICAgICAgICAgICAgICBpbmJhbmRUcmFjayA9IGV2ZW50LnRyYWNrOwor
CisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnRleHRUcmFja3MucmVtb3ZlRXZlbnRMaXN0ZW5l
cigiYWRkdHJhY2siLCBmaXJzdEFkZFRyYWNrSGFuZGxlcik7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQ2xlYXIgLnNyYyB0byBmb3JjZSB0aGUgaW5iYW5kIHRyYWNrIHRvIGdldCBkZXN0cm95
ZWQuCisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9ICIiOworCisgICAgICAgICAgICAg
ICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBpbmJhbmQgdHJhY2sgd2FzIHJlbW92ZWQuCisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGluYmFuZFRyYWNrLCBudWxsKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCwg
MSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmlkZW8udGV4dFRyYWNrc1sw
XSwgb3V0T2ZCYW5kVHJhY2spOworCisgICAgICAgICAgICAgICAgICAgIC8vIExvYWQgdGhlIFVS
TCBhZ2FpbiB0byB0cmlnZ2VyIGFub3RoZXIgJ2FkZHRyYWNrJyBldmVudCB0byBtYWtlIHN1cmUK
KyAgICAgICAgICAgICAgICAgICAgLy8gbm8gJ3JlbW92ZXRyYWNrJyBldmVudCB3YXMgcXVldWVk
LgorICAgICAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSB1cmw7CisgICAgICAgICAgICAgICAg
ICAgIHZpZGVvLnRleHRUcmFja3MuYWRkRXZlbnRMaXN0ZW5lcigiYWRkdHJhY2siLCB0ZXN0LnN0
ZXBfZnVuYyhmdW5jdGlvbigpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModmlkZW8udGV4dFRyYWNrcy5sZW5ndGgsIDIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdC5kb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0p
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB2aWRlby50ZXh0VHJhY2tz
LmFkZEV2ZW50TGlzdGVuZXIoImFkZHRyYWNrIiwgZmlyc3RBZGRUcmFja0hhbmRsZXIpOworCisg
ICAgICAgICAgICAgICAgdmlkZW8udGV4dFRyYWNrcy5hZGRFdmVudExpc3RlbmVyKCJyZW1vdmV0
cmFjayIsIHRlc3Quc3RlcF9mdW5jKGZ1bmN0aW9uKCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIidyZW1vdmV0cmFjaycgZXZlbnQgc2hv
dWxkIG5vdCBmaXJlLiIpCisgICAgICAgICAgICAgICAgfSkpOworCisgICAgICAgICAgICAgICAg
dmlkZW8uc3JjID0gdXJsOworICAgICAgICAgICAgfSwgIlRlc3RzIHRoYXQgdGhlICdyZW1vdmV0
cmFjaycgZXZlbnQgaXMgTk9UIGZpcmVkIGZvciBpbmJhbmQgVGV4dFRyYWNrIG9uIGEgZmFpbGVk
IGxvYWQuIik7CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxkaXYgaWQ9ImxvZyI+PC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="251956"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>