<?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>182367</bug_id>
          
          <creation_ts>2018-01-31 17:50:42 -0800</creation_ts>
          <short_desc>Rendering SVG images with same size as WebGL texture doesn&apos;t work correctly</short_desc>
          <delta_ts>2018-02-07 18:34:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Safari 11</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=182592</see_also>
          <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>yifso</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yifso</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1395272</commentid>
    <comment_count>0</comment_count>
    <who name="">yifso</who>
    <bug_when>2018-01-31 17:50:42 -0800</bug_when>
    <thetext>JSFiddler:
http://jsfiddle.net/t5jy8ufm/
 
Repro steps:
1. Load multiple SVG images. All these SVG images should have the same size (size means Height x Width. This is the key to repro).
2. Convert each of them to texture. Then, render the texture on canvas.

Expected (behavior in Edge/Chrome/FF):
These textures are rendered one by one. There is no overlap between them.

Actual (behavior in Safari):
They are rendered one by one, somehow the latter images will “reuse” the rendering of a previous image, causing incorrect results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395273</commentid>
    <comment_count>1</comment_count>
    <who name="">yifso</who>
    <bug_when>2018-01-31 17:56:37 -0800</bug_when>
    <thetext>User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395316</commentid>
    <comment_count>2</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-01-31 20:07:24 -0800</bug_when>
    <thetext>rdar://problem/37090895</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396380</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-02-05 10:36:08 -0800</bug_when>
    <thetext>Wow, we draw totally different results from Firefox/Chrome</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397010</commentid>
    <comment_count>4</comment_count>
      <attachid>333236</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-02-06 16:42:44 -0800</bug_when>
    <thetext>Created attachment 333236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397020</commentid>
    <comment_count>5</comment_count>
      <attachid>333236</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-02-06 17:10:49 -0800</bug_when>
    <thetext>Comment on attachment 333236
Patch

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

No need to make the changes I suggest.

&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:12
&gt; +        (function() {

I wonder if this test would have been easier if it was drawing a single texture into the full canvas. ie.

gl.clear
set up image 1
gl.draw
gl.clear
set up image 2
gl.draw

that way you should only end up with image 2 in the canvas. If you see parts of image 1, then the SVG buffer was not correctly cleared. This would avoid a bit of math in the test, such as the need for x,y,width,height in the texture quads.

&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:15
&gt; +                uniform vec2 u_resolution;

...and this wouldn&apos;t be necessary, since you&apos;re always drawing the full texture. In fact, I&apos;m not quite sure why it is needed even now.

The buffer for a_postion could be [-1, -1, 1, -1, -1, 1, 1, -1, 1, 1, -1, 1] - which is two triangles that cover the entire canvas.
Then you could either provide [0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1] for the texture coordinates, or simply calculate them in the shader from the vertex position.

&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:21
&gt; +                    gl_Position = vec4((a_position / u_resolution) * 2.0 - 1.0, 0, 1);
&gt; +                    v_texCoord = a_texCoord;

So this would become:

gl_Position = a_position;  // you&apos;d have to change attribute vec2 a_position to attribute vec4 a_position;
v_texCoord = (a_position + 1.0) / 2.0;

&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:63
&gt; +                promises.push(drawTexture(program, gl, textureTargets[index].url, textureTargets[index].x, textureTargets[index].y, textureTargets[index].width, textureTargets[index].height));

I think you could have just sent the object/dictionary in as a single argument, rather than expanding it.

&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:106
&gt; +                    gl.generateMipmap(gl.TEXTURE_2D);

You don&apos;t need this line.

However, you should probably put this:

    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);

You&apos;ve managed to not need this because you picked a texture size that is a power of 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397028</commentid>
    <comment_count>6</comment_count>
      <attachid>333242</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-02-06 18:09:56 -0800</bug_when>
    <thetext>Created attachment 333242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397032</commentid>
    <comment_count>7</comment_count>
      <attachid>333236</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-02-06 18:14:18 -0800</bug_when>
    <thetext>Comment on attachment 333236
Patch

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

&gt;&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:12
&gt;&gt; +        (function() {
&gt; 
&gt; I wonder if this test would have been easier if it was drawing a single texture into the full canvas. ie.
&gt; 
&gt; gl.clear
&gt; set up image 1
&gt; gl.draw
&gt; gl.clear
&gt; set up image 2
&gt; gl.draw
&gt; 
&gt; that way you should only end up with image 2 in the canvas. If you see parts of image 1, then the SVG buffer was not correctly cleared. This would avoid a bit of math in the test, such as the need for x,y,width,height in the texture quads.

Done. This is better.

&gt;&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:15
&gt;&gt; +                uniform vec2 u_resolution;
&gt; 
&gt; ...and this wouldn&apos;t be necessary, since you&apos;re always drawing the full texture. In fact, I&apos;m not quite sure why it is needed even now.
&gt; 
&gt; The buffer for a_postion could be [-1, -1, 1, -1, -1, 1, 1, -1, 1, 1, -1, 1] - which is two triangles that cover the entire canvas.
&gt; Then you could either provide [0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1] for the texture coordinates, or simply calculate them in the shader from the vertex position.

Done. All the calculations were removed.

&gt;&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:21
&gt;&gt; +                    v_texCoord = a_texCoord;
&gt; 
&gt; So this would become:
&gt; 
&gt; gl_Position = a_position;  // you&apos;d have to change attribute vec2 a_position to attribute vec4 a_position;
&gt; v_texCoord = (a_position + 1.0) / 2.0;

Done.

&gt;&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:63
&gt;&gt; +                promises.push(drawTexture(program, gl, textureTargets[index].url, textureTargets[index].x, textureTargets[index].y, textureTargets[index].width, textureTargets[index].height));
&gt; 
&gt; I think you could have just sent the object/dictionary in as a single argument, rather than expanding it.

No need for passing the drawing rectangle anymore.  Only the URL is passed.

&gt;&gt; LayoutTests/webgl/webgl-texture-image-buffer-reuse.html:106
&gt;&gt; +                    gl.generateMipmap(gl.TEXTURE_2D);
&gt; 
&gt; You don&apos;t need this line.
&gt; 
&gt; However, you should probably put this:
&gt; 
&gt;     gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
&gt;     gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
&gt;     gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
&gt;     gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
&gt; 
&gt; You&apos;ve managed to not need this because you picked a texture size that is a power of 2.

Done. And the canvas size was changed to (100x100).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397034</commentid>
    <comment_count>8</comment_count>
      <attachid>333246</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-02-06 18:15:30 -0800</bug_when>
    <thetext>Created attachment 333246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397046</commentid>
    <comment_count>9</comment_count>
      <attachid>333246</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-06 18:51:06 -0800</bug_when>
    <thetext>Comment on attachment 333246
Patch

Clearing flags on attachment: 333246

Committed r228213: &lt;https://trac.webkit.org/changeset/228213&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397047</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-06 18:51:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397405</commentid>
    <comment_count>11</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-02-07 17:51:16 -0800</bug_when>
    <thetext>The LayoutTest added with this change is consistently failing on iOS Simulator:
https://build.webkit.org/results/Apple%20iOS%2011%20Simulator%20Release%20WK2%20(Tests)/r228249%20(3075)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397417</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-02-07 18:34:41 -0800</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #11)
&gt; The LayoutTest added with this change is consistently failing on iOS
&gt; Simulator:
&gt; https://build.webkit.org/results/
&gt; Apple%20iOS%2011%20Simulator%20Release%20WK2%20(Tests)/r228249%20(3075)/
&gt; results.html

The test was skipped in &lt;https://trac.webkit.org/changeset/228256&gt;.

The bug https://bugs.webkit.org/show_bug.cgi?id=182592 was filed to track fixing the test for 2x display.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333236</attachid>
            <date>2018-02-06 16:42:44 -0800</date>
            <delta_ts>2018-02-06 18:09:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182367-20180206164243.patch</filename>
            <type>text/plain</type>
            <size>8726</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAyLTA2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IFNWRyBpbWFnZXMgd2l0aCBzYW1lIHNpemUgYXMgV2ViR0wgdGV4dHVyZSBkb2Vzbid0IHdvcmsg
Y29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODIzNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZiBhbSBpbWFnZSBidWZmZXIgaXMgY3JlYXRlZCBmb3IgYSB3ZWJnbCB0ZXh0dXJlIGFuZCB0
aGVuIGl0IGlzIHJldXNlZCAKKyAgICAgICAgZm9yIGFub3RoZXIgdGV4dHVyZSwgaXQgaGFzIHRv
IGJlIGNsZWFyZWQgYmVmb3JlIGRyYXdpbmcuCisKKyAgICAgICAgVGVzdDogd2ViZ2wvd2ViZ2wt
dGV4dHVyZS1pbWFnZS1idWZmZXItcmV1c2UuaHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisK
IDIwMTgtMDItMDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQ
YXltZW50IFJlcXVlc3RdIHNob3coKSBzaG91bGQgdGFrZSBhbiBvcHRpb25hbCBQYXltZW50RGV0
YWlsc1VwZGF0ZSBwcm9taXNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMjI3OTM4
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MjIsNiArNTkyMiw3IEBAIEltYWdlQnVmZmVyKiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjoKICAgICAgICAgaWYgKGJ1Zi0+bG9naWNhbFNpemUo
KSAhPSBzaXplKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGJ1YmJsZVRvRnJvbnQo
aSk7CisgICAgICAgIGJ1Zi0+Y29udGV4dCgpLmNsZWFyUmVjdChGbG9hdFJlY3QoeyB9LCBGbG9h
dFNpemUoc2l6ZSkpKTsKICAgICAgICAgcmV0dXJuIGJ1ZjsKICAgICB9CiAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNzkzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTAyLTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5nIFNWRyBpbWFnZXMgd2l0aCBzYW1l
IHNpemUgYXMgV2ViR0wgdGV4dHVyZSBkb2Vzbid0IHdvcmsgY29ycmVjdGx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzNjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmdsL3dlYmdsLXRleHR1
cmUtaW1hZ2UtYnVmZmVyLXJldXNlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdsL3dlYmdsLXRleHR1cmUtaW1hZ2UtYnVmZmVyLXJldXNlLmh0bWw6IEFkZGVkLgorCiAyMDE4
LTAxLTMxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKCkgbWF5IG5vdCBkcmF3IGEgY29tcGxldGUg
ZnJhbWUgZXZlbiBhZnRlciBhbGwgdGhlIGRhdGEgaXMgcmVjZWl2ZWQKSW5kZXg6IExheW91dFRl
c3RzL3dlYmdsL3dlYmdsLXRleHR1cmUtaW1hZ2UtYnVmZmVyLXJldXNlLWV4cGVjdGVkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wtdGV4dHVyZS1pbWFnZS1idWZm
ZXItcmV1c2UtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJn
bC93ZWJnbC10ZXh0dXJlLWltYWdlLWJ1ZmZlci1yZXVzZS1leHBlY3RlZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKKzxzdHlsZT4KKyAgIGNhbnZhcyB7CisgICAgICAgd2lk
dGg6IDI1NnB4OworICAgICAgIGhlaWdodDogMTI4cHg7CisgICAgICAgYm9yZGVyOiAxcHggc29s
aWQgZ3JlZW47CisgICB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAgPHA+RW5zdXJlIGlmIGFuIGlt
YWdlIGJ1ZmZlciBpcyByZXVzZWQgZm9yIGEgd2ViZ2wgdGV4dHVyZSwgaXQgd2lsbCBiZSBjbGVh
cmVkIGJlZm9yZSBkcmF3aW5nLjwvcD4KKyAgICA8Y2FudmFzIHdpZHRoPSIyNTYiIGhlaWdodD0i
MTI4Ii8+CisgICAgPHNjcmlwdD4KKyAgICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignY2FudmFzJyk7CisgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250
ZXh0KCcyZCcpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gJ2dyZWVuJzsKKyAgICAgICAgY3R4
LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCAvIDIsIGNhbnZhcy5oZWlnaHQpOworICAgICAg
ICBjdHguZmlsbFJlY3QoY2FudmFzLndpZHRoICogNSAvIDgsIGNhbnZhcy5oZWlnaHQgLyA0LCBj
YW52YXMud2lkdGggLyA0LCBjYW52YXMuaGVpZ2h0IC8gMik7CisgICAgPC9zY3JpcHQ+Cis8L2Jv
ZHk+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJnbC93ZWJnbC10ZXh0dXJlLWltYWdlLWJ1ZmZlci1y
ZXVzZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdsL3dlYmdsLXRleHR1cmUt
aW1hZ2UtYnVmZmVyLXJldXNlLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2Vi
Z2wvd2ViZ2wtdGV4dHVyZS1pbWFnZS1idWZmZXItcmV1c2UuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEzNCBAQAorPHN0eWxlPgorICAgIGNhbnZhcyB7CisgICAgICAgIHdpZHRoOiAy
NTZweDsKKyAgICAgICAgaGVpZ2h0OiAxMjhweDsKKyAgICAgICAgYm9yZGVyOiAxcHggZ3JlZW4g
c29saWQ7CisgICAgfSAgICAKKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8cD5FbnN1cmUgaWYgYW4g
aW1hZ2UgYnVmZmVyIGlzIHJldXNlZCBmb3IgYSB3ZWJnbCB0ZXh0dXJlLCBpdCB3aWxsIGJlIGNs
ZWFyZWQgYmVmb3JlIGRyYXdpbmcuPC9wPgorICAgIDxjYW52YXMgd2lkdGg9IjI1NiIgaGVpZ2h0
PSIxMjgiPjwvY2FudmFzPgorICAgIDxzY3JpcHQ+CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGNvbnN0IHZzU291cmNlID0gYAorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB2
ZWMyIGFfcG9zaXRpb247CisgICAgICAgICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfcmVzb2x1dGlv
bjsKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOworICAgICAgICAg
ICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOworCisgICAgICAgICAgICAgICAgdm9pZCBt
YWluKCkgeworICAgICAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoKGFfcG9zaXRp
b24gLyB1X3Jlc29sdXRpb24pICogMi4wIC0gMS4wLCAwLCAxKTsKKyAgICAgICAgICAgICAgICAg
ICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYDsKKworICAgICAgICAgICAgY29uc3QgZnNTb3VyY2UgPSBgCisgICAgICAgICAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICAgICAgICAgICAgICB1bmlmb3JtIHNhbXBs
ZXIyRCB1X3NhbXBsZXI7CisgICAgICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7
CisKKyAgICAgICAgICAgICAgICB2b2lkIG1haW4oKSB7CisgICAgICAgICAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpOworICAgICAgICAg
ICAgICAgIH0gCisgICAgICAgICAgICBgOworCisgICAgICAgICAgICBjb25zdCBjYW52YXMgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKKworICAgICAgICAgICAgY29uc3QgdGV4
dHVyZVRhcmdldHMgPSBbIHsgCisgICAgICAgICAgICAgICAgICAgIHVybDogJ2RhdGE6aW1hZ2Uv
c3ZnK3htbDtjaGFyc2V0PXV0Zi04LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiBoZWlnaHQ9IjEyOCIgd2lkdGg9IjEyOCI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0i
MTAwJSIgZmlsbD0iZ3JlZW4iLz48L3N2Zz4nLAorICAgICAgICAgICAgICAgICAgICB4OiAwLAor
ICAgICAgICAgICAgICAgICAgICB5OiAwLAorICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2Fu
dmFzLndpZHRoIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0
CisgICAgICAgICAgICAgICAgfSwgeyAKKyAgICAgICAgICAgICAgICAgICAgdXJsOiAnZGF0YTpp
bWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIGhlaWdodD0iMTI4IiB3aWR0aD0iMTI4Ij48cmVjdCB4PSIyNSUiIHk9IjI1JSIg
d2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIGZpbGw9ImdyZWVuIi8+PC9zdmc+JywKKyAgICAgICAg
ICAgICAgICAgICAgeDogY2FudmFzLndpZHRoIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgeTog
MCwKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbnZhcy53aWR0aCAvIDIsCisgICAgICAg
ICAgICAgICAgICAgIGhlaWdodDogY2FudmFzLmhlaWdodAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGNvbnN0IGdsID0gY2FudmFzLmdldENvbnRleHQo
IndlYmdsIik7CisgICAgICAgICAgICBjb25zdCBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbShnbCwg
dnNTb3VyY2UsIGZzU291cmNlKTsKKyAgICAgICAgICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7
CisKKyAgICAgICAgICAgIGNyZWF0ZVRleHR1cmVCdWZmZXIocHJvZ3JhbSwgZ2wsIDAsIDAsIDEu
MCwgMS4wLCAiYV90ZXhDb29yZCIpOworICAgICAgICAgICAgY29uc3QgcmVzb2x1dGlvbkxvY2F0
aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1X3Jlc29sdXRpb24iKTsKKyAg
ICAgICAgICAgIGdsLnVuaWZvcm0yZihyZXNvbHV0aW9uTG9jYXRpb24sIGNhbnZhcy53aWR0aCwg
Y2FudmFzLmhlaWdodCk7CisKKyAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0gW107CisgICAg
ICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGV4dHVyZVRhcmdldHMubGVuZ3Ro
OyArK2luZGV4KQorICAgICAgICAgICAgICAgIHByb21pc2VzLnB1c2goZHJhd1RleHR1cmUocHJv
Z3JhbSwgZ2wsIHRleHR1cmVUYXJnZXRzW2luZGV4XS51cmwsIHRleHR1cmVUYXJnZXRzW2luZGV4
XS54LCB0ZXh0dXJlVGFyZ2V0c1tpbmRleF0ueSwgdGV4dHVyZVRhcmdldHNbaW5kZXhdLndpZHRo
LCB0ZXh0dXJlVGFyZ2V0c1tpbmRleF0uaGVpZ2h0KSk7CisKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pKCk7CisKKyAgICAgICAgZnVuY3Rp
b24gY3JlYXRlUHJvZ3JhbShnbCwgdnNTb3VyY2UsIGZzU291cmNlKSB7CisgICAgICAgICAgICBj
b25zdCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGdsLCBnbC5WRVJURVhfU0hBREVSLCB2c1Nv
dXJjZSk7CisgICAgICAgICAgICBjb25zdCBmcmFnbWVudFNoYWRlciA9IGxvYWRTaGFkZXIoZ2ws
IGdsLkZSQUdNRU5UX1NIQURFUiwgZnNTb3VyY2UpOworCisgICAgICAgICAgICBjb25zdCBwcm9n
cmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICAgICAgZ2wuYXR0YWNoU2hhZGVyKHBy
b2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAgICAgICAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3Jh
bSwgZnJhZ21lbnRTaGFkZXIpOworICAgICAgICAgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7
CisKKyAgICAgICAgICAgIHJldHVybiBwcm9ncmFtOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9hZFNoYWRlcihnbCwgdHlwZSwgc291cmNlKSB7CisgICAgICAgICAgICBjb25zdCBz
aGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIodHlwZSk7CisgICAgICAgICAgICBnbC5zaGFkZXJTb3Vy
Y2Uoc2hhZGVyLCBzb3VyY2UpOworICAgICAgICAgICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXIp
OworICAgICAgICAgICAgcmV0dXJuIHNoYWRlcjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGRyYXdUZXh0dXJlKHByb2dyYW0sIGdsLCB1cmwsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHsK
KyAgICAgICAgICAgIHJldHVybiBsb2FkVGV4dHVyZShnbCwgdXJsKS50aGVuKGZ1bmN0aW9uKGlt
YWdlKSB7CisgICAgICAgICAgICAgICAgY29uc3QgdmVydGljZXMgPSBjcmVhdGVUZXh0dXJlQnVm
ZmVyKHByb2dyYW0sIGdsLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAiYV9wb3NpdGlvbiIpOworICAg
ICAgICAgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCB2ZXJ0aWNlcyk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRUZXh0dXJl
KGdsLCB1cmwpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
eworICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgICAgICAg
ICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICAgICAgICAgICAg
ICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIGltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wuZ2VuZXJhdGVNaXBt
YXAoZ2wuVEVYVFVSRV8yRCk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoaW1hZ2UpOwor
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gdXJsOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjcmVhdGVUZXh0dXJl
QnVmZmVyKHByb2dyYW0sIGdsLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBwb3NpdGlvbkF0dHJpYnV0
ZSkgeworICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
ICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKworICAgICAg
ICAgICAgY29uc3QgZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICAgICAgICAgIHgs
ICAgICAgICAgIHksIHggKyB3aWR0aCwgeSwgICAgICAgICB4LCB5ICsgaGVpZ2h0LCAvLyBUcmlh
bmdsZSAxCisgICAgICAgICAgICAgICAgeCwgeSArIGhlaWdodCwgeCArIHdpZHRoLCB5LCB4ICsg
d2lkdGgsIHkgKyBoZWlnaHQgIC8vIFRyaWFuZ2xlIDIKKyAgICAgICAgICAgIF0pOworCisgICAg
ICAgICAgICBjb25zdCBjb21wb25lbnRzID0gMjsKKyAgICAgICAgICAgIGNvbnN0IHZlcnRpY2Vz
ID0gZGF0YS5sZW5ndGggLyBjb21wb25lbnRzOworCisgICAgICAgICAgICBnbC5idWZmZXJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgZGF0YSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgICAgICBj
b25zdCBwb3NpdGlvbkxvY2F0aW9uID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgcG9z
aXRpb25BdHRyaWJ1dGUpOworICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
cG9zaXRpb25Mb2NhdGlvbik7CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHBv
c2l0aW9uTG9jYXRpb24sIGNvbXBvbmVudHMsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAg
ICAgICAgICAgIHJldHVybiB2ZXJ0aWNlczsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9i
b2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333242</attachid>
            <date>2018-02-06 18:09:56 -0800</date>
            <delta_ts>2018-02-06 18:15:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182367-20180206180955.patch</filename>
            <type>text/plain</type>
            <size>7869</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAyLTA2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IFNWRyBpbWFnZXMgd2l0aCBzYW1lIHNpemUgYXMgV2ViR0wgdGV4dHVyZSBkb2Vzbid0IHdvcmsg
Y29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODIzNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZiBhbSBpbWFnZSBidWZmZXIgaXMgY3JlYXRlZCBmb3IgYSB3ZWJnbCB0ZXh0dXJlIGFuZCB0
aGVuIGl0IGlzIHJldXNlZCAKKyAgICAgICAgZm9yIGFub3RoZXIgdGV4dHVyZSwgaXQgaGFzIHRv
IGJlIGNsZWFyZWQgYmVmb3JlIGRyYXdpbmcuCisKKyAgICAgICAgVGVzdDogd2ViZ2wvd2ViZ2wt
dGV4dHVyZS1pbWFnZS1idWZmZXItcmV1c2UuaHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisK
IDIwMTgtMDItMDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQ
YXltZW50IFJlcXVlc3RdIHNob3coKSBzaG91bGQgdGFrZSBhbiBvcHRpb25hbCBQYXltZW50RGV0
YWlsc1VwZGF0ZSBwcm9taXNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMjI3OTM4
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MjIsNiArNTkyMiw3IEBAIEltYWdlQnVmZmVyKiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjoKICAgICAgICAgaWYgKGJ1Zi0+bG9naWNhbFNpemUo
KSAhPSBzaXplKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGJ1YmJsZVRvRnJvbnQo
aSk7CisgICAgICAgIGJ1Zi0+Y29udGV4dCgpLmNsZWFyUmVjdChGbG9hdFJlY3QoeyB9LCBGbG9h
dFNpemUoc2l6ZSkpKTsKICAgICAgICAgcmV0dXJuIGJ1ZjsKICAgICB9CiAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNzkzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTAyLTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5nIFNWRyBpbWFnZXMgd2l0aCBzYW1l
IHNpemUgYXMgV2ViR0wgdGV4dHVyZSBkb2Vzbid0IHdvcmsgY29ycmVjdGx5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzNjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgKiB3ZWJnbC93ZWJnbC10ZXh0dXJl
LWltYWdlLWJ1ZmZlci1yZXVzZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJn
bC93ZWJnbC10ZXh0dXJlLWltYWdlLWJ1ZmZlci1yZXVzZS5odG1sOiBBZGRlZC4KKwogMjAxOC0w
MS0zMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybigpIG1heSBub3QgZHJhdyBhIGNvbXBsZXRlIGZy
YW1lIGV2ZW4gYWZ0ZXIgYWxsIHRoZSBkYXRhIGlzIHJlY2VpdmVkCkluZGV4OiBMYXlvdXRUZXN0
cy93ZWJnbC93ZWJnbC10ZXh0dXJlLWltYWdlLWJ1ZmZlci1yZXVzZS1leHBlY3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdsL3dlYmdsLXRleHR1cmUtaW1hZ2UtYnVmZmVy
LXJldXNlLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvd2ViZ2wv
d2ViZ2wtdGV4dHVyZS1pbWFnZS1idWZmZXItcmV1c2UtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE3IEBACis8c3R5bGU+CisgICBjYW52YXMgeworICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgIGJvcmRlcjogMXB4IHNvbGlk
IGdyZWVuOworICAgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPkVuc3VyZSBpZiBhbiBpbWFn
ZSBidWZmZXIgaXMgcmV1c2VkIGZvciBhIHdlYmdsIHRleHR1cmUsIGl0IHdpbGwgYmUgY2xlYXJl
ZCBiZWZvcmUgZHJhd2luZy48L3A+CisgICAgPGNhbnZhcyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIvPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2NhbnZhcycpOworICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnKTsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICdncmVlbic7CisgICAgICAgIGN0eC5m
aWxsUmVjdChjYW52YXMud2lkdGggLyA0LCBjYW52YXMuaGVpZ2h0IC8gNCwgY2FudmFzLndpZHRo
IC8gMiwgY2FudmFzLmhlaWdodCAvIDIpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wtdGV4dHVyZS1pbWFnZS1idWZmZXItcmV1c2UuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJnbC93ZWJnbC10ZXh0dXJlLWltYWdlLWJ1ZmZl
ci1yZXVzZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdsL3dlYmdsLXRl
eHR1cmUtaW1hZ2UtYnVmZmVyLXJldXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MTIgQEAKKzxzdHlsZT4KKyAgICBjYW52YXMgeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJvcmRlcjogMXB4IGdyZWVuIHNvbGlkOworICAg
IH0gICAgCis8L3N0eWxlPgorPGJvZHk+CisgICAgPHA+RW5zdXJlIGlmIGFuIGltYWdlIGJ1ZmZl
ciBpcyByZXVzZWQgZm9yIGEgd2ViZ2wgdGV4dHVyZSwgaXQgd2lsbCBiZSBjbGVhcmVkIGJlZm9y
ZSBkcmF3aW5nLjwvcD4KKyAgICA8Y2FudmFzIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48L2Nh
bnZhcz4KKyAgICA8c2NyaXB0PgorICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBj
b25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKKyAgICAgICAg
ICAgIGNvbnN0IGdsID0gY2FudmFzLmdldENvbnRleHQoIndlYmdsIik7CisgICAgICAgICAgICBj
b25zdCBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbShnbCk7CisgICAgICAgICAgICBnbC51c2VQcm9n
cmFtKHByb2dyYW0pOworCisgICAgICAgICAgICBjcmVhdGVUZXh0dXJlQnVmZmVyKHByb2dyYW0s
IGdsLCBuZXcgRmxvYXQzMkFycmF5KFsgMCwgMCwgMSwgMCwgMCwgMSwgMCwgMSwgMSwgMCwgMSwg
MV0pLCAiYV90ZXhDb29yZCIpOworCisgICAgICAgICAgICBjb25zdCBpbWFnZXMgPSBbCisgICAg
ICAgICAgICAgICAgJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LDxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCI+PHJl
Y3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iZ3JlZW4iLz48L3N2Zz4nLAorICAg
ICAgICAgICAgICAgICdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiPjxy
ZWN0IHg9IjI1JSIgeT0iMjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgZmlsbD0iZ3JlZW4i
Lz48L3N2Zz4nLAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgY29uc3QgcHJvbWlzZXMg
PSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBpbWFnZXMubGVu
Z3RoOyArK2luZGV4KQorICAgICAgICAgICAgICAgIHByb21pc2VzLnB1c2goZHJhd1RleHR1cmUo
cHJvZ3JhbSwgZ2wsIGltYWdlc1tpbmRleF0pKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4geworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkoKTsKKworICAgICAgICBmdW5jdGlvbiBj
cmVhdGVQcm9ncmFtKGdsKSB7CisgICAgICAgICAgICBjb25zdCB2c1NvdXJjZSA9IGAKKyAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgICAgICAgICAgICAgIHVu
aWZvcm0gdmVjMiB1X3Jlc29sdXRpb247CisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZlYzIg
YV90ZXhDb29yZDsKKyAgICAgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKwor
ICAgICAgICAgICAgICAgIHZvaWQgbWFpbigpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSBhX3Bvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICB2X3RleENvb3JkID0gYV90
ZXhDb29yZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBgOworCisgICAgICAgICAg
ICBjb25zdCBmc1NvdXJjZSA9IGAKKyAgICAgICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAgICAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVfc2FtcGxlcjsKKyAg
ICAgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKworICAgICAgICAgICAgICAg
IHZvaWQgbWFpbigpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVy
ZTJEKHVfc2FtcGxlciwgdl90ZXhDb29yZCk7CisgICAgICAgICAgICAgICAgfSAKKyAgICAgICAg
ICAgIGA7CisKKyAgICAgICAgICAgIGNvbnN0IHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoZ2ws
IGdsLlZFUlRFWF9TSEFERVIsIHZzU291cmNlKTsKKyAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50
U2hhZGVyID0gbG9hZFNoYWRlcihnbCwgZ2wuRlJBR01FTlRfU0hBREVSLCBmc1NvdXJjZSk7CisK
KyAgICAgICAgICAgIGNvbnN0IHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgICAg
ICAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsKKyAgICAgICAgICAg
IGdsLmF0dGFjaFNoYWRlcihwcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAgICAgICAgICBn
bC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9ncmFtOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZFNoYWRlcihnbCwgdHlwZSwgc291cmNlKSB7
CisgICAgICAgICAgICBjb25zdCBzaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIodHlwZSk7CisgICAg
ICAgICAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2UpOworICAgICAgICAgICAgZ2wu
Y29tcGlsZVNoYWRlcihzaGFkZXIpOworICAgICAgICAgICAgcmV0dXJuIHNoYWRlcjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRyYXdUZXh0dXJlKHByb2dyYW0sIGdsLCB1cmwpIHsK
KyAgICAgICAgICAgIHJldHVybiBsb2FkVGV4dHVyZShnbCwgdXJsKS50aGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGNyZWF0ZVRleHR1cmVCdWZmZXIocHJvZ3JhbSwgZ2wsIG5ldyBG
bG9hdDMyQXJyYXkoWy0xLCAtMSwgMSwgLTEsIC0xLCAxLCAtMSwgMSwgMSwgLTEsIDEsIDFdKSwg
ImFfcG9zaXRpb24iKTsKKyAgICAgICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xF
UywgMCwgNik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGxvYWRUZXh0dXJlKGdsLCB1cmwpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7
CisgICAgICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAg
ICAgICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wu
dGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBf
VE9fRURHRSk7CisgICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworICAgICAgICAgICAg
ICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgZ2wuTElORUFSKTsKKyAgICAgICAgICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgIGltYWdlLnNyYyA9IHVybDsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY3JlYXRlVGV4dHVyZUJ1ZmZlcihwcm9ncmFtLCBnbCwgYnVmZmVyRGF0YSwg
cG9zaXRpb25BdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IGdsLmNyZWF0
ZUJ1ZmZlcigpOworICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1
ZmZlcik7CisgICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVy
RGF0YSwgZ2wuU1RBVElDX0RSQVcpOworCisgICAgICAgICAgICBjb25zdCBwb3NpdGlvbkxvY2F0
aW9uID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgcG9zaXRpb25BdHRyaWJ1dGUpOwor
ICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7
CisgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIs
IGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvYm9k
eT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333246</attachid>
            <date>2018-02-06 18:15:30 -0800</date>
            <delta_ts>2018-02-06 18:51:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182367-20180206181529.patch</filename>
            <type>text/plain</type>
            <size>7867</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODE5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAyLTA2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuZGVyaW5n
IFNWRyBpbWFnZXMgd2l0aCBzYW1lIHNpemUgYXMgV2ViR0wgdGV4dHVyZSBkb2Vzbid0IHdvcmsg
Y29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODIzNjcKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAg
SWYgYW0gaW1hZ2UgYnVmZmVyIGlzIGNyZWF0ZWQgZm9yIGEgd2ViZ2wgdGV4dHVyZSBhbmQgdGhl
biBpdCBpcyByZXVzZWQgCisgICAgICAgIGZvciBhbm90aGVyIHRleHR1cmUsIGl0IGhhcyB0byBi
ZSBjbGVhcmVkIGJlZm9yZSBkcmF3aW5nLgorCisgICAgICAgIFRlc3Q6IHdlYmdsL3dlYmdsLXRl
eHR1cmUtaW1hZ2UtYnVmZmVyLXJldXNlLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorCiAy
MDE4LTAyLTA2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbUGF5
bWVudCBSZXF1ZXN0XSBzaG93KCkgc2hvdWxkIHRha2UgYW4gb3B0aW9uYWwgUGF5bWVudERldGFp
bHNVcGRhdGUgcHJvbWlzZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDIyNzkzOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTIyLDYgKzU5MjIsNyBAQCBJbWFnZUJ1ZmZlciogV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgICAgIGlmIChidWYtPmxvZ2ljYWxTaXplKCkg
IT0gc2l6ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBidWJibGVUb0Zyb250KGkp
OworICAgICAgICBidWYtPmNvbnRleHQoKS5jbGVhclJlY3QoRmxvYXRSZWN0KHsgfSwgRmxvYXRT
aXplKHNpemUpKSk7CiAgICAgICAgIHJldHVybiBidWY7CiAgICAgfQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMjc5MzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxOC0wMi0wNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmRlcmluZyBTVkcgaW1hZ2VzIHdpdGggc2FtZSBz
aXplIGFzIFdlYkdMIHRleHR1cmUgZG9lc24ndCB3b3JrIGNvcnJlY3RseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyMzY3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogd2ViZ2wvd2ViZ2wtdGV4dHVyZS1p
bWFnZS1idWZmZXItcmV1c2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ2wv
d2ViZ2wtdGV4dHVyZS1pbWFnZS1idWZmZXItcmV1c2UuaHRtbDogQWRkZWQuCisKIDIwMTgtMDEt
MzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oKSBtYXkgbm90IGRyYXcgYSBjb21wbGV0ZSBmcmFt
ZSBldmVuIGFmdGVyIGFsbCB0aGUgZGF0YSBpcyByZWNlaXZlZApJbmRleDogTGF5b3V0VGVzdHMv
d2ViZ2wvd2ViZ2wtdGV4dHVyZS1pbWFnZS1idWZmZXItcmV1c2UtZXhwZWN0ZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJnbC93ZWJnbC10ZXh0dXJlLWltYWdlLWJ1ZmZlci1y
ZXVzZS1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdsL3dl
YmdsLXRleHR1cmUtaW1hZ2UtYnVmZmVyLXJldXNlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNyBAQAorPHN0eWxlPgorICAgY2FudmFzIHsKKyAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICBib3JkZXI6IDFweCBzb2xpZCBn
cmVlbjsKKyAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8cD5FbnN1cmUgaWYgYW4gaW1hZ2Ug
YnVmZmVyIGlzIHJldXNlZCBmb3IgYSB3ZWJnbCB0ZXh0dXJlLCBpdCB3aWxsIGJlIGNsZWFyZWQg
YmVmb3JlIGRyYXdpbmcuPC9wPgorICAgIDxjYW52YXMgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAi
Lz4KKyAgICA8c2NyaXB0PgorICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdjYW52YXMnKTsKKyAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQo
JzJkJyk7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAnZ3JlZW4nOworICAgICAgICBjdHguZmls
bFJlY3QoY2FudmFzLndpZHRoIC8gNCwgY2FudmFzLmhlaWdodCAvIDQsIGNhbnZhcy53aWR0aCAv
IDIsIGNhbnZhcy5oZWlnaHQgLyAyKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL3dlYmdsL3dlYmdsLXRleHR1cmUtaW1hZ2UtYnVmZmVyLXJldXNlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ2wvd2ViZ2wtdGV4dHVyZS1pbWFnZS1idWZmZXIt
cmV1c2UuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJnbC93ZWJnbC10ZXh0
dXJlLWltYWdlLWJ1ZmZlci1yZXVzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEy
IEBACis8c3R5bGU+CisgICAgY2FudmFzIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
ICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBib3JkZXI6IDFweCBncmVlbiBzb2xpZDsKKyAgICB9
ICAgIAorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPkVuc3VyZSBpZiBhbiBpbWFnZSBidWZmZXIg
aXMgcmV1c2VkIGZvciBhIHdlYmdsIHRleHR1cmUsIGl0IHdpbGwgYmUgY2xlYXJlZCBiZWZvcmUg
ZHJhd2luZy48L3A+CisgICAgPGNhbnZhcyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PC9jYW52
YXM+CisgICAgPHNjcmlwdD4KKyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29u
c3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignY2FudmFzJyk7CisgICAgICAgICAg
ICBjb25zdCBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIpOworICAgICAgICAgICAgY29u
c3QgcHJvZ3JhbSA9IGNyZWF0ZVByb2dyYW0oZ2wpOworICAgICAgICAgICAgZ2wudXNlUHJvZ3Jh
bShwcm9ncmFtKTsKKworICAgICAgICAgICAgY3JlYXRlVGV4dHVyZUJ1ZmZlcihwcm9ncmFtLCBn
bCwgbmV3IEZsb2F0MzJBcnJheShbIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDEsIDEsIDAsIDEsIDFd
KSwgImFfdGV4Q29vcmQiKTsKKworICAgICAgICAgICAgY29uc3QgaW1hZ2VzID0gWworICAgICAg
ICAgICAgICAgICdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCw8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiPjxyZWN0
IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9ImdyZWVuIi8+PC9zdmc+JywKKyAgICAg
ICAgICAgICAgICAnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwIiB3aWR0aD0iMTAwIj48cmVj
dCB4PSIyNSUiIHk9IjI1JSIgd2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIGZpbGw9ImdyZWVuIi8+
PC9zdmc+JywKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGNvbnN0IHByb21pc2VzID0g
W107CisgICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgaW1hZ2VzLmxlbmd0
aDsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKGRyYXdUZXh0dXJlKHBy
b2dyYW0sIGdsLCBpbWFnZXNbaW5kZXhdKSk7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pKCk7CisKKyAgICAgICAgZnVuY3Rpb24gY3Jl
YXRlUHJvZ3JhbShnbCkgeworICAgICAgICAgICAgY29uc3QgdnNTb3VyY2UgPSBgCisgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKKyAgICAgICAgICAgICAgICB1bmlm
b3JtIHZlYzIgdV9yZXNvbHV0aW9uOworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFf
dGV4Q29vcmQ7CisgICAgICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisKKyAg
ICAgICAgICAgICAgICB2b2lkIG1haW4oKSB7CisgICAgICAgICAgICAgICAgICAgIGdsX1Bvc2l0
aW9uID0gYV9wb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgdl90ZXhDb29yZCA9IGFfdGV4
Q29vcmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgYDsKKworICAgICAgICAgICAg
Y29uc3QgZnNTb3VyY2UgPSBgCisgICAgICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgICAgICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1X3NhbXBsZXI7CisgICAg
ICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisKKyAgICAgICAgICAgICAgICB2
b2lkIG1haW4oKSB7CisgICAgICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUy
RCh1X3NhbXBsZXIsIHZfdGV4Q29vcmQpOworICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAg
ICBgOworCisgICAgICAgICAgICBjb25zdCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKGdsLCBn
bC5WRVJURVhfU0hBREVSLCB2c1NvdXJjZSk7CisgICAgICAgICAgICBjb25zdCBmcmFnbWVudFNo
YWRlciA9IGxvYWRTaGFkZXIoZ2wsIGdsLkZSQUdNRU5UX1NIQURFUiwgZnNTb3VyY2UpOworCisg
ICAgICAgICAgICBjb25zdCBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgICAgICAg
ICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlcik7CisgICAgICAgICAgICBn
bC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworICAgICAgICAgICAgZ2wu
bGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgICAgICByZXR1cm4gcHJvZ3JhbTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRTaGFkZXIoZ2wsIHR5cGUsIHNvdXJjZSkgewor
ICAgICAgICAgICAgY29uc3Qgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKHR5cGUpOworICAgICAg
ICAgICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlciwgc291cmNlKTsKKyAgICAgICAgICAgIGdsLmNv
bXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBzaGFkZXI7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBkcmF3VGV4dHVyZShwcm9ncmFtLCBnbCwgdXJsKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbG9hZFRleHR1cmUoZ2wsIHVybCkudGhlbihmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBjcmVhdGVUZXh0dXJlQnVmZmVyKHByb2dyYW0sIGdsLCBuZXcgRmxv
YXQzMkFycmF5KFstMSwgLTEsIDEsIC0xLCAtMSwgMSwgLTEsIDEsIDEsIC0xLCAxLCAxXSksICJh
X3Bvc2l0aW9uIik7CisgICAgICAgICAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMs
IDAsIDYpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBs
b2FkVGV4dHVyZShnbCwgdXJsKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpOwor
ICAgICAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICBjb25zdCB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICAgICAgICAgICAg
ICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAg
ICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5S
R0JBLCBnbC5VTlNJR05FRF9CWVRFLCBpbWFnZSk7CisgICAgICAgICAgICAgICAgICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RP
X0VER0UpOworICAgICAgICAgICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgICAg
ICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxU
RVIsIGdsLkxJTkVBUik7CisgICAgICAgICAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworICAgICAgICAg
ICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICBpbWFnZS5zcmMgPSB1cmw7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNyZWF0ZVRleHR1cmVCdWZmZXIocHJvZ3JhbSwgZ2wsIGJ1ZmZlckRhdGEsIHBv
c2l0aW9uQXR0cmlidXRlKSB7CisgICAgICAgICAgICBjb25zdCBidWZmZXIgPSBnbC5jcmVhdGVC
dWZmZXIoKTsKKyAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZm
ZXIpOworICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlckRh
dGEsIGdsLlNUQVRJQ19EUkFXKTsKKworICAgICAgICAgICAgY29uc3QgcG9zaXRpb25Mb2NhdGlv
biA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIHBvc2l0aW9uQXR0cmlidXRlKTsKKyAg
ICAgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwor
ICAgICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBn
bC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>