<?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>111939</bug_id>
          
          <creation_ts>2013-03-10 09:32:50 -0700</creation_ts>
          <short_desc>Global FontPlatformData cache should use OwnPtr.</short_desc>
          <delta_ts>2013-04-04 13:33:53 -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>Text</component>
          <version>528+ (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>
          <dependson>113954</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>cdumez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>junov</cc>
    
    <cc>kling</cc>
    
    <cc>mifenton</cc>
    
    <cc>noam</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>851913</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-03-10 09:32:50 -0700</bug_when>
    <thetext>Global FontPlatformData cache should use OwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851914</commentid>
    <comment_count>1</comment_count>
      <attachid>192376</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-03-10 09:34:45 -0700</bug_when>
    <thetext>Created attachment 192376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851915</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 09:38:09 -0700</bug_when>
    <thetext>Attachment 192376 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.h&apos;, u&apos;Source/WebCore/platform/graphics/blackberry/FontCacheBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp&apos;, u&apos;Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/FontCacheMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/qt/FontCacheQt.cpp&apos;, u&apos;Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCacheWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/wince/FontCacheWinCE.cpp&apos;, u&apos;Source/WebCore/platform/graphics/wx/FontCacheWx.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/FontCache.cpp:209:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/platform/graphics/FontCache.cpp:210:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851916</commentid>
    <comment_count>3</comment_count>
      <attachid>192376</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-10 09:39:16 -0700</bug_when>
    <thetext>Comment on attachment 192376
Patch

Attachment 192376 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17118021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851917</commentid>
    <comment_count>4</comment_count>
      <attachid>192376</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 09:39:21 -0700</bug_when>
    <thetext>Comment on attachment 192376
Patch

Attachment 192376 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17024086</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851918</commentid>
    <comment_count>5</comment_count>
      <attachid>192376</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 09:39:46 -0700</bug_when>
    <thetext>Comment on attachment 192376
Patch

Attachment 192376 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17164006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851919</commentid>
    <comment_count>6</comment_count>
      <attachid>192376</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-10 09:39:49 -0700</bug_when>
    <thetext>Comment on attachment 192376
Patch

Attachment 192376 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17148013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851920</commentid>
    <comment_count>7</comment_count>
      <attachid>192376</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-10 09:40:36 -0700</bug_when>
    <thetext>Comment on attachment 192376
Patch

Attachment 192376 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17142050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851921</commentid>
    <comment_count>8</comment_count>
      <attachid>192377</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-03-10 09:43:51 -0700</bug_when>
    <thetext>Created attachment 192377
Patch

Less 0, more nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851922</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 09:45:20 -0700</bug_when>
    <thetext>Attachment 192377 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.h&apos;, u&apos;Source/WebCore/platform/graphics/blackberry/FontCacheBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp&apos;, u&apos;Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/FontCacheMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/qt/FontCacheQt.cpp&apos;, u&apos;Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCacheWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/wince/FontCacheWinCE.cpp&apos;, u&apos;Source/WebCore/platform/graphics/wx/FontCacheWx.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/FontCache.cpp:209:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/platform/graphics/FontCache.cpp:210:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851923</commentid>
    <comment_count>10</comment_count>
      <attachid>192377</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 09:47:51 -0700</bug_when>
    <thetext>Comment on attachment 192377
Patch

Attachment 192377 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17023323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851926</commentid>
    <comment_count>11</comment_count>
      <attachid>192377</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-10 09:48:47 -0700</bug_when>
    <thetext>Comment on attachment 192377
Patch

Attachment 192377 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17131076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851927</commentid>
    <comment_count>12</comment_count>
      <attachid>192377</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-10 09:49:29 -0700</bug_when>
    <thetext>Comment on attachment 192377
Patch

Attachment 192377 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17164010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851928</commentid>
    <comment_count>13</comment_count>
      <attachid>192377</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-10 09:49:54 -0700</bug_when>
    <thetext>Comment on attachment 192377
Patch

Attachment 192377 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17017843</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851929</commentid>
    <comment_count>14</comment_count>
      <attachid>192377</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 09:52:42 -0700</bug_when>
    <thetext>Comment on attachment 192377
Patch

Attachment 192377 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17131078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851930</commentid>
    <comment_count>15</comment_count>
      <attachid>192378</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-03-10 09:57:53 -0700</bug_when>
    <thetext>Created attachment 192378
Patch

Even less 0, even more nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851931</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 10:01:05 -0700</bug_when>
    <thetext>Attachment 192378 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.h&apos;, u&apos;Source/WebCore/platform/graphics/blackberry/FontCacheBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp&apos;, u&apos;Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/FontCacheMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/qt/FontCacheQt.cpp&apos;, u&apos;Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCacheWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/wince/FontCacheWinCE.cpp&apos;, u&apos;Source/WebCore/platform/graphics/wx/FontCacheWx.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/FontCache.cpp:209:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/platform/graphics/FontCache.cpp:210:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856127</commentid>
    <comment_count>17</comment_count>
      <attachid>192378</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 11:24:34 -0700</bug_when>
    <thetext>Comment on attachment 192378
Patch

Rejecting attachment 192378 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 192378, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
 file Source/WebCore/platform/graphics/qt/FontCacheQt.cpp
patching file Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp
patching file Source/WebCore/platform/graphics/win/FontCacheWin.cpp
patching file Source/WebCore/platform/graphics/wince/FontCacheWinCE.cpp
patching file Source/WebCore/platform/graphics/wx/FontCacheWx.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Anders Carlsson&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://webkit-commit-queue.appspot.com/results/17122572</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869194</commentid>
    <comment_count>18</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-04-04 09:35:49 -0700</bug_when>
    <thetext>Committed r147639: &lt;http://trac.webkit.org/changeset/147639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869275</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 12:23:36 -0700</bug_when>
    <thetext>This patch seems to cause assertions in EFL API tests:
ASSERTION FAILED: m_table
/home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WTF/wtf/HashTable.h(210) : void WTF::HashTableConstIterator&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::checkValidity() const [with Key = WebCore::FontPlatformDataCacheKey, Value = WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, HashFunctions = WebCore::FontPlatformDataCacheKeyHash, Traits = WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, KeyTraits = WebCore::FontPlatformDataCacheKeyTraits]
1   0x2b82fefeb70f WTF::HashTableConstIterator&lt;WebCore::FontPlatformDataCacheKey, WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyHash, WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyTraits&gt;::checkValidity() const
2   0x2b82fefe90d8 WTF::HashTableConstIterator&lt;WebCore::FontPlatformDataCacheKey, WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyHash, WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyTraits&gt;::get() const
3   0x2b82fefe644c WTF::HashTableIterator&lt;WebCore::FontPlatformDataCacheKey, WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyHash, WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyTraits&gt;::get() const
4   0x2b82fefe4928 WTF::HashTableIterator&lt;WebCore::FontPlatformDataCacheKey, WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::FontPlatformDataCacheKey, WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyHash, WTF::HashMapValueTraits&lt;WebCore::FontPlatformDataCacheKeyTraits, WTF::HashTraits&lt;WTF::OwnPtr&lt;WebCore::FontPlatformData&gt; &gt; &gt;, WebCore::FontPlatformDataCacheKeyTraits&gt;::operator-&gt;() const
5   0x2b82fefe2cec WebCore::FontCache::getCachedFontPlatformData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, bool)
6   0x2b82fefe2d68 WebCore::FontCache::getCachedFontData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, bool, WebCore::FontCache::ShouldRetain)
7   0x2b82fe72406c
8   0x2b82fe724494 WebCore::CSSFontSelector::getFontData(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;)
9   0x2b82fefe39d8 WebCore::FontCache::getFontData(WebCore::Font const&amp;, int&amp;, WebCore::FontSelector*)
10  0x2b82feff00cb WebCore::FontFallbackList::fontDataAt(WebCore::Font const*, unsigned int) const
11  0x2b82febc5384 WebCore::FontFallbackList::primaryFontData(WebCore::Font const*) const
12  0x2b82febc5335 WebCore::FontFallbackList::primarySimpleFontData(WebCore::Font const*)
13  0x2b82febc545a WebCore::Font::primaryFont() const
14  0x2b82febc53ac WebCore::Font::fontMetrics() const
15  0x2b82ff346c86 WebCore::RenderStyle::fontMetrics() const
16  0x2b82ff346f72 WebCore::RenderStyle::computedLineHeight(WebCore::RenderView*) const
17  0x2b82ff156de6 WebCore::RenderBlock::lineHeight(bool, WebCore::LineDirectionMode, WebCore::LinePositionMode) const
18  0x2b82ff18a4e3
19  0x2b82ff19bd86 WebCore::LineWidth::updateAvailableWidth(WebCore::LayoutUnit)
20  0x2b82ff19bba6 WebCore::LineWidth::LineWidth(WebCore::RenderBlock*, bool, WebCore::IndentTextOrNot)
21  0x2b82ff19542a WebCore::RenderBlock::LineBreaker::nextSegmentBreak(WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::LineInfo&amp;, WebCore::RenderBlock::RenderTextInfo&amp;, WebCore::RenderBlock::FloatingObject*, unsigned int, WTF::Vector&lt;WebCore::WordMeasurement, 64ul&gt;&amp;)
22  0x2b82ff194f65 WebCore::RenderBlock::LineBreaker::nextLineBreak(WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::LineInfo&amp;, WebCore::RenderBlock::RenderTextInfo&amp;, WebCore::RenderBlock::FloatingObject*, unsigned int, WTF::Vector&lt;WebCore::WordMeasurement, 64ul&gt;&amp;)
23  0x2b82ff18fb07 WebCore::RenderBlock::layoutRunsAndFloatsInRange(WebCore::LineLayoutState&amp;, WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::InlineIterator const&amp;, WebCore::BidiStatus const&amp;, unsigned int)
24  0x2b82ff18f3fd WebCore::RenderBlock::layoutRunsAndFloats(WebCore::LineLayoutState&amp;, bool)
25  0x2b82ff191dcc WebCore::RenderBlock::layoutInlineChildren(bool, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;)
26  0x2b82ff13bb95 WebCore::RenderBlock::layoutBlock(bool, WebCore::LayoutUnit)
27  0x2b82ff13b143 WebCore::RenderBlock::layout()
28  0x2b82ff14092e WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;)
29  0x2b82ff14052a WebCore::RenderBlock::layoutBlockChildren(bool, WebCore::LayoutUnit&amp;)
30  0x2b82ff13bbb6 WebCore::RenderBlock::layoutBlock(bool, WebCore::LayoutUnit)
31  0x2b82ff13b143 WebCore::RenderBlock::layout()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869286</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 12:40:54 -0700</bug_when>
    <thetext>Proper gdb backtrace: http://pastebin.com/dVhBAXhy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869305</commentid>
    <comment_count>21</comment_count>
      <attachid>192378</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 13:15:02 -0700</bug_when>
    <thetext>Comment on attachment 192378
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.cpp:213
&gt; +                FontPlatformData* fontPlatformDataForAlternateName = getCachedFontPlatformData(fontDescription, alternateName, true);

This is a recursive call to getCachedFontPlatformData(). Are we sure the iterator stays valid after the call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869317</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-04-04 13:33:53 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 192378 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192378&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/FontCache.cpp:213
&gt; &gt; +                FontPlatformData* fontPlatformDataForAlternateName = getCachedFontPlatformData(fontDescription, alternateName, true);
&gt; 
&gt; This is a recursive call to getCachedFontPlatformData(). Are we sure the iterator stays valid after the call?

I uploaded a follow-up fix at Bug 113954.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192376</attachid>
            <date>2013-03-10 09:34:45 -0700</date>
            <delta_ts>2013-03-10 09:43:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111939.diff</filename>
            <type>text/plain</type>
            <size>17331</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNDJhNjczLi40NDhjNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDQg
QEAKIDIwMTMtMDMtMTAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIEdsb2JhbCBGb250UGxhdGZvcm1EYXRhIGNhY2hlIHNob3VsZCB1c2UgT3duUHRyLgorICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTE5Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV0IHRoZSBnbG9iYWwgRm9udFBsYXRmb3JtRGF0
YSB1c2UgT3duUHRyIGluc3RlYWQgb2YgcmF3IHBvaW50ZXJzICsgZGVsZXRlQWxsVmFsdWVzKCku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0ZSk6CisKKyAgICAgICAgICAgIFR3ZWFrZWQgY29k
ZSBmb3IgT3duUHRyLiBBbHNvIG1hZGUgZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpIGRvIG9u
ZSBoYXNoIGxvb2t1cAorICAgICAgICAgICAgaW5zdGVhZCBvZiB0d28uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9Gb250Q2FjaGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9u
dENhY2hlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRDYWNoZVd4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisKKyAgICAg
ICAgICAgIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSgpIG5vdyByZXR1cm5zIGEg
UGFzc093blB0ci4KKworMjAxMy0wMy0xMCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CisKICAgICAgICAgR2x5cGhNZXRyaWNzTWFwIHNob3VsZCB1c2UgT3duUHRyLgogICAgICAg
ICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTE5Mzc+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDBkNGU4NGEuLjMxNmE1OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMTI1
LDcgKzEyNSw3IEBAIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXlIYXNoIHsKIAogc3Ry
dWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleVRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNo
VHJhaXRzPEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleT4geyB9OwogCi10eXBlZGVmIEhhc2hNYXA8
Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5LCBGb250UGxhdGZvcm1EYXRhKiwgRm9udFBsYXRmb3Jt
RGF0YUNhY2hlS2V5SGFzaCwgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5VHJhaXRzPiBGb250UGxh
dGZvcm1EYXRhQ2FjaGU7Cit0eXBlZGVmIEhhc2hNYXA8Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5
LCBPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4sIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhhc2gs
IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleVRyYWl0cz4gRm9udFBsYXRmb3JtRGF0YUNhY2hlOwog
CiBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YUNhY2hlKiBnRm9udFBsYXRmb3JtRGF0YUNhY2hlID0g
MDsKIApAQCAtMjAwLDI5ICsyMDAsMjQgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpn
ZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KICAgICBG
b250UGxhdGZvcm1EYXRhQ2FjaGVLZXkga2V5KGZhbWlseU5hbWUsIGZvbnREZXNjcmlwdGlvbi5j
b21wdXRlZFBpeGVsU2l6ZSgpLCBmb250RGVzY3JpcHRpb24ud2VpZ2h0KCksIGZvbnREZXNjcmlw
dGlvbi5pdGFsaWMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi51c2VQcmludGVyRm9udCgpLCBmb250RGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgp
LCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSk7Ci0gICAgRm9udFBsYXRm
b3JtRGF0YSogcmVzdWx0ID0gMDsKLSAgICBib29sIGZvdW5kUmVzdWx0OwotICAgIEZvbnRQbGF0
Zm9ybURhdGFDYWNoZTo6aXRlcmF0b3IgaXQgPSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5maW5k
KGtleSk7Ci0gICAgaWYgKGl0ID09IGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPmVuZCgpKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBm
YW1pbHlOYW1lKTsKLSAgICAgICAgZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+c2V0KGtleSwgcmVz
dWx0KTsKLSAgICAgICAgZm91bmRSZXN1bHQgPSByZXN1bHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgcmVzdWx0ID0gaXQtPnZhbHVlOwotICAgICAgICBmb3VuZFJlc3VsdCA9IHRydWU7Ci0gICAg
fQogCi0gICAgaWYgKCFmb3VuZFJlc3VsdCAmJiAhY2hlY2tpbmdBbHRlcm5hdGVOYW1lKSB7Ci0g
ICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGZpbmQgYSBmb250LiAgV2UgaGF2ZSBhIHNtYWxs
IHNldCBvZiBmb250cyB0aGF0IHdlIGFsaWFzIHRvIG90aGVyIG5hbWVzLCAKLSAgICAgICAgLy8g
ZS5nLiwgQXJpYWwvSGVsdmV0aWNhLCBDb3VyaWVyL0NvdXJpZXIgTmV3LCBldGMuICBUcnkgbG9v
a2luZyB1cCB0aGUgZm9udCB1bmRlciB0aGUgYWxpYXNlZCBuYW1lLgotICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGFsdGVybmF0ZU5hbWUgPSBhbHRlcm5hdGVGYW1pbHlOYW1lKGZhbWlseU5h
bWUpOwotICAgICAgICBpZiAoIWFsdGVybmF0ZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmVzdWx0ID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGFsdGVy
bmF0ZU5hbWUsIHRydWUpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgZ0ZvbnRQ
bGF0Zm9ybURhdGFDYWNoZS0+c2V0KGtleSwgbmV3IEZvbnRQbGF0Zm9ybURhdGEoKnJlc3VsdCkp
OyAvLyBDYWNoZSB0aGUgcmVzdWx0IHVuZGVyIHRoZSBvbGQgbmFtZS4KKyAgICBGb250UGxhdGZv
cm1EYXRhQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5h
ZGQoa2V5LCAwKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9u
LCBmYW1pbHlOYW1lKTsKKworICAgICAgICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUgJiYg
IWNoZWNraW5nQWx0ZXJuYXRlTmFtZSkgeworICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUg
dG8gZmluZCBhIGZvbnQuICBXZSBoYXZlIGEgc21hbGwgc2V0IG9mIGZvbnRzIHRoYXQgd2UgYWxp
YXMgdG8gb3RoZXIgbmFtZXMsCisgICAgICAgICAgICAvLyBlLmcuLCBBcmlhbC9IZWx2ZXRpY2Es
IENvdXJpZXIvQ291cmllciBOZXcsIGV0Yy4gIFRyeSBsb29raW5nIHVwIHRoZSBmb250IHVuZGVy
IHRoZSBhbGlhc2VkIG5hbWUuCisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFsdGVy
bmF0ZU5hbWUgPSBhbHRlcm5hdGVGYW1pbHlOYW1lKGZhbWlseU5hbWUpOworICAgICAgICAgICAg
aWYgKCFhbHRlcm5hdGVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEZvbnRQbGF0
Zm9ybURhdGEqIGZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lID0gZ2V0Q2FjaGVkRm9u
dFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGFsdGVybmF0ZU5hbWUsIHRydWUpOworICAg
ICAgICAgICAgICAgIGlmIChmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UHRyKG5ldyBGb250
UGxhdGZvcm1EYXRhKCpmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogI2lmIEVOQUJMRShPUEVOVFlQ
RV9WRVJUSUNBTCkKQEAgLTQxMSw3ICs0MDYsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHVyZ2VJbmFj
dGl2ZUZvbnREYXRhKGludCBjb3VudCkKICAgICAgICAgCiAgICAgICAgIHNpemVfdCBrZXlzVG9S
ZW1vdmVDb3VudCA9IGtleXNUb1JlbW92ZS5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwga2V5c1RvUmVtb3ZlQ291bnQ7ICsraSkKLSAgICAgICAgICAgIGRlbGV0ZSBnRm9u
dFBsYXRmb3JtRGF0YUNhY2hlLT50YWtlKGtleXNUb1JlbW92ZVtpXSk7CisgICAgICAgICAgICBn
Rm9udFBsYXRmb3JtRGF0YUNhY2hlLT5yZW1vdmUoa2V5c1RvUmVtb3ZlW2ldKTsKICAgICB9CiAK
ICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCkBAIC01MzYsMTEgKzUzMSw4IEBAIHZvaWQg
Rm9udENhY2hlOjppbnZhbGlkYXRlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChnRm9udFBsYXRmb3JtRGF0YUNhY2hlKSB7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcygqZ0Zv
bnRQbGF0Zm9ybURhdGFDYWNoZSk7Ci0gICAgICAgIGRlbGV0ZSBnRm9udFBsYXRmb3JtRGF0YUNh
Y2hlOwotICAgICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlID0gbmV3IEZvbnRQbGF0Zm9ybURh
dGFDYWNoZTsKLSAgICB9CisgICAgaWYgKGdGb250UGxhdGZvcm1EYXRhQ2FjaGUpCisgICAgICAg
IGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPmNsZWFyKCk7CiAKICAgICBnR2VuZXJhdGlvbisrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IGZj
NzYyM2UuLjUxM2QwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZXNlIG1l
dGhvZHMgYXJlIGltcGxlbWVudGVkIGJ5IGVhY2ggcGxhdGZvcm0uCiAgICAgUGFzc1JlZlB0cjxT
aW1wbGVGb250RGF0YT4gZ2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udCYpOwot
ICAgIEZvbnRQbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworICAgIFBhc3NPd25QdHI8
Rm9udFBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAKICAgICBQYXNzUmVmUHRyPFNp
bXBsZUZvbnREYXRhPiBnZXRDYWNoZWRGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhKiwg
U2hvdWxkUmV0YWluID0gUmV0YWluKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVCbGFja0JlcnJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udENhY2hlQmxhY2tCZXJy
eS5jcHAKaW5kZXggMDhkMmYxMS4uNjBiNjVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVCbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJs
YWNrQmVycnkuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgaW50IGZvbnRXZWlnaHRUb0ZvbnRjb25m
aWdXZWlnaHQoRm9udFdlaWdodCB3ZWlnaHQpCiAgICAgfQogfQogCi1Gb250UGxhdGZvcm1EYXRh
KiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQorUGFzc093blB0
cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYg
ZmFtaWx5KQogewogICAgIC8vIFRoZSBDU1MgZm9udCBtYXRjaGluZyBhbGdvcml0aG0gKGh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtZm9udHMvI2ZvbnQtbWF0Y2hpbmctYWxnb3JpdGhtKQogICAg
IC8vIHNheXMgdGhhdCB3ZSBtdXN0IGZpbmQgYW4gZXhhY3QgbWF0Y2ggZm9yIGZvbnQgZmFtaWx5
LCBzbGFudCAoaXRhbGljIG9yIG9ibGlxdWUgY2FuIGJlIHVzZWQpCkBAIC0yNDcsNyArMjQ3LDcg
QEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICIgJXNcbiIsIG5hbWUpOwogCi0gICAgcmV0dXJuIG5ldyBGb250UGxhdGZv
cm1EYXRhKG5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwgc2hvdWxkRmFrZUJv
bGQsIHNob3VsZEZha2VJdGFsaWMsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250
RGVzY3JpcHRpb24udGV4dE9yaWVudGF0aW9uKCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Rm9udFBsYXRmb3JtRGF0YShuYW1lLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCksIHNo
b3VsZEZha2VCb2xkLCBzaG91bGRGYWtlSXRhbGljLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRp
b24oKSwgZm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlvbigpKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKaW5kZXggM2Y1M2RkZi4u
MGJkNzFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUZv
bnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1p
bHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBs
YXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgY29uc3QgY2hhciogbmFtZSA9IDA7CiAgICAg
Q1N0cmluZyBuYW1lU3RyaW5nOyAvLyBLZWVwcyBuYW1lIHZhbGlkIHdpdGhpbiBzY29wZSBvZiB0
aGlzIGZ1bmN0aW9uIGluIGNhc2UgdGhhdCBuYW1lIGlzIGZyb20gYSBmYW1pbHkuCkBAIC0yMDcs
NyArMjA3LDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZv
cm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICB9CiAKICAgICBTa1NhZmVV
bnJlZih0eXBlZmFjZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRQdHIo
cmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwCmluZGV4IGRiYWQ1NzEuLmRkNzc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVl
VHlwZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBpbnQgZm9udFdlaWdodFRvRm9udGNvbmZpZ1dl
aWdodChGb250V2VpZ2h0IHdlaWdodCkKICAgICB9CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZv
bnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1p
bHkpCiB7CiAgICAgLy8gVGhlIENTUyBmb250IG1hdGNoaW5nIGFsZ29yaXRobSAoaHR0cDovL3d3
dy53My5vcmcvVFIvY3NzMy1mb250cy8jZm9udC1tYXRjaGluZy1hbGdvcml0aG0pCiAgICAgLy8g
c2F5cyB0aGF0IHdlIG11c3QgZmluZCBhbiBleGFjdCBtYXRjaCBmb3IgZm9udCBmYW1pbHksIHNs
YW50IChpdGFsaWMgb3Igb2JsaXF1ZSBjYW4gYmUgdXNlZCkKQEAgLTIyMCwxMyArMjIwLDExIEBA
IEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250IGhh
cyBhbiBlbmNvZGluZyBjb21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBjdXJy
ZW50bHkKICAgICAvLyBzdXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNoYXJJ
bmRleDogVW5pY29kZSwgU3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMgZm9u
dCBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2VsZWN0
IGl0LgotICAgIEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IG5ldyBGb250UGxhdGZv
cm1EYXRhKHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbik7Ci0gICAgaWYgKCFw
bGF0Zm9ybURhdGEtPmhhc0NvbXBhdGlibGVDaGFybWFwKCkpIHsKLSAgICAgICAgZGVsZXRlIHBs
YXRmb3JtRGF0YTsKKyAgICBPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gcGxhdGZvcm1EYXRhID0g
YWRvcHRQdHIobmV3IEZvbnRQbGF0Zm9ybURhdGEocmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKSk7CisgICAgaWYgKCFwbGF0Zm9ybURhdGEtPmhhc0NvbXBhdGlibGVDaGFybWFw
KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KIAotICAgIHJldHVybiBwbGF0Zm9ybURhdGE7
CisgICAgcmV0dXJuIHBsYXRmb3JtRGF0YS5yZWxlYXNlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCmluZGV4
IDUxNzE4MWEuLjdkMWQ0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgRm9u
dENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUs
IFZlY3Rvcjx1bnNpZ25lCiAgICAgW1dlYkZvbnRDYWNoZSBnZXRUcmFpdHM6dHJhaXRzTWFza3Mg
aW5GYW1pbHk6ZmFtaWx5TmFtZV07CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9y
bURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAg
ICAgTlNGb250VHJhaXRNYXNrIHRyYWl0cyA9IGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKSA/IE5T
Rm9udEl0YWxpY1RyYWl0IDogMDsKICAgICBOU0ludGVnZXIgd2VpZ2h0ID0gdG9BcHBLaXRGb250
V2VpZ2h0KGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSk7CkBAIC0yNDEsNyArMjQxLDcgQEAgRm9u
dFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udEQKICAgICBPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gcGxhdGZv
cm1EYXRhID0gYWRvcHRQdHIobmV3IEZvbnRQbGF0Zm9ybURhdGEocGxhdGZvcm1Gb250LCBzaXpl
LCBmb250RGVzY3JpcHRpb24udXNlUHJpbnRlckZvbnQoKSwgc3ludGhldGljQm9sZCwgc3ludGhl
dGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlv
bi53aWR0aFZhcmlhbnQoKSkpOwogICAgIGlmICghcGxhdGZvcm1EYXRhLT5mb250KCkpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBwbGF0Zm9ybURhdGEubGVha1B0cigpOworICAgIHJl
dHVybiBwbGF0Zm9ybURhdGEucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2Fj
aGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVR
dC5jcHAKaW5kZXggNmQxZWU3Mi4uOGRjNjg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcApAQCAtODgsMTIgKzg4LDEyIEBA
IHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBW
ZWN0b3I8dW5zaWduZWQ+JikKIHsKIH0KIAotRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpj
cmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0
aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCitQYXNzT3duUHRyPEZvbnRQbGF0
Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1l
KQogewogICAgIFFGb250RGF0YWJhc2UgZGI7CiAgICAgaWYgKCFkYi5oYXNGYW1pbHkoZmFtaWx5
TmFtZSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgRm9udFBsYXRmb3JtRGF0
YShmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Rm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9Gb250Q2FjaGVTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5jcHAKaW5kZXggZDJmMDg4ZS4uNmRkNGEwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q2Fj
aGVTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0Zv
bnRDYWNoZVNraWEuY3BwCkBAIC0xMjksOCArMTI5LDcgQEAgdm9pZCBGb250Q2FjaGU6OmdldFRy
YWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi1Gb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNo
ZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgY29uc3QgY2hhciog
bmFtZSA9IDA7CiAgICAgQ1N0cmluZyBzOwpAQCAtMTgyLDcgKzE4MSw3IEBAIEZvbnRQbGF0Zm9y
bURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnRECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlw
ZWZhY2U6OmtJdGFsaWMpICYmICF0Zi0+aXNJdGFsaWMoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpOwogICAgIHRmLT51bnJlZigp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFkb3B0UHRyKHJlc3VsdCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggZWU1NWUxZC4uYjA2NGVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
YWNoZVdpbi5jcHAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRz
SW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZQog
ICAgIGNvcHlUb1ZlY3Rvcihwcm9jRGF0YS5tX3RyYWl0c01hc2tzLCB0cmFpdHNNYXNrcyk7CiB9
CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgYm9vbCBpc0x1Y2lkYUdyYW5kZSA9
IGZhbHNlOwogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbHVjaWRhU3RyKCJMdWNpZGEgR3JhbmRl
Iik7CkBAIC01OTEsNyArNTkxLDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfSAgICAgICAgCiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBhZG9wdFB0cihyZXN1bHQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5jcHAKaW5kZXggOWFiOTFh
MS4uN2I4MDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvRm9udENhY2hlV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0ZvbnRDYWNoZVdpbkNFLmNwcApAQCAtMzEyLDEwICszMTIsOSBAQCBQYXNz
UmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnQoY29uc3QgRm9udERlc2NyaQogICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShmb250RGVz
YywgRm9udFBsYXRmb3JtRGF0YTo6ZGVmYXVsdEZvbnRGYW1pbHkoKSwgZmFsc2UsIHNob3VsZFJl
dGFpbik7CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRv
bWljU3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNo
ZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7Ci0gICAgRm9udFBsYXRmb3Jt
RGF0YSogcmVzdWx0ID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBmYW1p
bHkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGb250UGxh
dGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5KSk7CiB9CiAKIHZvaWQgRm9udENhY2hl
OjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rv
cjx1bnNpZ25lZD4mIHRyYWl0c01hc2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3BwCmluZGV4IDVlOTBlMDUuLjU5YjZlZTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9Gb250Q2FjaGVX
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hl
V3guY3BwCkBAIC05NywxNCArOTcsMTQgQEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gRm9u
dENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmkKICAgICBy
ZXR1cm4gZmFsbGJhY2sucmVsZWFzZSgpOwogfQogCi1Gb250UGxhdGZvcm1EYXRhKiBGb250Q2Fj
aGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQorUGFzc093blB0cjxGb250UGxh
dGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQog
ewogICAgIC8vIHd4IHdpbGwgQUxXQVlTIGNyZWF0ZSBhIHZhbGlkIGZvbnQsIGV2ZW4gaWYgdGhl
IGZvbnQgZmFtaWx5IHdlJ3JlIGxvb2tpbmcgZm9yIGlzIG5vdCBhdmFpbGFibGUuCiAgICAgLy8g
U28gd2UgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBmb250IGlzIHRoZSBvbmUgd2UncmUgbG9va2lu
ZyBmb3IgYmVmb3JlIGNyZWF0aW5nIHRoZSBmb250LgogICAgIGlmICghd3hGb250RW51bWVyYXRv
cjo6SXNWYWxpZEZhY2VuYW1lKGZhbWlseS5zdHJpbmcoKSkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgcmV0dXJuIG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbixmYW1pbHkp
OworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRp
b24sIGZhbWlseSkpOwogfQogCiB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZWQ+JiB0cmFpdHNNYXNr
cykK
</data>
<flag name="commit-queue"
          id="213595"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192377</attachid>
            <date>2013-03-10 09:43:51 -0700</date>
            <delta_ts>2013-03-10 09:57:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111939-v2.diff</filename>
            <type>text/plain</type>
            <size>17337</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNDJhNjczLi40NDhjNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDQg
QEAKIDIwMTMtMDMtMTAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIEdsb2JhbCBGb250UGxhdGZvcm1EYXRhIGNhY2hlIHNob3VsZCB1c2UgT3duUHRyLgorICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTE5Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV0IHRoZSBnbG9iYWwgRm9udFBsYXRmb3JtRGF0
YSB1c2UgT3duUHRyIGluc3RlYWQgb2YgcmF3IHBvaW50ZXJzICsgZGVsZXRlQWxsVmFsdWVzKCku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0ZSk6CisKKyAgICAgICAgICAgIFR3ZWFrZWQgY29k
ZSBmb3IgT3duUHRyLiBBbHNvIG1hZGUgZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpIGRvIG9u
ZSBoYXNoIGxvb2t1cAorICAgICAgICAgICAgaW5zdGVhZCBvZiB0d28uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9Gb250Q2FjaGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9u
dENhY2hlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRDYWNoZVd4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisKKyAgICAg
ICAgICAgIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSgpIG5vdyByZXR1cm5zIGEg
UGFzc093blB0ci4KKworMjAxMy0wMy0xMCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CisKICAgICAgICAgR2x5cGhNZXRyaWNzTWFwIHNob3VsZCB1c2UgT3duUHRyLgogICAgICAg
ICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTE5Mzc+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDBkNGU4NGEuLjZjZjgzODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMTI1
LDcgKzEyNSw3IEBAIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXlIYXNoIHsKIAogc3Ry
dWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleVRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNo
VHJhaXRzPEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleT4geyB9OwogCi10eXBlZGVmIEhhc2hNYXA8
Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5LCBGb250UGxhdGZvcm1EYXRhKiwgRm9udFBsYXRmb3Jt
RGF0YUNhY2hlS2V5SGFzaCwgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5VHJhaXRzPiBGb250UGxh
dGZvcm1EYXRhQ2FjaGU7Cit0eXBlZGVmIEhhc2hNYXA8Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5
LCBPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4sIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhhc2gs
IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleVRyYWl0cz4gRm9udFBsYXRmb3JtRGF0YUNhY2hlOwog
CiBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YUNhY2hlKiBnRm9udFBsYXRmb3JtRGF0YUNhY2hlID0g
MDsKIApAQCAtMjAwLDI5ICsyMDAsMjQgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpn
ZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KICAgICBG
b250UGxhdGZvcm1EYXRhQ2FjaGVLZXkga2V5KGZhbWlseU5hbWUsIGZvbnREZXNjcmlwdGlvbi5j
b21wdXRlZFBpeGVsU2l6ZSgpLCBmb250RGVzY3JpcHRpb24ud2VpZ2h0KCksIGZvbnREZXNjcmlw
dGlvbi5pdGFsaWMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi51c2VQcmludGVyRm9udCgpLCBmb250RGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgp
LCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSk7Ci0gICAgRm9udFBsYXRm
b3JtRGF0YSogcmVzdWx0ID0gMDsKLSAgICBib29sIGZvdW5kUmVzdWx0OwotICAgIEZvbnRQbGF0
Zm9ybURhdGFDYWNoZTo6aXRlcmF0b3IgaXQgPSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5maW5k
KGtleSk7Ci0gICAgaWYgKGl0ID09IGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPmVuZCgpKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBm
YW1pbHlOYW1lKTsKLSAgICAgICAgZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+c2V0KGtleSwgcmVz
dWx0KTsKLSAgICAgICAgZm91bmRSZXN1bHQgPSByZXN1bHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgcmVzdWx0ID0gaXQtPnZhbHVlOwotICAgICAgICBmb3VuZFJlc3VsdCA9IHRydWU7Ci0gICAg
fQogCi0gICAgaWYgKCFmb3VuZFJlc3VsdCAmJiAhY2hlY2tpbmdBbHRlcm5hdGVOYW1lKSB7Ci0g
ICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGZpbmQgYSBmb250LiAgV2UgaGF2ZSBhIHNtYWxs
IHNldCBvZiBmb250cyB0aGF0IHdlIGFsaWFzIHRvIG90aGVyIG5hbWVzLCAKLSAgICAgICAgLy8g
ZS5nLiwgQXJpYWwvSGVsdmV0aWNhLCBDb3VyaWVyL0NvdXJpZXIgTmV3LCBldGMuICBUcnkgbG9v
a2luZyB1cCB0aGUgZm9udCB1bmRlciB0aGUgYWxpYXNlZCBuYW1lLgotICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGFsdGVybmF0ZU5hbWUgPSBhbHRlcm5hdGVGYW1pbHlOYW1lKGZhbWlseU5h
bWUpOwotICAgICAgICBpZiAoIWFsdGVybmF0ZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmVzdWx0ID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGFsdGVy
bmF0ZU5hbWUsIHRydWUpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgZ0ZvbnRQ
bGF0Zm9ybURhdGFDYWNoZS0+c2V0KGtleSwgbmV3IEZvbnRQbGF0Zm9ybURhdGEoKnJlc3VsdCkp
OyAvLyBDYWNoZSB0aGUgcmVzdWx0IHVuZGVyIHRoZSBvbGQgbmFtZS4KKyAgICBGb250UGxhdGZv
cm1EYXRhQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5h
ZGQoa2V5LCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2Ny
aXB0aW9uLCBmYW1pbHlOYW1lKTsKKworICAgICAgICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgJiYgIWNoZWNraW5nQWx0ZXJuYXRlTmFtZSkgeworICAgICAgICAgICAgLy8gV2Ugd2VyZSB1
bmFibGUgdG8gZmluZCBhIGZvbnQuICBXZSBoYXZlIGEgc21hbGwgc2V0IG9mIGZvbnRzIHRoYXQg
d2UgYWxpYXMgdG8gb3RoZXIgbmFtZXMsCisgICAgICAgICAgICAvLyBlLmcuLCBBcmlhbC9IZWx2
ZXRpY2EsIENvdXJpZXIvQ291cmllciBOZXcsIGV0Yy4gIFRyeSBsb29raW5nIHVwIHRoZSBmb250
IHVuZGVyIHRoZSBhbGlhc2VkIG5hbWUuCisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGFsdGVybmF0ZU5hbWUgPSBhbHRlcm5hdGVGYW1pbHlOYW1lKGZhbWlseU5hbWUpOworICAgICAg
ICAgICAgaWYgKCFhbHRlcm5hdGVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEZv
bnRQbGF0Zm9ybURhdGEqIGZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lID0gZ2V0Q2Fj
aGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGFsdGVybmF0ZU5hbWUsIHRydWUp
OworICAgICAgICAgICAgICAgIGlmIChmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UHRyKG5l
dyBGb250UGxhdGZvcm1EYXRhKCpmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogI2lmIEVOQUJMRShP
UEVOVFlQRV9WRVJUSUNBTCkKQEAgLTQxMSw3ICs0MDYsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHVy
Z2VJbmFjdGl2ZUZvbnREYXRhKGludCBjb3VudCkKICAgICAgICAgCiAgICAgICAgIHNpemVfdCBr
ZXlzVG9SZW1vdmVDb3VudCA9IGtleXNUb1JlbW92ZS5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwga2V5c1RvUmVtb3ZlQ291bnQ7ICsraSkKLSAgICAgICAgICAgIGRlbGV0
ZSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT50YWtlKGtleXNUb1JlbW92ZVtpXSk7CisgICAgICAg
ICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5yZW1vdmUoa2V5c1RvUmVtb3ZlW2ldKTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCkBAIC01MzYsMTEgKzUzMSw4IEBA
IHZvaWQgRm9udENhY2hlOjppbnZhbGlkYXRlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChnRm9udFBsYXRmb3JtRGF0YUNhY2hlKSB7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVl
cygqZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZSk7Ci0gICAgICAgIGRlbGV0ZSBnRm9udFBsYXRmb3Jt
RGF0YUNhY2hlOwotICAgICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlID0gbmV3IEZvbnRQbGF0
Zm9ybURhdGFDYWNoZTsKLSAgICB9CisgICAgaWYgKGdGb250UGxhdGZvcm1EYXRhQ2FjaGUpCisg
ICAgICAgIGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPmNsZWFyKCk7CiAKICAgICBnR2VuZXJhdGlv
bisrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmlu
ZGV4IGZjNzYyM2UuLjUxM2QwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIGJ5IGVhY2ggcGxhdGZvcm0uCiAgICAgUGFzc1Jl
ZlB0cjxTaW1wbGVGb250RGF0YT4gZ2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dCYpOwotICAgIEZvbnRQbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworICAgIFBhc3NP
d25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAKICAgICBQYXNzUmVm
UHRyPFNpbXBsZUZvbnREYXRhPiBnZXRDYWNoZWRGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1E
YXRhKiwgU2hvdWxkUmV0YWluID0gUmV0YWluKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVCbGFja0JlcnJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udENhY2hlQmxh
Y2tCZXJyeS5jcHAKaW5kZXggMDhkMmYxMS4uNjBiNjVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVCbGFja0JlcnJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRD
YWNoZUJsYWNrQmVycnkuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgaW50IGZvbnRXZWlnaHRUb0Zv
bnRjb25maWdXZWlnaHQoRm9udFdlaWdodCB3ZWlnaHQpCiAgICAgfQogfQogCi1Gb250UGxhdGZv
cm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQorUGFz
c093blB0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0
cmluZyYgZmFtaWx5KQogewogICAgIC8vIFRoZSBDU1MgZm9udCBtYXRjaGluZyBhbGdvcml0aG0g
KGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZm9udHMvI2ZvbnQtbWF0Y2hpbmctYWxnb3JpdGht
KQogICAgIC8vIHNheXMgdGhhdCB3ZSBtdXN0IGZpbmQgYW4gZXhhY3QgbWF0Y2ggZm9yIGZvbnQg
ZmFtaWx5LCBzbGFudCAoaXRhbGljIG9yIG9ibGlxdWUgY2FuIGJlIHVzZWQpCkBAIC0yNDcsNyAr
MjQ3LDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICIgJXNcbiIsIG5hbWUpOwogCi0gICAgcmV0dXJuIG5ldyBGb250
UGxhdGZvcm1EYXRhKG5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwgc2hvdWxk
RmFrZUJvbGQsIHNob3VsZEZha2VJdGFsaWMsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigp
LCBmb250RGVzY3JpcHRpb24udGV4dE9yaWVudGF0aW9uKCkpOworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRm9udFBsYXRmb3JtRGF0YShuYW1lLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXpl
KCksIHNob3VsZEZha2VCb2xkLCBzaG91bGRGYWtlSXRhbGljLCBmb250RGVzY3JpcHRpb24ub3Jp
ZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlvbigpKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKaW5kZXggM2Y1
M2RkZi4uMGJkNzFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgY29uc3QgY2hhciogbmFtZSA9IDA7
CiAgICAgQ1N0cmluZyBuYW1lU3RyaW5nOyAvLyBLZWVwcyBuYW1lIHZhbGlkIHdpdGhpbiBzY29w
ZSBvZiB0aGlzIGZ1bmN0aW9uIGluIGNhc2UgdGhhdCBuYW1lIGlzIGZyb20gYSBmYW1pbHkuCkBA
IC0yMDcsNyArMjA3LDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICB9CiAKICAgICBT
a1NhZmVVbnJlZih0eXBlZmFjZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRv
cHRQdHIocmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENh
Y2hlRnJlZVR5cGUuY3BwCmluZGV4IGRiYWQ1NzEuLmRkNzc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBpbnQgZm9udFdlaWdodFRvRm9udGNv
bmZpZ1dlaWdodChGb250V2VpZ2h0IHdlaWdodCkKICAgICB9CiB9CiAKLUZvbnRQbGF0Zm9ybURh
dGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitQYXNzT3du
UHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHkpCiB7CiAgICAgLy8gVGhlIENTUyBmb250IG1hdGNoaW5nIGFsZ29yaXRobSAoaHR0
cDovL3d3dy53My5vcmcvVFIvY3NzMy1mb250cy8jZm9udC1tYXRjaGluZy1hbGdvcml0aG0pCiAg
ICAgLy8gc2F5cyB0aGF0IHdlIG11c3QgZmluZCBhbiBleGFjdCBtYXRjaCBmb3IgZm9udCBmYW1p
bHksIHNsYW50IChpdGFsaWMgb3Igb2JsaXF1ZSBjYW4gYmUgdXNlZCkKQEAgLTIyMCwxMyArMjIw
LDExIEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBm
b250IGhhcyBhbiBlbmNvZGluZyBjb21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZp
ZyBjdXJyZW50bHkKICAgICAvLyBzdXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlw
ZUNoYXJJbmRleDogVW5pY29kZSwgU3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRo
aXMgZm9udCBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qg
c2VsZWN0IGl0LgotICAgIEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IG5ldyBGb250
UGxhdGZvcm1EYXRhKHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbik7Ci0gICAg
aWYgKCFwbGF0Zm9ybURhdGEtPmhhc0NvbXBhdGlibGVDaGFybWFwKCkpIHsKLSAgICAgICAgZGVs
ZXRlIHBsYXRmb3JtRGF0YTsKKyAgICBPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gcGxhdGZvcm1E
YXRhID0gYWRvcHRQdHIobmV3IEZvbnRQbGF0Zm9ybURhdGEocmVzdWx0UGF0dGVybi5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uKSk7CisgICAgaWYgKCFwbGF0Zm9ybURhdGEtPmhhc0NvbXBhdGlibGVD
aGFybWFwKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KIAotICAgIHJldHVybiBwbGF0Zm9y
bURhdGE7CisgICAgcmV0dXJuIHBsYXRmb3JtRGF0YS5yZWxlYXNlKCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1t
CmluZGV4IDUxNzE4MWEuLjdkMWQ0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZv
aWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eU5hbWUsIFZlY3Rvcjx1bnNpZ25lCiAgICAgW1dlYkZvbnRDYWNoZSBnZXRUcmFpdHM6dHJhaXRz
TWFza3MgaW5GYW1pbHk6ZmFtaWx5TmFtZV07CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRD
YWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQ
bGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkp
CiB7CiAgICAgTlNGb250VHJhaXRNYXNrIHRyYWl0cyA9IGZvbnREZXNjcmlwdGlvbi5pdGFsaWMo
KSA/IE5TRm9udEl0YWxpY1RyYWl0IDogMDsKICAgICBOU0ludGVnZXIgd2VpZ2h0ID0gdG9BcHBL
aXRGb250V2VpZ2h0KGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSk7CkBAIC0yNDEsNyArMjQxLDcg
QEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICBPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4g
cGxhdGZvcm1EYXRhID0gYWRvcHRQdHIobmV3IEZvbnRQbGF0Zm9ybURhdGEocGxhdGZvcm1Gb250
LCBzaXplLCBmb250RGVzY3JpcHRpb24udXNlUHJpbnRlckZvbnQoKSwgc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNj
cmlwdGlvbi53aWR0aFZhcmlhbnQoKSkpOwogICAgIGlmICghcGxhdGZvcm1EYXRhLT5mb250KCkp
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBwbGF0Zm9ybURhdGEubGVha1B0cigpOwor
ICAgIHJldHVybiBwbGF0Zm9ybURhdGEucmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250Q2FjaGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250
Q2FjaGVRdC5jcHAKaW5kZXggNmQxZWU3Mi4uOGRjNjg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcApAQCAtODgsMTIgKzg4
LDEyIEBAIHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJp
bmcmLCBWZWN0b3I8dW5zaWduZWQ+JikKIHsKIH0KIAotRm9udFBsYXRmb3JtRGF0YSogRm9udENh
Y2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERl
c2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCitQYXNzT3duUHRyPEZv
bnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1p
bHlOYW1lKQogewogICAgIFFGb250RGF0YWJhc2UgZGI7CiAgICAgaWYgKCFkYi5oYXNGYW1pbHko
ZmFtaWx5TmFtZSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgRm9udFBsYXRm
b3JtRGF0YShmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q2FjaGVTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5jcHAKaW5kZXggZDJmMDg4ZS4uNmRk
NGEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9G
b250Q2FjaGVTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ZvbnRDYWNoZVNraWEuY3BwCkBAIC0xMjksOCArMTI5LDcgQEAgdm9pZCBGb250Q2FjaGU6
OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi1Gb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgY29uc3Qg
Y2hhciogbmFtZSA9IDA7CiAgICAgQ1N0cmluZyBzOwpAQCAtMTgyLDcgKzE4MSw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnRECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAm
IFNrVHlwZWZhY2U6OmtJdGFsaWMpICYmICF0Zi0+aXNJdGFsaWMoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpOwogICAgIHRmLT51
bnJlZigpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFkb3B0UHRyKHJlc3VsdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggZWU1NWUxZC4uYjA2
NGVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIEZvbnRDYWNoZTo6Z2V0
VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5z
aWduZQogICAgIGNvcHlUb1ZlY3Rvcihwcm9jRGF0YS5tX3RyYWl0c01hc2tzLCB0cmFpdHNNYXNr
cyk7CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgYm9vbCBpc0x1Y2lkYUdy
YW5kZSA9IGZhbHNlOwogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbHVjaWRhU3RyKCJMdWNpZGEg
R3JhbmRlIik7CkBAIC01OTEsNyArNTkxLDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hl
OjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfSAgICAgICAgCiAKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBhZG9wdFB0cihyZXN1bHQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5jcHAKaW5kZXgg
OWFiOTFhMS4uN2I4MDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvRm9udENhY2hlV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDYWNoZVdpbkNFLmNwcApAQCAtMzEyLDEwICszMTIsOSBA
QCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxs
YmFja0ZvbnQoY29uc3QgRm9udERlc2NyaQogICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShm
b250RGVzYywgRm9udFBsYXRmb3JtRGF0YTo6ZGVmYXVsdEZvbnRGYW1pbHkoKSwgZmFsc2UsIHNo
b3VsZFJldGFpbik7CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7Ci0gICAgRm9udFBs
YXRmb3JtRGF0YSogcmVzdWx0ID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9u
LCBmYW1pbHkpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBG
b250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5KSk7CiB9CiAKIHZvaWQgRm9u
dENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUs
IFZlY3Rvcjx1bnNpZ25lZD4mIHRyYWl0c01hc2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3BwCmluZGV4IDVlOTBlMDUuLjU5YjZl
ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9Gb250
Q2FjaGVXeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9u
dENhY2hlV3guY3BwCkBAIC05NywxNCArOTcsMTQgQEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0
YT4gRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmkK
ICAgICByZXR1cm4gZmFsbGJhY2sucmVsZWFzZSgpOwogfQogCi1Gb250UGxhdGZvcm1EYXRhKiBG
b250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQorUGFzc093blB0cjxG
b250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5KQogewogICAgIC8vIHd4IHdpbGwgQUxXQVlTIGNyZWF0ZSBhIHZhbGlkIGZvbnQsIGV2ZW4g
aWYgdGhlIGZvbnQgZmFtaWx5IHdlJ3JlIGxvb2tpbmcgZm9yIGlzIG5vdCBhdmFpbGFibGUuCiAg
ICAgLy8gU28gd2UgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBmb250IGlzIHRoZSBvbmUgd2UncmUg
bG9va2luZyBmb3IgYmVmb3JlIGNyZWF0aW5nIHRoZSBmb250LgogICAgIGlmICghd3hGb250RW51
bWVyYXRvcjo6SXNWYWxpZEZhY2VuYW1lKGZhbWlseS5zdHJpbmcoKSkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbixm
YW1pbHkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRm9udFBsYXRmb3JtRGF0YShmb250RGVz
Y3JpcHRpb24sIGZhbWlseSkpOwogfQogCiB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1p
bHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZWQ+JiB0cmFp
dHNNYXNrcykK
</data>
<flag name="commit-queue"
          id="213597"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192378</attachid>
            <date>2013-03-10 09:57:53 -0700</date>
            <delta_ts>2013-04-04 13:15:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111939-v3.diff</filename>
            <type>text/plain</type>
            <size>23696</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNDJhNjczLi40NDhjNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDQg
QEAKIDIwMTMtMDMtMTAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIEdsb2JhbCBGb250UGxhdGZvcm1EYXRhIGNhY2hlIHNob3VsZCB1c2UgT3duUHRyLgorICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTE5Mzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV0IHRoZSBnbG9iYWwgRm9udFBsYXRmb3JtRGF0
YSB1c2UgT3duUHRyIGluc3RlYWQgb2YgcmF3IHBvaW50ZXJzICsgZGVsZXRlQWxsVmFsdWVzKCku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0ZSk6CisKKyAgICAgICAgICAgIFR3ZWFrZWQgY29k
ZSBmb3IgT3duUHRyLiBBbHNvIG1hZGUgZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpIGRvIG9u
ZSBoYXNoIGxvb2t1cAorICAgICAgICAgICAgaW5zdGVhZCBvZiB0d28uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0ZvbnRDYWNoZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9Gb250Q2FjaGVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9u
dENhY2hlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRDYWNoZVd4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisKKyAgICAg
ICAgICAgIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSgpIG5vdyByZXR1cm5zIGEg
UGFzc093blB0ci4KKworMjAxMy0wMy0xMCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CisKICAgICAgICAgR2x5cGhNZXRyaWNzTWFwIHNob3VsZCB1c2UgT3duUHRyLgogICAgICAg
ICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTE5Mzc+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDBkNGU4NGEuLjZjZjgzODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMTI1
LDcgKzEyNSw3IEBAIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXlIYXNoIHsKIAogc3Ry
dWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleVRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNo
VHJhaXRzPEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleT4geyB9OwogCi10eXBlZGVmIEhhc2hNYXA8
Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5LCBGb250UGxhdGZvcm1EYXRhKiwgRm9udFBsYXRmb3Jt
RGF0YUNhY2hlS2V5SGFzaCwgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5VHJhaXRzPiBGb250UGxh
dGZvcm1EYXRhQ2FjaGU7Cit0eXBlZGVmIEhhc2hNYXA8Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5
LCBPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4sIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhhc2gs
IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleVRyYWl0cz4gRm9udFBsYXRmb3JtRGF0YUNhY2hlOwog
CiBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YUNhY2hlKiBnRm9udFBsYXRmb3JtRGF0YUNhY2hlID0g
MDsKIApAQCAtMjAwLDI5ICsyMDAsMjQgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpn
ZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KICAgICBG
b250UGxhdGZvcm1EYXRhQ2FjaGVLZXkga2V5KGZhbWlseU5hbWUsIGZvbnREZXNjcmlwdGlvbi5j
b21wdXRlZFBpeGVsU2l6ZSgpLCBmb250RGVzY3JpcHRpb24ud2VpZ2h0KCksIGZvbnREZXNjcmlw
dGlvbi5pdGFsaWMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi51c2VQcmludGVyRm9udCgpLCBmb250RGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgp
LCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSk7Ci0gICAgRm9udFBsYXRm
b3JtRGF0YSogcmVzdWx0ID0gMDsKLSAgICBib29sIGZvdW5kUmVzdWx0OwotICAgIEZvbnRQbGF0
Zm9ybURhdGFDYWNoZTo6aXRlcmF0b3IgaXQgPSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5maW5k
KGtleSk7Ci0gICAgaWYgKGl0ID09IGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPmVuZCgpKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBm
YW1pbHlOYW1lKTsKLSAgICAgICAgZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+c2V0KGtleSwgcmVz
dWx0KTsKLSAgICAgICAgZm91bmRSZXN1bHQgPSByZXN1bHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgcmVzdWx0ID0gaXQtPnZhbHVlOwotICAgICAgICBmb3VuZFJlc3VsdCA9IHRydWU7Ci0gICAg
fQogCi0gICAgaWYgKCFmb3VuZFJlc3VsdCAmJiAhY2hlY2tpbmdBbHRlcm5hdGVOYW1lKSB7Ci0g
ICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGZpbmQgYSBmb250LiAgV2UgaGF2ZSBhIHNtYWxs
IHNldCBvZiBmb250cyB0aGF0IHdlIGFsaWFzIHRvIG90aGVyIG5hbWVzLCAKLSAgICAgICAgLy8g
ZS5nLiwgQXJpYWwvSGVsdmV0aWNhLCBDb3VyaWVyL0NvdXJpZXIgTmV3LCBldGMuICBUcnkgbG9v
a2luZyB1cCB0aGUgZm9udCB1bmRlciB0aGUgYWxpYXNlZCBuYW1lLgotICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGFsdGVybmF0ZU5hbWUgPSBhbHRlcm5hdGVGYW1pbHlOYW1lKGZhbWlseU5h
bWUpOwotICAgICAgICBpZiAoIWFsdGVybmF0ZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmVzdWx0ID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGFsdGVy
bmF0ZU5hbWUsIHRydWUpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgZ0ZvbnRQ
bGF0Zm9ybURhdGFDYWNoZS0+c2V0KGtleSwgbmV3IEZvbnRQbGF0Zm9ybURhdGEoKnJlc3VsdCkp
OyAvLyBDYWNoZSB0aGUgcmVzdWx0IHVuZGVyIHRoZSBvbGQgbmFtZS4KKyAgICBGb250UGxhdGZv
cm1EYXRhQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5h
ZGQoa2V5LCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2Ny
aXB0aW9uLCBmYW1pbHlOYW1lKTsKKworICAgICAgICBpZiAoIXJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgJiYgIWNoZWNraW5nQWx0ZXJuYXRlTmFtZSkgeworICAgICAgICAgICAgLy8gV2Ugd2VyZSB1
bmFibGUgdG8gZmluZCBhIGZvbnQuICBXZSBoYXZlIGEgc21hbGwgc2V0IG9mIGZvbnRzIHRoYXQg
d2UgYWxpYXMgdG8gb3RoZXIgbmFtZXMsCisgICAgICAgICAgICAvLyBlLmcuLCBBcmlhbC9IZWx2
ZXRpY2EsIENvdXJpZXIvQ291cmllciBOZXcsIGV0Yy4gIFRyeSBsb29raW5nIHVwIHRoZSBmb250
IHVuZGVyIHRoZSBhbGlhc2VkIG5hbWUuCisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGFsdGVybmF0ZU5hbWUgPSBhbHRlcm5hdGVGYW1pbHlOYW1lKGZhbWlseU5hbWUpOworICAgICAg
ICAgICAgaWYgKCFhbHRlcm5hdGVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEZv
bnRQbGF0Zm9ybURhdGEqIGZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lID0gZ2V0Q2Fj
aGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGFsdGVybmF0ZU5hbWUsIHRydWUp
OworICAgICAgICAgICAgICAgIGlmIChmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UHRyKG5l
dyBGb250UGxhdGZvcm1EYXRhKCpmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogI2lmIEVOQUJMRShP
UEVOVFlQRV9WRVJUSUNBTCkKQEAgLTQxMSw3ICs0MDYsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHVy
Z2VJbmFjdGl2ZUZvbnREYXRhKGludCBjb3VudCkKICAgICAgICAgCiAgICAgICAgIHNpemVfdCBr
ZXlzVG9SZW1vdmVDb3VudCA9IGtleXNUb1JlbW92ZS5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwga2V5c1RvUmVtb3ZlQ291bnQ7ICsraSkKLSAgICAgICAgICAgIGRlbGV0
ZSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT50YWtlKGtleXNUb1JlbW92ZVtpXSk7CisgICAgICAg
ICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5yZW1vdmUoa2V5c1RvUmVtb3ZlW2ldKTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCkBAIC01MzYsMTEgKzUzMSw4IEBA
IHZvaWQgRm9udENhY2hlOjppbnZhbGlkYXRlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChnRm9udFBsYXRmb3JtRGF0YUNhY2hlKSB7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVl
cygqZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZSk7Ci0gICAgICAgIGRlbGV0ZSBnRm9udFBsYXRmb3Jt
RGF0YUNhY2hlOwotICAgICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlID0gbmV3IEZvbnRQbGF0
Zm9ybURhdGFDYWNoZTsKLSAgICB9CisgICAgaWYgKGdGb250UGxhdGZvcm1EYXRhQ2FjaGUpCisg
ICAgICAgIGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPmNsZWFyKCk7CiAKICAgICBnR2VuZXJhdGlv
bisrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmlu
ZGV4IGZjNzYyM2UuLjUxM2QwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIGJ5IGVhY2ggcGxhdGZvcm0uCiAgICAgUGFzc1Jl
ZlB0cjxTaW1wbGVGb250RGF0YT4gZ2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dCYpOwotICAgIEZvbnRQbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworICAgIFBhc3NP
d25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAKICAgICBQYXNzUmVm
UHRyPFNpbXBsZUZvbnREYXRhPiBnZXRDYWNoZWRGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1E
YXRhKiwgU2hvdWxkUmV0YWluID0gUmV0YWluKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVCbGFja0JlcnJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udENhY2hlQmxh
Y2tCZXJyeS5jcHAKaW5kZXggMDhkMmYxMS4uNzAzNDU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q2FjaGVCbGFja0JlcnJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRD
YWNoZUJsYWNrQmVycnkuY3BwCkBAIC01Niw3ICs1Niw3IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiBmb250LCBj
b25zCiAgICAgUGxhdGZvcm1TdXBwb3J0OjpGb250RmFtaWx5IGZhbWlseTsKICAgICBQbGF0Zm9y
bVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCwg
bG9jYWxlLmdldExhbmd1YWdlKCksIGZvbnQuZm9udERlc2NyaXB0aW9uKCksICZmYW1pbHkpOwog
ICAgIGlmIChmYW1pbHkubmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEF0b21pY1N0cmluZyBhdG9taWNGYW1pbHkoZmFtaWx5
Lm5hbWUpOwogICAgIC8vIENoYW5nZXMgd2VpZ2h0IGFuZC9vciBpdGFsaWMgb2YgZ2l2ZW4gRm9u
dERlc2NyaXB0aW9uIGRlcGVuZHMgb24KQEAgLTgwLDcgKzgwLDcgQEAgY29uc3QgU2ltcGxlRm9u
dERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnMKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEqIHN1YnN0aXR1dGVQbGF0Zm9ybURhdGEg
PSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uLCBhdG9taWNGYW1pbHksIERv
Tm90UmV0YWluKTsKICAgICBpZiAoIXN1YnN0aXR1dGVQbGF0Zm9ybURhdGEpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBGb250UGxhdGZvcm1EYXRhIHBs
YXRmb3JtRGF0YSA9IEZvbnRQbGF0Zm9ybURhdGEoKnN1YnN0aXR1dGVQbGF0Zm9ybURhdGEpOwog
ICAgIHBsYXRmb3JtRGF0YS5zZXRGYWtlQm9sZChzaG91bGRTZXRGYWtlQm9sZCk7CiAgICAgcGxh
dGZvcm1EYXRhLnNldEZha2VJdGFsaWMoc2hvdWxkU2V0RmFrZUl0YWxpYyk7CkBAIC0xNzgsNyAr
MTc4LDcgQEAgaW50IGZvbnRXZWlnaHRUb0ZvbnRjb25maWdXZWlnaHQoRm9udFdlaWdodCB3ZWln
aHQpCiAgICAgfQogfQogCi1Gb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5KQorUGFzc093blB0cjxGb250UGxhdGZvcm1EYXRhPiBGb250
Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogewogICAgIC8vIFRoZSBD
U1MgZm9udCBtYXRjaGluZyBhbGdvcml0aG0gKGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZm9u
dHMvI2ZvbnQtbWF0Y2hpbmctYWxnb3JpdGhtKQogICAgIC8vIHNheXMgdGhhdCB3ZSBtdXN0IGZp
bmQgYW4gZXhhY3QgbWF0Y2ggZm9yIGZvbnQgZmFtaWx5LCBzbGFudCAoaXRhbGljIG9yIG9ibGlx
dWUgY2FuIGJlIHVzZWQpCkBAIC0xODYsMTUgKzE4NiwxNSBAQCBGb250UGxhdGZvcm1EYXRhKiBG
b250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RAogICAgIEZjUGF0dGVybiogcGF0dGVybiA9IEZjUGF0dGVybkNyZWF0ZSgpOwogICAgIFN0
cmluZyBmYW1pbHlOYW1lU3RyaW5nKGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRm9udERlc2NyaXB0
aW9uQW5kRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5KSk7CiAgICAgaWYgKCFGY1BhdHRl
cm5BZGRTdHJpbmcocGF0dGVybiwgRkNfRkFNSUxZLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZj
Q2hhcjgqPihmYW1pbHlOYW1lU3RyaW5nLnV0ZjgoKS5kYXRhKCkpKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBpdGFsaWMgPSBmb250RGVz
Y3JpcHRpb24uaXRhbGljKCk7CiAgICAgaWYgKCFGY1BhdHRlcm5BZGRJbnRlZ2VyKHBhdHRlcm4s
IEZDX1NMQU5ULCBpdGFsaWMgPyBGQ19TTEFOVF9JVEFMSUMgOiBGQ19TTEFOVF9ST01BTikpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIUZjUGF0
dGVybkFkZEludGVnZXIocGF0dGVybiwgRkNfV0VJR0hULCBmb250V2VpZ2h0VG9Gb250Y29uZmln
V2VpZ2h0KGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSkpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFGY1BhdHRlcm5BZGREb3VibGUocGF0dGVy
biwgRkNfUElYRUxfU0laRSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBUaGUg
c3RyYXRlZ3kgaXMgb3JpZ2luYWxseSBmcm9tIFNraWEgKHNyYy9wb3J0cy9Ta0ZvbnRIb3N0X2Zv
bnRjb25maWcuY3BwKToKIApAQCAtMjEyLDcgKzIxMiw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnRECiAgICAgRmNQYXR0ZXJuKiByZXN1bHRQYXR0ZXJuID0gRmNGb250TWF0Y2goMCwgcGF0dGVy
biwgJmZvbnRDb25maWdSZXN1bHQpOwogICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CiAg
ICAgaWYgKCFyZXN1bHRQYXR0ZXJuKSAvLyBObyBtYXRjaC4KLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRmNDaGFyOCogZm9udENvbmZpZ0ZhbWlseU5h
bWVBZnRlck1hdGNoaW5nOwogICAgIEZjUGF0dGVybkdldFN0cmluZyhyZXN1bHRQYXR0ZXJuLCBG
Q19GQU1JTFksIDAsICZmb250Q29uZmlnRmFtaWx5TmFtZUFmdGVyTWF0Y2hpbmcpOwpAQCAtMjI1
LDcgKzIyNSw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAgICAgICAgICYmICEoZXF1YWxJ
Z25vcmluZ0Nhc2UoZmFtaWx5TmFtZVN0cmluZywgInNhbnMiKSB8fCBlcXVhbElnbm9yaW5nQ2Fz
ZShmYW1pbHlOYW1lU3RyaW5nLCAic2Fucy1zZXJpZiIpCiAgICAgICAgICAgICB8fCBlcXVhbEln
bm9yaW5nQ2FzZShmYW1pbHlOYW1lU3RyaW5nLCAic2VyaWYiKSB8fCBlcXVhbElnbm9yaW5nQ2Fz
ZShmYW1pbHlOYW1lU3RyaW5nLCAibW9ub3NwYWNlIikKICAgICAgICAgICAgIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKGZhbWlseU5hbWVTdHJpbmcsICJmYW50YXN5IikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UoZmFtaWx5TmFtZVN0cmluZywgImN1cnNpdmUiKSkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGludCBmb250V2VpZ2h0OwogICAgIEZjUGF0dGVy
bkdldEludGVnZXIocmVzdWx0UGF0dGVybiwgRkNfV0VJR0hULCAwLCAmZm9udFdlaWdodCk7CkBA
IC0yNDQsMTAgKzI0NCwxMCBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZv
bnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAgIG1lbXNldChu
YW1lLCAwLCBNQVhfRk9OVF9OQU1FX0xFTisxKTsKICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkZT
X2xvYWRfZm9udCAlczogIiwgZm9udEZpbGVOYW1lKTsKICAgICBpZiAoRlNfbG9hZF9mb250KEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Z2V0SVR5cGUoKSwgcmVpbnRlcnByZXRfY2Fz
dDxGSUxFQ0hBUio+KGZvbnRGaWxlTmFtZSksIDAsIDAsIE1BWF9GT05UX05BTUVfTEVOLCBuYW1l
KSAhPSBTVUNDRVNTKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgLy8gZnByaW50ZihzdGRlcnIsICIgJXNcbiIsIG5hbWUpOwogCi0gICAgcmV0dXJuIG5l
dyBGb250UGxhdGZvcm1EYXRhKG5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwg
c2hvdWxkRmFrZUJvbGQsIHNob3VsZEZha2VJdGFsaWMsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRh
dGlvbigpLCBmb250RGVzY3JpcHRpb24udGV4dE9yaWVudGF0aW9uKCkpOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRm9udFBsYXRmb3JtRGF0YShuYW1lLCBmb250RGVzY3JpcHRpb24uY29tcHV0
ZWRTaXplKCksIHNob3VsZEZha2VCb2xkLCBzaG91bGRGYWtlSXRhbGljLCBmb250RGVzY3JpcHRp
b24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlvbigpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKaW5k
ZXggM2Y1M2RkZi4uMGJkNzFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRv
bWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpCitQYXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgY29uc3QgY2hhciogbmFt
ZSA9IDA7CiAgICAgQ1N0cmluZyBuYW1lU3RyaW5nOyAvLyBLZWVwcyBuYW1lIHZhbGlkIHdpdGhp
biBzY29wZSBvZiB0aGlzIGZ1bmN0aW9uIGluIGNhc2UgdGhhdCBuYW1lIGlzIGZyb20gYSBmYW1p
bHkuCkBAIC0yMDcsNyArMjA3LDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICB9CiAK
ICAgICBTa1NhZmVVbnJlZih0eXBlZmFjZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gYWRvcHRQdHIocmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGRiYWQ1NzEuLjNlOTBiYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBpbnQgZm9udFdlaWdodFRv
Rm9udGNvbmZpZ1dlaWdodChGb250V2VpZ2h0IHdlaWdodCkKICAgICB9CiB9CiAKLUZvbnRQbGF0
Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitQ
YXNzT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgLy8gVGhlIENTUyBmb250IG1hdGNoaW5nIGFsZ29yaXRo
bSAoaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mb250cy8jZm9udC1tYXRjaGluZy1hbGdvcml0
aG0pCiAgICAgLy8gc2F5cyB0aGF0IHdlIG11c3QgZmluZCBhbiBleGFjdCBtYXRjaCBmb3IgZm9u
dCBmYW1pbHksIHNsYW50IChpdGFsaWMgb3Igb2JsaXF1ZSBjYW4gYmUgdXNlZCkKQEAgLTE3Nywx
NSArMTc3LDE1IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAgICAgUmVmUHRyPEZjUGF0dGVy
bj4gcGF0dGVybiA9IGFkb3B0UmVmKEZjUGF0dGVybkNyZWF0ZSgpKTsKICAgICBTdHJpbmcgZmFt
aWx5TmFtZVN0cmluZyhnZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZvbnREZXNjcmlwdGlvbkFuZEZh
bWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseSkpOwogICAgIGlmICghRmNQYXR0ZXJuQWRkU3Ry
aW5nKHBhdHRlcm4uZ2V0KCksIEZDX0ZBTUlMWSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGY0No
YXI4Kj4oZmFtaWx5TmFtZVN0cmluZy51dGY4KCkuZGF0YSgpKSkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJvb2wgaXRhbGljID0gZm9udERlc2Ny
aXB0aW9uLml0YWxpYygpOwogICAgIGlmICghRmNQYXR0ZXJuQWRkSW50ZWdlcihwYXR0ZXJuLmdl
dCgpLCBGQ19TTEFOVCwgaXRhbGljID8gRkNfU0xBTlRfSVRBTElDIDogRkNfU0xBTlRfUk9NQU4p
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFG
Y1BhdHRlcm5BZGRJbnRlZ2VyKHBhdHRlcm4uZ2V0KCksIEZDX1dFSUdIVCwgZm9udFdlaWdodFRv
Rm9udGNvbmZpZ1dlaWdodChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkpKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghRmNQYXR0ZXJuQWRkRG91
YmxlKHBhdHRlcm4uZ2V0KCksIEZDX1BJWEVMX1NJWkUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgLy8gVGhlIHN0cmF0ZWd5IGlzIG9yaWdpbmFsbHkgZnJvbSBTa2lhIChzcmMvcG9y
dHMvU2tGb250SG9zdF9mb250Y29uZmlnLmNwcCk6CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBGb250
UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RAogICAgIEZjUmVzdWx0IGZvbnRDb25maWdSZXN1bHQ7CiAgICAg
UmVmUHRyPEZjUGF0dGVybj4gcmVzdWx0UGF0dGVybiA9IGFkb3B0UmVmKEZjRm9udE1hdGNoKDAs
IHBhdHRlcm4uZ2V0KCksICZmb250Q29uZmlnUmVzdWx0KSk7CiAgICAgaWYgKCFyZXN1bHRQYXR0
ZXJuKSAvLyBObyBtYXRjaC4KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgRmNDaGFyOCogZm9udENvbmZpZ0ZhbWlseU5hbWVBZnRlck1hdGNoaW5nOwog
ICAgIEZjUGF0dGVybkdldFN0cmluZyhyZXN1bHRQYXR0ZXJuLmdldCgpLCBGQ19GQU1JTFksIDAs
ICZmb250Q29uZmlnRmFtaWx5TmFtZUFmdGVyTWF0Y2hpbmcpOwpAQCAtMjE1LDE4ICsyMTUsMTYg
QEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICAgICAgJiYgIShlcXVhbElnbm9yaW5nQ2Fz
ZShmYW1pbHlOYW1lU3RyaW5nLCAic2FucyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5h
bWVTdHJpbmcsICJzYW5zLXNlcmlmIikKICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShm
YW1pbHlOYW1lU3RyaW5nLCAic2VyaWYiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1l
U3RyaW5nLCAibW9ub3NwYWNlIikKICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1p
bHlOYW1lU3RyaW5nLCAiZmFudGFzeSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWVT
dHJpbmcsICJjdXJzaXZlIikpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBWZXJpZnkgdGhhdCB0aGlzIGZvbnQgaGFzIGFuIGVuY29kaW5nIGNv
bXBhdGlibGUgd2l0aCBGb250Y29uZmlnLiBGb250Y29uZmlnIGN1cnJlbnRseQogICAgIC8vIHN1
cHBvcnRzIHRocmVlIGVuY29kaW5ncyBpbiBGY0ZyZWVUeXBlQ2hhckluZGV4OiBVbmljb2RlLCBT
eW1ib2wgYW5kIEFwcGxlUm9tYW4uCiAgICAgLy8gSWYgdGhpcyBmb250IGRvZXNuJ3QgaGF2ZSBv
bmUgb2YgdGhlc2UgdGhyZWUgZW5jb2RpbmdzLCBkb24ndCBzZWxlY3QgaXQuCi0gICAgRm9udFBs
YXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEocmVzdWx0UGF0
dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKTsKLSAgICBpZiAoIXBsYXRmb3JtRGF0YS0+aGFz
Q29tcGF0aWJsZUNoYXJtYXAoKSkgewotICAgICAgICBkZWxldGUgcGxhdGZvcm1EYXRhOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgT3duUHRyPEZvbnRQbGF0Zm9ybURhdGE+IHBsYXRm
b3JtRGF0YSA9IGFkb3B0UHRyKG5ldyBGb250UGxhdGZvcm1EYXRhKHJlc3VsdFBhdHRlcm4uZ2V0
KCksIGZvbnREZXNjcmlwdGlvbikpOworICAgIGlmICghcGxhdGZvcm1EYXRhLT5oYXNDb21wYXRp
YmxlQ2hhcm1hcCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBwbGF0
Zm9ybURhdGE7CisgICAgcmV0dXJuIHBsYXRmb3JtRGF0YS5yZWxlYXNlKCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFj
Lm1tCmluZGV4IDUxNzE4MWEuLmQxY2M1MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KQEAgLTIxNiw3ICsyMTYsNyBA
QCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZQogICAgIFtXZWJGb250Q2FjaGUgZ2V0VHJhaXRzOnRy
YWl0c01hc2tzIGluRmFtaWx5OmZhbWlseU5hbWVdOwogfQogCi1Gb250UGxhdGZvcm1EYXRhKiBG
b250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQorUGFzc093blB0cjxG
b250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5KQogewogICAgIE5TRm9udFRyYWl0TWFzayB0cmFpdHMgPSBmb250RGVzY3JpcHRpb24uaXRh
bGljKCkgPyBOU0ZvbnRJdGFsaWNUcmFpdCA6IDA7CiAgICAgTlNJbnRlZ2VyIHdlaWdodCA9IHRv
QXBwS2l0Rm9udFdlaWdodChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkpOwpAQCAtMjI0LDcgKzIy
NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAKICAgICBOU0ZvbnQgKm5zRm9udCA9IFtX
ZWJGb250Q2FjaGUgZm9udFdpdGhGYW1pbHk6ZmFtaWx5IHRyYWl0czp0cmFpdHMgd2VpZ2h0Ondl
aWdodCBzaXplOnNpemVdOwogICAgIGlmICghbnNGb250KQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9
IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXTsKICAgICBOU0ZvbnRUcmFpdE1hc2sg
YWN0dWFsVHJhaXRzID0gMDsKQEAgLTI0MCw4ICsyNDAsOCBAQCBGb250UGxhdGZvcm1EYXRhKiBG
b250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RAogICAgIC8vIEluIHRoYXQgY2FzZSwgd2UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIHBsYXRm
b3JtRGF0YS4KICAgICBPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gcGxhdGZvcm1EYXRhID0gYWRv
cHRQdHIobmV3IEZvbnRQbGF0Zm9ybURhdGEocGxhdGZvcm1Gb250LCBzaXplLCBmb250RGVzY3Jp
cHRpb24udXNlUHJpbnRlckZvbnQoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwg
Zm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlh
bnQoKSkpOwogICAgIGlmICghcGxhdGZvcm1EYXRhLT5mb250KCkpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBwbGF0Zm9ybURhdGEubGVha1B0cigpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gcGxhdGZvcm1EYXRhLnJlbGVhc2UoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udENhY2hlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udENhY2hlUXQuY3BwCmluZGV4IDZkMWVlNzIuLjUwNDliODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKQEAgLTg4
LDEyICs4OCwxMiBAQCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRv
bWljU3RyaW5nJiwgVmVjdG9yPHVuc2lnbmVkPiYpCiB7CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEq
IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lKQorUGFzc093
blB0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5TmFtZSkKIHsKICAgICBRRm9udERhdGFiYXNlIGRiOwogICAgIGlmICghZGIuaGFz
RmFtaWx5KGZhbWlseU5hbWUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbmV3IEZv
bnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGb250UGxhdGZvcm1EYXRhKGZv
bnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRD
YWNoZVNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250
Q2FjaGVTa2lhLmNwcAppbmRleCBkMmYwODhlLi5hNDU4MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDYWNoZVNraWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udENhY2hlU2tpYS5jcHAKQEAg
LTEyOSw4ICsxMjksNyBAQCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUZv
bnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkK
K1Bhc3NPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZv
cm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseSkKIHsKICAgICBjb25zdCBjaGFyKiBuYW1lID0gMDsKICAgICBDU3Ry
aW5nIHM7CkBAIC0xNzIsNyArMTcxLDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpj
cmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKIAogICAg
IFNrVHlwZWZhY2UqIHRmID0gU2tUeXBlZmFjZTo6Q3JlYXRlRnJvbU5hbWUobmFtZSwgc3RhdGlj
X2Nhc3Q8U2tUeXBlZmFjZTo6U3R5bGU+KHN0eWxlKSk7CiAgICAgaWYgKCF0ZikKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRm9udFBsYXRmb3JtRGF0
YSogcmVzdWx0ID0KICAgICAgICAgbmV3IEZvbnRQbGF0Zm9ybURhdGEodGYsCkBAIC0xODIsNyAr
MTgxLDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0l0YWxpYykgJiYgIXRmLT5pc0l0YWxpYygpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24o
KSk7CiAgICAgdGYtPnVucmVmKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRv
cHRQdHIocmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRl
eCBlZTU1ZTFkLi4xZTVhZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQg
Rm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5h
bWUsIFZlY3Rvcjx1bnNpZ25lCiAgICAgY29weVRvVmVjdG9yKHByb2NEYXRhLm1fdHJhaXRzTWFz
a3MsIHRyYWl0c01hc2tzKTsKIH0KIAotRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK1Bhc3NPd25QdHI8Rm9udFBsYXRmb3JtRGF0
YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKIHsKICAgICBi
b29sIGlzTHVjaWRhR3JhbmRlID0gZmFsc2U7CiAgICAgc3RhdGljIEF0b21pY1N0cmluZyBsdWNp
ZGFTdHIoIkx1Y2lkYSBHcmFuZGUiKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBGb250UGxhdGZvcm1E
YXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uY29tcHV0ZWRQaXhlbFNpemUoKSAqICh1c2VHREkgPyAxIDogMzIpLCB1c2VHREkpOwogCiAg
ICAgaWYgKCFoZm9udCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKGlzTHVjaWRhR3JhbmRlKQogICAgICAgICB1c2VHREkgPSBmYWxzZTsgLy8g
TmV2ZXIgdXNlIEdESSBmb3IgTHVjaWRhIEdyYW5kZS4KQEAgLTU4OCwxMCArNTg4LDEwIEBAIEZv
bnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnRECiAgICAgICAgIC8vIGZvbnQuCiAgICAgICAgIGRlbGV0ZSBy
ZXN1bHQ7CiAgICAgICAgIERlbGV0ZU9iamVjdChoZm9udCk7Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9ICAgICAgICAKIAotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGFkb3B0UHRyKHJlc3VsdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDYWNoZVdpbkNFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDYWNoZVdpbkNFLmNw
cAppbmRleCA5YWI5MWExLi43YjgwMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udENhY2hlV2luQ0UuY3BwCkBAIC0zMTIsMTAg
KzMxMiw5IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6Z2V0TGFzdFJl
c29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpCiAgICAgcmV0dXJuIGdldENhY2hlZEZv
bnREYXRhKGZvbnREZXNjLCBGb250UGxhdGZvcm1EYXRhOjpkZWZhdWx0Rm9udEZhbWlseSgpLCBm
YWxzZSwgc2hvdWxkUmV0YWluKTsKIH0KIAotRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpj
cmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0
aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK1Bhc3NPd25QdHI8Rm9udFBsYXRmb3Jt
RGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKIHsKLSAg
ICBGb250UGxhdGZvcm1EYXRhKiByZXN1bHQgPSBuZXcgRm9udFBsYXRmb3JtRGF0YShmb250RGVz
Y3JpcHRpb24sIGZhbWlseSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBmYW1pbHkpKTsKIH0KIAog
dm9pZCBGb250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5TmFtZSwgVmVjdG9yPHVuc2lnbmVkPiYgdHJhaXRzTWFza3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9Gb250Q2FjaGVXeC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9Gb250Q2FjaGVXeC5jcHAKaW5kZXggNWU5MGUw
NS4uYTRhZjViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvRm9udENhY2hlV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0ZvbnRDYWNoZVd4LmNwcApAQCAtOTcsMTQgKzk3LDE0IEBAIFBhc3NSZWZQdHI8U2ltcGxl
Rm9udERhdGE+IEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250
RGVzY3JpCiAgICAgcmV0dXJuIGZhbGxiYWNrLnJlbGVhc2UoKTsKIH0KIAotRm9udFBsYXRmb3Jt
RGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK1Bhc3NP
d25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJp
bmcmIGZhbWlseSkKIHsKICAgICAvLyB3eCB3aWxsIEFMV0FZUyBjcmVhdGUgYSB2YWxpZCBmb250
LCBldmVuIGlmIHRoZSBmb250IGZhbWlseSB3ZSdyZSBsb29raW5nIGZvciBpcyBub3QgYXZhaWxh
YmxlLgogICAgIC8vIFNvIHdlIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgZm9udCBpcyB0aGUgb25l
IHdlJ3JlIGxvb2tpbmcgZm9yIGJlZm9yZSBjcmVhdGluZyB0aGUgZm9udC4KICAgICBpZiAoIXd4
Rm9udEVudW1lcmF0b3I6OklzVmFsaWRGYWNlbmFtZShmYW1pbHkuc3RyaW5nKCkpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbmV3IEZv
bnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLGZhbWlseSk7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5KSk7CiB9CiAK
IHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lZD4mIHRyYWl0c01hc2tzKQo=
</data>
<flag name="review"
          id="213598"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="214843"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>