<?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>164500</bug_id>
          
          <creation_ts>2016-11-07 18:44:05 -0800</creation_ts>
          <short_desc>[HarfBuzz] HarfBuzzShaper should not assume numGlyphs is greater than 0</short_desc>
          <delta_ts>2016-11-13 23:16:05 -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>Platform</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="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>bashi</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1248924</commentid>
    <comment_count>0</comment_count>
      <attachid>294113</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-07 18:44:05 -0800</bug_when>
    <thetext>Created attachment 294113
test.html

The result of shaping can be no glyphs because 
hb_ot_hide_default_ignorables deletes ignorable glyphs.
https://github.com/behdad/harfbuzz/blob/1.3.3/src/hb-ot-shape.cc#L470

&gt; Thread 1 &quot;WebKitWebProces&quot; received signal SIGSEGV, Segmentation fault.
&gt; 0x00007fe52f765afd in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:323
&gt; 323	    *(int *)(uintptr_t)0xbbadbeef = 0;
&gt; (gdb) bt
&gt; #0  0x00007fe52f765afd in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:323
&gt; #1  0x00007fe5358b0912 in WTF::CrashOnOverflow::crash () at ../../Source/WTF/wtf/CheckedArithmetic.h:85
&gt; #2  0x00007fe5358b0909 in WTF::CrashOnOverflow::overflowed () at ../../Source/WTF/wtf/CheckedArithmetic.h:78
&gt; #3  0x00007fe5378784b9 in WTF::Vector&lt;unsigned short, 256ul, WTF::CrashOnOverflow, 16ul&gt;::at (this=0x1f13fe0, i=0) at ../../Source/WTF/wtf/Vector.h:655
&gt; #4  0x00007fe5378779fd in WTF::Vector&lt;unsigned short, 256ul, WTF::CrashOnOverflow, 16ul&gt;::operator[] (this=0x1f13fe0, i=0) at ../../Source/WTF/wtf/Vector.h:675
&gt; #5  0x00007fe537877767 in (anonymous namespace)::HarfBuzzShaper::HarfBuzzRun::glyphToCharacterIndexes (this=0x1f139a0)
&gt;     at ../../Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.h:83
&gt; #6  0x00007fe53787659b in (anonymous namespace)::HarfBuzzShaper::setGlyphPositionsForHarfBuzzRun (this=0x7ffc87c51300, currentRun=0x1f139a0, harfBuzzBuffer=
&gt;     0x1ec7850) at ../../Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.cpp:517
&gt; #7  0x00007fe537876473 in (anonymous namespace)::HarfBuzzShaper::shapeHarfBuzzRuns (this=0x7ffc87c51300, shouldSetDirection=false)
&gt;     at ../../Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.cpp:502
&gt; #8  0x00007fe537875901 in (anonymous namespace)::HarfBuzzShaper::shape (this=0x7ffc87c51300, glyphBuffer=0x0)
&gt;     at ../../Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.cpp:376
&gt; #9  0x00007fe53785690a in (anonymous namespace)::FontCascade::floatWidthForComplexText (this=0x7fe516756678, run=...)
&gt;     at ../../Source/WebCore/platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:73
&gt; #10 0x00007fe53704bae4 in (anonymous namespace)::FontCascade::width (this=0x7fe516756678, run=..., fallbackFonts=0x7ffc87c51d48, glyphOverflow=0x7ffc87c51540)
&gt;     at ../../Source/WebCore/platform/graphics/FontCascade.cpp:371
&gt; #11 0x00007fe53744c883 in (anonymous namespace)::textWidth (text=..., from=1, len=3, font=..., xPos=0, isFixedPitch=false, collapseWhiteSpace=true, 
&gt;     fallbackFonts=..., layout=0x0) at ../../Source/WebCore/rendering/line/BreakingContext.h:654
&gt; #12 0x00007fe53744d148 in (anonymous namespace)::BreakingContext::computeAdditionalBetweenWordsWidth (this=0x7ffc87c51af0, renderText=..., textLayout=0x0, 
&gt;     currentCharacter=10, wordTrailingSpace=..., fallbackFonts=..., wordMeasurements=..., font=..., isFixedPitch=false, lastSpace=1, lastSpaceWordSpacing=0, 
&gt;     wordSpacingForWordMeasurement=0, offset=4) at ../../Source/WebCore/rendering/line/BreakingContext.h:749
&gt; #13 0x00007fe53744ea62 in (anonymous namespace)::BreakingContext::handleText (this=0x7ffc87c51af0, wordMeasurements=..., hyphenated=@0x7ffc87c52dc8: false, 
&gt;     consecutiveHyphenatedLines=@0x7ffc87c51cb8: 0) at ../../Source/WebCore/rendering/line/BreakingContext.h:913
&gt; #14 0x00007fe537448bb9 in (anonymous namespace)::LineBreaker::nextLineBreak (this=0x7ffc87c52dc0, resolver=..., lineInfo=..., layoutState=..., renderTextInfo=..., 
&gt;     lastFloatFromPreviousLine=0x0, consecutiveHyphenatedLines=0, wordMeasurements=...) at ../../Source/WebCore/rendering/line/LineBreaker.cpp:110
&gt; #15 0x00007fe53723120a in (anonymous namespace)::RenderBlockFlow::layoutRunsAndFloatsInRange (this=0x7fe51671b990, layoutState=..., resolver=..., 
&gt;     cleanLineStart=..., cleanLineBidiStatus=..., consecutiveHyphenatedLines=0) at ../../Source/WebCore/rendering/RenderBlockLineLayout.cpp:1368
&gt; #16 0x00007fe537230e09 in (anonymous namespace)::RenderBlockFlow::layoutRunsAndFloats (this=0x7fe51671b990, layoutState=..., hasInlineChild=true)
&gt;     at ../../Source/WebCore/rendering/RenderBlockLineLayout.cpp:1321
&gt; #17 0x00007fe537233581 in (anonymous namespace)::RenderBlockFlow::layoutLineBoxes (this=0x7fe51671b990, relayoutChildren=false, repaintLogicalTop=..., 
&gt;     repaintLogicalBottom=...) at ../../Source/WebCore/rendering/RenderBlockLineLayout.cpp:1747
&gt; #18 0x00007fe537210fbd in (anonymous namespace)::RenderBlockFlow::layoutInlineChildren (this=0x7fe51671b990, relayoutChildren=false, repaintLogicalTop=..., 
&gt;     repaintLogicalBottom=...) at ../../Source/WebCore/rendering/RenderBlockFlow.cpp:651
&gt; #19 0x00007fe537210344 in (anonymous namespace)::RenderBlockFlow::layoutBlock (this=0x7fe51671b990, relayoutChildren=false, pageLogicalHeight=...)
&gt;     at ../../Source/WebCore/rendering/RenderBlockFlow.cpp:485
&gt; #20 0x00007fe5371dde8a in (anonymous namespace)::RenderBlock::layout (this=0x7fe51671b990) at ../../Source/WebCore/rendering/RenderBlock.cpp:1072
&gt; #21 0x00007fe53721137e in (anonymous namespace)::RenderBlockFlow::layoutBlockChild (this=0x7fe51671b880, child=..., marginInfo=..., 
&gt;     previousFloatLogicalBottom=..., maxFloatLogicalBottom=...) at ../../Source/WebCore/rendering/RenderBlockFlow.cpp:709
&gt; #22 0x00007fe537210ed7 in (anonymous namespace)::RenderBlockFlow::layoutBlockChildren (this=0x7fe51671b880, relayoutChildren=false, maxFloatLogicalBottom=...)
&gt;     at ../../Source/WebCore/rendering/RenderBlockFlow.cpp:632
&gt; #23 0x00007fe537210368 in (anonymous namespace)::RenderBlockFlow::layoutBlock (this=0x7fe51671b880, relayoutChildren=false, pageLogicalHeight=...)
&gt;     at ../../Source/WebCore/rendering/RenderBlockFlow.cpp:487
&gt; #24 0x00007fe5371dde8a in (anonymous namespace)::RenderBlock::layout (this=0x7fe51671b880) at ../../Source/WebCore/rendering/RenderBlock.cpp:1072
&gt; #25 0x00007fe53721137e in (anonymous namespace)::RenderBlockFlow::layoutBlockChild (this=0x7fe4d4bf2b00, child=..., marginInfo=..., 
&gt;     previousFloatLogicalBottom=..., maxFloatLogicalBottom=...) at ../../Source/WebCore/rendering/RenderBlockFlow.cpp:709
&gt; #26 0x00007fe537210ed7 in (anonymous namespace)::RenderBlockFlow::layoutBlockChildren (this=0x7fe4d4bf2b00, relayoutChildren=false, maxFloatLogicalBottom=...)
&gt;     at ../../Source/WebCore/rendering/RenderBlockFlow.cpp:632
&gt; #27 0x00007fe537210368 in (anonymous namespace)::RenderBlockFlow::layoutBlock (this=0x7fe4d4bf2b00, relayoutChildren=false, pageLogicalHeight=...)
&gt;     at ../../Source/WebCore/rendering/RenderBlockFlow.cpp:487
&gt; #28 0x00007fe5371dde8a in (anonymous namespace)::RenderBlock::layout (this=0x7fe4d4bf2b00) at ../../Source/WebCore/rendering/RenderBlock.cpp:1072
&gt; #29 0x00007fe537408af5 in (anonymous namespace)::RenderView::layoutContent (this=0x7fe4d4bf2b00, state=...) at ../../Source/WebCore/rendering/RenderView.cpp:244
&gt; #30 0x00007fe537409219 in (anonymous namespace)::RenderView::layout (this=0x7fe4d4bf2b00) at ../../Source/WebCore/rendering/RenderView.cpp:370
&gt; #31 0x00007fe536ea224b in (anonymous namespace)::FrameView::layout (this=0x7fe51678ba00, allowSubtree=true) at ../../Source/WebCore/page/FrameView.cpp:1461
&gt; #32 0x00007fe536eac117 in (anonymous namespace)::FrameView::updateLayoutAndStyleIfNeededRecursive (this=0x7fe51678ba00)
&gt;     at ../../Source/WebCore/page/FrameView.cpp:4288
&gt; #33 0x00007fe535fc91fc in (anonymous namespace)::CompositingCoordinator::syncDisplayState (this=0x7fe5167d0338)
&gt;     at ../../Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:155
&gt; #34 0x00007fe535fd571f in (anonymous namespace)::CoordinatedLayerTreeHost::layerFlushTimerFired (this=0x7fe5167d0300)
&gt;     at ../../Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:165
&gt; #35 0x00007fe535fd5cb4 in WTF::RunLoop::Timer&lt;WebKit::CoordinatedLayerTreeHost&gt;::fired (this=0x7fe5167d0528) at ../../Source/WTF/wtf/RunLoop.h:145
&gt; #36 0x00007fe52f7cb5f3 in WTF::RunLoop::TimerBase::&lt;lambda(gpointer)&gt;::operator()(gpointer) const (__closure=0x0, userData=0x7fe5167d0528)
&gt;     at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:162
&gt; #37 0x00007fe52f7cb62f in WTF::RunLoop::TimerBase::&lt;lambda(gpointer)&gt;::_FUN(gpointer) () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:166
&gt; #38 0x00007fe52f7cac56 in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::operator()(GSource *, GSourceFunc, gpointer) const (__closure=0x0, source=0x1c59d90, 
&gt;     callback=0x7fe52f7cb612 &lt;WTF::RunLoop::TimerBase::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;, userData=0x7fe5167d0528) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:44
&gt; #39 0x00007fe52f7cac85 in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::_FUN(GSource *, GSourceFunc, gpointer) () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:45
&gt; #40 0x00007fe52702754a in g_main_dispatch () at /home/fujii/work/webkit/w2/WebKitBuild/DependenciesGTK/Source/glib-2.44.1/glib/gmain.c:3122
&gt; #41 g_main_context_dispatch () at /home/fujii/work/webkit/w2/WebKitBuild/DependenciesGTK/Source/glib-2.44.1/glib/gmain.c:3737
&gt; #42 0x00007fe5270278c8 in g_main_context_iterate () at /home/fujii/work/webkit/w2/WebKitBuild/DependenciesGTK/Source/glib-2.44.1/glib/gmain.c:3808
&gt; #43 0x00007fe527027be2 in g_main_loop_run () at /home/fujii/work/webkit/w2/WebKitBuild/DependenciesGTK/Source/glib-2.44.1/glib/gmain.c:4002
&gt; #44 0x00007fe52f7cb236 in WTF::RunLoop::run () at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:94
&gt; #45 0x00007fe535f98a72 in (anonymous namespace)::ChildProcessMain&lt;WebKit::WebProcess, WebKit::WebProcessMain&gt; (argc=2, argv=0x7ffc87c54d78)
&gt;     at ../../Source/WebKit2/Shared/unix/ChildProcessMain.h:61
&gt; #46 0x00007fe535f98920 in (anonymous namespace)::WebProcessMainUnix (argc=2, argv=0x7ffc87c54d78) at ../../Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp:69
&gt; #47 0x0000000000400c7a in main (argc=2, argv=0x7ffc87c54d78) at ../../Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp:44
&gt; (gdb)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248925</commentid>
    <comment_count>1</comment_count>
      <attachid>294114</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-07 18:44:43 -0800</bug_when>
    <thetext>Created attachment 294114
Test.woff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248926</commentid>
    <comment_count>2</comment_count>
      <attachid>294115</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-07 18:45:05 -0800</bug_when>
    <thetext>Created attachment 294115
test.sfd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248958</commentid>
    <comment_count>3</comment_count>
      <attachid>294131</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-07 21:12:45 -0800</bug_when>
    <thetext>Created attachment 294131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248959</commentid>
    <comment_count>4</comment_count>
      <attachid>294131</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2016-11-07 21:27:35 -0800</bug_when>
    <thetext>Comment on attachment 294131
Patch

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

&gt; Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.cpp:589
&gt;      unsigned numRuns = m_harfBuzzRuns.size();

Probably a better fix would be not adding a HarfBuzzRun to m_harfBuzzRuns when the run has no glyph?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248972</commentid>
    <comment_count>5</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-07 22:20:04 -0800</bug_when>
    <thetext>Thank you for review.

(In reply to comment #4)
&gt; Probably a better fix would be not adding a HarfBuzzRun to m_harfBuzzRuns
&gt; when the run has no glyph?

I&apos;m not so sure about HarfBuzzShaper, but I don&apos;t think so.
HarfBuzz removes ignorables only if a font does not has a glyph of SPACE (U+0020).

  https://github.com/behdad/harfbuzz/blob/1.3.3/src/hb-ot-shape.cc#L459

If the font has the glyph of SPACE, HarfBuzz replaces ignorables
with a zero-advance space glyph.

If I remove empty HarfBuzzRun, it would affect
firstOffsetOfNextRun of HarfBuzzShaper::fillGlyphBufferFromHarfBuzzRun.
I think it should be processed as if a zero-advance SPACE is there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248973</commentid>
    <comment_count>6</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2016-11-07 22:29:15 -0800</bug_when>
    <thetext>If HarfBuzz replaces (In reply to comment #5)
&gt; Thank you for review.
&gt; 
&gt; (In reply to comment #4)
&gt; &gt; Probably a better fix would be not adding a HarfBuzzRun to m_harfBuzzRuns
&gt; &gt; when the run has no glyph?
&gt; 
&gt; I&apos;m not so sure about HarfBuzzShaper, but I don&apos;t think so.
&gt; HarfBuzz removes ignorables only if a font does not has a glyph of SPACE
&gt; (U+0020).
&gt; 
&gt;   https://github.com/behdad/harfbuzz/blob/1.3.3/src/hb-ot-shape.cc#L459
&gt; 
&gt; If the font has the glyph of SPACE, HarfBuzz replaces ignorables
&gt; with a zero-advance space glyph.
&gt; 
&gt; If I remove empty HarfBuzzRun, it would affect
&gt; firstOffsetOfNextRun of HarfBuzzShaper::fillGlyphBufferFromHarfBuzzRun.
&gt; I think it should be processed as if a zero-advance SPACE is there.

Could you help me understand the problem then? If HarfBuzz replaces an ignorable with a zero-advance SPACE, a HarfBuzzRun should have a glpyh and the crash won&apos;t occur. Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248974</commentid>
    <comment_count>7</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-07 22:36:32 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Could you help me understand the problem then? If HarfBuzz replaces an
&gt; ignorable with a zero-advance SPACE, a HarfBuzzRun should have a glpyh and
&gt; the crash won&apos;t occur. Am I missing something?

This crash occurs only if a font does not has a glyph of SPACE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248978</commentid>
    <comment_count>8</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2016-11-07 22:44:28 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Could you help me understand the problem then? If HarfBuzz replaces an
&gt; &gt; ignorable with a zero-advance SPACE, a HarfBuzzRun should have a glpyh and
&gt; &gt; the crash won&apos;t occur. Am I missing something?
&gt; 
&gt; This crash occurs only if a font does not has a glyph of SPACE.

If a font doesn&apos;t have a glyph of SPACE and then HarfBuzz doesn&apos;t replace it, doesn&apos;t a run become an empty? In summary:

- a font has SPACE
-- a run always has at least one glyph. No length check is needed
- a font doesn&apos;t have SPACE
-- a run becomes an empty when there are only ignorables. The run can be removed

Is my understanding wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248989</commentid>
    <comment_count>9</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-07 23:31:00 -0800</bug_when>
    <thetext>There is no doubt that it will solve this crash problem to remove empty
HarfBuzzRun from m_harfBuzzRuns.

But, I don&apos;t agree it for comment 5.
How do you think about affecting firstOffsetOfNextRun?


I will show you an imaginal example, where there are three HarfBuzzRun:

  [g1 g2][ ignorable ][g3 g4]

If the font has SPACE glyph, HarfBuzz replaces ignorables with a zero-advance SPACE glyph:

  [g1 g2][ zero-advance-space ][g3 g4]

In this case, next offset of g2 is offset of zero-advance-space.

If the font does not have SPACE glyph, HarfBuzz removes ignorables:

  [g1 g2][ ][g3 g4]

The second HarfBuzzRun has no glyphs. 

In your suggestion, this empty run will be removed:

  [g1 g2][g3 g4]

Then, next offset of g2 is offset of g3.

In my patch, I keep the empty run:

  [g1 g2][ ][g3 g4]

Then, next offset of g2 is zero (initial value of FloatPoint).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248991</commentid>
    <comment_count>10</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2016-11-07 23:48:11 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; There is no doubt that it will solve this crash problem to remove empty
&gt; HarfBuzzRun from m_harfBuzzRuns.
&gt; 
&gt; But, I don&apos;t agree it for comment 5.
&gt; How do you think about affecting firstOffsetOfNextRun?
&gt; 
&gt; 
&gt; I will show you an imaginal example, where there are three HarfBuzzRun:
&gt; 
&gt;   [g1 g2][ ignorable ][g3 g4]
&gt; 
&gt; If the font has SPACE glyph, HarfBuzz replaces ignorables with a
&gt; zero-advance SPACE glyph:
&gt; 
&gt;   [g1 g2][ zero-advance-space ][g3 g4]
&gt; 
&gt; In this case, next offset of g2 is offset of zero-advance-space.
&gt; 
&gt; If the font does not have SPACE glyph, HarfBuzz removes ignorables:
&gt; 
&gt;   [g1 g2][ ][g3 g4]
&gt; 
&gt; The second HarfBuzzRun has no glyphs. 
&gt; 
&gt; In your suggestion, this empty run will be removed:
&gt; 
&gt;   [g1 g2][g3 g4]
&gt; 
&gt; Then, next offset of g2 is offset of g3.
&gt; 
&gt; In my patch, I keep the empty run:
&gt; 
&gt;   [g1 g2][ ][g3 g4]
&gt; 
&gt; Then, next offset of g2 is zero (initial value of FloatPoint).

I don&apos;t see much advantages of above as this seems a corner case and adding branches in hot path will regress performance. IIUC the path you modified will run most cases.

That said, if reviewers are happy with this change I won&apos;t oppose this fix :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248994</commentid>
    <comment_count>11</comment_count>
      <attachid>294131</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-08 00:13:06 -0800</bug_when>
    <thetext>Comment on attachment 294131
Patch

(In reply to comment #10)
&gt; I don&apos;t see much advantages of above as this seems a corner case and adding
&gt; branches in hot path will regress performance. IIUC the path you modified
&gt; will run most cases.

It makes sense. I didn&apos;t have the performance perspective.
I will revise the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249018</commentid>
    <comment_count>12</comment_count>
      <attachid>294150</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-08 02:49:05 -0800</bug_when>
    <thetext>Created attachment 294150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249159</commentid>
    <comment_count>13</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2016-11-08 15:47:58 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created attachment 294150 [details]
&gt; Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249207</commentid>
    <comment_count>14</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-08 18:29:15 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Looks good to me.

Thanks for your LGTM.

I&apos;m wondering who is the best person to review HarfBuzzShaper patch nowadays?
Added GTK and EFL experts to CC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249238</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-08 23:33:40 -0800</bug_when>
    <thetext>The best reviewer is Myles, though he might not know about harfbuzz so I will rubber-stamp it if he doesn&apos;t review it. Thanks for the patch and remember we&apos;re not committing until Apple&apos;s continuous integration is back online.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250119</commentid>
    <comment_count>16</comment_count>
      <attachid>294150</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-10 19:20:11 -0800</bug_when>
    <thetext>Comment on attachment 294150
Patch

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

&gt; Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaper.cpp:87
&gt; +        // HarfBuzzShaper::fillGlyphBuffer gets offsets()[0]

Why didn&apos;t you instead change fillGlyphBuffer()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250120</commentid>
    <comment_count>17</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-10 19:23:32 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Why didn&apos;t you instead change fillGlyphBuffer()?

For the performance reason (Comment 11).
At first, I created a patch of the approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250893</commentid>
    <comment_count>18</comment_count>
      <attachid>294683</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-11-13 18:07:14 -0800</bug_when>
    <thetext>Created attachment 294683
Patch

cq+ please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250941</commentid>
    <comment_count>19</comment_count>
      <attachid>294683</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-13 23:15:58 -0800</bug_when>
    <thetext>Comment on attachment 294683
Patch

Clearing flags on attachment: 294683

Committed r208675: &lt;http://trac.webkit.org/changeset/208675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250942</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-13 23:16:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>294113</attachid>
            <date>2016-11-07 18:44:05 -0800</date>
            <delta_ts>2016-11-07 18:44:05 -0800</delta_ts>
            <desc>test.html</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>154</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">PHN0eWxlPgpAZm9udC1mYWNlIHsKICAgIGZvbnQtZmFtaWx5OiB0ZXN0LWZvbnQ7CiAgICBzcmM6
IHVybChUZXN0LndvZmYpOwp9CmJvZHkgewogICAgZm9udC1mYW1pbHk6IHRlc3QtZm9udDsKfQo8
L3N0eWxlPgo8Ym9keT4KJiN4MjAwZjsmI3gwNjI3OyYjeDIwMGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>294114</attachid>
            <date>2016-11-07 18:44:43 -0800</date>
            <delta_ts>2016-11-07 18:44:43 -0800</delta_ts>
            <desc>Test.woff</desc>
            <filename>Test.woff</filename>
            <type>application/font-woff</type>
            <size>1124</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">d09GRk9UVE8AAARkAAsAAAAABmAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAAOgA
AAD7o13sQ0ZGVE0AAAHwAAAAHAAAABx7ZfLnR0RFRgAAAgwAAAAYAAAAHAAVABRPUy8yAAACJAAA
AEUAAABgdYX9k2NtYXAAAAJsAAAANwAAAUIADSK1aGVhZAAAAqQAAAAoAAAANgmqBUloaGVhAAAC
zAAAABsAAAAkA3wDJmhtdHgAAALoAAAAFgAAABYOdAAAbWF4cAAAAwAAAAAGAAAABgAGUABuYW1l
AAADCAAAAUgAAAIu/BaXJXBvc3QAAARQAAAAEwAAACD/hgAyeJxjZGBhYWBkZGQNSS0uYWBkYmBk
0PjBz/BDgfGHItMPJeYfEizdQMAqw7CZX4aBQUCGYZ+gDAOnDMMnIQYOkGoOBn4GMQZZBhWGKIY4
hqTSvEwjAwMnCOUMoVwglCuEcnPOL6gsykzPKFHQcNZUMDIwNFMIzs+rVPDMK0ktSkwuySxLVXAF
sUsSM/NyU/NKgDLJeiD3gd3IwMDYztjB2MnYxdjNwMbIqKKqrqml/Ue2e+8P172Me/d+P7CXea/Y
D5UfK/+osO39Uy76w/X7gT+u7Hx834CQj+/HG5FfgqLdPFwAGLFL+gAAAAEAAAAA0tgwKQAAAADU
RuDBAAAAANRG4fx4nGNgZIAAHgYRBhYgzQTEjBAMAALLACp4nGNgYfrBOIGBlYGBqYtpDwMDQw+E
ZnzAYMjIBBRlYGVmAIMGBlQQkOaawtCgwK3Az6zw34IhCirMCFegAISMAG6BCoMAAAB4nGNgYGBm
gGAZBkYGELAB8hjBfBYGBSDNAoRAvgL///9Akvv///vfoCoZGNkYYMwRCwBpJgbhAHicY2BkYGAA
Ysa/Ptzx/DZfmbiZXwBFGK64PTJCpqGAA0IBAAtCCFN4nGNgZGBgVvhvwRDF/IIBAhgZUAErAElL
AqcAAfQAAAJYAAAD6AAAA+gAAAJYAAAAAAAAAABQAAAGAAB4nGWQsW7CMBCG/0CgdEF9hBthIHUY
QGWoKiGQWAExN4qsEAkcmhgk1Ofp2i59hI59qP4OpkMbyb7vzuf//AdAF+8IcPlGMJ4DhPjw3MAN
vjw3IUHXc4gwePDcwl3w7LnN+is7g/CW2a6+5ThAB2+eG5z76bmJJ3x7DtEJ7j23OOvRc5v1F0xR
4IAzSuTIsIWFoMdqn3EIhZgOBCt2GXYJFowWmv0JUlKOEzPB7LdueZIz2zMztZ67kyICpsXhXObZ
1kpv2pehikeyKsxZFsbqMkltftIyc2yT3Oy1sTxJeW9NqYpSWOuK+5JphiP/Q8J5WOrsuEsI8/qV
to4lO3TtIaILwYTrKnPJxhjQXcz96hPzwth5UWZahpGSibhxDONBHA/ca/+9ZFM7rujXTRbqOKWo
jm4qNrqs8sKIUnGklJK/Cj/eXleFeJxjYGYAg//NDEYMWAAAKEQBuAA=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>294115</attachid>
            <date>2016-11-07 18:45:05 -0800</date>
            <delta_ts>2016-11-07 18:45:05 -0800</delta_ts>
            <desc>test.sfd</desc>
            <filename>test.sfd</filename>
            <type>application/vnd.font-fontforge-sfd</type>
            <size>1471</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3BsaW5lRm9udERCOiAzLjAKRm9udE5hbWU6IFRlc3QKRnVsbE5hbWU6IFRlc3QKRmFtaWx5TmFt
ZTogVGVzdApXZWlnaHQ6IFJlZ3VsYXIKQ29weXJpZ2h0OiBDb3B5cmlnaHQgKEMpIDIwMTYgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KVUNvbW1lbnRzOiAiMjAxNi0xMS03OiBD
cmVhdGVkIHdpdGggRm9udEZvcmdlIChodHRwOi8vZm9udGZvcmdlLm9yZykiClZlcnNpb246IDAw
MS4wMDAKSXRhbGljQW5nbGU6IDAKVW5kZXJsaW5lUG9zaXRpb246IC0xMDAKVW5kZXJsaW5lV2lk
dGg6IDUwCkFzY2VudDogODAwCkRlc2NlbnQ6IDIwMApJbnZhbGlkRW06IDAKTGF5ZXJDb3VudDog
MgpMYXllcjogMCAwICJCYWNrIiAxCkxheWVyOiAxIDAgIkZvcmUiIDAKWFVJRDogWzEwMjEgNzE5
IC0xNjE2NDg5MDAwIDYyODU4ODRdCk9TMlZlcnNpb246IDAKT1MyX1dlaWdodFdpZHRoU2xvcGVP
bmx5OiAwCk9TMl9Vc2VUeXBvTWV0cmljczogMQpDcmVhdGlvblRpbWU6IDE0Nzg1NzAwNDkKTW9k
aWZpY2F0aW9uVGltZTogMTQ3ODU3MDM2NApPUzJUeXBvQXNjZW50OiAwCk9TMlR5cG9BT2Zmc2V0
OiAxCk9TMlR5cG9EZXNjZW50OiAwCk9TMlR5cG9ET2Zmc2V0OiAxCk9TMlR5cG9MaW5lZ2FwOiAw
Ck9TMldpbkFzY2VudDogMApPUzJXaW5BT2Zmc2V0OiAxCk9TMldpbkRlc2NlbnQ6IDAKT1MyV2lu
RE9mZnNldDogMQpIaGVhZEFzY2VudDogMApIaGVhZEFPZmZzZXQ6IDEKSGhlYWREZXNjZW50OiAw
CkhoZWFkRE9mZnNldDogMQpPUzJWZW5kb3I6ICdQZkVkJwpNYXJrQXR0YWNoQ2xhc3NlczogMQpE
RUk6IDkxMTI1CkVuY29kaW5nOiBPcmlnaW5hbApVbmljb2RlSW50ZXJwOiBub25lCk5hbWVMaXN0
OiBBR0wgRm9yIE5ldyBGb250cwpEaXNwbGF5U2l6ZTogLTQ4CkFudGlBbGlhczogMQpGaXRUb0Vt
OiAwCldpbkluZm86IDAgMzAgMTEKT25seUJpdG1hcHM6IDEKQmVnaW5Qcml2YXRlOiAwCkVuZFBy
aXZhdGUKQmVnaW5DaGFyczogNSA1CgpTdGFydENoYXI6IHVuaTIwMEIKRW5jb2Rpbmc6IDAgODIw
MyAwCldpZHRoOiA2MDAKVldpZHRoOiAwCkZsYWdzOiBXCkxheWVyQ291bnQ6IDIKRW5kQ2hhcgoK
U3RhcnRDaGFyOiB1bmkyMDBDCkVuY29kaW5nOiAxIDgyMDQgMQpXaWR0aDogMTAwMApWV2lkdGg6
IDAKRmxhZ3M6IFcKTGF5ZXJDb3VudDogMgpFbmRDaGFyCgpTdGFydENoYXI6IHVuaTIwMEQKRW5j
b2Rpbmc6IDIgODIwNSAyCldpZHRoOiAxMDAwClZXaWR0aDogMApGbGFnczogVwpMYXllckNvdW50
OiAyCkVuZENoYXIKClN0YXJ0Q2hhcjogdW5pMjAwRQpFbmNvZGluZzogMyA4MjA2IDMKV2lkdGg6
IDYwMApWV2lkdGg6IDAKRmxhZ3M6IFcKTGF5ZXJDb3VudDogMgpFbmRDaGFyCgpTdGFydENoYXI6
IHVuaTIwMEYKRW5jb2Rpbmc6IDQgODIwNyA0CldpZHRoOiA2MDAKVldpZHRoOiAwCkZsYWdzOiBX
CkxheWVyQ291bnQ6IDIKRW5kQ2hhcgpFbmRDaGFycwpFbmRTcGxpbmVGb250Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294131</attachid>
            <date>2016-11-07 21:12:45 -0800</date>
            <delta_ts>2016-11-08 00:13:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164500-20161107210836.patch</filename>
            <type>text/plain</type>
            <size>8481</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ4N2I0N2NhNjU5ZjM5
NTY4NTcwMjQ4MzhhMDcxM2RlZTJkNjA5MC4uMTQyOTI3ZDU5ZDFhNWY3MzcxNzI2OTM3MzgxNjE4
YmQxODE0YTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTExLTA3ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtIYXJmQnV6
el0gSGFyZkJ1enpTaGFwZXIgc2hvdWxkIG5vdCBhc3N1bWUgbnVtR2x5cGhzIGlzIGdyZWF0ZXIg
dGhhbiAwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQ1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGgu
aHRtbAorCisgICAgICAgIEhhcmZCdXp6U2hhcGVyIGFzc3VtZXMgbnVtR2x5cGhzIG9mIEhhcmZC
dXp6UnVuIGlzIGdyZWF0ZXIgdGhhbgorICAgICAgICB6ZXJvLiBCdXQgdGhpcyBpcyBub3QgbmVj
ZXNzYXJpbHkgdHJ1ZS4gSWYgYSBmb250IGRvZXMgbm90IGhhdmUgYQorICAgICAgICBnbHlwaCBv
ZiBTUEFDRSAoVSswMDIwKSwgSGFyZkJ1enogcmVtb3ZlcyBpZ25vcmFibGUgZ2x5cGhzLiBJbgor
ICAgICAgICB0aGlzIGNhc2UsIEhhcmZCdXp6UnVuIGNhbiBoYXZlIG5vIGdseXBocy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpmaWxsR2x5cGhCdWZmZXIpOiBEbyBub3Qg
Z2V0IG9mZnNldCgpWzBdCisgICAgICAgIG9mIEhhcmZCdXp6UnVuIGlmIGl0cyBudW1HbHlwaHMg
aXMgemVyby4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNo
YXBlci5oOgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjpn
bHlwaHMpOiBVc2UgVmVjdG9yOjpkYXRhKCkKKyAgICAgICAgaW5zdHJlYWQgb2Ygb3BlcmF0b3Jb
MF0uCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OmFkdmFu
Y2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpS
dW46Om9mZnNldHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpI
YXJmQnV6elJ1bjo6Z2x5cGhUb0NoYXJhY3RlckluZGV4ZXMpOiBEaXR0by4KKwogMjAxNi0xMC0y
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TihyMjA3NzUzLTIwNzc1NSk6IEFTU0VSVElPTiBGQUlMRUQ6IG1fcGFyc2VkU3R5bGVTaGVldENh
Y2hlLT5pc0luTWVtb3J5Q2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwCmluZGV4IDU1ZDU5
ZTI2OTNkYmY0NDQ4M2QxMTIzOTJiYWU4MGUxMTBjYTZlM2QuLjYyZTEyMjVjOTJmY2IzMjA4ZDk2
YzVlODhjZTEyNGNhMTZmNGQyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAKQEAgLTU4OCwx
NyArNTg4LDIzIEBAIGJvb2wgSGFyZkJ1enpTaGFwZXI6OmZpbGxHbHlwaEJ1ZmZlcihHbHlwaEJ1
ZmZlciogZ2x5cGhCdWZmZXIpCiB7CiAgICAgdW5zaWduZWQgbnVtUnVucyA9IG1faGFyZkJ1enpS
dW5zLnNpemUoKTsKICAgICBpZiAobV9ydW4ucnRsKCkpIHsKLSAgICAgICAgbV9zdGFydE9mZnNl
dCA9IG1faGFyZkJ1enpSdW5zLmxhc3QoKS0+b2Zmc2V0cygpWzBdOworICAgICAgICBpZiAobV9o
YXJmQnV6elJ1bnMubGFzdCgpLT5udW1HbHlwaHMoKSkKKyAgICAgICAgICAgIG1fc3RhcnRPZmZz
ZXQgPSBtX2hhcmZCdXp6UnVucy5sYXN0KCktPm9mZnNldHMoKVswXTsKICAgICAgICAgZm9yIChp
bnQgcnVuSW5kZXggPSBudW1SdW5zIC0gMTsgcnVuSW5kZXggPj0gMDsgLS1ydW5JbmRleCkgewog
ICAgICAgICAgICAgSGFyZkJ1enpSdW4qIGN1cnJlbnRSdW4gPSBtX2hhcmZCdXp6UnVuc1tydW5J
bmRleF0uZ2V0KCk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGZpcnN0T2Zmc2V0T2ZOZXh0UnVu
ID0gIXJ1bkluZGV4ID8gRmxvYXRQb2ludCgpIDogbV9oYXJmQnV6elJ1bnNbcnVuSW5kZXggLSAx
XS0+b2Zmc2V0cygpWzBdOworICAgICAgICAgICAgRmxvYXRQb2ludCBmaXJzdE9mZnNldE9mTmV4
dFJ1bjsKKyAgICAgICAgICAgIGlmIChydW5JbmRleCAmJiBtX2hhcmZCdXp6UnVuc1tydW5JbmRl
eCAtIDFdLT5udW1HbHlwaHMoKSkKKyAgICAgICAgICAgICAgICBmaXJzdE9mZnNldE9mTmV4dFJ1
biA9IG1faGFyZkJ1enpSdW5zW3J1bkluZGV4IC0gMV0tPm9mZnNldHMoKVswXTsKICAgICAgICAg
ICAgIGZpbGxHbHlwaEJ1ZmZlckZyb21IYXJmQnV6elJ1bihnbHlwaEJ1ZmZlciwgY3VycmVudFJ1
biwgZmlyc3RPZmZzZXRPZk5leHRSdW4pOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgbV9zdGFydE9mZnNldCA9IG1faGFyZkJ1enpSdW5zLmZpcnN0KCktPm9mZnNldHMoKVswXTsK
KyAgICAgICAgaWYgKG1faGFyZkJ1enpSdW5zLmZpcnN0KCktPm51bUdseXBocygpKQorICAgICAg
ICAgICAgbV9zdGFydE9mZnNldCA9IG1faGFyZkJ1enpSdW5zLmZpcnN0KCktPm9mZnNldHMoKVsw
XTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBydW5JbmRleCA9IDA7IHJ1bkluZGV4IDwgbnVtUnVu
czsgKytydW5JbmRleCkgewogICAgICAgICAgICAgSGFyZkJ1enpSdW4qIGN1cnJlbnRSdW4gPSBt
X2hhcmZCdXp6UnVuc1tydW5JbmRleF0uZ2V0KCk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGZp
cnN0T2Zmc2V0T2ZOZXh0UnVuID0gcnVuSW5kZXggPT0gbnVtUnVucyAtIDEgPyBGbG9hdFBvaW50
KCkgOiBtX2hhcmZCdXp6UnVuc1tydW5JbmRleCArIDFdLT5vZmZzZXRzKClbMF07CisgICAgICAg
ICAgICBGbG9hdFBvaW50IGZpcnN0T2Zmc2V0T2ZOZXh0UnVuOworICAgICAgICAgICAgaWYgKHJ1
bkluZGV4IDwgbnVtUnVucyAtIDEgJiYgbV9oYXJmQnV6elJ1bnNbcnVuSW5kZXggKyAxXS0+bnVt
R2x5cGhzKCkpCisgICAgICAgICAgICAgICAgZmlyc3RPZmZzZXRPZk5leHRSdW4gPSBtX2hhcmZC
dXp6UnVuc1tydW5JbmRleCArIDFdLT5vZmZzZXRzKClbMF07CiAgICAgICAgICAgICBmaWxsR2x5
cGhCdWZmZXJGcm9tSGFyZkJ1enpSdW4oZ2x5cGhCdWZmZXIsIGN1cnJlbnRSdW4sIGZpcnN0T2Zm
c2V0T2ZOZXh0UnVuKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5oCmluZGV4
IDY0ZDQwYmU3MGVkYzlmYTgzNmVlYWE3OTAyZDFjMGEzOWFjZWY2OGUuLjU5M2M4N2NkMjc1MzQz
ZGU1YWRhZDAwNjRkYTUzMzcxMTI2ZGEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuaApAQCAtNzcs
MTAgKzc3LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0SW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0SW5kZXg7IH0KICAgICAgICAgdW5zaWduZWQgbnVtQ2hhcmFjdGVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2hhcmFjdGVyczsgfQogICAgICAgICB1bnNpZ25lZCBu
dW1HbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX251bUdseXBoczsgfQotICAgICAgICB1aW50MTZf
dCogZ2x5cGhzKCkgeyByZXR1cm4gJm1fZ2x5cGhzWzBdOyB9Ci0gICAgICAgIGZsb2F0KiBhZHZh
bmNlcygpIHsgcmV0dXJuICZtX2FkdmFuY2VzWzBdOyB9Ci0gICAgICAgIEZsb2F0UG9pbnQqIG9m
ZnNldHMoKSB7IHJldHVybiAmbV9vZmZzZXRzWzBdOyB9Ci0gICAgICAgIHVpbnQxNl90KiBnbHlw
aFRvQ2hhcmFjdGVySW5kZXhlcygpIHsgcmV0dXJuICZtX2dseXBoVG9DaGFyYWN0ZXJJbmRleGVz
WzBdOyB9CisgICAgICAgIHVpbnQxNl90KiBnbHlwaHMoKSB7IHJldHVybiBtX2dseXBocy5kYXRh
KCk7IH0KKyAgICAgICAgZmxvYXQqIGFkdmFuY2VzKCkgeyByZXR1cm4gbV9hZHZhbmNlcy5kYXRh
KCk7IH0KKyAgICAgICAgRmxvYXRQb2ludCogb2Zmc2V0cygpIHsgcmV0dXJuIG1fb2Zmc2V0cy5k
YXRhKCk7IH0KKyAgICAgICAgdWludDE2X3QqIGdseXBoVG9DaGFyYWN0ZXJJbmRleGVzKCkgeyBy
ZXR1cm4gbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXhlcy5kYXRhKCk7IH0KICAgICAgICAgZmxvYXQg
d2lkdGgoKSB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgICAgIGJvb2wgcnRsKCkgeyByZXR1cm4g
bV9kaXJlY3Rpb24gPT0gUlRMOyB9CiAgICAgICAgIGhiX3NjcmlwdF90IHNjcmlwdCgpIHsgcmV0
dXJuIG1fc2NyaXB0OyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWFiMmQ2MzE5MmQ1MDBkNDUwNDQ0MTNkM2QyYTM0M2Nj
N2VhOTZkOC4uYmQ2NGU4MjUwNzU5MDdkN2JkYjBlNjI5ZDk2OTYzZTAxZmI1Y2FhMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTExLTA3ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgorCisgICAgICAgIFtIYXJmQnV6el0gSGFyZkJ1enpTaGFwZXIgc2hvdWxk
IG5vdCBhc3N1bWUgbnVtR2x5cGhzIGlzIGdyZWF0ZXIgdGhhbiAwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1MDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9yZXNvdXJjZXMv
aWdub3JhYmxlcy53b2ZmOiBBZGRlZC4KKwogMjAxNi0xMC0yNyAgWGFiaWVyIFJvZHJpZ3VleiBD
YWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4IG9m
IEdUSyBhbmQgRUZMIHRlc3QgYm90cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC9pbnRlcm5hdGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgt
bm8tZ2x5cGgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMGY2NzVkMmYwYmJkYzJjMTQ4NDY4
NGI0YzkxNGVmZjM1Yjg3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGgtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEgQEAKK+KAj9in4oCOCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGguaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlw
aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRiNGEyZjU0NjQ1NDdhMTc4MWQ4Mjg4OGI2OWQ0ZDk5MzRmNWY2
YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGguaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1p
bHk6IHRlc3QtZm9udDsKKyAgICBzcmM6IHVybChyZXNvdXJjZXMvaWdub3JhYmxlcy53b2ZmKTsK
K30KK2JvZHkgeworICAgIGZvbnQtZmFtaWx5OiB0ZXN0LWZvbnQ7Cit9Cis8L3N0eWxlPgorPGJv
ZHk+Cis8cD4mI3gyMDBmOyYjeDA2Mjc7JiN4MjAwZTs8L3A+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgLy8gRm9yY2UgbGF5b3V0LgorICAgIHRlc3RSdW5uZXIuZGlz
cGxheSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRp
b25hbC9yZXNvdXJjZXMvaWdub3JhYmxlcy53b2ZmIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvcmVzb3VyY2VzL2lnbm9yYWJsZXMud29mZgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjU0NDU5
ZGQzM2IxZTRkNTY1OTY1NjIxZmQzY2E2OTFmOGE2MWNlCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAxMTI0CnpjbVhULWNYUlUoM0dydU9VYGIpJVcmaUBWMU9gU0JqUn5DSCshUG9YNyYoQTRGTSM7
PjtAQ0dwcCU3bzcqYXNrQQp6Mjg2M3FLUnRKTWFkbCYwVkIhSnRDQldqTTM/bHgpYGJJITg2KEhY
Z2ghYVglfDR2VE1PKUxQNDxwQkJTS3JAXmUKemMkS3pocSRae1MjZytpWUc9U0tRYX19IysyMmM8
dmJfVTNvMjRXVEY4ZkxZTys+IzJRN3wwIUJBazBfN3o+dTMqCnowV147cCRZbyN5VzN+Vz55dXtw
OHBjdjUyajI9TXNkVmo+R3N9fCVKMTY4dkcwTSFUc3ZCTGowMkJWNU8kdGVrbQp6aTN1cXdEWkhN
I2RPJGB9TGR1MDcyaFY/U1p2NUQ7YmVVaUVuWUB0QlU1NWkmaGQwY09aKTxkUFhpSj5HZlFOWkcK
eiZ0WXslSG9nZzJkfjlgV2hIUX4rcUhQKiY3SHZ4fD9lUzQmVz4pOFQlQ2omPVZUeUszUVNtd2I2
KntNVSZUOWwtCnpEN1k0NFV9UnR0JXlJN2c+V35qLXZee21iZURxSDBjIXc2U1p1QXkxeyMrRk4q
e2l8bVdSPTRBIz05cEQ5SnExcgp6Iz0jcFdaeWRkR19RMF9kRDtCTDx3e3EhVV9pZmVoYExGTm9z
czNKUHpoUWRpYFd5VUg8K2NCPip6b3BtdS0+bzMKelV3PTIrdVh8SGRiSDhDaXxORzw4NlhUbH0t
TDs4ZmtsNShgMytQe1A+fFZOSXBiMkMlVHljQUY1SkVydjB9TytOCnpsbS1TbEhiRktxZ3xqUzJk
SVdlRm1gKmNqZnk1Sms5a2dne29aOHM5dk9BTlhuYzExWUM5VVFfIWlmX3NCQj0/Zgp6WCQ7TTVZ
I3s7QHAzT1JSVlpuajUyaE9rZ2FLQX5CT1kwMHJfeVVITzkpYFJ8dTRiU21BYWZFRChpIyNaKzEl
SSEKekhaWHBZSTlNYWIjO1MwWnNse08qKUJwZWY5VlkkJHxOcjs+MXpNNjRIemc5ejJ5ISFJczxB
eDs+cXwqVVVgUlQpCnotfG8pR0tXNmJXY2cmMXVhRnRsTSFgOEBZKn0/ezlDcUBRdEN5cnBTYHg2
cXZlJmluJUlRcGxGa3g0PV9mS2kqbAp6KTA9NUkxTEdIOT5fLTRvMHgtcFpGbytFU3orP2JTRWZz
VDhDdjQwK1dGWE0/LShmK0NWe01DY3FDJTtKTCtUMUcKeiNSKENOaFVRJnMxVU99OE52Sz9Ue18+
VnlaQSlNNmlocTJ8b1RYM2hkdz1mdnwzQjt3O19vPk1lITNhVlZ7WkJKCno7bSFmeGVLektiakBP
R2ozQFNke0lUWldoJkNhdkd3NV4qek91TTttLSV8PypfV1hJJGJBRz92KntOUHImM0JSVwp6byRZ
cHUqQjZVdGUtLXgkZTkmTypfMms1Yyo0NzJidipzNmF3OWVwVChKcXJMO31xKT1vQXNBN0Q1eWBe
X340dUUKemQ2a29sWnlPdExvd3N8azY0U0R5NGBaSSl5eWxnRVl4PUAyX2YxLTdCRV5vcUdWO3U9
eUpTP0hHeF5TJnRzOEFUCnpFQXhGPGJfR1NlPylwNmB2cllOR15QJFIhUzhzTkJiQTB8YWJ6N2dS
YjsoPUJNY2ZCbFVUWVBmSlNLND1fUlFaYAp6IWstVl9zMD5WdFlNVkh6YjRNWjFWQERiT0pLNnZE
clVZQkJkdlY9WT8zS21SNkA3VkhYMW1zV0lAQSRWeE1hJHQKZHthcDY8Oz0pQCZhUjV2WHxJaE5j
QGNASFohLWE3TjB8MUY5c2xOYUsKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294150</attachid>
            <date>2016-11-08 02:49:05 -0800</date>
            <delta_ts>2016-11-13 18:07:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164500-20161108024456.patch</filename>
            <type>text/plain</type>
            <size>7217</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uOTE1ZmRkODIxODkxZjkyZGQ4Y2ZlZGU1OWE2MjJl
ZmEwNmM2ZjRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTExLTA4ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtIYXJmQnV6
el0gSGFyZkJ1enpTaGFwZXIgc2hvdWxkIG5vdCBhc3N1bWUgbnVtR2x5cGhzIGlzIGdyZWF0ZXIg
dGhhbiAwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQ1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGgu
aHRtbAorCisgICAgICAgIEhhcmZCdXp6U2hhcGVyIGFzc3VtZXMgbnVtR2x5cGhzIG9mIEhhcmZC
dXp6UnVuIGlzIGdyZWF0ZXIgdGhhbgorICAgICAgICB6ZXJvLiBCdXQgdGhpcyBpcyBub3QgbmVj
ZXNzYXJpbHkgdHJ1ZS4gSWYgYSBmb250IGRvZXMgbm90IGhhdmUgYQorICAgICAgICBnbHlwaCBv
ZiBTUEFDRSAoVSswMDIwKSwgSGFyZkJ1enogcmVtb3ZlcyBpZ25vcmFibGUgZ2x5cGhzLiBJbgor
ICAgICAgICB0aGlzIGNhc2UsIEhhcmZCdXp6UnVuIGNhbiBoYXZlIG5vIGdseXBocy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpIYXJmQnV6elJ1bjo6YXBwbHlTaGFwZVJl
c3VsdCk6IFJlc2l6ZQorICAgICAgICBtX29mZnNldHMgdG8gb25lIGlmIG1fbnVtR2x5cGhzIGlz
IHplcm8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFw
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpIYXJmQnV6elJ1bjo6Z2x5
cGhzKTogVXNlIFZlY3Rvcjo6ZGF0YSgpCisgICAgICAgIGluc3RyZWFkIG9mIG9wZXJhdG9yWzBd
LgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjphZHZhbmNl
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVu
OjpvZmZzZXRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFy
ZkJ1enpSdW46OmdseXBoVG9DaGFyYWN0ZXJJbmRleGVzKTogRGl0dG8uCisKIDIwMTYtMTEtMDcg
IFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIwODM4Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcAppbmRleCA1NWQ1
OWUyNjkzZGJmNDQ0ODNkMTEyMzkyYmFlODBlMTEwY2E2ZTNkLi40ZDZkZDE2MDNlNDk3ZTJmOWNl
ZTA0YjRlMzY2NjNkYjc2NGQxYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwCkBAIC04Myw2
ICs4MywxMSBAQCBIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OkhhcmZCdXp6UnVuKGNvbnN0
IEZvbnQqIGZvbnREYXRhLCB1bnNpZ25lZCBzdGFydEluZAogdm9pZCBIYXJmQnV6elNoYXBlcjo6
SGFyZkJ1enpSdW46OmFwcGx5U2hhcGVSZXN1bHQoaGJfYnVmZmVyX3QqIGhhcmZCdXp6QnVmZmVy
KQogewogICAgIG1fbnVtR2x5cGhzID0gaGJfYnVmZmVyX2dldF9sZW5ndGgoaGFyZkJ1enpCdWZm
ZXIpOworICAgIGlmICghbV9udW1HbHlwaHMpIHsKKyAgICAgICAgLy8gSGFyZkJ1enpTaGFwZXI6
OmZpbGxHbHlwaEJ1ZmZlciBnZXRzIG9mZnNldHMoKVswXQorICAgICAgICBtX29mZnNldHMucmVz
aXplKDEpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fZ2x5cGhzLnJlc2l6ZShtX251
bUdseXBocyk7CiAgICAgbV9hZHZhbmNlcy5yZXNpemUobV9udW1HbHlwaHMpOwogICAgIG1fZ2x5
cGhUb0NoYXJhY3RlckluZGV4ZXMucmVzaXplKG1fbnVtR2x5cGhzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBl
ci5oCmluZGV4IDY0ZDQwYmU3MGVkYzlmYTgzNmVlYWE3OTAyZDFjMGEzOWFjZWY2OGUuLjU5M2M4
N2NkMjc1MzQzZGU1YWRhZDAwNjRkYTUzMzcxMTI2ZGEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIu
aApAQCAtNzcsMTAgKzc3LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0SW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0SW5kZXg7IH0KICAgICAgICAgdW5zaWduZWQgbnVt
Q2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2hhcmFjdGVyczsgfQogICAgICAgICB1
bnNpZ25lZCBudW1HbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX251bUdseXBoczsgfQotICAgICAg
ICB1aW50MTZfdCogZ2x5cGhzKCkgeyByZXR1cm4gJm1fZ2x5cGhzWzBdOyB9Ci0gICAgICAgIGZs
b2F0KiBhZHZhbmNlcygpIHsgcmV0dXJuICZtX2FkdmFuY2VzWzBdOyB9Ci0gICAgICAgIEZsb2F0
UG9pbnQqIG9mZnNldHMoKSB7IHJldHVybiAmbV9vZmZzZXRzWzBdOyB9Ci0gICAgICAgIHVpbnQx
Nl90KiBnbHlwaFRvQ2hhcmFjdGVySW5kZXhlcygpIHsgcmV0dXJuICZtX2dseXBoVG9DaGFyYWN0
ZXJJbmRleGVzWzBdOyB9CisgICAgICAgIHVpbnQxNl90KiBnbHlwaHMoKSB7IHJldHVybiBtX2ds
eXBocy5kYXRhKCk7IH0KKyAgICAgICAgZmxvYXQqIGFkdmFuY2VzKCkgeyByZXR1cm4gbV9hZHZh
bmNlcy5kYXRhKCk7IH0KKyAgICAgICAgRmxvYXRQb2ludCogb2Zmc2V0cygpIHsgcmV0dXJuIG1f
b2Zmc2V0cy5kYXRhKCk7IH0KKyAgICAgICAgdWludDE2X3QqIGdseXBoVG9DaGFyYWN0ZXJJbmRl
eGVzKCkgeyByZXR1cm4gbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXhlcy5kYXRhKCk7IH0KICAgICAg
ICAgZmxvYXQgd2lkdGgoKSB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgICAgIGJvb2wgcnRsKCkg
eyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gUlRMOyB9CiAgICAgICAgIGhiX3NjcmlwdF90IHNjcmlw
dCgpIHsgcmV0dXJuIG1fc2NyaXB0OyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDAwN2RlODliNjhkNzQxMTBiNzdjNjM0
ZGI2NTA4MjRmZGQyYzE3Ny4uMWNlODBjMTU3YTViY2ViZjdjNjk0NTBlZmQ1MmI2MmQ4YjQ2NmE2
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTExLTA4ICBGdWppaSBIaXJvbm9yaSAgPEhp
cm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtIYXJmQnV6el0gSGFyZkJ1enpTaGFw
ZXIgc2hvdWxkIG5vdCBhc3N1bWUgbnVtR2x5cGhzIGlzIGdyZWF0ZXIgdGhhbiAwCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1u
by1nbHlwaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9y
ZXNvdXJjZXMvaWdub3JhYmxlcy53b2ZmOiBBZGRlZC4KKwogMjAxNi0xMS0wNyAgUnlhbiBIYWRk
YWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMjA4MzgyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvaGFyZmJ1enotcnVucy13aXRoLW5vLWdseXBoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwZjY3NWQyZjBiYmRjMmMxNDg0Njg0YjRjOTE0ZWZm
MzViODc3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSBAQAor4oCP2KfigI4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvaGFyZmJ1enotcnVucy13aXRoLW5vLWdseXBoLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGI0YTJmNTQ2NDU0N2ExNzgxZDgyODg4YjY5ZDRkOTkzNGY1ZjZhNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hhcmZidXp6
LXJ1bnMtd2l0aC1uby1nbHlwaC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8c3R5bGU+CitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogdGVzdC1m
b250OworICAgIHNyYzogdXJsKHJlc291cmNlcy9pZ25vcmFibGVzLndvZmYpOworfQorYm9keSB7
CisgICAgZm9udC1mYW1pbHk6IHRlc3QtZm9udDsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKzxwPiYj
eDIwMGY7JiN4MDYyNzsmI3gyMDBlOzwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAvLyBGb3JjZSBsYXlvdXQuCisgICAgdGVzdFJ1bm5lci5kaXNwbGF5KCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3Jlc291
cmNlcy9pZ25vcmFibGVzLndvZmYgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9yZXNvdXJjZXMvaWdub3JhYmxlcy53b2ZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNTQ0NTlkZDMzYjFlNGQ1
NjU5NjU2MjFmZDNjYTY5MWY4YTYxY2UKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExMjQKemNt
WFQtY1hSVSgzR3J1T1VgYiklVyZpQFYxT2BTQmpSfkNIKyFQb1g3JihBNEZNIzs+O0BDR3BwJTdv
Nyphc2tBCnoyODYzcUtSdEpNYWRsJjBWQiFKdENCV2pNMz9seClgYkkhODYoSFhnaCFhWCV8NHZU
TU8pTFA0PHBCQlNLckBeZQp6YyRLemhxJFp7UyNnK2lZRz1TS1FhfX0jKzIyYzx2Yl9VM28yNFdU
RjhmTFlPKz4jMlE3fDAhQkFrMF83ej51MyoKejBXXjtwJFlvI3lXM35XPnl1e3A4cGN2NTJqMj1N
c2RWaj5Hc318JUoxNjh2RzBNIVRzdkJMajAyQlY1TyR0ZWttCnppM3Vxd0RaSE0jZE8kYH1MZHUw
NzJoVj9TWnY1RDtiZVVpRW5ZQHRCVTU1aSZoZDBjT1opPGRQWGlKPkdmUU5aRwp6JnRZeyVIb2dn
MmR+OWBXaEhRfitxSFAqJjdIdnh8P2VTNCZXPik4VCVDaiY9VlR5SzNRU213YjYqe01VJlQ5bC0K
ekQ3WTQ0VX1SdHQleUk3Zz5Xfmotdl57bWJlRHFIMGMhdzZTWnVBeTF7IytGTip7aXxtV1I9NEEj
PTlwRDlKcTFyCnojPSNwV1p5ZGRHX1EwX2REO0JMPHd7cSFVX2lmZWhgTEZOb3NzM0pQemhRZGlg
V3lVSDwrY0I+KnpvcG11LT5vMwp6VXc9Mit1WHxIZGJIOENpfE5HPDg2WFRsfS1MOzhma2w1KGAz
K1B7UD58Vk5JcGIyQyVUeWNBRjVKRXJ2MH1PK04KemxtLVNsSGJGS3FnfGpTMmRJV2VGbWAqY2pm
eTVKazlrZ2d7b1o4czl2T0FOWG5jMTFZQzlVUV8haWZfc0JCPT9mCnpYJDtNNVkjeztAcDNPUlJW
Wm5qNTJoT2tnYUtBfkJPWTAwcl95VUhPOSlgUnx1NGJTbUFhZkVEKGkjI1orMSVJIQp6SFpYcFlJ
OU1hYiM7UzBac2x7TyopQnBlZjlWWSQkfE5yOz4xek02NEh6Zzl6MnkhIUlzPEF4Oz5xfCpVVWBS
VCkKei18bylHS1c2YldjZyYxdWFGdGxNIWA4QFkqfT97OUNxQFF0Q3lycFNgeDZxdmUmaW4lSVFw
bEZreDQ9X2ZLaSpsCnopMD01STFMR0g5Pl8tNG8weC1wWkZvK0VTeis/YlNFZnNUOEN2NDArV0ZY
TT8tKGYrQ1Z7TUNjcUMlO0pMK1QxRwp6I1IoQ05oVVEmczFVT304TnZLP1R7Xz5WeVpBKU02aWhx
MnxvVFgzaGR3PWZ2fDNCO3c7X28+TWUhM2FWVntaQkoKejttIWZ4ZUt6S2JqQE9HajNAU2R7SVRa
V2gmQ2F2R3c1Xip6T3VNO20tJXw/Kl9XWEkkYkFHP3Yqe05QciYzQlJXCnpvJFlwdSpCNlV0ZS0t
eCRlOSZPKl8yazVjKjQ3MmJ2KnM2YXc5ZXBUKEpxckw7fXEpPW9Bc0E3RDV5YF5ffjR1RQp6ZDZr
b2xaeU90TG93c3xrNjRTRHk0YFpJKXl5bGdFWXg9QDJfZjEtN0JFXm9xR1Y7dT15SlM/SEd4XlMm
dHM4QVQKekVBeEY8Yl9HU2U/KXA2YHZyWU5HXlAkUiFTOHNOQmJBMHxhYno3Z1JiOyg9Qk1jZkJs
VVRZUGZKU0s0PV9SUVpgCnohay1WX3MwPlZ0WU1WSHpiNE1aMVZARGJPSks2dkRyVVlCQmR2Vj1Z
PzNLbVI2QDdWSFgxbXNXSUBBJFZ4TWEkdApke2FwNjw7PSlAJmFSNXZYfEloTmNAY0BIWiEtYTdO
MHwxRjlzbE5hSwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294683</attachid>
            <date>2016-11-13 18:07:14 -0800</date>
            <delta_ts>2016-11-13 23:15:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164500-20161114110256.patch</filename>
            <type>text/plain</type>
            <size>7281</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNlODNkYzY5OTg2YTFl
NzZiYjY4ZjQ3MDUxOTQ0ODgxZDRiMDU0My4uYjM5OGFiNDM5NDRkY2YyMGQ1MDIwNjMwZGU0ODI5
MzA4ZDM3NTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTExLTEzICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtIYXJmQnV6
el0gSGFyZkJ1enpTaGFwZXIgc2hvdWxkIG5vdCBhc3N1bWUgbnVtR2x5cGhzIGlzIGdyZWF0ZXIg
dGhhbiAwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQ1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAg
ICBUZXN0OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5
cGguaHRtbAorCisgICAgICAgIEhhcmZCdXp6U2hhcGVyIGFzc3VtZXMgbnVtR2x5cGhzIG9mIEhh
cmZCdXp6UnVuIGlzIGdyZWF0ZXIgdGhhbgorICAgICAgICB6ZXJvLiBCdXQgdGhpcyBpcyBub3Qg
bmVjZXNzYXJpbHkgdHJ1ZS4gSWYgYSBmb250IGRvZXMgbm90IGhhdmUgYQorICAgICAgICBnbHlw
aCBvZiBTUEFDRSAoVSswMDIwKSwgSGFyZkJ1enogcmVtb3ZlcyBpZ25vcmFibGUgZ2x5cGhzLiBJ
bgorICAgICAgICB0aGlzIGNhc2UsIEhhcmZCdXp6UnVuIGNhbiBoYXZlIG5vIGdseXBocy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpIYXJmQnV6elJ1bjo6YXBwbHlTaGFw
ZVJlc3VsdCk6IFJlc2l6ZQorICAgICAgICBtX29mZnNldHMgdG8gb25lIGlmIG1fbnVtR2x5cGhz
IGlzIHplcm8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpT
aGFwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpIYXJmQnV6elJ1bjo6
Z2x5cGhzKTogVXNlIFZlY3Rvcjo6ZGF0YSgpCisgICAgICAgIGluc3RyZWFkIG9mIG9wZXJhdG9y
WzBdLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjphZHZh
bmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6
UnVuOjpvZmZzZXRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6
SGFyZkJ1enpSdW46OmdseXBoVG9DaGFyYWN0ZXJJbmRleGVzKTogRGl0dG8uCisKIDIwMTYtMTEt
MTMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4
IGJ1aWxkaW5nIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgY2xhbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBl
ci5jcHAKaW5kZXggNTVkNTllMjY5M2RiZjQ0NDgzZDExMjM5MmJhZTgwZTExMGNhNmUzZC4uNGQ2
ZGQxNjAzZTQ5N2UyZjljZWUwNGI0ZTM2NjYzZGI3NjRkMWE3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hh
cGVyLmNwcApAQCAtODMsNiArODMsMTEgQEAgSGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjpI
YXJmQnV6elJ1bihjb25zdCBGb250KiBmb250RGF0YSwgdW5zaWduZWQgc3RhcnRJbmQKIHZvaWQg
SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjphcHBseVNoYXBlUmVzdWx0KGhiX2J1ZmZlcl90
KiBoYXJmQnV6ekJ1ZmZlcikKIHsKICAgICBtX251bUdseXBocyA9IGhiX2J1ZmZlcl9nZXRfbGVu
Z3RoKGhhcmZCdXp6QnVmZmVyKTsKKyAgICBpZiAoIW1fbnVtR2x5cGhzKSB7CisgICAgICAgIC8v
IEhhcmZCdXp6U2hhcGVyOjpmaWxsR2x5cGhCdWZmZXIgZ2V0cyBvZmZzZXRzKClbMF0KKyAgICAg
ICAgbV9vZmZzZXRzLnJlc2l6ZSgxKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBtX2ds
eXBocy5yZXNpemUobV9udW1HbHlwaHMpOwogICAgIG1fYWR2YW5jZXMucmVzaXplKG1fbnVtR2x5
cGhzKTsKICAgICBtX2dseXBoVG9DaGFyYWN0ZXJJbmRleGVzLnJlc2l6ZShtX251bUdseXBocyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9I
YXJmQnV6elNoYXBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovSGFyZkJ1enpTaGFwZXIuaAppbmRleCA2NGQ0MGJlNzBlZGM5ZmE4MzZlZWFhNzkwMmQxYzBh
MzlhY2VmNjhlLi41OTNjODdjZDI3NTM0M2RlNWFkYWQwMDY0ZGE1MzM3MTEyNmRhMDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6
elNoYXBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L0hhcmZCdXp6U2hhcGVyLmgKQEAgLTc3LDEwICs3NywxMCBAQCBwcml2YXRlOgogICAgICAgICB1
bnNpZ25lZCBzdGFydEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydEluZGV4OyB9CiAgICAg
ICAgIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX251bUNoYXJhY3Rl
cnM7IH0KICAgICAgICAgdW5zaWduZWQgbnVtR2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9udW1H
bHlwaHM7IH0KLSAgICAgICAgdWludDE2X3QqIGdseXBocygpIHsgcmV0dXJuICZtX2dseXBoc1sw
XTsgfQotICAgICAgICBmbG9hdCogYWR2YW5jZXMoKSB7IHJldHVybiAmbV9hZHZhbmNlc1swXTsg
fQotICAgICAgICBGbG9hdFBvaW50KiBvZmZzZXRzKCkgeyByZXR1cm4gJm1fb2Zmc2V0c1swXTsg
fQotICAgICAgICB1aW50MTZfdCogZ2x5cGhUb0NoYXJhY3RlckluZGV4ZXMoKSB7IHJldHVybiAm
bV9nbHlwaFRvQ2hhcmFjdGVySW5kZXhlc1swXTsgfQorICAgICAgICB1aW50MTZfdCogZ2x5cGhz
KCkgeyByZXR1cm4gbV9nbHlwaHMuZGF0YSgpOyB9CisgICAgICAgIGZsb2F0KiBhZHZhbmNlcygp
IHsgcmV0dXJuIG1fYWR2YW5jZXMuZGF0YSgpOyB9CisgICAgICAgIEZsb2F0UG9pbnQqIG9mZnNl
dHMoKSB7IHJldHVybiBtX29mZnNldHMuZGF0YSgpOyB9CisgICAgICAgIHVpbnQxNl90KiBnbHlw
aFRvQ2hhcmFjdGVySW5kZXhlcygpIHsgcmV0dXJuIG1fZ2x5cGhUb0NoYXJhY3RlckluZGV4ZXMu
ZGF0YSgpOyB9CiAgICAgICAgIGZsb2F0IHdpZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQogICAg
ICAgICBib29sIHJ0bCgpIHsgcmV0dXJuIG1fZGlyZWN0aW9uID09IFJUTDsgfQogICAgICAgICBo
Yl9zY3JpcHRfdCBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdDsgfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM2MmI2YmY4
ZDEzYjBhOTBlMDJmZDRkZWZjYTYxNTRlNjEzMWZkNWUuLmM3YTA5MWJlODM3NThlNjdkYmRkNzU5
MDhlNGI5MGFmYzAwODE2ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMS0xMyAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAgICAgICBbSGFyZkJ1
enpdIEhhcmZCdXp6U2hhcGVyIHNob3VsZCBub3QgYXNzdW1lIG51bUdseXBocyBpcyBncmVhdGVy
IHRoYW4gMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0NTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgQy4gTWF4ZmllbGQuCisKKyAgICAg
ICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGgt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9o
YXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGguaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvcmVzb3VyY2VzL2lnbm9yYWJsZXMud29mZjogQWRkZWQuCisKIDIw
MTYtMTEtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGEgd2F5IHRvIGdldCB0aGUgVUktc2lkZSBzY3JvbGxpbmcgdHJlZSBhcyB0ZXh0IHZp
YSBVSVNjcmlwdENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8t
Z2x5cGgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMGY2NzVkMmYwYmJkYzJjMTQ4NDY4NGI0
YzkxNGVmZjM1Yjg3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGgtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEgQEAKK+KAj9in4oCOCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9oYXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGguaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hhcmZidXp6LXJ1bnMtd2l0aC1uby1nbHlwaC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiNGEyZjU0NjQ1NDdhMTc4MWQ4Mjg4OGI2OWQ0ZDk5MzRmNWY2YTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9o
YXJmYnV6ei1ydW5zLXdpdGgtbm8tZ2x5cGguaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6
IHRlc3QtZm9udDsKKyAgICBzcmM6IHVybChyZXNvdXJjZXMvaWdub3JhYmxlcy53b2ZmKTsKK30K
K2JvZHkgeworICAgIGZvbnQtZmFtaWx5OiB0ZXN0LWZvbnQ7Cit9Cis8L3N0eWxlPgorPGJvZHk+
Cis8cD4mI3gyMDBmOyYjeDA2Mjc7JiN4MjAwZTs8L3A+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgLy8gRm9yY2UgbGF5b3V0LgorICAgIHRlc3RSdW5uZXIuZGlzcGxh
eSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9yZXNvdXJjZXMvaWdub3JhYmxlcy53b2ZmIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvcmVzb3VyY2VzL2lnbm9yYWJsZXMud29mZgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjU0NDU5ZGQz
M2IxZTRkNTY1OTY1NjIxZmQzY2E2OTFmOGE2MWNlCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAx
MTI0CnpjbVhULWNYUlUoM0dydU9VYGIpJVcmaUBWMU9gU0JqUn5DSCshUG9YNyYoQTRGTSM7PjtA
Q0dwcCU3bzcqYXNrQQp6Mjg2M3FLUnRKTWFkbCYwVkIhSnRDQldqTTM/bHgpYGJJITg2KEhYZ2gh
YVglfDR2VE1PKUxQNDxwQkJTS3JAXmUKemMkS3pocSRae1MjZytpWUc9U0tRYX19IysyMmM8dmJf
VTNvMjRXVEY4ZkxZTys+IzJRN3wwIUJBazBfN3o+dTMqCnowV147cCRZbyN5VzN+Vz55dXtwOHBj
djUyajI9TXNkVmo+R3N9fCVKMTY4dkcwTSFUc3ZCTGowMkJWNU8kdGVrbQp6aTN1cXdEWkhNI2RP
JGB9TGR1MDcyaFY/U1p2NUQ7YmVVaUVuWUB0QlU1NWkmaGQwY09aKTxkUFhpSj5HZlFOWkcKeiZ0
WXslSG9nZzJkfjlgV2hIUX4rcUhQKiY3SHZ4fD9lUzQmVz4pOFQlQ2omPVZUeUszUVNtd2I2KntN
VSZUOWwtCnpEN1k0NFV9UnR0JXlJN2c+V35qLXZee21iZURxSDBjIXc2U1p1QXkxeyMrRk4qe2l8
bVdSPTRBIz05cEQ5SnExcgp6Iz0jcFdaeWRkR19RMF9kRDtCTDx3e3EhVV9pZmVoYExGTm9zczNK
UHpoUWRpYFd5VUg8K2NCPip6b3BtdS0+bzMKelV3PTIrdVh8SGRiSDhDaXxORzw4NlhUbH0tTDs4
ZmtsNShgMytQe1A+fFZOSXBiMkMlVHljQUY1SkVydjB9TytOCnpsbS1TbEhiRktxZ3xqUzJkSVdl
Rm1gKmNqZnk1Sms5a2dne29aOHM5dk9BTlhuYzExWUM5VVFfIWlmX3NCQj0/Zgp6WCQ7TTVZI3s7
QHAzT1JSVlpuajUyaE9rZ2FLQX5CT1kwMHJfeVVITzkpYFJ8dTRiU21BYWZFRChpIyNaKzElSSEK
ekhaWHBZSTlNYWIjO1MwWnNse08qKUJwZWY5VlkkJHxOcjs+MXpNNjRIemc5ejJ5ISFJczxBeDs+
cXwqVVVgUlQpCnotfG8pR0tXNmJXY2cmMXVhRnRsTSFgOEBZKn0/ezlDcUBRdEN5cnBTYHg2cXZl
JmluJUlRcGxGa3g0PV9mS2kqbAp6KTA9NUkxTEdIOT5fLTRvMHgtcFpGbytFU3orP2JTRWZzVDhD
djQwK1dGWE0/LShmK0NWe01DY3FDJTtKTCtUMUcKeiNSKENOaFVRJnMxVU99OE52Sz9Ue18+Vnla
QSlNNmlocTJ8b1RYM2hkdz1mdnwzQjt3O19vPk1lITNhVlZ7WkJKCno7bSFmeGVLektiakBPR2oz
QFNke0lUWldoJkNhdkd3NV4qek91TTttLSV8PypfV1hJJGJBRz92KntOUHImM0JSVwp6byRZcHUq
QjZVdGUtLXgkZTkmTypfMms1Yyo0NzJidipzNmF3OWVwVChKcXJMO31xKT1vQXNBN0Q1eWBeX340
dUUKemQ2a29sWnlPdExvd3N8azY0U0R5NGBaSSl5eWxnRVl4PUAyX2YxLTdCRV5vcUdWO3U9eUpT
P0hHeF5TJnRzOEFUCnpFQXhGPGJfR1NlPylwNmB2cllOR15QJFIhUzhzTkJiQTB8YWJ6N2dSYjso
PUJNY2ZCbFVUWVBmSlNLND1fUlFaYAp6IWstVl9zMD5WdFlNVkh6YjRNWjFWQERiT0pLNnZEclVZ
QkJkdlY9WT8zS21SNkA3VkhYMW1zV0lAQSRWeE1hJHQKZHthcDY8Oz0pQCZhUjV2WHxJaE5jQGNA
SFohLWE3TjB8MUY5c2xOYUsKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>