<?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>164056</bug_id>
          
          <creation_ts>2016-10-27 03:09:53 -0700</creation_ts>
          <short_desc>BufferSource should behave as an union</short_desc>
          <delta_ts>2016-10-27 13:39: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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245078</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-27 03:09:53 -0700</bug_when>
    <thetext>BufferSource should behave as an union</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245079</commentid>
    <comment_count>1</comment_count>
      <attachid>293006</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-27 03:18:43 -0700</bug_when>
    <thetext>Created attachment 293006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245083</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-27 03:23:56 -0700</bug_when>
    <thetext>This was &apos;inspired&apos; by an equivalent typedef and the underlying code for BufferDataSource in WebGLRenderingContextBase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245094</commentid>
    <comment_count>3</comment_count>
      <attachid>293006</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-27 04:50:35 -0700</bug_when>
    <thetext>Comment on attachment 293006
Patch

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

&gt; Source/WebCore/bindings/js/BufferSource.h:51
&gt; +        brigand::for_each&lt;Sequence&gt;([&amp;](auto&amp;&amp; type) {

First time I encounter brigand for_each.
What is the advantage compared to directly using holds_alternative?

&gt; Source/WebCore/bindings/js/BufferSource.h:81
&gt; +    WTF::Variant&lt;RefPtr&lt;JSC::ArrayBufferView&gt;, RefPtr&lt;JSC::ArrayBuffer&gt;&gt; m_variant;

There is a change of behavior here: BufferSource is refing the underlying array.
This ensures the data is not collected as long as BufferSource is there.
But I guess this does some additional count churning.

Are there use-cases where this refing is useful?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245105</commentid>
    <comment_count>4</comment_count>
      <attachid>293006</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-27 06:11:03 -0700</bug_when>
    <thetext>Comment on attachment 293006
Patch

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

&gt;&gt; Source/WebCore/bindings/js/BufferSource.h:51
&gt;&gt; +        brigand::for_each&lt;Sequence&gt;([&amp;](auto&amp;&amp; type) {
&gt; 
&gt; First time I encounter brigand for_each.
&gt; What is the advantage compared to directly using holds_alternative?

It&apos;s used in JSConverter::convert() when converting WTF::Variant&lt;&gt; to JSValue. holds_alternative would probably work better here.

&gt;&gt; Source/WebCore/bindings/js/BufferSource.h:81
&gt;&gt; +    WTF::Variant&lt;RefPtr&lt;JSC::ArrayBufferView&gt;, RefPtr&lt;JSC::ArrayBuffer&gt;&gt; m_variant;
&gt; 
&gt; There is a change of behavior here: BufferSource is refing the underlying array.
&gt; This ensures the data is not collected as long as BufferSource is there.
&gt; But I guess this does some additional count churning.
&gt; 
&gt; Are there use-cases where this refing is useful?

This mirrors the behavior of BufferDataSource in WebGLRenderingContextBase, but I understand the concern.

Regarding the use-case -- I hit the limit of the previous implementation when trying to get the iterable&lt;BufferSource, enum MediaKeyStatus&gt; property on the EME&apos;s MediaKeyStatusMap interface to work. That would mean converting BufferSource objects (created by the implementation) from the native types to JSValues. I suppose the simplest way to support this use-case would be to simply offload the RefPtr&lt;ArrayBuffer&gt; object management straight into the BufferSource class.
http://w3c.github.io/encrypted-media/#mediakeystatusmap-interface
http://w3c.github.io/encrypted-media/#update-key-statuses

But in terms of current behavior, IDLUnion ends up using RefPtr&lt;Interface&gt; as the implementation type for interfaces that are specified as variant alternatives, so IDLInterface or IDLType would need ArrayBuffer-specific specializations to work around that and enable using Variant&lt;RefPtr&lt;ArrayBufferView&gt;, ArrayBuffer*&gt; (which at the moment doesn&apos;t compile).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245130</commentid>
    <comment_count>5</comment_count>
      <attachid>293006</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-27 08:54:53 -0700</bug_when>
    <thetext>Comment on attachment 293006
Patch

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

&gt; Source/WebCore/bindings/generic/IDLTypes.h:141
&gt; +using IDLBufferSource = IDLUnion&lt;IDLInterface&lt;JSC::ArrayBufferView&gt;, IDLInterface&lt;JSC::ArrayBuffer&gt;&gt;;

Why do we need an IDLBufferSource type at all? If it is a union, then it would be a typedef to a union in the IDL where this is used and we should not need an IDLBufferSource type on native side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245131</commentid>
    <comment_count>6</comment_count>
      <attachid>293006</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-27 08:57:08 -0700</bug_when>
    <thetext>Comment on attachment 293006
Patch

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

&gt;&gt; Source/WebCore/bindings/generic/IDLTypes.h:141
&gt;&gt; +using IDLBufferSource = IDLUnion&lt;IDLInterface&lt;JSC::ArrayBufferView&gt;, IDLInterface&lt;JSC::ArrayBuffer&gt;&gt;;
&gt; 
&gt; Why do we need an IDLBufferSource type at all? If it is a union, then it would be a typedef to a union in the IDL where this is used and we should not need an IDLBufferSource type on native side.

Oh, I see now that BufferSource is actually part of the WebIDL spec:
https://heycam.github.io/webidl/#BufferSource

I guess this is acceptable then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245133</commentid>
    <comment_count>7</comment_count>
      <attachid>293006</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-27 08:59:04 -0700</bug_when>
    <thetext>Comment on attachment 293006
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/BufferSource.h:51
&gt;&gt;&gt; +        brigand::for_each&lt;Sequence&gt;([&amp;](auto&amp;&amp; type) {
&gt;&gt; 
&gt;&gt; First time I encounter brigand for_each.
&gt;&gt; What is the advantage compared to directly using holds_alternative?
&gt; 
&gt; It&apos;s used in JSConverter::convert() when converting WTF::Variant&lt;&gt; to JSValue. holds_alternative would probably work better here.

Would something like this work?

return WTF::visit([](auto&amp; buffer) -&gt; const uint8_t {
    return buffer.data();
}, variant);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245134</commentid>
    <comment_count>8</comment_count>
      <attachid>293006</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-27 08:59:57 -0700</bug_when>
    <thetext>Comment on attachment 293006
Patch

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

&gt; Source/WebCore/bindings/js/BufferSource.h:68
&gt; +        brigand::for_each&lt;Sequence&gt;([&amp;](auto&amp;&amp; type) {

Ditto here:
return WTF::visit([](auto&amp; buffer) -&gt; const uint8_t {
    return buffer.byteLength();
}, m_variant);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245135</commentid>
    <comment_count>9</comment_count>
      <attachid>293006</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-27 09:01:53 -0700</bug_when>
    <thetext>Comment on attachment 293006
Patch

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

&gt; Source/WebCore/bindings/js/BufferSource.h:40
&gt;  class BufferSource {

Personally, I think we don&apos;t need this class at all, it should just be:
using BufferSource = WTF::Variant&lt;RefPtr&lt;JSC::ArrayBufferView&gt;, RefPtr&lt;JSC::ArrayBuffer&gt;&gt;;

&gt;&gt;&gt; Source/WebCore/bindings/js/BufferSource.h:81
&gt;&gt;&gt; +    WTF::Variant&lt;RefPtr&lt;JSC::ArrayBufferView&gt;, RefPtr&lt;JSC::ArrayBuffer&gt;&gt; m_variant;
&gt;&gt; 
&gt;&gt; There is a change of behavior here: BufferSource is refing the underlying array.
&gt;&gt; This ensures the data is not collected as long as BufferSource is there.
&gt;&gt; But I guess this does some additional count churning.
&gt;&gt; 
&gt;&gt; Are there use-cases where this refing is useful?
&gt; 
&gt; This mirrors the behavior of BufferDataSource in WebGLRenderingContextBase, but I understand the concern.
&gt; 
&gt; Regarding the use-case -- I hit the limit of the previous implementation when trying to get the iterable&lt;BufferSource, enum MediaKeyStatus&gt; property on the EME&apos;s MediaKeyStatusMap interface to work. That would mean converting BufferSource objects (created by the implementation) from the native types to JSValues. I suppose the simplest way to support this use-case would be to simply offload the RefPtr&lt;ArrayBuffer&gt; object management straight into the BufferSource class.
&gt; http://w3c.github.io/encrypted-media/#mediakeystatusmap-interface
&gt; http://w3c.github.io/encrypted-media/#update-key-statuses
&gt; 
&gt; But in terms of current behavior, IDLUnion ends up using RefPtr&lt;Interface&gt; as the implementation type for interfaces that are specified as variant alternatives, so IDLInterface or IDLType would need ArrayBuffer-specific specializations to work around that and enable using Variant&lt;RefPtr&lt;ArrayBufferView&gt;, ArrayBuffer*&gt; (which at the moment doesn&apos;t compile).

Yes, we currently translate unions of wrapper types into a WTF::Variant of RefPtrs. I think this is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245142</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-27 09:13:26 -0700</bug_when>
    <thetext>&gt; Personally, I think we don&apos;t need this class at all, it should just be:
&gt; using BufferSource = WTF::Variant&lt;RefPtr&lt;JSC::ArrayBufferView&gt;,
&gt; RefPtr&lt;JSC::ArrayBuffer&gt;&gt;;

Helper functions that hide Variant are generally more readable, I did that for FetchBody

In that particular case, we search for the same thing (a pointer and a length), so this seems useful to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245146</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-27 09:26:17 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Personally, I think we don&apos;t need this class at all, it should just be:
&gt; &gt; using BufferSource = WTF::Variant&lt;RefPtr&lt;JSC::ArrayBufferView&gt;,
&gt; &gt; RefPtr&lt;JSC::ArrayBuffer&gt;&gt;;
&gt; 
&gt; Helper functions that hide Variant are generally more readable, I did that
&gt; for FetchBody
&gt; 
&gt; In that particular case, we search for the same thing (a pointer and a
&gt; length), so this seems useful to me.

In some cases, I would agree. In this particular instance, the code the access the data and length is 3 lines using WTF::visit() and a lambda (as I commented earlier). I think it is simple enough that we don&apos;t need the extra abstraction. That said, I don&apos;t feel that strongly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245159</commentid>
    <comment_count>12</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-27 10:13:18 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; &gt; Personally, I think we don&apos;t need this class at all, it should just be:
&gt; &gt; &gt; using BufferSource = WTF::Variant&lt;RefPtr&lt;JSC::ArrayBufferView&gt;,
&gt; &gt; &gt; RefPtr&lt;JSC::ArrayBuffer&gt;&gt;;
&gt; &gt; 
&gt; &gt; Helper functions that hide Variant are generally more readable, I did that
&gt; &gt; for FetchBody
&gt; &gt; 
&gt; &gt; In that particular case, we search for the same thing (a pointer and a
&gt; &gt; length), so this seems useful to me.
&gt; 
&gt; In some cases, I would agree. In this particular instance, the code the
&gt; access the data and length is 3 lines using WTF::visit() and a lambda (as I
&gt; commented earlier). I think it is simple enough that we don&apos;t need the extra
&gt; abstraction. That said, I don&apos;t feel that strongly.

I understand this reasoning, and I like to keep things simple, but these WTF::visit() calls to retrieve data pointer and size will spread as BufferSource gets used in more places, and they will likely differ in style from file to file.

I think a minimal abstraction over this specific variant that&apos;s easy for the compiler to inline wouldn&apos;t do harm. OTOH the variant object will have to be exposed through a getter when converting BufferSource to a JS value.

So overall I as well don&apos;t have strong preference here, but would personally prefer the abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245160</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-27 10:14:04 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; &gt; Personally, I think we don&apos;t need this class at all, it should just be:
&gt; &gt; &gt; &gt; using BufferSource = WTF::Variant&lt;RefPtr&lt;JSC::ArrayBufferView&gt;,
&gt; &gt; &gt; &gt; RefPtr&lt;JSC::ArrayBuffer&gt;&gt;;
&gt; &gt; &gt; 
&gt; &gt; &gt; Helper functions that hide Variant are generally more readable, I did that
&gt; &gt; &gt; for FetchBody
&gt; &gt; &gt; 
&gt; &gt; &gt; In that particular case, we search for the same thing (a pointer and a
&gt; &gt; &gt; length), so this seems useful to me.
&gt; &gt; 
&gt; &gt; In some cases, I would agree. In this particular instance, the code the
&gt; &gt; access the data and length is 3 lines using WTF::visit() and a lambda (as I
&gt; &gt; commented earlier). I think it is simple enough that we don&apos;t need the extra
&gt; &gt; abstraction. That said, I don&apos;t feel that strongly.
&gt; 
&gt; I understand this reasoning, and I like to keep things simple, but these
&gt; WTF::visit() calls to retrieve data pointer and size will spread as
&gt; BufferSource gets used in more places, and they will likely differ in style
&gt; from file to file.
&gt; 
&gt; I think a minimal abstraction over this specific variant that&apos;s easy for the
&gt; compiler to inline wouldn&apos;t do harm. OTOH the variant object will have to be
&gt; exposed through a getter when converting BufferSource to a JS value.
&gt; 
&gt; So overall I as well don&apos;t have strong preference here, but would personally
&gt; prefer the abstraction.

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245161</commentid>
    <comment_count>14</comment_count>
      <attachid>293031</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-27 10:15:14 -0700</bug_when>
    <thetext>Created attachment 293031
Patch

Keeps the abstraction-natured BufferSource class, uses WTF::visit().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245164</commentid>
    <comment_count>15</comment_count>
      <attachid>293031</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-27 10:19:53 -0700</bug_when>
    <thetext>Comment on attachment 293031
Patch

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

seems fine, r=me with a few nits.

&gt; Source/WebCore/bindings/js/BufferSource.h:30
&gt; +#include &lt;wtf/Brigand.h&gt;

I don&apos;t think we need this anymore.

&gt; Source/WebCore/bindings/js/BufferSource.h:31
&gt; +#include &lt;wtf/Optional.h&gt;

Is  this really needed?

&gt; Source/WebCore/bindings/js/BufferSource.h:36
&gt; +class ArrayBuffer;

You include them at the top some I doubt we need those forward declarations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245165</commentid>
    <comment_count>16</comment_count>
      <attachid>293031</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-27 10:23:04 -0700</bug_when>
    <thetext>Comment on attachment 293031
Patch

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

&gt;&gt; Source/WebCore/bindings/js/BufferSource.h:36
&gt;&gt; +class ArrayBuffer;
&gt; 
&gt; You include them at the top some I doubt we need those forward declarations.

My bad, forgot to remove these and the includes.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245168</commentid>
    <comment_count>17</comment_count>
      <attachid>293033</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-27 10:29:49 -0700</bug_when>
    <thetext>Created attachment 293033
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245220</commentid>
    <comment_count>18</comment_count>
      <attachid>293033</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 13:11:44 -0700</bug_when>
    <thetext>Comment on attachment 293033
Patch for landing

Rejecting attachment 293033 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 293033, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
    -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 207995 = e143a49787bbfc043c52fa0f6c63e1152d061637
r207998 = d04bf7db981cc8f6c353fd1d44c1a2d6ba616c18
r207999 = d444a846405f03e2808822bbf70064b677448721
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/2387929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245239</commentid>
    <comment_count>19</comment_count>
      <attachid>293033</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 13:39:04 -0700</bug_when>
    <thetext>Comment on attachment 293033
Patch for landing

Clearing flags on attachment: 293033

Committed r208002: &lt;http://trac.webkit.org/changeset/208002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245240</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 13:39:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293006</attachid>
            <date>2016-10-27 03:18:43 -0700</date>
            <delta_ts>2016-10-27 10:15:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164056-20161027031454.patch</filename>
            <type>text/plain</type>
            <size>6717</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM1ODQ4MDdlOTRkMTg0
NjNkODNjNTYyNjhiMGRlMGIzMWZkZDZkNC4uY2Y3MTUyYTBkMWU0NjU5NDkyMzZhNWE0OGM0MDE2
MDY2ZTVlY2I5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTEwLTI3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBCdWZmZXJTb3VyY2Ug
c2hvdWxkIGJlaGF2ZSBhcyBhbiB1bmlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2ViSURMIHR5cGVkZWZzIEJ1ZmZlclNvdXJjZSBhcyAoQXJyYXlC
dWZmZXJWaWV3IG9yIEFycmF5QnVmZmVyKS4KKyAgICAgICAgVG8gZm9sbG93IHRoYXQgZGVmaW5p
dGlvbiwgSURMQnVmZmVyU291cmNlIGlzIG5vdyB0eXBlLWFsaWFzZWQKKyAgICAgICAgdG8gSURM
VW5pb248SURMSW50ZXJmYWNlPEFycmF5QnVmZmVyVmlldz4sIElETEludGVyZmFjZTxBcnJheUJ1
ZmZlcj4+LgorCisgICAgICAgIENvbnZlcnRlcjxJRExCdWZmZXJTb3VyY2U+IHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9uIGNhbiBub3cgYmUKKyAgICAgICAgcmVtb3ZlZCBzaW5jZSB0aGUgZGVmYXVs
dCBzcGVjaWFsaXphdGlvbiBmb3IgSURMVW5pb24gd2lsbCBiZQorICAgICAgICB1c2VkLgorCisg
ICAgICAgIEMrKyBpbXBsZW1lbnRhdGlvbnMgc3RpbGwgd29yayB0aHJvdWdoIGEgQnVmZmVyU291
cmNlIG9iamVjdC4KKyAgICAgICAgVGhhdCBjbGFzcyBub3cgaGFzIGFuIGltcGxpY2l0IGNvbnN0
cnVjdG9yIHRoYXQgY29uc3VtZXMgdGhlCisgICAgICAgIFZhcmlhbnQgb2JqZWN0LiBUaGUgZGF0
YSgpIGFuZCBsZW5ndGgoKSBtZXRob2RzIG9uIHRoZSBjbGFzcworICAgICAgICBub3cgaXRlcmF0
ZSB0aGUgdmFyaWFudCB0byBmaW5kIGFuIGV4aXN0aW5nIG9iamVjdCB0aGF0IGNhbgorICAgICAg
ICBwcm92aWRlIGEgcG9pbnRlciB0byB0aGUgZGF0YSBvciB0aGUgbGVuZ3RoIG9mIGl0LgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkJ1ZmZlclNvdXJjZTo6QnVmZmVyU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJ1ZmZlclNvdXJjZTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCdWZm
ZXJTb3VyY2U6Omxlbmd0aCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPjo6Y29udmVydCk6
IERlbGV0ZWQuCisKIDIwMTYtMTAtMjYgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiAgPGVvY2Fu
aGFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXVtHVEsrXVtNU0VdIFVucmV2aWV3
ZWQgZGVidWcgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDAxNTdkMWRhZTY2ODI4NjY2MTI0ZDIyMzli
ZjgyZjhjNmJkMDM4YTUuLjI1M2E5ZWM5NTg3ZTMzMzVhNzAyYWY1YzNlOWQ3M2EyYjdlMzgyYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZm
ZXI6OnNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUgbmV3VmFsdWUpCiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkK
IHsKLSAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGRhdGEuZGF0YSksIGRhdGEubGVuZ3RoKTsKKyAgICByZXR1cm4gYXBwZW5k
QnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuZGF0
YSgpKSwgZGF0YS5sZW5ndGgoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXNldFBhcnNl
clN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURM
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAppbmRl
eCBkNWU3YTc5OTE2YTZmZmRkN2RiMWE2MjU5Mjc0ZDFlMmU3ZTdkMDk5Li4zZjY3NTlmYjQ2ZGU3
MDZlMGRmNTIwNTFlZGUyMmI2YjgyZmMzZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9JRExUeXBlcy5oCkBAIC0zMCwxMiArMzAsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2Ns
YXNzIEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQnVmZmVyU291cmNlOwogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlPiBj
bGFzcyBET01Qcm9taXNlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTM3LDcgKzEzOCw3
IEBAIHN0cnVjdCBJRExEYXRlIDogSURMVHlwZTxkb3VibGU+IHsKICAgICBzdGF0aWMgZG91Ymxl
IGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkb3VibGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9
CiB9OwogCi1zdHJ1Y3QgSURMQnVmZmVyU291cmNlIDogSURMVHlwZTxCdWZmZXJTb3VyY2U+IHsg
fTsKK3VzaW5nIElETEJ1ZmZlclNvdXJjZSA9IElETFVuaW9uPElETEludGVyZmFjZTxKU0M6OkFy
cmF5QnVmZmVyVmlldz4sIElETEludGVyZmFjZTxKU0M6OkFycmF5QnVmZmVyPj47CiAKIC8vIEhl
bHBlciBwcmVkaWNhdGVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0J1ZmZlclNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNl
LmgKaW5kZXggZjEzNTVlM2ZiZTIzMmNiNDIzZTFmNmFlYjI3ODQ1NjEzNTU0OTI0Ny4uY2I5Y2Ey
ZjY0Yzk3MTM0MTBjMDFlYmFiZjgyZTQwYTc5Y2Q4ZTU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQnVmZmVyU291cmNlLmgKQEAgLTI1LDEyICsyNSw2MSBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgPHd0Zi9CcmlnYW5kLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQnVmZmVyU291cmNlIHsKIHB1Ymxp
YzoKLSAgICBjb25zdCB1aW50OF90KiBkYXRhOwotICAgIHNpemVfdCBsZW5ndGg7CisgICAgQnVm
ZmVyU291cmNlKFdURjo6VmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+LCBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiYgdmFyaWFudCkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RG
TW92ZSh2YXJpYW50KSkKKyAgICB7IH0KKworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25z
dAorICAgIHsKKyAgICAgICAgYXV0byBpbmRleCA9IG1fdmFyaWFudC5pbmRleCgpOworCisgICAg
ICAgIE9wdGlvbmFsPGNvbnN0IHVpbnQ4X3QqPiByZXR1cm5WYWx1ZTsKKyAgICAgICAgYnJpZ2Fu
ZDo6Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShhdXRvJiYgdHlwZSkgeworICAgICAgICAgICAgdXNp
bmcgSSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUodHlwZSk+
Ojp0eXBlOjp0eXBlOworICAgICAgICAgICAgaWYgKEk6OnZhbHVlID09IGluZGV4KSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCFyZXR1cm5WYWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
VmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oV1RGOjpnZXQ8STo6dmFsdWU+KG1fdmFyaWFu
dCktPmRhdGEoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIEFTU0VS
VChyZXR1cm5WYWx1ZSk7CisgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZS52YWx1ZSgpOworICAg
IH0KKworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byBpbmRl
eCA9IG1fdmFyaWFudC5pbmRleCgpOworCisgICAgICAgIE9wdGlvbmFsPHNpemVfdD4gcmV0dXJu
VmFsdWU7CisgICAgICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5
cGUpIHsKKyAgICAgICAgICAgIHVzaW5nIEkgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVm
ZXJlbmNlPGRlY2x0eXBlKHR5cGUpPjo6dHlwZTo6dHlwZTsKKyAgICAgICAgICAgIGlmIChJOjp2
YWx1ZSA9PSBpbmRleCkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghcmV0dXJuVmFsdWUpOwor
ICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gV1RGOjpnZXQ8STo6dmFsdWU+KG1fdmFyaWFu
dCktPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAg
QVNTRVJUKHJldHVyblZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlLnZhbHVlKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFdURjo6VmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlclZpZXc+LCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IG1fdmFyaWFudDsKKyAgICB1c2lu
ZyBTZXF1ZW5jZSA9IGJyaWdhbmQ6Om1ha2Vfc2VxdWVuY2U8YnJpZ2FuZDo6cHRyZGlmZl90PDA+
LCBXVEY6OnZhcmlhbnRfc2l6ZTxkZWNsdHlwZShtX3ZhcmlhbnQpPjo6dmFsdWU+OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnQuaAppbmRleCA2YTY0ZDM4MGYzYjFkNTZmZmZlMjUyN2FhZDRiMjk1MjNhODc5YzQ5Li41
ZjA2ZGRkYWE1YTA4NjAxMTJhMWI5MGMzMWJjOGJlNDhiODU3OTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaApAQCAtMTAwNSwyNyArMTAwNSw2IEBAIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gewog
fTsKIAogLy8gTUFSSzogLQotLy8gTUFSSzogQnVmZmVyU291cmNlIHR5cGUKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgQ29udmVydGVyPElETEJ1ZmZlclNvdXJjZT4gOiBEZWZhdWx0Q29udmVydGVyPElE
TEJ1ZmZlclNvdXJjZT4gewotICAgIHVzaW5nIFJldHVyblR5cGUgPSBCdWZmZXJTb3VyY2U7Ci0K
LSAgICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpKU1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgp
OwotICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICAg
ICAgaWYgKEpTQzo6QXJyYXlCdWZmZXIqIGJ1ZmZlciA9IEpTQzo6dG9BcnJheUJ1ZmZlcih2YWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5k
YXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSB9OwotICAgICAgICBpZiAoUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXJWaWV3PiBidWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcodmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJh
c2VBZGRyZXNzKCkpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkgfTsKLQotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIg
YW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQnVmZmVyU291cmNl
IGFyZ3VtZW50cyIpKTsKLSAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgMCB9OwotICAgIH0KLX07
Ci0KLS8vIE1BUks6IC0KIC8vIE1BUks6IERhdGUgdHlwZQogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBD
b252ZXJ0ZXI8SURMRGF0ZT4gOiBEZWZhdWx0Q29udmVydGVyPElETERhdGU+IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293031</attachid>
            <date>2016-10-27 10:15:14 -0700</date>
            <delta_ts>2016-10-27 10:29:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164056-20161027101123.patch</filename>
            <type>text/plain</type>
            <size>5973</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM1ODQ4MDdlOTRkMTg0
NjNkODNjNTYyNjhiMGRlMGIzMWZkZDZkNC4uY2Y3MTUyYTBkMWU0NjU5NDkyMzZhNWE0OGM0MDE2
MDY2ZTVlY2I5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTEwLTI3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBCdWZmZXJTb3VyY2Ug
c2hvdWxkIGJlaGF2ZSBhcyBhbiB1bmlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2ViSURMIHR5cGVkZWZzIEJ1ZmZlclNvdXJjZSBhcyAoQXJyYXlC
dWZmZXJWaWV3IG9yIEFycmF5QnVmZmVyKS4KKyAgICAgICAgVG8gZm9sbG93IHRoYXQgZGVmaW5p
dGlvbiwgSURMQnVmZmVyU291cmNlIGlzIG5vdyB0eXBlLWFsaWFzZWQKKyAgICAgICAgdG8gSURM
VW5pb248SURMSW50ZXJmYWNlPEFycmF5QnVmZmVyVmlldz4sIElETEludGVyZmFjZTxBcnJheUJ1
ZmZlcj4+LgorCisgICAgICAgIENvbnZlcnRlcjxJRExCdWZmZXJTb3VyY2U+IHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9uIGNhbiBub3cgYmUKKyAgICAgICAgcmVtb3ZlZCBzaW5jZSB0aGUgZGVmYXVs
dCBzcGVjaWFsaXphdGlvbiBmb3IgSURMVW5pb24gd2lsbCBiZQorICAgICAgICB1c2VkLgorCisg
ICAgICAgIEMrKyBpbXBsZW1lbnRhdGlvbnMgc3RpbGwgd29yayB0aHJvdWdoIGEgQnVmZmVyU291
cmNlIG9iamVjdC4KKyAgICAgICAgVGhhdCBjbGFzcyBub3cgaGFzIGFuIGltcGxpY2l0IGNvbnN0
cnVjdG9yIHRoYXQgY29uc3VtZXMgdGhlCisgICAgICAgIFZhcmlhbnQgb2JqZWN0LiBUaGUgZGF0
YSgpIGFuZCBsZW5ndGgoKSBtZXRob2RzIG9uIHRoZSBjbGFzcworICAgICAgICBub3cgaXRlcmF0
ZSB0aGUgdmFyaWFudCB0byBmaW5kIGFuIGV4aXN0aW5nIG9iamVjdCB0aGF0IGNhbgorICAgICAg
ICBwcm92aWRlIGEgcG9pbnRlciB0byB0aGUgZGF0YSBvciB0aGUgbGVuZ3RoIG9mIGl0LgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkJ1ZmZlclNvdXJjZTo6QnVmZmVyU291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJ1ZmZlclNvdXJjZTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCdWZm
ZXJTb3VyY2U6Omxlbmd0aCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPjo6Y29udmVydCk6
IERlbGV0ZWQuCisKIDIwMTYtMTAtMjYgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiAgPGVvY2Fu
aGFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXVtHVEsrXVtNU0VdIFVucmV2aWV3
ZWQgZGVidWcgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDAxNTdkMWRhZTY2ODI4NjY2MTI0ZDIyMzli
ZjgyZjhjNmJkMDM4YTUuLjI1M2E5ZWM5NTg3ZTMzMzVhNzAyYWY1YzNlOWQ3M2EyYjdlMzgyYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZm
ZXI6OnNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUgbmV3VmFsdWUpCiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkK
IHsKLSAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGRhdGEuZGF0YSksIGRhdGEubGVuZ3RoKTsKKyAgICByZXR1cm4gYXBwZW5k
QnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuZGF0
YSgpKSwgZGF0YS5sZW5ndGgoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXNldFBhcnNl
clN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURM
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAppbmRl
eCBkNWU3YTc5OTE2YTZmZmRkN2RiMWE2MjU5Mjc0ZDFlMmU3ZTdkMDk5Li4zZjY3NTlmYjQ2ZGU3
MDZlMGRmNTIwNTFlZGUyMmI2YjgyZmMzZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9JRExUeXBlcy5oCkBAIC0zMCwxMiArMzAsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2Ns
YXNzIEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQnVmZmVyU291cmNlOwogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlPiBj
bGFzcyBET01Qcm9taXNlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTM3LDcgKzEzOCw3
IEBAIHN0cnVjdCBJRExEYXRlIDogSURMVHlwZTxkb3VibGU+IHsKICAgICBzdGF0aWMgZG91Ymxl
IGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkb3VibGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9
CiB9OwogCi1zdHJ1Y3QgSURMQnVmZmVyU291cmNlIDogSURMVHlwZTxCdWZmZXJTb3VyY2U+IHsg
fTsKK3VzaW5nIElETEJ1ZmZlclNvdXJjZSA9IElETFVuaW9uPElETEludGVyZmFjZTxKU0M6OkFy
cmF5QnVmZmVyVmlldz4sIElETEludGVyZmFjZTxKU0M6OkFycmF5QnVmZmVyPj47CiAKIC8vIEhl
bHBlciBwcmVkaWNhdGVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0J1ZmZlclNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNl
LmgKaW5kZXggZjEzNTVlM2ZiZTIzMmNiNDIzZTFmNmFlYjI3ODQ1NjEzNTU0OTI0Ny4uYWQwMzc2
MzYxNWZmM2Q5Yjc2MjNjZmVjOTc4OWNlYjI3YTgzYzZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQnVmZmVyU291cmNlLmgKQEAgLTI1LDEyICsyNSw0MiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHd0Zi9CcmlnYW5kLmg+CisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBB
cnJheUJ1ZmZlclZpZXc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQnVmZmVy
U291cmNlIHsKIHB1YmxpYzoKLSAgICBjb25zdCB1aW50OF90KiBkYXRhOwotICAgIHNpemVfdCBs
ZW5ndGg7CisgICAgQnVmZmVyU291cmNlKFdURjo6VmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlclZpZXc+LCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+JiYgdmFyaWFudCkKKyAgICAgICAg
OiBtX3ZhcmlhbnQoV1RGTW92ZSh2YXJpYW50KSkKKyAgICB7IH0KKworICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoW10oYXV0
byYgYnVmZmVyKSAtPiBjb25zdCB1aW50OF90KiB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKTsKKyAgICAgICAgfSwgbV92YXJp
YW50KTsKKyAgICB9CisKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBXVEY6OnZpc2l0KFtdKGF1dG8mIGJ1ZmZlcikgLT4gc2l6ZV90IHsKKyAgICAgICAg
ICAgIHJldHVybiBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgfSwgbV92YXJpYW50KTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgV1RGOjpWYXJpYW50PFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyVmlldz4sIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gbV92YXJpYW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnQuaAppbmRleCA2YTY0ZDM4MGYzYjFkNTZmZmZlMjUyN2FhZDRiMjk1MjNhODc5YzQ5Li41ZjA2
ZGRkYWE1YTA4NjAxMTJhMWI5MGMzMWJjOGJlNDhiODU3OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaApAQCAtMTAwNSwyNyArMTAwNSw2IEBAIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gewogfTsK
IAogLy8gTUFSSzogLQotLy8gTUFSSzogQnVmZmVyU291cmNlIHR5cGUKLQotdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPElETEJ1ZmZlclNvdXJjZT4gOiBEZWZhdWx0Q29udmVydGVyPElETEJ1
ZmZlclNvdXJjZT4gewotICAgIHVzaW5nIFJldHVyblR5cGUgPSBCdWZmZXJTb3VyY2U7Ci0KLSAg
ICBzdGF0aWMgUmV0dXJuVHlwZSBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOwot
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICAgICAg
aWYgKEpTQzo6QXJyYXlCdWZmZXIqIGJ1ZmZlciA9IEpTQzo6dG9BcnJheUJ1ZmZlcih2YWx1ZSkp
Ci0gICAgICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRh
KCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSB9OwotICAgICAgICBpZiAoUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXJWaWV3PiBidWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcodmFsdWUpKQotICAg
ICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VB
ZGRyZXNzKCkpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkgfTsKLQotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5k
IEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQnVmZmVyU291cmNlIGFy
Z3VtZW50cyIpKTsKLSAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgMCB9OwotICAgIH0KLX07Ci0K
LS8vIE1BUks6IC0KIC8vIE1BUks6IERhdGUgdHlwZQogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252
ZXJ0ZXI8SURMRGF0ZT4gOiBEZWZhdWx0Q29udmVydGVyPElETERhdGU+IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293033</attachid>
            <date>2016-10-27 10:29:49 -0700</date>
            <delta_ts>2016-10-27 13:39:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164056-20161027102559.patch</filename>
            <type>text/plain</type>
            <size>5851</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM1ODQ4MDdlOTRkMTg0
NjNkODNjNTYyNjhiMGRlMGIzMWZkZDZkNC4uNjJkN2EwMjVlY2I5MWQ5NmYzYmYxNzAyM2IzOTA5
NDZhNTEwZTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTEwLTI3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBCdWZmZXJTb3VyY2Ug
c2hvdWxkIGJlaGF2ZSBhcyBhbiB1bmlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVt
ZXouCisKKyAgICAgICAgV2ViSURMIHR5cGVkZWZzIEJ1ZmZlclNvdXJjZSBhcyAoQXJyYXlCdWZm
ZXJWaWV3IG9yIEFycmF5QnVmZmVyKS4KKyAgICAgICAgVG8gZm9sbG93IHRoYXQgZGVmaW5pdGlv
biwgSURMQnVmZmVyU291cmNlIGlzIG5vdyB0eXBlLWFsaWFzZWQKKyAgICAgICAgdG8gSURMVW5p
b248SURMSW50ZXJmYWNlPEFycmF5QnVmZmVyVmlldz4sIElETEludGVyZmFjZTxBcnJheUJ1ZmZl
cj4+LgorCisgICAgICAgIENvbnZlcnRlcjxJRExCdWZmZXJTb3VyY2U+IHRlbXBsYXRlIHNwZWNp
YWxpemF0aW9uIGNhbiBub3cgYmUKKyAgICAgICAgcmVtb3ZlZCBzaW5jZSB0aGUgZGVmYXVsdCBz
cGVjaWFsaXphdGlvbiBmb3IgSURMVW5pb24gd2lsbCBiZQorICAgICAgICB1c2VkLgorCisgICAg
ICAgIEMrKyBpbXBsZW1lbnRhdGlvbnMgc3RpbGwgd29yayB0aHJvdWdoIGEgQnVmZmVyU291cmNl
IG9iamVjdC4KKyAgICAgICAgVGhhdCBjbGFzcyBub3cgaGFzIGFuIGltcGxpY2l0IGNvbnN0cnVj
dG9yIHRoYXQgY29uc3VtZXMgdGhlCisgICAgICAgIFZhcmlhbnQgb2JqZWN0LiBUaGUgZGF0YSgp
IGFuZCBsZW5ndGgoKSBtZXRob2RzIG9uIHRoZSBjbGFzcworICAgICAgICBub3cgaXRlcmF0ZSB0
aGUgdmFyaWFudCB0byBmaW5kIGFuIGV4aXN0aW5nIG9iamVjdCB0aGF0IGNhbgorICAgICAgICBw
cm92aWRlIGEgcG9pbnRlciB0byB0aGUgZGF0YSBvciB0aGUgbGVuZ3RoIG9mIGl0LgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2dl
bmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkJ1ZmZlclNvdXJjZTo6QnVmZmVyU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJ1ZmZlclNvdXJjZTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCdWZmZXJT
b3VyY2U6Omxlbmd0aCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQnVmZmVyU291cmNlPjo6Y29udmVydCk6IERl
bGV0ZWQuCisKIDIwMTYtMTAtMjYgIEVucmlxdWUgT2Nhw7FhIEdvbnrDoWxleiAgPGVvY2FuaGFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXVtHVEsrXVtNU0VdIFVucmV2aWV3ZWQg
ZGVidWcgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDAxNTdkMWRhZTY2ODI4NjY2MTI0ZDIyMzliZjgy
ZjhjNmJkMDM4YTUuLjI1M2E5ZWM5NTg3ZTMzMzVhNzAyYWY1YzNlOWQ3M2EyYjdlMzgyYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6
OnNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUgbmV3VmFsdWUpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKGNvbnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkKIHsK
LSAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGRhdGEuZGF0YSksIGRhdGEubGVuZ3RoKTsKKyAgICByZXR1cm4gYXBwZW5kQnVm
ZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEuZGF0YSgp
KSwgZGF0YS5sZW5ndGgoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXNldFBhcnNlclN0
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAppbmRleCBk
NWU3YTc5OTE2YTZmZmRkN2RiMWE2MjU5Mjc0ZDFlMmU3ZTdkMDk5Li4zZjY3NTlmYjQ2ZGU3MDZl
MGRmNTIwNTFlZGUyMmI2YjgyZmMzZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0lETFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9JRExUeXBlcy5oCkBAIC0zMCwxMiArMzAsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNz
IEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQnVmZmVyU291cmNlOwogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlPiBjbGFz
cyBET01Qcm9taXNlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTM3LDcgKzEzOCw3IEBA
IHN0cnVjdCBJRExEYXRlIDogSURMVHlwZTxkb3VibGU+IHsKICAgICBzdGF0aWMgZG91YmxlIGV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkb3VibGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CiB9
OwogCi1zdHJ1Y3QgSURMQnVmZmVyU291cmNlIDogSURMVHlwZTxCdWZmZXJTb3VyY2U+IHsgfTsK
K3VzaW5nIElETEJ1ZmZlclNvdXJjZSA9IElETFVuaW9uPElETEludGVyZmFjZTxKU0M6OkFycmF5
QnVmZmVyVmlldz4sIElETEludGVyZmFjZTxKU0M6OkFycmF5QnVmZmVyPj47CiAKIC8vIEhlbHBl
ciBwcmVkaWNhdGVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1
ZmZlclNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmgK
aW5kZXggZjEzNTVlM2ZiZTIzMmNiNDIzZTFmNmFlYjI3ODQ1NjEzNTU0OTI0Ny4uNTM5NzczODUy
YjM4OGVhZDg3ODEwMDQ2ZDY2YTE1YWQ4YmQ1OTcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQnVmZmVyU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQnVmZmVyU291cmNlLmgKQEAgLTI1LDEyICsyNSwzNSBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZSB7
CiBwdWJsaWM6Ci0gICAgY29uc3QgdWludDhfdCogZGF0YTsKLSAgICBzaXplX3QgbGVuZ3RoOwor
ICAgIEJ1ZmZlclNvdXJjZShXVEY6OlZhcmlhbnQ8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3
PiwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiYmIHZhcmlhbnQpCisgICAgICAgIDogbV92YXJp
YW50KFdURk1vdmUodmFyaWFudCkpCisgICAgeyB9CisKKyAgICBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGF1dG8mIGJ1ZmZl
cikgLT4gY29uc3QgdWludDhfdCogeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSk7CisgICAgICAgIH0sIG1fdmFyaWFudCk7Cisg
ICAgfQorCisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
V1RGOjp2aXNpdChbXShhdXRvJiBidWZmZXIpIC0+IHNpemVfdCB7CisgICAgICAgICAgICByZXR1
cm4gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIH0sIG1fdmFyaWFudCk7CisgICAgfQor
Citwcml2YXRlOgorICAgIFdURjo6VmFyaWFudDxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+
LCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IG1fdmFyaWFudDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5k
ZXggNmE2NGQzODBmM2IxZDU2ZmZmZTI1MjdhYWQ0YjI5NTIzYTg3OWM0OS4uNWYwNmRkZGFhNWEw
ODYwMTEyYTFiOTBjMzFiYzhiZTQ4Yjg1NzkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0LmgKQEAgLTEwMDUsMjcgKzEwMDUsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBUPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IHsKIH07CiAKIC8vIE1B
Uks6IC0KLS8vIE1BUks6IEJ1ZmZlclNvdXJjZSB0eXBlCi0KLXRlbXBsYXRlPD4gc3RydWN0IENv
bnZlcnRlcjxJRExCdWZmZXJTb3VyY2U+IDogRGVmYXVsdENvbnZlcnRlcjxJRExCdWZmZXJTb3Vy
Y2U+IHsKLSAgICB1c2luZyBSZXR1cm5UeXBlID0gQnVmZmVyU291cmNlOwotCi0gICAgc3RhdGlj
IFJldHVyblR5cGUgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKLSAgICB7Ci0gICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKLSAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgICAgIGlmIChKU0M6
OkFycmF5QnVmZmVyKiBidWZmZXIgPSBKU0M6OnRvQXJyYXlCdWZmZXIodmFsdWUpKQotICAgICAg
ICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVm
ZmVyLT5ieXRlTGVuZ3RoKCkgfTsKLSAgICAgICAgaWYgKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gYnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHZhbHVlKSkKLSAgICAgICAgICAg
IHJldHVybiB7IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygp
KSwgYnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpIH07Ci0KLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1
ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFzc2VkIGFzIEJ1ZmZlclNvdXJjZSBhcmd1bWVudHMi
KSk7Ci0gICAgICAgIHJldHVybiB7IG51bGxwdHIsIDAgfTsKLSAgICB9Ci19OwotCi0vLyBNQVJL
OiAtCiAvLyBNQVJLOiBEYXRlIHR5cGUKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElE
TERhdGU+IDogRGVmYXVsdENvbnZlcnRlcjxJRExEYXRlPiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>