<?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>182181</bug_id>
          
          <creation_ts>2018-01-26 12:42:52 -0800</creation_ts>
          <short_desc>Range getBoundingClientRect returning zero rect on simple text node with &lt;br&gt; before it</short_desc>
          <delta_ts>2019-05-20 13:33:18 -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>WebCore JavaScript</component>
          <version>Safari 11</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>macOS 10.13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin San Souci">benjamin.sansouci</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>giosia</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1393615</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin San Souci">benjamin.sansouci</who>
    <bug_when>2018-01-26 12:42:52 -0800</bug_when>
    <thetext>Safari version: 11.0.2

Here&apos;s the html to repro this:
```
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;div&gt;
    Something goes here!
    &lt;br&gt;
    Now more goes here.
  &lt;/div&gt;
  &lt;script&gt;
    let r = new Range();
    let node = document.getElementsByTagName(&apos;div&apos;)[0].childNodes[2];
    r.setStart(node, 0);
    r.setEnd(node, 15);
    let rect = r.getBoundingClientRect();
    alert(JSON.stringify(rect));
  &lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;

```


I get a 0,0,0,0 rect. 

I can repro 100% of the time on one laptop, but can&apos;t at all on another until I turn on &quot;Responsive Design Mode&quot; and then I can repro for that tab again. This happens reliably on 3 different iPhone with iOS 11.2.
Does not happen on chrome or firefox. I also can&apos;t find document that would explain why this is happening. If this is expected, then would you have a suggestion for how to get a rectangle around part of that 2nd text node?

This only happens when there&apos;s a &lt;br&gt; followed by a text node. The only maybe related bug I&apos;ve found was https://bugs.webkit.org/show_bug.cgi?id=38394, but that one has a more complicated repro procedure. 

I don&apos;t know the Webkit codebase at all, but my guess is that this function: https://github.com/WebKit/webkit/blob/master/Source/WebCore/rendering/SimpleLineLayoutResolver.cpp#L205 returns an empty range, making the body of this loop https://github.com/WebKit/webkit/blob/7bdbecb7e435a102c10bc4ed27986720ae84ce95/Source/WebCore/rendering/SimpleLineLayoutFunctions.cpp#L233 never execute, and so the whole thing returns an empty collection of quads. 
The reason is simply that it seems like all codepaths inside the for loop add something to the vector of quads.
Just a thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395756</commentid>
    <comment_count>1</comment_count>
    <who name="Benjamin San Souci">benjamin.sansouci</who>
    <bug_when>2018-02-01 22:53:22 -0800</bug_when>
    <thetext>I&apos;ve been able to repro this with 2 text nodes next to each other under a div:
```
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;script&gt;
    let d = document.createElement(&apos;div&apos;);
    d.appendChild(document.createTextNode(&quot;Testing something&quot;));
    d.appendChild(document.createTextNode(&quot;And another thing here&quot;));
    document.body.appendChild(d);

    let r = new Range();
    let node = document.getElementsByTagName(&apos;div&apos;)[0].childNodes[1];
    r.setStart(node, 0);
    r.setEnd(node, 15);
    let rect = r.getBoundingClientRect();
    alert(JSON.stringify(rect));
  &lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;
```

This will popup a 0,0,0,0 rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395764</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin San Souci">benjamin.sansouci</who>
    <bug_when>2018-02-01 23:06:27 -0800</bug_when>
    <thetext>Here is a more illustrative example that might help. I highlight 3 ranges
- one from the first text node&apos;s to the 2nd text node&apos;s 15th char
- one from the first text node&apos;s to the 3rd text node&apos;s 0th char
- one from the first text node&apos;s to the 3rd text node&apos;s 15th char

The first range goes to the 0th char of the 2nd text node instead of the 15th char.

The last two ranges return the same bounding rect.

```
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;script&gt;
    function drawRect(rect) {
      let d = document.createElement(&quot;div&quot;);
      d.style.backgroundColor = &quot;red&quot;;
      d.style.left = rect.left + &quot;px&quot;;
      d.style.top = rect.top + &quot;px&quot;;
      d.style.width = rect.width + &quot;px&quot;;
      d.style.height = rect.height + &quot;px&quot;;
      d.style.position = &quot;absolute&quot;;
      d.style.opacity = 0.5;
      document.body.appendChild(d);
    }

    let d = document.createElement(&apos;div&apos;);
    d.appendChild(document.createTextNode(&quot;Testing something&quot;));
    d.appendChild(document.createTextNode(&quot;Testing and things here&quot;));
    d.appendChild(document.createTextNode(&quot;And another thing here&quot;));
    document.body.appendChild(d);

    {
      let r = new Range();
      r.setStart(document.getElementsByTagName(&apos;div&apos;)[0].childNodes[0], 0);
      r.setEnd(document.getElementsByTagName(&apos;div&apos;)[0].childNodes[1], 15);
      drawRect(r.getBoundingClientRect());
    }

    {
      let r = new Range();
      r.setStart(document.getElementsByTagName(&apos;div&apos;)[0].childNodes[0], 0);
      r.setEnd(document.getElementsByTagName(&apos;div&apos;)[0].childNodes[2], 0);
      drawRect(r.getBoundingClientRect());
    }

    {
      let r = new Range();
      r.setStart(document.getElementsByTagName(&apos;div&apos;)[0].childNodes[0], 0);
      r.setEnd(document.getElementsByTagName(&apos;div&apos;)[0].childNodes[2], 15);
      drawRect(r.getBoundingClientRect());
    }
  &lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513358</commentid>
    <comment_count>3</comment_count>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-03-06 20:24:22 -0800</bug_when>
    <thetext>*** Bug 192495 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513366</commentid>
    <comment_count>4</comment_count>
      <attachid>363836</attachid>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-03-06 20:30:27 -0800</bug_when>
    <thetext>Created attachment 363836
Fix Range end offsets

This patch changes the way the end offsets are calculated. It (correctly) uses the local-end offsets rather than using the end-offset from within the node. The existing code was mostly working before because contained nodes use maxInt to signify fully contained so this could only effect the last node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513381</commentid>
    <comment_count>5</comment_count>
      <attachid>363840</attachid>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-03-06 20:55:09 -0800</bug_when>
    <thetext>Created attachment 363840
Fix Range end offsets

Updated patch to remove some changes that didn&apos;t need to be made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513411</commentid>
    <comment_count>6</comment_count>
      <attachid>363840</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-06 23:01:53 -0800</bug_when>
    <thetext>Comment on attachment 363840
Fix Range end offsets

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

&gt; LayoutTests/ChangeLog:3
&gt; +        Test getBoundingClientRect with a Range that contains a line break.

Not conformant to our style. This line should be bug title verbatim. Description goes under reviewed by.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Correct height of RenderText in a block element when used in a Range

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513463</commentid>
    <comment_count>7</comment_count>
      <attachid>363861</attachid>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-03-07 02:14:01 -0800</bug_when>
    <thetext>Created attachment 363861
Fix Range end offsets

updates patch Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513994</commentid>
    <comment_count>8</comment_count>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-03-08 07:32:35 -0800</bug_when>
    <thetext>I first started seeing this bug sometime around iOS11; It seems to have been introduced in https://trac.webkit.org/changeset/212693/webkit

I have worked around the bug by wrapping text in a span-tag when using Range.getBoundingClientRect(). Starting a Range in an in-line-level element live a span(rather than block-element like a div) bypasses the buggy code by disabling the use of simpleLineLayout. Using this span-wrap-hack has many side-effects and isn&apos;t ideal(dom modification, CSS selector breakage, etc).

It&apos;s likely possible that some of the simpleLineLayout bypass-code can also be removed. 
e.g.
&gt;    if (simpleLineLayout() &amp;&amp; parent()-&gt;firstChild() == parent()-&gt;lastChild()) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513999</commentid>
    <comment_count>9</comment_count>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-03-08 07:43:55 -0800</bug_when>
    <thetext>
&gt;    if (simpleLineLayout() &amp;&amp; parent()-&gt;firstChild() == parent()-&gt;lastChild()) {

comes from https://trac.webkit.org/changeset/215054/webkit which appears to have been a workaround for this same bug.

I&apos;m not sure if it&apos;s best to revert that in the same patch as fixing the Range bug, or would it be better to do that separately?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515031</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-03-11 15:08:02 -0700</bug_when>
    <thetext>This needs to be reviewed by Simon or Zalan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518245</commentid>
    <comment_count>11</comment_count>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-03-19 07:24:48 -0700</bug_when>
    <thetext>@zalan@apple.com

You had reviewed an earlier patch I had for this in https://bugs.webkit.org/show_bug.cgi?id=192495 (That patch was more of a work-around, less a fix)

Digging in to find the actual issue I realized that my bug(192495) was a dupe of this one, so I moved the fix for the actual issue here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529796</commentid>
    <comment_count>12</comment_count>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-04-23 15:48:06 -0700</bug_when>
    <thetext>Filed rdar://49352053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529900</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-04-23 21:04:40 -0700</bug_when>
    <thetext>Antti/Zalan: could either one of you review this??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536569</commentid>
    <comment_count>14</comment_count>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-05-15 13:45:53 -0700</bug_when>
    <thetext>Friendly ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537105</commentid>
    <comment_count>15</comment_count>
    <who name="Gabe Giosia">giosia</who>
    <bug_when>2019-05-17 08:04:04 -0700</bug_when>
    <thetext>This bug makes reliably measuring CJK content height nearly impossible and measuring the height of English content extremely slower(e.g. transforming English-language DOM so that it never hits a &lt;br&gt; that activates this condition is a slow operation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537672</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-05-20 13:04:41 -0700</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537681</commentid>
    <comment_count>17</comment_count>
      <attachid>363861</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-20 13:32:41 -0700</bug_when>
    <thetext>Comment on attachment 363861
Fix Range end offsets

Clearing flags on attachment: 363861

Committed r245534: &lt;https://trac.webkit.org/changeset/245534&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537682</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-20 13:32:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537683</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-20 13:33:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/50958290&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363836</attachid>
            <date>2019-03-06 20:30:27 -0800</date>
            <delta_ts>2019-03-06 20:55:09 -0800</delta_ts>
            <desc>Fix Range end offsets</desc>
            <filename>rangeFixSimpleLineLayout.patch</filename>
            <type>text/plain</type>
            <size>6845</size>
            <attacher name="Gabe Giosia">giosia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGZmZGRiZTJlMmIwLi5mNTJkM2EyMThmNyAxMDA2NDQKLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDMt
MDYgIEdhYmUgR2lvc2lhICA8Z2lvc2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgVGVzdCBnZXRC
b3VuZGluZ0NsaWVudFJlY3Qgd2l0aCBhIFJhbmdlIHRoYXQgY29udGFpbnMgYSBsaW5lIGJyZWFr
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZG9tL1JhbmdlL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sOgorCiAyMDE5LTAyLTI1
ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgc2Nh
bGFibGVOYXRpdmVXZWJwYWdlUGFyYW1ldGVycygpIGlzIG5vdCBwcmVzZXJ2ZWQgb24gbmV3IHBh
Z2UgbmF2aWdhdGlvbi4KZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRC
b3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0IExheW91dFRlc3RzL2Zhc3QvZG9tL1Jhbmdl
L2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQKaW5kZXggZGY1NGQ2ZDY2OTUuLmE4
ZjM1ZDJhMGIwIDEwMDY0NAotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRp
bmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dAorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uv
Z2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dApAQCAtNDYsNiArNDYsMTQgQEAgUEFT
UyByZWN0LmhlaWdodC50b0ZpeGVkKDMpIGlzICIwLjAwMCIKIFBBU1MgcmVjdC5yaWdodCBpcyBy
ZWN0LmxlZnQgKyByZWN0LndpZHRoCiBQQVNTIHJlY3QuYm90dG9tIGlzIHJlY3QudG9wICsgcmVj
dC5oZWlnaHQKIAorVGVzdCA3CitQQVNTIHJlY3QubGVmdC50b0ZpeGVkKDMpIGlzICI4LjAwMCIK
K1BBU1MgcmVjdC50b3AudG9GaXhlZCgzKSBpcyAiMjE4MC4wMDAiCitQQVNTIHJlY3Qud2lkdGgu
dG9GaXhlZCgzKSBpcyAiMTkyLjAwMCIKK1BBU1MgcmVjdC5oZWlnaHQudG9GaXhlZCgzKSBpcyAi
OTYuMDAwIgorUEFTUyByZWN0LnJpZ2h0IGlzIHJlY3QubGVmdCArIHJlY3Qud2lkdGgKK1BBU1Mg
cmVjdC5ib3R0b20gaXMgcmVjdC50b3AgKyByZWN0LmhlaWdodAorCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbCBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAppbmRleCBhNDVmMTg4YjAyOC4u
NDRiNmZmZDg2N2UgMTAwNjQ0Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QuaHRtbAorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91
bmRpbmdDbGllbnRSZWN0Lmh0bWwKQEAgLTYwLDYgKzYwLDEwIEBAIGJvZHkgewogCiA8ZGl2IGNs
YXNzPSJib3giIGlkPSJ0ZXN0NSI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3Rl
dHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0
IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwg
cXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LjwvZGl2PgogCis8YnI+PGJyPgorCis8ZGl2IGNsYXNz
PSJib3giIGlkPSJ0ZXN0NyI+TG9yZW0gaXBzdW0gPGJyPiBkb2xvciBzaXQgPGJyPiBhbWV0Ljwv
ZGl2PgorCiA8L2Rpdj4KIDxzY3JpcHQ+CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQpAQCAt
MTExLDYgKzExNSw3IEBAIGJvZHkgewogICAgICAgICAvKjQqLyAgeyBsZWZ0OiAwLCB0b3A6IDAs
IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSwKICAgICAgICAgLyo1Ki8gIHsgbGVmdDogLTE0LjU3NCwg
dG9wOiAxNzYxLjk0Nywgd2lkdGg6IDUwNC4wMDksIGhlaWdodDogNTM1Ljg0OSB9LAogICAgICAg
ICAvKjYqLyAgeyBsZWZ0OiAwLCB0b3A6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSwKKyAgICAg
ICAgLyo3Ki8gIHsgbGVmdDogOCwgdG9wOiAyMTgwLCB3aWR0aDogMTkyLCBoZWlnaHQ6IDk2IH0s
CiAgICAgXTsKIAogICAgIC8vIFJhbmdlIG92ZXIgZW50aXJlIGVsZW1lbnQuCkBAIC0xNjEsNiAr
MTY2LDE1IEBAIGJvZHkgewogICAgIHZhciByYW5nZTYgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OwogICAgIHJlY3QgPSByYW5nZTYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKICAgICB0ZXN0Q2xp
ZW50UmVjdChyZWN0LCBleHBlY3RlZFJlc3VsdHNbNiAtIDFdKTsKKyAgICAKKyAgICAvLyBSYW5n
ZSBvdmVyIHN1YnNldCB0aGF0IGNvbnRhaW5zIHRleHQgYW5kIGxpbmUgYnJlYWsgZWxlbWVudHMu
CisgICAgZGVidWcoIlRlc3QgNyIpCisgICAgdmFyIHJhbmdlNyA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2U3LnNldFN0YXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
NycpLmZpcnN0Q2hpbGQsIDIpOworICAgIHJhbmdlNy5zZXRFbmQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3Q3JykubGFzdENoaWxkLCAyKTsKKyAgICBzaG93KHJhbmdlNyk7CisgICAgcmVj
dCA9IHJhbmdlNy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKQorICAgIHRlc3RDbGllbnRSZWN0KHJl
Y3QsIGV4cGVjdGVkUmVzdWx0c1s3IC0gMV0pOwogCiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiAgICAgICAgIHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RBcmVh
Jyk7CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjZiZjIzYzBmNC4uZDdhMDA1YmJjZTIgMTAwNjQ0Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE5LTAzLTA2ICBHYWJlIEdpb3NpYSAgPGdpb3NpYUBnb29nbGUuY29tPgorCisg
ICAgICAgIENvcnJlY3QgaGVpZ2h0IG9mIFJlbmRlclRleHQgaW4gYSBibG9jayBlbGVtZW50IHdo
ZW4gdXNlZCBpbiBhIFJhbmdlCisgICAgICAgIG92ZXIgYSBsaW5lIGJyZWFrIGVsZW1lbnQuIFRo
ZSBlbmQgb2Zmc2V0IHdhcyBtaXNjYWxjdWxhdGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZGVkIGxpbmUtYnJlYWsgY2FzZSB0byBmYXN0L2Rv
bS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6Y29sbGVjdEFic29sdXRlUXVhZHNGb3JSYW5nZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6cmFuZ2VGb3JSZW5kZXJlcldpdGhPZmZzZXRz
IGNvbnN0KToKKwogMjAxOS0wMi0yNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0VHTF0gUnVudGltZSBzdXBwb3J0IGZvciBSR0I1NjUgcGl4ZWwg
bGF5b3V0CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmNwcAppbmRleCBmYzIyNTU1NzEzMC4uNWUwZDYxNTNmZWUgMTAwNjQ0Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApA
QCAtMjQ0LDE2ICsyNDQsMTUgQEAgVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVh
ZHNGb3JSYW5nZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1bnMKICAgICAgICAgVGV4
dFJ1biB0ZXh0UnVuKHJ1bi50ZXh0KCksIHJ1bi5sb2dpY2FsTGVmdCgpLCBydW4uZXhwYW5zaW9u
KCksIHJ1bi5leHBhbnNpb25CZWhhdmlvcigpKTsKICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXpl
KCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAgICAgICAg
TGF5b3V0UmVjdCBydW5SZWN0KHJ1bi5yZWN0KCkpOworICAgICAgICBhdXRvIGxvY2FsU3RhcnQg
PSBzdGQ6Om1heChydW4uc3RhcnQoKSwgc3RhcnQpIC0gcnVuLnN0YXJ0KCk7CisgICAgICAgIGF1
dG8gbG9jYWxFbmQgPSBzdGQ6Om1pbihydW4uZW5kKCksIGVuZCkgLSBydW4uc3RhcnQoKTsKKyAg
ICAgICAgQVNTRVJUKGxvY2FsU3RhcnQgPD0gbG9jYWxFbmQpOwogICAgICAgICAvLyBTcGVjaWFs
IGNhc2UgZW1wdHkgcmFuZ2VzLgotICAgICAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAg
IGlmIChsb2NhbFN0YXJ0ID09IGxvY2FsRW5kKSB7CiAgICAgICAgICAgICBydW5SZWN0LnNldFdp
ZHRoKDApOwogICAgICAgICAgICAgcXVhZHMuYXBwZW5kKHJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0
ZVF1YWQoRmxvYXRRdWFkKHJ1blJlY3QpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHN0YXJ0IDwgcnVu
LmVuZCgpKTsKLSAgICAgICAgQVNTRVJUKGVuZCA+IHJ1bi5zdGFydCgpKTsKLSAgICAgICAgYXV0
byBsb2NhbFN0YXJ0ID0gc3RkOjptYXgocnVuLnN0YXJ0KCksIHN0YXJ0KSAtIHJ1bi5zdGFydCgp
OwotICAgICAgICBhdXRvIGxvY2FsRW5kID0gc3RkOjptaW4ocnVuLmVuZCgpLCBlbmQpIC0gcnVu
LnN0YXJ0KCk7CiAgICAgICAgIHN0eWxlLmZvbnRDYXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclRleHQodGV4dFJ1biwgcnVuUmVjdCwgbG9jYWxTdGFydCwgbG9jYWxFbmQpOwogICAgICAg
ICBxdWFkcy5hcHBlbmQocmVuZGVyZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQocnVu
UmVjdCksIFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVkKSk7CiAgICAgfQpkaWZmIC0tZ2l0IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCmluZGV4IDM4NTg2
NGE0OWUwLi44NmI4OTVlZjIyMyAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcApAQCAtMzAwLDE3ICszMDAsMTggQEAgV1RGOjpJ
dGVyYXRvclJhbmdlPFJ1blJlc29sdmVyOjpJdGVyYXRvcj4gUnVuUmVzb2x2ZXI6OnJhbmdlRm9y
UmVuZGVyZXJXaXRoT2Zmc2UKICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gZW5kT2Zmc2V0KTsK
ICAgICBhdXRvIHJhbmdlID0gcmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgYXV0byBp
dCA9IHJhbmdlLmJlZ2luKCk7Ci0gICAgLy8gQWR2YW5jZSB0byB0aGUgZmlydCBydW4gd2l0aCB0
aGUgc3RhcnQgb2Zmc2V0IGluc2lkZS4KKyAgICBhdXRvIGxvY2FsRW5kID0gKCppdCkuc3RhcnQo
KSArIGVuZE9mZnNldDsKKyAgICAvLyBBZHZhbmNlIHRvIHRoZSBmaXJzdCBydW4gd2l0aCB0aGUg
c3RhcnQgb2Zmc2V0IGluc2lkZS4gT25seSB0aGUgZmlyc3Qgbm9kZSBpbiBhIHJhbmdlIGNhbiBo
YXZlIGEgc3RhcnRPZmZzZXQuCiAgICAgd2hpbGUgKGl0ICE9IHJhbmdlLmVuZCgpICYmICgqaXQp
LmVuZCgpIDw9IHN0YXJ0T2Zmc2V0KQogICAgICAgICArK2l0OwogICAgIGlmIChpdCA9PSByYW5n
ZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHsgZW5kKCksIGVuZCgpIH07CiAgICAgYXV0byByYW5n
ZUJlZ2luID0gaXQ7CiAgICAgLy8gU3BlY2lhbCBjYXNlIGVtcHR5IHJhbmdlcyB0aGF0IHN0YXJ0
IGF0IHRoZSBlZGdlIG9mIHRoZSBydW4uIEFwcGFyZW50bHkgbm9ybWFsIGxpbmUgbGF5b3V0IGlu
Y2x1ZGUgdGhvc2UuCi0gICAgaWYgKGVuZE9mZnNldCA9PSBzdGFydE9mZnNldCAmJiAoKml0KS5z
dGFydCgpID09IGVuZE9mZnNldCkKKyAgICBpZiAobG9jYWxFbmQgPT0gc3RhcnRPZmZzZXQgJiYg
KCppdCkuc3RhcnQoKSA9PSBsb2NhbEVuZCkKICAgICAgICAgcmV0dXJuIHsgcmFuZ2VCZWdpbiwg
KytpdCB9OwogICAgIC8vIEFkdmFuY2UgYmV5b25kIHRoZSBsYXN0IHJ1biB3aXRoIHRoZSBlbmQg
b2Zmc2V0LgotICAgIHdoaWxlIChpdCAhPSByYW5nZS5lbmQoKSAmJiAoKml0KS5zdGFydCgpIDwg
ZW5kT2Zmc2V0KQorICAgIHdoaWxlIChpdCAhPSByYW5nZS5lbmQoKSAmJiAoKml0KS5zdGFydCgp
IDwgbG9jYWxFbmQpCiAgICAgICAgICsraXQ7CiAgICAgcmV0dXJuIHsgcmFuZ2VCZWdpbiwgaXQg
fTsKIH0=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363840</attachid>
            <date>2019-03-06 20:55:09 -0800</date>
            <delta_ts>2019-03-07 02:14:01 -0800</delta_ts>
            <desc>Fix Range end offsets</desc>
            <filename>rangeFixSimpleLineLayout2.patch</filename>
            <type>text/plain</type>
            <size>6352</size>
            <attacher name="Gabe Giosia">giosia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGZmZGRiZTJlMmIwLi5mNTJkM2EyMThmNyAxMDA2NDQKLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDMt
MDYgIEdhYmUgR2lvc2lhICA8Z2lvc2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgVGVzdCBnZXRC
b3VuZGluZ0NsaWVudFJlY3Qgd2l0aCBhIFJhbmdlIHRoYXQgY29udGFpbnMgYSBsaW5lIGJyZWFr
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZG9tL1JhbmdlL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sOgorCiAyMDE5LTAyLTI1
ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgc2Nh
bGFibGVOYXRpdmVXZWJwYWdlUGFyYW1ldGVycygpIGlzIG5vdCBwcmVzZXJ2ZWQgb24gbmV3IHBh
Z2UgbmF2aWdhdGlvbi4KZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRC
b3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0IExheW91dFRlc3RzL2Zhc3QvZG9tL1Jhbmdl
L2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQKaW5kZXggZGY1NGQ2ZDY2OTUuLmE4
ZjM1ZDJhMGIwIDEwMDY0NAotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRp
bmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dAorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uv
Z2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dApAQCAtNDYsNiArNDYsMTQgQEAgUEFT
UyByZWN0LmhlaWdodC50b0ZpeGVkKDMpIGlzICIwLjAwMCIKIFBBU1MgcmVjdC5yaWdodCBpcyBy
ZWN0LmxlZnQgKyByZWN0LndpZHRoCiBQQVNTIHJlY3QuYm90dG9tIGlzIHJlY3QudG9wICsgcmVj
dC5oZWlnaHQKIAorVGVzdCA3CitQQVNTIHJlY3QubGVmdC50b0ZpeGVkKDMpIGlzICI4LjAwMCIK
K1BBU1MgcmVjdC50b3AudG9GaXhlZCgzKSBpcyAiMjE4MC4wMDAiCitQQVNTIHJlY3Qud2lkdGgu
dG9GaXhlZCgzKSBpcyAiMTkyLjAwMCIKK1BBU1MgcmVjdC5oZWlnaHQudG9GaXhlZCgzKSBpcyAi
OTYuMDAwIgorUEFTUyByZWN0LnJpZ2h0IGlzIHJlY3QubGVmdCArIHJlY3Qud2lkdGgKK1BBU1Mg
cmVjdC5ib3R0b20gaXMgcmVjdC50b3AgKyByZWN0LmhlaWdodAorCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbCBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAppbmRleCBhNDVmMTg4YjAyOC4u
NDRiNmZmZDg2N2UgMTAwNjQ0Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QuaHRtbAorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91
bmRpbmdDbGllbnRSZWN0Lmh0bWwKQEAgLTYwLDYgKzYwLDEwIEBAIGJvZHkgewogCiA8ZGl2IGNs
YXNzPSJib3giIGlkPSJ0ZXN0NSI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3Rl
dHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0
IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwg
cXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlw
IGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LjwvZGl2PgogCis8YnI+PGJyPgorCis8ZGl2IGNsYXNz
PSJib3giIGlkPSJ0ZXN0NyI+TG9yZW0gaXBzdW0gPGJyPiBkb2xvciBzaXQgPGJyPiBhbWV0Ljwv
ZGl2PgorCiA8L2Rpdj4KIDxzY3JpcHQ+CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQpAQCAt
MTExLDYgKzExNSw3IEBAIGJvZHkgewogICAgICAgICAvKjQqLyAgeyBsZWZ0OiAwLCB0b3A6IDAs
IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSwKICAgICAgICAgLyo1Ki8gIHsgbGVmdDogLTE0LjU3NCwg
dG9wOiAxNzYxLjk0Nywgd2lkdGg6IDUwNC4wMDksIGhlaWdodDogNTM1Ljg0OSB9LAogICAgICAg
ICAvKjYqLyAgeyBsZWZ0OiAwLCB0b3A6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSwKKyAgICAg
ICAgLyo3Ki8gIHsgbGVmdDogOCwgdG9wOiAyMTgwLCB3aWR0aDogMTkyLCBoZWlnaHQ6IDk2IH0s
CiAgICAgXTsKIAogICAgIC8vIFJhbmdlIG92ZXIgZW50aXJlIGVsZW1lbnQuCkBAIC0xNjEsNiAr
MTY2LDE1IEBAIGJvZHkgewogICAgIHZhciByYW5nZTYgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OwogICAgIHJlY3QgPSByYW5nZTYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKICAgICB0ZXN0Q2xp
ZW50UmVjdChyZWN0LCBleHBlY3RlZFJlc3VsdHNbNiAtIDFdKTsKKyAgICAKKyAgICAvLyBSYW5n
ZSBvdmVyIHN1YnNldCB0aGF0IGNvbnRhaW5zIHRleHQgYW5kIGxpbmUgYnJlYWsgZWxlbWVudHMu
CisgICAgZGVidWcoIlRlc3QgNyIpCisgICAgdmFyIHJhbmdlNyA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2U3LnNldFN0YXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
NycpLmZpcnN0Q2hpbGQsIDIpOworICAgIHJhbmdlNy5zZXRFbmQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3Q3JykubGFzdENoaWxkLCAyKTsKKyAgICBzaG93KHJhbmdlNyk7CisgICAgcmVj
dCA9IHJhbmdlNy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKQorICAgIHRlc3RDbGllbnRSZWN0KHJl
Y3QsIGV4cGVjdGVkUmVzdWx0c1s3IC0gMV0pOwogCiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiAgICAgICAgIHZhciBhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RBcmVh
Jyk7CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjZiZjIzYzBmNC4uZDdhMDA1YmJjZTIgMTAwNjQ0Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE5LTAzLTA2ICBHYWJlIEdpb3NpYSAgPGdpb3NpYUBnb29nbGUuY29tPgorCisg
ICAgICAgIENvcnJlY3QgaGVpZ2h0IG9mIFJlbmRlclRleHQgaW4gYSBibG9jayBlbGVtZW50IHdo
ZW4gdXNlZCBpbiBhIFJhbmdlCisgICAgICAgIG92ZXIgYSBsaW5lIGJyZWFrIGVsZW1lbnQuIFRo
ZSBlbmQgb2Zmc2V0IHdhcyBtaXNjYWxjdWxhdGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZGVkIGxpbmUtYnJlYWsgY2FzZSB0byBmYXN0L2Rv
bS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6Y29sbGVjdEFic29sdXRlUXVhZHNGb3JSYW5nZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6cmFuZ2VGb3JSZW5kZXJlcldpdGhPZmZzZXRz
IGNvbnN0KToKKwogMjAxOS0wMi0yNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0VHTF0gUnVudGltZSBzdXBwb3J0IGZvciBSR0I1NjUgcGl4ZWwg
bGF5b3V0CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmNwcAppbmRleCBmYzIyNTU1NzEzMC4uMGE5YTNlNWRmNWIgMTAwNjQ0Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApA
QCAtMjUwLDEwICsyNTAsOSBAQCBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFk
c0ZvclJhbmdlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVucwogICAgICAgICAgICAg
cXVhZHMuYXBwZW5kKHJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKHJ1blJl
Y3QpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHN0YXJ0IDwgcnVuLmVuZCgpKTsKLSAgICAgICAgQVNT
RVJUKGVuZCA+IHJ1bi5zdGFydCgpKTsKICAgICAgICAgYXV0byBsb2NhbFN0YXJ0ID0gc3RkOjpt
YXgocnVuLnN0YXJ0KCksIHN0YXJ0KSAtIHJ1bi5zdGFydCgpOwogICAgICAgICBhdXRvIGxvY2Fs
RW5kID0gc3RkOjptaW4ocnVuLmVuZCgpLCBlbmQpIC0gcnVuLnN0YXJ0KCk7CisgICAgICAgIEFT
U0VSVChsb2NhbFN0YXJ0IDw9IGxvY2FsRW5kKTsKICAgICAgICAgc3R5bGUuZm9udENhc2NhZGUo
KS5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBydW5SZWN0LCBsb2NhbFN0YXJ0
LCBsb2NhbEVuZCk7CiAgICAgICAgIHF1YWRzLmFwcGVuZChyZW5kZXJlci5sb2NhbFRvQWJzb2x1
dGVRdWFkKEZsb2F0UXVhZChydW5SZWN0KSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKICAg
ICB9CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRS
ZXNvbHZlci5jcHAgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5jcHAKaW5kZXggMzg1ODY0YTQ5ZTAuLjg2Yjg5NWVmMjIzIDEwMDY0NAotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCkBAIC0zMDAs
MTcgKzMwMCwxOCBAQCBXVEY6Okl0ZXJhdG9yUmFuZ2U8UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yPiBS
dW5SZXNvbHZlcjo6cmFuZ2VGb3JSZW5kZXJlcldpdGhPZmZzZQogICAgIEFTU0VSVChzdGFydE9m
ZnNldCA8PSBlbmRPZmZzZXQpOwogICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclJlbmRlcmVyKHJl
bmRlcmVyKTsKICAgICBhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsKLSAgICAvLyBBZHZhbmNlIHRv
IHRoZSBmaXJ0IHJ1biB3aXRoIHRoZSBzdGFydCBvZmZzZXQgaW5zaWRlLgorICAgIGF1dG8gbG9j
YWxFbmQgPSAoKml0KS5zdGFydCgpICsgZW5kT2Zmc2V0OworICAgIC8vIEFkdmFuY2UgdG8gdGhl
IGZpcnN0IHJ1biB3aXRoIHRoZSBzdGFydCBvZmZzZXQgaW5zaWRlLiBPbmx5IHRoZSBmaXJzdCBu
b2RlIGluIGEgcmFuZ2UgY2FuIGhhdmUgYSBzdGFydE9mZnNldC4KICAgICB3aGlsZSAoaXQgIT0g
cmFuZ2UuZW5kKCkgJiYgKCppdCkuZW5kKCkgPD0gc3RhcnRPZmZzZXQpCiAgICAgICAgICsraXQ7
CiAgICAgaWYgKGl0ID09IHJhbmdlLmVuZCgpKQogICAgICAgICByZXR1cm4geyBlbmQoKSwgZW5k
KCkgfTsKICAgICBhdXRvIHJhbmdlQmVnaW4gPSBpdDsKICAgICAvLyBTcGVjaWFsIGNhc2UgZW1w
dHkgcmFuZ2VzIHRoYXQgc3RhcnQgYXQgdGhlIGVkZ2Ugb2YgdGhlIHJ1bi4gQXBwYXJlbnRseSBu
b3JtYWwgbGluZSBsYXlvdXQgaW5jbHVkZSB0aG9zZS4KLSAgICBpZiAoZW5kT2Zmc2V0ID09IHN0
YXJ0T2Zmc2V0ICYmICgqaXQpLnN0YXJ0KCkgPT0gZW5kT2Zmc2V0KQorICAgIGlmIChsb2NhbEVu
ZCA9PSBzdGFydE9mZnNldCAmJiAoKml0KS5zdGFydCgpID09IGxvY2FsRW5kKQogICAgICAgICBy
ZXR1cm4geyByYW5nZUJlZ2luLCArK2l0IH07CiAgICAgLy8gQWR2YW5jZSBiZXlvbmQgdGhlIGxh
c3QgcnVuIHdpdGggdGhlIGVuZCBvZmZzZXQuCi0gICAgd2hpbGUgKGl0ICE9IHJhbmdlLmVuZCgp
ICYmICgqaXQpLnN0YXJ0KCkgPCBlbmRPZmZzZXQpCisgICAgd2hpbGUgKGl0ICE9IHJhbmdlLmVu
ZCgpICYmICgqaXQpLnN0YXJ0KCkgPCBsb2NhbEVuZCkKICAgICAgICAgKytpdDsKICAgICByZXR1
cm4geyByYW5nZUJlZ2luLCBpdCB9OwogfQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363861</attachid>
            <date>2019-03-07 02:14:01 -0800</date>
            <delta_ts>2019-05-20 13:32:41 -0700</delta_ts>
            <desc>Fix Range end offsets</desc>
            <filename>rangeFixSimpleLineLayout3.patch</filename>
            <type>text/plain</type>
            <size>6564</size>
            <attacher name="Gabe Giosia">giosia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGZmZGRiZTJlMmIwLi4wMjUwMzY4NzAxNSAxMDA2NDQKLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDMt
MDYgIEdhYmUgR2lvc2lhICA8Z2lvc2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmFuZ2UgZ2V0
Qm91bmRpbmdDbGllbnRSZWN0IHJldHVybmluZyB6ZXJvIHJlY3Qgb24gc2ltcGxlIHRleHQgbm9k
ZSB3aXRoIDxicj4gYmVmb3JlIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODIxODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIFRlc3QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IHdpdGggYSBS
YW5nZSB0aGF0IGNvbnRhaW5zIGEgbGluZSBicmVhay4KKworICAgICAgICAqIGZhc3QvZG9tL1Jh
bmdlL2dldEJvdW5kaW5nQ2xpZW50UmVjdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9k
b20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0Lmh0bWw6CisKIDIwMTktMDItMjUgIFlvbmdq
dW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBzY2FsYWJsZU5h
dGl2ZVdlYnBhZ2VQYXJhbWV0ZXJzKCkgaXMgbm90IHByZXNlcnZlZCBvbiBuZXcgcGFnZSBuYXZp
Z2F0aW9uLgpkaWZmIC0tZ2l0IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2dldEJvdW5kaW5n
Q2xpZW50UmVjdC1leHBlY3RlZC50eHQgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91
bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dAppbmRleCBkZjU0ZDZkNjY5NS4uYThmMzVkMmEw
YjAgMTAwNjQ0Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVu
dFJlY3QtZXhwZWN0ZWQudHh0CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0CkBAIC00Niw2ICs0NiwxNCBAQCBQQVNTIHJlY3Qu
aGVpZ2h0LnRvRml4ZWQoMykgaXMgIjAuMDAwIgogUEFTUyByZWN0LnJpZ2h0IGlzIHJlY3QubGVm
dCArIHJlY3Qud2lkdGgKIFBBU1MgcmVjdC5ib3R0b20gaXMgcmVjdC50b3AgKyByZWN0LmhlaWdo
dAogCitUZXN0IDcKK1BBU1MgcmVjdC5sZWZ0LnRvRml4ZWQoMykgaXMgIjguMDAwIgorUEFTUyBy
ZWN0LnRvcC50b0ZpeGVkKDMpIGlzICIyMTgwLjAwMCIKK1BBU1MgcmVjdC53aWR0aC50b0ZpeGVk
KDMpIGlzICIxOTIuMDAwIgorUEFTUyByZWN0LmhlaWdodC50b0ZpeGVkKDMpIGlzICI5Ni4wMDAi
CitQQVNTIHJlY3QucmlnaHQgaXMgcmVjdC5sZWZ0ICsgcmVjdC53aWR0aAorUEFTUyByZWN0LmJv
dHRvbSBpcyByZWN0LnRvcCArIHJlY3QuaGVpZ2h0CisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IExheW91dFRlc3RzL2Zhc3QvZG9t
L1JhbmdlL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sIExheW91dFRlc3RzL2Zhc3QvZG9tL1Jh
bmdlL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5odG1sCmluZGV4IGE0NWYxODhiMDI4Li40NGI2ZmZk
ODY3ZSAxMDA2NDQKLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2dldEJvdW5kaW5nQ2xp
ZW50UmVjdC5odG1sCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0Ns
aWVudFJlY3QuaHRtbApAQCAtNjAsNiArNjAsMTAgQEAgYm9keSB7CiAKIDxkaXYgY2xhc3M9ImJv
eCIgaWQ9InRlc3Q1Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl
IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuPC9kaXY+CiAKKzxicj48YnI+CisKKzxkaXYgY2xhc3M9ImJveCIg
aWQ9InRlc3Q3Ij5Mb3JlbSBpcHN1bSA8YnI+IGRvbG9yIHNpdCA8YnI+IGFtZXQuPC9kaXY+CisK
IDwvZGl2PgogPHNjcmlwdD4KICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCkBAIC0xMTEsNiAr
MTE1LDcgQEAgYm9keSB7CiAgICAgICAgIC8qNCovICB7IGxlZnQ6IDAsIHRvcDogMCwgd2lkdGg6
IDAsIGhlaWdodDogMCB9LAogICAgICAgICAvKjUqLyAgeyBsZWZ0OiAtMTQuNTc0LCB0b3A6IDE3
NjEuOTQ3LCB3aWR0aDogNTA0LjAwOSwgaGVpZ2h0OiA1MzUuODQ5IH0sCiAgICAgICAgIC8qNiov
ICB7IGxlZnQ6IDAsIHRvcDogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9LAorICAgICAgICAvKjcq
LyAgeyBsZWZ0OiA4LCB0b3A6IDIxODAsIHdpZHRoOiAxOTIsIGhlaWdodDogOTYgfSwKICAgICBd
OwogCiAgICAgLy8gUmFuZ2Ugb3ZlciBlbnRpcmUgZWxlbWVudC4KQEAgLTE2MSw2ICsxNjYsMTUg
QEAgYm9keSB7CiAgICAgdmFyIHJhbmdlNiA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CiAgICAg
cmVjdCA9IHJhbmdlNi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKQogICAgIHRlc3RDbGllbnRSZWN0
KHJlY3QsIGV4cGVjdGVkUmVzdWx0c1s2IC0gMV0pOworICAgIAorICAgIC8vIFJhbmdlIG92ZXIg
c3Vic2V0IHRoYXQgY29udGFpbnMgdGV4dCBhbmQgbGluZSBicmVhayBlbGVtZW50cy4KKyAgICBk
ZWJ1ZygiVGVzdCA3IikKKyAgICB2YXIgcmFuZ2U3ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICByYW5nZTcuc2V0U3RhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q3JykuZmly
c3RDaGlsZCwgMik7CisgICAgcmFuZ2U3LnNldEVuZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGVzdDcnKS5sYXN0Q2hpbGQsIDIpOworICAgIHNob3cocmFuZ2U3KTsKKyAgICByZWN0ID0gcmFu
Z2U3LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCisgICAgdGVzdENsaWVudFJlY3QocmVjdCwgZXhw
ZWN0ZWRSZXN1bHRzWzcgLSAxXSk7CiAKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAg
ICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdEFyZWEnKTsKZGlm
ZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDFmNmJmMjNjMGY0Li4zM2E3YWQ4MzQ3YyAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTktMDMtMDYgIEdhYmUgR2lvc2lhICA8Z2lvc2lhQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmFuZ2UgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IHJldHVybmluZyB6ZXJvIHJlY3Qgb24gc2ltcGxl
IHRleHQgbm9kZSB3aXRoIDxicj4gYmVmb3JlIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIxODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIENvcnJlY3QgcmVjdCBvZiBSZW5kZXJUZXh0
IGluIGEgYmxvY2sgZWxlbWVudCB3aGVuIHVzZWQgaW4gYSBSYW5nZQorICAgICAgICBvdmVyIGEg
bGluZSBicmVhayBlbGVtZW50LiBUaGUgZW5kIG9mZnNldCB3YXMgbWlzY2FsY3VsYXRlZC4KKwor
ICAgICAgICBBZGRkZWQgbGluZS1icmVhayBjYXNlIHRvIGZhc3QvZG9tL1JhbmdlL2dldEJvdW5k
aW5nQ2xpZW50UmVjdC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb2xs
ZWN0QWJzb2x1dGVRdWFkc0ZvclJhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OlJ1blJlc29sdmVyOjpyYW5nZUZvclJlbmRlcmVyV2l0aE9mZnNldHMgY29uc3QpOgorCiAyMDE5
LTAyLTI2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbRUdMXSBSdW50aW1lIHN1cHBvcnQgZm9yIFJHQjU2NSBwaXhlbCBsYXlvdXQKZGlmZiAtLWdp
dCBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmlu
ZGV4IGZjMjI1NTU3MTMwLi4wYTlhM2U1ZGY1YiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0yNTAsMTAgKzI1MCw5
IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zCiAgICAgICAgICAgICBxdWFkcy5hcHBlbmQocmVu
ZGVyZXIubG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQocnVuUmVjdCksIFVzZVRyYW5zZm9y
bXMsIHdhc0ZpeGVkKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAg
ICBBU1NFUlQoc3RhcnQgPCBydW4uZW5kKCkpOwotICAgICAgICBBU1NFUlQoZW5kID4gcnVuLnN0
YXJ0KCkpOwogICAgICAgICBhdXRvIGxvY2FsU3RhcnQgPSBzdGQ6Om1heChydW4uc3RhcnQoKSwg
c3RhcnQpIC0gcnVuLnN0YXJ0KCk7CiAgICAgICAgIGF1dG8gbG9jYWxFbmQgPSBzdGQ6Om1pbihy
dW4uZW5kKCksIGVuZCkgLSBydW4uc3RhcnQoKTsKKyAgICAgICAgQVNTRVJUKGxvY2FsU3RhcnQg
PD0gbG9jYWxFbmQpOwogICAgICAgICBzdHlsZS5mb250Q2FzY2FkZSgpLmFkanVzdFNlbGVjdGlv
blJlY3RGb3JUZXh0KHRleHRSdW4sIHJ1blJlY3QsIGxvY2FsU3RhcnQsIGxvY2FsRW5kKTsKICAg
ICAgICAgcXVhZHMuYXBwZW5kKHJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFk
KHJ1blJlY3QpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogICAgIH0KZGlmZiAtLWdpdCBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcCBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcAppbmRleCAz
ODU4NjRhNDllMC4uODZiODk1ZWYyMjMgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcAorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAKQEAgLTMwMCwxNyArMzAwLDE4IEBAIFdU
Rjo6SXRlcmF0b3JSYW5nZTxSdW5SZXNvbHZlcjo6SXRlcmF0b3I+IFJ1blJlc29sdmVyOjpyYW5n
ZUZvclJlbmRlcmVyV2l0aE9mZnNlCiAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0IDw9IGVuZE9mZnNl
dCk7CiAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGF1
dG8gaXQgPSByYW5nZS5iZWdpbigpOwotICAgIC8vIEFkdmFuY2UgdG8gdGhlIGZpcnQgcnVuIHdp
dGggdGhlIHN0YXJ0IG9mZnNldCBpbnNpZGUuCisgICAgYXV0byBsb2NhbEVuZCA9ICgqaXQpLnN0
YXJ0KCkgKyBlbmRPZmZzZXQ7CisgICAgLy8gQWR2YW5jZSB0byB0aGUgZmlyc3QgcnVuIHdpdGgg
dGhlIHN0YXJ0IG9mZnNldCBpbnNpZGUuIE9ubHkgdGhlIGZpcnN0IG5vZGUgaW4gYSByYW5nZSBj
YW4gaGF2ZSBhIHN0YXJ0T2Zmc2V0LgogICAgIHdoaWxlIChpdCAhPSByYW5nZS5lbmQoKSAmJiAo
Kml0KS5lbmQoKSA8PSBzdGFydE9mZnNldCkKICAgICAgICAgKytpdDsKICAgICBpZiAoaXQgPT0g
cmFuZ2UuZW5kKCkpCiAgICAgICAgIHJldHVybiB7IGVuZCgpLCBlbmQoKSB9OwogICAgIGF1dG8g
cmFuZ2VCZWdpbiA9IGl0OwogICAgIC8vIFNwZWNpYWwgY2FzZSBlbXB0eSByYW5nZXMgdGhhdCBz
dGFydCBhdCB0aGUgZWRnZSBvZiB0aGUgcnVuLiBBcHBhcmVudGx5IG5vcm1hbCBsaW5lIGxheW91
dCBpbmNsdWRlIHRob3NlLgotICAgIGlmIChlbmRPZmZzZXQgPT0gc3RhcnRPZmZzZXQgJiYgKCpp
dCkuc3RhcnQoKSA9PSBlbmRPZmZzZXQpCisgICAgaWYgKGxvY2FsRW5kID09IHN0YXJ0T2Zmc2V0
ICYmICgqaXQpLnN0YXJ0KCkgPT0gbG9jYWxFbmQpCiAgICAgICAgIHJldHVybiB7IHJhbmdlQmVn
aW4sICsraXQgfTsKICAgICAvLyBBZHZhbmNlIGJleW9uZCB0aGUgbGFzdCBydW4gd2l0aCB0aGUg
ZW5kIG9mZnNldC4KLSAgICB3aGlsZSAoaXQgIT0gcmFuZ2UuZW5kKCkgJiYgKCppdCkuc3RhcnQo
KSA8IGVuZE9mZnNldCkKKyAgICB3aGlsZSAoaXQgIT0gcmFuZ2UuZW5kKCkgJiYgKCppdCkuc3Rh
cnQoKSA8IGxvY2FsRW5kKQogICAgICAgICArK2l0OwogICAgIHJldHVybiB7IHJhbmdlQmVnaW4s
IGl0IH07CiB9
</data>

          </attachment>
      

    </bug>

</bugzilla>