<?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>38701</bug_id>
          
          <creation_ts>2010-05-06 15:48:07 -0700</creation_ts>
          <short_desc>[chromium] don&apos;t call fontconfig twice in complex text path</short_desc>
          <delta_ts>2011-11-17 04:17:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>39215</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Evan Martin">evan</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>agl</cc>
    
    <cc>bashi</cc>
    
    <cc>behdad</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jshin</cc>
    
    <cc>levin</cc>
    
    <cc>ningxin.hu</cc>
    
    <cc>robin.webkit</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>222021</commentid>
    <comment_count>0</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-05-06 15:48:07 -0700</bug_when>
    <thetext>[chromium] don&apos;t call fontconfig twice in complex text path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222028</commentid>
    <comment_count>1</comment_count>
      <attachid>55312</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-05-06 15:55:17 -0700</bug_when>
    <thetext>Created attachment 55312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222029</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-06 15:58:44 -0700</bug_when>
    <thetext>Attachment 55312 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/ChangeLog:12:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 2 in 3 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>222030</commentid>
    <comment_count>3</comment_count>
      <attachid>55313</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-05-06 16:01:23 -0700</bug_when>
    <thetext>Created attachment 55313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222792</commentid>
    <comment_count>4</comment_count>
      <attachid>55313</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-07 21:59:10 -0700</bug_when>
    <thetext>Comment on attachment 55313
Patch

I don&apos;t understand this change.  I think your ChangeLog could better explain what you&apos;re doing and why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223440</commentid>
    <comment_count>5</comment_count>
      <attachid>55588</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-05-10 12:13:14 -0700</bug_when>
    <thetext>Created attachment 55588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223441</commentid>
    <comment_count>6</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-05-10 12:14:42 -0700</bug_when>
    <thetext>New patch with more in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223442</commentid>
    <comment_count>7</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-05-10 12:16:18 -0700</bug_when>
    <thetext>Dave: you r+&apos;d the identical patch (with a different ChangeLog) in https://bugs.webkit.org/show_bug.cgi?id=37904 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223479</commentid>
    <comment_count>8</comment_count>
      <attachid>55588</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-10 13:11:01 -0700</bug_when>
    <thetext>Comment on attachment 55588
Patch

Ok

Something to consider: Seems unfortunate that the code in FontCache::getFontDataForCharacters is so similar to the code in  FontCache::createFontPlatformData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224652</commentid>
    <comment_count>9</comment_count>
      <attachid>55588</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-12 08:48:52 -0700</bug_when>
    <thetext>Comment on attachment 55588
Patch

Rejecting patch 55588 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Last 500 characters of output:
 that name could be found
Testing 18336 test cases.
media/video-loop.html -&gt; timed out
Sampling process 41497 for 10 seconds with 10 milliseconds of run time between samples
Sampling completed, processing symbols...
Sample analysis of process 41497 written to file /Users/eseidel/Library/Logs/DumpRenderTree/HangReport.txt

Exiting early after 1 failures. 14932 tests run.
521.95s total testing time

14931 test cases (99%) succeeded
1 test case (&lt;1%) timed out
12 test cases (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/2180152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225169</commentid>
    <comment_count>10</comment_count>
      <attachid>55588</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-05-13 00:04:44 -0700</bug_when>
    <thetext>Comment on attachment 55588
Patch

Given that the failure was on Mac and this was a Linux-specific change, I&apos;m going to run it through the commit bot again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225240</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-13 05:46:01 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 55588 [details])
&gt; Given that the failure was on Mac and this was a Linux-specific change, I&apos;m going to run it through the commit bot again.

The false positive was from bug 38912.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225966</commentid>
    <comment_count>12</comment_count>
      <attachid>55588</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-14 13:16:23 -0700</bug_when>
    <thetext>Comment on attachment 55588
Patch

Clearing flags on attachment: 55588

Committed r59483: &lt;http://trac.webkit.org/changeset/59483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225968</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-14 13:16:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226834</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-17 11:10:27 -0700</bug_when>
    <thetext>Re-opening since this was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258824</commentid>
    <comment_count>15</comment_count>
      <attachid>63206</attachid>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-02 06:01:59 -0700</bug_when>
    <thetext>Created attachment 63206
Patch utilizes the PlatformFontDataCache to improve the performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259237</commentid>
    <comment_count>16</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-02 18:09:25 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=63206) [details]
&gt; Patch utilizes the PlatformFontDataCache to improve the performance.

Evan, can you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259681</commentid>
    <comment_count>17</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-03 14:13:16 -0700</bug_when>
    <thetext>Adding Evan so that he will see this and look it over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259684</commentid>
    <comment_count>18</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-08-03 14:21:26 -0700</bug_when>
    <thetext>I feel like this global:
  static SkTypeface* gTypefaceForChars = 0;
is kind of a hack.

I worry that there is a code path where we call ::getFontDataForCharacters once, set gTypefaceForChars to value A, then call ::getFontDataForCharacters again and set it to value B, then call ::createFontPlatformData with the info in A and get B back from the global.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259752</commentid>
    <comment_count>19</comment_count>
      <attachid>63206</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-03 17:01:37 -0700</bug_when>
    <thetext>Comment on attachment 63206
Patch utilizes the PlatformFontDataCache to improve the performance.

r- due to Evan&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259775</commentid>
    <comment_count>20</comment_count>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-03 18:11:34 -0700</bug_when>
    <thetext>Evan, thanks for your review. Yes, it makes the getFontDataForCharacters non-reentrant. And it might not ease the performance issue. I will investigate more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259780</commentid>
    <comment_count>21</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-08-03 18:19:31 -0700</bug_when>
    <thetext>I worry the correct fix to font loading in general is more complicated.

I think what we should do is put more of the control into WebKit:
- Call to fontconfig once in getFontDataForCharacters to resolve a font request all the way to a specific filename and font settings.  Never call fontconfig a second time for this font.  That may mean extending what FontDescription includes.
- createFontPlatformData could then just open that font file and give the opened font to Skia.


I added the SkTypeface::CreateFromName call recently (in the last six months) and I think it was maybe the wrong design.  I think Skia doesn&apos;t have enough information to be able to open the correct font on Linux if we only give it a font name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260347</commentid>
    <comment_count>22</comment_count>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-04 19:33:21 -0700</bug_when>
    <thetext>As my opinion, call SkTypeface::CreateForChars in getFontDataForCharacters is enough to match a correct font (just like what r59483 does). 

getFontDataForCharacters passes the characters and style in, SkTypeface::CreateForChars uses all of them to match a font, there is no information loss.

In previous implementation, getFontDataForCharacters uses ChromiumBridge::getFontFamilyForCharacters to map characters to font family. Then createFontPlatformData uses family name and style to call SkTypeface::CreateFromName to match a font, there is information loss, since fonts with different char coverage might have same family name. (case is http://code.google.com/p/chromium/issues/detail?id=32109)

The issue of r59483 is performance loss. I constructed a similar page_cycler test as page_cycler_intl1, and reproduced it. As my finding, the root cause is ChromiumBridge::getFontFamilyForCharacters has cache to avoid some IPC (in RendererWebKitClientImpl::SandboxSupport::getFontFamilyForCharacters). However, in r59483, each SkTypeface::CreateForChars involves IPC.

I wrote a patch to add a typeface cache into r59483, the performance loss disappears. For memory usage,  RendererWebKitClientImpl::SandboxSupport::getFontFamilyForCharacters cache is purged when PurgeRenderers. So I purge the typeface cache when FontCache invalidate. But it involves WebKit API change, other platforms need to modify too. At least, Windows platform (FontCacheChromiumWin) has a FontCmapCache which needs to purge too. 

Please review this patch. Your comments are appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260359</commentid>
    <comment_count>23</comment_count>
      <attachid>63537</attachid>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-04 20:21:20 -0700</bug_when>
    <thetext>Created attachment 63537
add typeface cache

Please review. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260360</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 20:22:09 -0700</bug_when>
    <thetext>Attachment 63537 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/chromium/FontCacheLinux.cpp:67:  Missing space before ( in for(  [whitespace/parens] [5]
WebCore/platform/graphics/chromium/FontCacheLinux.cpp:85:  Declaration has space between type name and * in SkTypeface *tf  [whitespace/declaration] [3]
Total errors found: 2 in 3 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>260404</commentid>
    <comment_count>25</comment_count>
      <attachid>63553</attachid>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-04 22:33:11 -0700</bug_when>
    <thetext>Created attachment 63553
patch to add typeface cache

update for style check error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260408</commentid>
    <comment_count>26</comment_count>
      <attachid>63553</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-08-04 22:51:56 -0700</bug_when>
    <thetext>Comment on attachment 63553
patch to add typeface cache

Hi, thank you for your patch! I&apos;ll try to take a look:

&gt; --- a/WebCore/platform/graphics/FontCache.h
&gt; +++ b/WebCore/platform/graphics/FontCache.h
&gt; @@ -102,6 +102,7 @@ private:
&gt;      // These methods are implemented by each platform.
&gt;      SimpleFontData* getSimilarFontPlatformData(const Font&amp;);
&gt;      FontPlatformData* createFontPlatformData(const FontDescription&amp;, const AtomicString&amp; family);
&gt; +    void invalidatePlatform();
Who call this? If chromium side, it&apos;s OK, if it will be called inside webkit, such code might be bette to stay in same patch.

&gt; +typedef HashMap&lt;String, SkTypeface*&gt; TypefaceCache;
&gt; +
&gt; +static TypefaceCache *gTypefaceChache = 0;
&gt; +
Because FontCache instance itself global, 
It can be a class member field instead of static variable.
Dynamically allocated static variable typically make valgrind unhappy, 
we should avoid them if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260461</commentid>
    <comment_count>27</comment_count>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-05 01:19:24 -0700</bug_when>
    <thetext>(In reply to comment #26)
Thanks for your comments. 

&gt; (From update of attachment 63553 [details])
&gt; Hi, thank you for your patch! I&apos;ll try to take a look:
&gt; 
&gt; &gt; --- a/WebCore/platform/graphics/FontCache.h
&gt; &gt; +++ b/WebCore/platform/graphics/FontCache.h
&gt; &gt; @@ -102,6 +102,7 @@ private:
&gt; &gt;      // These methods are implemented by each platform.
&gt; &gt;      SimpleFontData* getSimilarFontPlatformData(const Font&amp;);
&gt; &gt;      FontPlatformData* createFontPlatformData(const FontDescription&amp;, const AtomicString&amp; family);
&gt; &gt; +    void invalidatePlatform();
&gt; Who call this? If chromium side, it&apos;s OK, if it will be called inside webkit, such code might be bette to stay in same patch.

In my early thoughts, it is called by FontCache::invalidate. However, FontCache::invalidate is called by MemoryPurger in chromium via task manager. So it is not a big deal. And it changes WebKit API, all platforms are impacted. So I prefer to remove it. In my page_cycler and other tests, the memory usage doesn&apos;t increase comparing to HEAD.  Render shutdown will release the typeface cache. 

&gt; 
&gt; &gt; +typedef HashMap&lt;String, SkTypeface*&gt; TypefaceCache;
&gt; &gt; +
&gt; &gt; +static TypefaceCache *gTypefaceChache = 0;
&gt; &gt; +
&gt; Because FontCache instance itself global, 
&gt; It can be a class member field instead of static variable.
&gt; Dynamically allocated static variable typically make valgrind unhappy, 
&gt; we should avoid them if possible.

I just avoid to change WebKit API (FontCache.h). So by referring to FontCacheChromiumWin.cpp::fontCmapCache, I modify the patch in that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260462</commentid>
    <comment_count>28</comment_count>
      <attachid>63563</attachid>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-05 01:20:31 -0700</bug_when>
    <thetext>Created attachment 63563
patch

Updated. Please review. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261640</commentid>
    <comment_count>29</comment_count>
      <attachid>63563</attachid>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-06 20:29:25 -0700</bug_when>
    <thetext>Comment on attachment 63563
patch

Could someone please review my updated patch? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262245</commentid>
    <comment_count>30</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-08-09 11:35:58 -0700</bug_when>
    <thetext>This cache looks like it will grow without ever shrinking.
Won&apos;t it include a copy of every character ever rendered?
It&apos;s also not correct to not include the font information in the cache (for example, this cache will return the wrong font when asked for the same characters in bold or not bold).

More broadly, I think you need to spend some time understanding FontCache.  Maybe it has the appropriate setup to cache what you need.  (I don&apos;t understand it completely myself.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262450</commentid>
    <comment_count>31</comment_count>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-09 18:44:23 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; This cache looks like it will grow without ever shrinking.
&gt; Won&apos;t it include a copy of every character ever rendered?
The memory usage of this typeface cache is similar to unicode_font_families_ cache in RendererWebKitClientImpl::SandboxSupport::getFontFamilyForCharacters which is currently used. They are destroyed with the render (usually switching to another site will destroy the render.)
In my page_cycler test, chromium with my patch doesn&apos;t increase memory usage comparing to HEAD. And I also tested different sites switch cases, the memory usage behavior is not different. 
For another instance, FontCacheChromiumWin also has a FontCmapCache which doesn&apos;t shrink. It is acceptable.

&gt; It&apos;s also not correct to not include the font information in the cache (for example, this cache will return the wrong font when asked for the same characters in bold or not bold).
Yes. This is what I want to get feedbacks from you. To combine the style info to cache key is better. If you think OK, I will add it. 

&gt; 
&gt; More broadly, I think you need to spend some time understanding FontCache.  Maybe it has the appropriate setup to cache what you need.  (I don&apos;t understand it completely myself.)
I agree with you that I don&apos;t understand font cache well. But I just want to fix the bug. The complex font selection bug on Linux is annoying for non-English users. 
As my knowledge and test, I think your fix at r59483 works. But it is rolled out according to performance regression. I just tried to find the root cause and provide a fix. Besides that, I did the test to make sure my fix doesn&apos;t bring other regressions such as memory leaks.  
I did investigate other ways, such as passing the character info to createFontPlatformData, but it involves WebKit API change, other platforms are impacted. 
I submitted this patch for the three reasons:
1. fix the complex font selection problem (https://bugs.webkit.org/show_bug.cgi?id=37904), pass the test case for that. (the cache key need to update)
2. fix the performance loss of page_cycler
3. no more memory leaks comparing to current implementation. 

So could you share with me what your most concerns? And in your mind, what&apos;s the right way to fix it? Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263514</commentid>
    <comment_count>32</comment_count>
      <attachid>63563</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-11 16:28:18 -0700</bug_when>
    <thetext>Comment on attachment 63563
patch

Based on Evan&apos;s comment, it sounds like there are problems with this version of the patch so r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267135</commentid>
    <comment_count>33</comment_count>
      <attachid>64925</attachid>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-19 22:41:22 -0700</bug_when>
    <thetext>Created attachment 64925
updated patch

Update patch based on Evan&apos;s comment to add style info to typeface cache. Please review. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271240</commentid>
    <comment_count>34</comment_count>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-29 17:27:31 -0700</bug_when>
    <thetext>Any comments about patch in Comment #33? Question again, could you share with me what your most concerns? And in your mind, what&apos;s the right way to fix it? Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271736</commentid>
    <comment_count>35</comment_count>
      <attachid>64925</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-30 16:26:25 -0700</bug_when>
    <thetext>Comment on attachment 64925
updated patch

&gt; WebCore/ChangeLog:11
&gt; +        [chromium] don&apos;t call fontconfig twice in complex text path
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=38701
We usually put this information just under the &quot;Reviewed by&quot; line.

&gt; WebCore/platform/graphics/chromium/FontCacheLinux.cpp:61
&gt;  const SimpleFontData* FontCache::getFontDataForCharacters(const Font&amp; font,
&gt;                                                            const UChar* characters,
&gt;                                                            int length)
These should be one line.

&gt; WebCore/platform/graphics/chromium/FontCacheLinux.cpp:69
&gt; +    // This cache is just leaked on shutdown.
That&apos;s true for mosts of our caches like this.  We don&apos;t need a comment explaining that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271820</commentid>
    <comment_count>36</comment_count>
      <attachid>65987</attachid>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-30 17:57:13 -0700</bug_when>
    <thetext>Created attachment 65987
updated patch based on comment #35

Thanks for review. Updated patch based on comment #35.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271830</commentid>
    <comment_count>37</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-08-30 18:14:14 -0700</bug_when>
    <thetext>I&apos;m sorry I haven&apos;t provided better review feedback, but this area of WebKit is  complicated enough that I can only start to remember how it works when I&apos;ve been reading the code, and lately I&apos;ve been working on other things.

I do know that the FontCache class itself is a cache of FontData which is a wrapper around PlatformFontData, which maps to an SkTypeface.  That is why I think adding a second cache inside the cache class is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271961</commentid>
    <comment_count>38</comment_count>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-08-31 00:25:34 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; I do know that the FontCache class itself is a cache of FontData which is a wrapper around PlatformFontData, which maps to an SkTypeface.  That is why I think adding a second cache inside the cache class is wrong.

Evan, thanks for your comments. As my understanding, FontCache maps from family name (with style etc.,) to SkTypeface. However, the newly added typeface cache maps from character to SkTypeface. They are for different purpose.

There are two reasons to add this cache:
1. if use FontCahce only and ChromiumBridge::getFontFamilyForCharacters to map from character to family name, there is information loss, which causes bug https://bugs.webkit.org/show_bug.cgi?id=37904.
2. if use SkTypeface::CreateForChars without the typeface cache, each SkTypeface::CreateForChars will invoke a IPC, which causes the performance regression https://bugs.webkit.org/show_bug.cgi?id=39215.

Again, any comments are appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273723</commentid>
    <comment_count>39</comment_count>
    <who name="ningxin hu">ningxin.hu</who>
    <bug_when>2010-09-02 18:45:07 -0700</bug_when>
    <thetext>Do you guys have any comments? Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325937</commentid>
    <comment_count>40</comment_count>
      <attachid>65987</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 00:23:22 -0800</bug_when>
    <thetext>Comment on attachment 65987
updated patch based on comment #35

This patch has been up for review for a long time.  None of the folks who are qualified to review this code seem that interested in this patch.  I don&apos;t mean to be unfriendly, but I think we should put this patch aside for a while.  If someone feels confident in their ability to review this patch, please don&apos;t let this review stand in your way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439741</commentid>
    <comment_count>41</comment_count>
      <attachid>101449</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-07-20 04:39:14 -0700</bug_when>
    <thetext>Created attachment 101449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439742</commentid>
    <comment_count>42</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-07-20 04:43:08 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; Created an attachment (id=101449) [details]
&gt; Patch

This patch looks not so good, but as ningxin mentioned, WebKit API changes might be needed for more sophisticated solutions.  I&apos;d like to ask suggestions and comments.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440172</commentid>
    <comment_count>43</comment_count>
      <attachid>101449</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 18:26:31 -0700</bug_when>
    <thetext>Comment on attachment 101449
Patch

Attachment 101449 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9199518

New failing tests:
fast/blockflow/japanese-rl-text.html
fast/repaint/japanese-rl-selection-repaint.html
fast/forms/implicit-submission.html
editing/selection/vertical-rl-ltr-extend-line-backward-p.html
fast/blockflow/japanese-ruby-vertical-rl.html
fast/ruby/base-shorter-than-text.html
editing/selection/vertical-rl-ltr-extend-line-forward-p.html
fast/blockflow/vertical-baseline-alignment.html
editing/selection/vertical-rl-ltr-extend-line-backward-br.html
editing/selection/vertical-rl-ltr-extend-line-forward-br.html
fast/blockflow/japanese-lr-text.html
editing/selection/vertical-lr-ltr-extend-line-forward-br.html
fast/dynamic/text-combine.html
editing/selection/vertical-rl-ltr-extend-line-forward-wrap.html
fast/repaint/japanese-rl-selection-clear.html
fast/blockflow/japanese-ruby-vertical-lr.html
fast/blockflow/vertical-align-table-baseline.html
editing/selection/vertical-rl-ltr-extend-line-backward-wrap.html
editing/selection/vertical-lr-ltr-extend-line-backward-br.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441558</commentid>
    <comment_count>44</comment_count>
      <attachid>101449</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-24 22:16:42 -0700</bug_when>
    <thetext>Comment on attachment 101449
Patch

r- at this time as cr-linux break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442067</commentid>
    <comment_count>45</comment_count>
      <attachid>101960</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-07-25 19:07:07 -0700</bug_when>
    <thetext>Created attachment 101960
Patch (Fix breaking tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452087</commentid>
    <comment_count>46</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-08-16 20:19:50 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; Created an attachment (id=101960) [details]
&gt; Patch (Fix breaking tests)

Any comments/suggestions on this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452254</commentid>
    <comment_count>47</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-08-17 08:06:29 -0700</bug_when>
    <thetext>If you look at the history of this, around comment 37 we discuss a previous patch that also introduces a cache.  I asked then: aren&apos;t there already caches for this kind of data in WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452259</commentid>
    <comment_count>48</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-08-17 08:09:02 -0700</bug_when>
    <thetext>Oh wait, I didn&apos;t understand the patch.  :(

I guess a better way of phrasing the question is: what is special about Chromiun Linux that requires additional API in FontCache?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462136</commentid>
    <comment_count>49</comment_count>
      <attachid>106327</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-09-05 06:15:27 -0700</bug_when>
    <thetext>Created attachment 106327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462138</commentid>
    <comment_count>50</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-09-05 06:17:26 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; I guess a better way of phrasing the question is: what is special about Chromiun Linux that requires additional API in FontCache?

Sorry for late response. I changed the approach to fix the problem. In the revised patch, PlatformSupport::getFontFamilyForCharacters() returns the bold and italic properties of the retrieved font family so that WebKit can maintain the correct mapping of the given characters. This patch doesn&apos;t require additional API in FontCache.

Even though updating Chromium side is needed, DumpRenderTree should work with this patch and should pass fast/text/international/bold-bengali.html. Some tests might require updating expectations.

If this approach sounds reasonable, I&apos;ll create a patch of Chromium part (and will modify the bug title, which is no longer appropriate).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462150</commentid>
    <comment_count>51</comment_count>
      <attachid>106327</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-05 07:07:36 -0700</bug_when>
    <thetext>Comment on attachment 106327
Patch

Attachment 106327 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9594323

New failing tests:
fast/text/international/khmer-selection.html
fast/text/cg-fallback-bolding.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470613</commentid>
    <comment_count>52</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-09-20 23:22:05 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; If this approach sounds reasonable, I&apos;ll create a patch of Chromium part (and will modify the bug title, which is no longer appropriate).

Any comments or suggestions? I&apos;ll revise the patch and rebase expectations if the approach looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494408</commentid>
    <comment_count>53</comment_count>
      <attachid>113272</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-01 19:44:57 -0700</bug_when>
    <thetext>Created attachment 113272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494409</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 19:46:33 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494412</commentid>
    <comment_count>55</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-01 19:48:10 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; Created an attachment (id=113272) [details]
&gt; Patch

Rebased to ToT. Following tests will need to rebase.
fast/text/international/khmer-selection.html
fast/text/cg-fallback-bolding.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494413</commentid>
    <comment_count>56</comment_count>
      <attachid>113273</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-01 19:49:57 -0700</bug_when>
    <thetext>Created attachment 113273
patch for chromium side</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494419</commentid>
    <comment_count>57</comment_count>
      <attachid>113272</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 20:43:52 -0700</bug_when>
    <thetext>Comment on attachment 113272
Patch

Attachment 113272 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10128488

New failing tests:
fast/text/international/khmer-selection.html
fast/text/cg-fallback-bolding.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494422</commentid>
    <comment_count>58</comment_count>
      <attachid>113272</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-01 21:20:17 -0700</bug_when>
    <thetext>Comment on attachment 113272
Patch

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

&gt; Source/WebCore/platform/chromium/PlatformSupport.h:158
&gt; +    static String getFontFamilyForCharacters(const UChar*, size_t numCharacters, const char* preferredLocale, bool* isBold, bool* isItalic);

would it perhaps be better if this returned a FontFamily struct?

  struct FontFamily {
      String name;
      bool isBold;
      bool isItalic;
  };

This way you don&apos;t have to worry about mixing up the order of the bool* parameters at the callsite.

&gt; Source/WebKit/chromium/public/linux/WebFontInfo.h:56
&gt; +    WEBKIT_EXPORT static WebCString familyForChars(const WebUChar* characters, size_t numCharacters, const char* preferredLocale, bool* isBold = 0, bool* isItalic = 0);

it is perhaps interesting that this one returns WebCString but WebSandboxSupport&apos;s version returns WebString.
is there a reason why they are different?  perhaps we should invent a WebFontFamily struct for use by this
function and the one on WebSandboxSupport?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494533</commentid>
    <comment_count>59</comment_count>
      <attachid>113297</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-02 03:33:37 -0700</bug_when>
    <thetext>Created attachment 113297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494534</commentid>
    <comment_count>60</comment_count>
      <attachid>113298</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-02 03:35:14 -0700</bug_when>
    <thetext>Created attachment 113298
patch for chromium side</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494536</commentid>
    <comment_count>61</comment_count>
      <attachid>113272</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-02 03:39:53 -0700</bug_when>
    <thetext>Comment on attachment 113272
Patch

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

Thank you for the review!

&gt;&gt; Source/WebCore/platform/chromium/PlatformSupport.h:158
&gt;&gt; +    static String getFontFamilyForCharacters(const UChar*, size_t numCharacters, const char* preferredLocale, bool* isBold, bool* isItalic);
&gt; 
&gt; would it perhaps be better if this returned a FontFamily struct?
&gt; 
&gt;   struct FontFamily {
&gt;       String name;
&gt;       bool isBold;
&gt;       bool isItalic;
&gt;   };
&gt; 
&gt; This way you don&apos;t have to worry about mixing up the order of the bool* parameters at the callsite.

Done.

&gt;&gt; Source/WebKit/chromium/public/linux/WebFontInfo.h:56
&gt;&gt; +    WEBKIT_EXPORT static WebCString familyForChars(const WebUChar* characters, size_t numCharacters, const char* preferredLocale, bool* isBold = 0, bool* isItalic = 0);
&gt; 
&gt; it is perhaps interesting that this one returns WebCString but WebSandboxSupport&apos;s version returns WebString.
&gt; is there a reason why they are different?  perhaps we should invent a WebFontFamily struct for use by this
&gt; function and the one on WebSandboxSupport?

Indeed. In any case, font name is in WebFontFamily structure and the return value is void.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494546</commentid>
    <comment_count>62</comment_count>
      <attachid>113297</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-02 04:23:53 -0700</bug_when>
    <thetext>Comment on attachment 113297
Patch

Attachment 113297 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10148223

New failing tests:
fast/text/international/khmer-selection.html
fast/text/cg-fallback-bolding.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494664</commentid>
    <comment_count>63</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-02 09:29:10 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; (From update of attachment 113297 [details])
&gt; Attachment 113297 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10148223
&gt; 
&gt; New failing tests:
&gt; fast/text/international/khmer-selection.html
&gt; fast/text/cg-fallback-bolding.html

Can you upload the new results for these tests?  It&apos;s hard to know the correctness of the patch without seeing the before and after images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494710</commentid>
    <comment_count>64</comment_count>
      <attachid>113297</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-02 10:29:28 -0700</bug_when>
    <thetext>Comment on attachment 113297
Patch

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

&gt; Source/WebKit/chromium/public/linux/WebFontFamily.h:39
&gt; +struct WEBKIT_EXPORT WebFontFamily {

I don&apos;t think you should need WEBKIT_EXPORT here.

&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:479
&gt; +    family-&gt;name = String::fromUTF8(webFamily.name.data());

hmm... perhaps there should be a String::fromUTF8() variant that takes a |const CString&amp;|?  if name happened to contain embedded nulls, this conversion would result in truncation.  that probably isn&apos;t going to happen in this case, but it always feels a bit risky to use .data() like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494780</commentid>
    <comment_count>65</comment_count>
      <attachid>113297</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-11-02 11:58:58 -0700</bug_when>
    <thetext>Comment on attachment 113297
Patch

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

&gt; Source/WebKit/chromium/src/linux/WebFontInfo.cpp:112
&gt; +        if (FcPatternGetInteger(current, FC_WEIGHT, 0, &amp;weight) == FcResultMatch)

|familyForChars|  does not have any style info (bold or italic) so that fontconfig input pattern does not have that, either. That is, font selection is entirely based on characters and pref_locale, isn&apos;t it? If so, doesn&apos;t fontconfig return a regular weight font in virtually all cases (before bold / italic fonts)? So, isBold and isItalic will never bet set to true, will they? 

If the above is taken together with the change made in FontCache::getFontDataForCharacters (partly quoted below), don&apos;t we end up using fakeBold and fakeItalic for even characters for which we have real bold and italic fonts? 

 76    if (!family.isBold &amp;&amp; description.weight() &gt;= FontWeightBold) {
 77        shouldSetFakeBold = true;
 78        description.setWeight(FontWeightNormal);
 79    }

Hmm.. in that case, some layout test must have failed.. So, I guess I&apos;m missing something, in which case please accept my apology. 

Anyway, if my reading is correct, shouldn&apos;t we pass style info to |familyForChars| and add that to fontconfig &apos;input pattern&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496010</commentid>
    <comment_count>66</comment_count>
      <attachid>113611</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-03 20:00:27 -0700</bug_when>
    <thetext>Created attachment 113611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496012</commentid>
    <comment_count>67</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-03 20:02:09 -0700</bug_when>
    <thetext>(In reply to comment #63)
&gt; Can you upload the new results for these tests?  It&apos;s hard to know the correctness of the patch without seeing the before and after images.

The revised patch contains new test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496014</commentid>
    <comment_count>68</comment_count>
      <attachid>113297</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-03 20:09:13 -0700</bug_when>
    <thetext>Comment on attachment 113297
Patch

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

&gt;&gt; Source/WebKit/chromium/public/linux/WebFontFamily.h:39
&gt;&gt; +struct WEBKIT_EXPORT WebFontFamily {
&gt; 
&gt; I don&apos;t think you should need WEBKIT_EXPORT here.

Done.

&gt;&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:479
&gt;&gt; +    family-&gt;name = String::fromUTF8(webFamily.name.data());
&gt; 
&gt; hmm... perhaps there should be a String::fromUTF8() variant that takes a |const CString&amp;|?  if name happened to contain embedded nulls, this conversion would result in truncation.  that probably isn&apos;t going to happen in this case, but it always feels a bit risky to use .data() like this.

Changed to use String::fromUTF8(const LChar*, size_t) variant, which might be equivalent to pass const CString&amp;, if my understanding is correct.

&gt;&gt; Source/WebKit/chromium/src/linux/WebFontInfo.cpp:112
&gt;&gt; +        if (FcPatternGetInteger(current, FC_WEIGHT, 0, &amp;weight) == FcResultMatch)
&gt; 
&gt; |familyForChars|  does not have any style info (bold or italic) so that fontconfig input pattern does not have that, either. That is, font selection is entirely based on characters and pref_locale, isn&apos;t it? If so, doesn&apos;t fontconfig return a regular weight font in virtually all cases (before bold / italic fonts)? So, isBold and isItalic will never bet set to true, will they? 
&gt; 
&gt; If the above is taken together with the change made in FontCache::getFontDataForCharacters (partly quoted below), don&apos;t we end up using fakeBold and fakeItalic for even characters for which we have real bold and italic fonts? 
&gt; 
&gt;  76    if (!family.isBold &amp;&amp; description.weight() &gt;= FontWeightBold) {
&gt;  77        shouldSetFakeBold = true;
&gt;  78        description.setWeight(FontWeightNormal);
&gt;  79    }
&gt; 
&gt; Hmm.. in that case, some layout test must have failed.. So, I guess I&apos;m missing something, in which case please accept my apology. 
&gt; 
&gt; Anyway, if my reading is correct, shouldn&apos;t we pass style info to |familyForChars| and add that to fontconfig &apos;input pattern&apos;?

Could you read the Evan&apos;s original report on http://crbug.com/32109 ?

|family| is the output argument and isn&apos;t used for font selection. It just holds font name and style info which fontconfig selected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496969</commentid>
    <comment_count>69</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-06 21:39:57 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503150</commentid>
    <comment_count>70</comment_count>
      <attachid>113611</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-15 12:23:41 -0800</bug_when>
    <thetext>Comment on attachment 113611
Patch

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

This approach seems reasonable to me. r- because we need to figure out how to land this without breaking the chromium build.

&gt; Source/WebKit/chromium/public/linux/WebFontInfo.h:36
&gt;  #include &quot;../WebCString.h&quot;
&gt; +#include &quot;../linux/WebFontFamily.h&quot;
&gt;  #include &quot;../linux/WebFontRenderStyle.h&quot;

fishd may have a preference on whether the includes from the same dir should just be &quot;WebFontFamily.h&quot; or &quot;../linux/WebFontFamily.h&quot;. I don&apos;t have a strong preference one way or another.

&gt; Source/WebKit/chromium/public/linux/WebFontInfo.h:53
&gt; -    WEBKIT_EXPORT static WebCString familyForChars(const WebUChar* characters, size_t numCharacters, const char* preferredLocale);
&gt; +    // Returns: the font family instance. The instance has an empty font name if the request could not be satisfied.
&gt; +    WEBKIT_EXPORT static void familyForChars(const WebUChar* characters, size_t numCharacters, const char* preferredLocale, WebFontFamily*);

Is changing this function going to break the chromium build?  It looks like this called from content/browser/renderer_host/render_sandbox_host_linux.cc:270.  I think you need to do a 3 sided patch to migrate to the new API.

&gt; Source/WebKit/chromium/public/linux/WebSandboxSupport.h:55
&gt; -    virtual WebString getFontFamilyForCharacters(const WebUChar* characters, size_t numCharacters, const char* preferredLocale)  = 0;
&gt; +    // Returns a WebFontFamily instance with the font name. The instance has empty font name if the request cannot be satisfied.
&gt; +    virtual void getFontFamilyForCharacters(const WebUChar* characters, size_t numCharacters, const char* preferredLocale, WebFontFamily*)  = 0;

Is changing this function going to break the chromium build?  It looks like this is implemented in content/renderer/renderer_webkitplatformsupport_impl.cc.

&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:441
&gt; +    return;

Nit: remove return

&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:451
&gt; +    return;

Nit: remove return

&gt; Source/WebKit/chromium/src/linux/WebFontInfo.cpp:126
&gt; +    return;

Nit: remove return

&gt; LayoutTests/platform/chromium/test_expectations.txt:1969
&gt; +BUGUKAI LINUX : fast/text/international/bold-bengali.html = PASS

This shouldn&apos;t be necessary.  The test should already be running on Linux.  What are you trying to do here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503741</commentid>
    <comment_count>71</comment_count>
      <attachid>115355</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-16 03:14:37 -0800</bug_when>
    <thetext>Created attachment 115355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503743</commentid>
    <comment_count>72</comment_count>
      <attachid>113611</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-16 03:21:43 -0800</bug_when>
    <thetext>Comment on attachment 113611
Patch

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

Hi Tony,

Thank you for review. Actually, this change will break the chromium build so I left the old API and enclose new behavior in #if 0 ... #endif. I&apos;ll remove old API and enable new behavior after Chromium side is done.

&gt;&gt; Source/WebKit/chromium/public/linux/WebFontInfo.h:36
&gt;&gt;  #include &quot;../linux/WebFontRenderStyle.h&quot;
&gt; 
&gt; fishd may have a preference on whether the includes from the same dir should just be &quot;WebFontFamily.h&quot; or &quot;../linux/WebFontFamily.h&quot;. I don&apos;t have a strong preference one way or another.

Leaving them as-is for now.

&gt;&gt; Source/WebKit/chromium/public/linux/WebFontInfo.h:53
&gt;&gt; +    WEBKIT_EXPORT static void familyForChars(const WebUChar* characters, size_t numCharacters, const char* preferredLocale, WebFontFamily*);
&gt; 
&gt; Is changing this function going to break the chromium build?  It looks like this called from content/browser/renderer_host/render_sandbox_host_linux.cc:270.  I think you need to do a 3 sided patch to migrate to the new API.

I left the old API so that this change won&apos;t break the chromium build.

&gt;&gt; Source/WebKit/chromium/public/linux/WebSandboxSupport.h:55
&gt;&gt; +    virtual void getFontFamilyForCharacters(const WebUChar* characters, size_t numCharacters, const char* preferredLocale, WebFontFamily*)  = 0;
&gt; 
&gt; Is changing this function going to break the chromium build?  It looks like this is implemented in content/renderer/renderer_webkitplatformsupport_impl.cc.

Ditto.

&gt;&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:441
&gt;&gt; +    return;
&gt; 
&gt; Nit: remove return

Done.

&gt;&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:451
&gt;&gt; +    return;
&gt; 
&gt; Nit: remove return

Done.

&gt;&gt; Source/WebKit/chromium/src/linux/WebFontInfo.cpp:126
&gt;&gt; +    return;
&gt; 
&gt; Nit: remove return

Done.

&gt;&gt; LayoutTests/platform/chromium/test_expectations.txt:1969
&gt;&gt; +BUGUKAI LINUX : fast/text/international/bold-bengali.html = PASS
&gt; 
&gt; This shouldn&apos;t be necessary.  The test should already be running on Linux.  What are you trying to do here?

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503966</commentid>
    <comment_count>73</comment_count>
      <attachid>115355</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-16 09:32:52 -0800</bug_when>
    <thetext>Comment on attachment 115355
Patch

Great, LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503967</commentid>
    <comment_count>74</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-16 09:33:27 -0800</bug_when>
    <thetext>Oh, you may want to give fishd a chance to review the WebKit API changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504563</commentid>
    <comment_count>75</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-16 22:37:55 -0800</bug_when>
    <thetext>(In reply to comment #74)
&gt; Oh, you may want to give fishd a chance to review the WebKit API changes.

Thanks for r+. I&apos;ll wait for fishd&apos;s response till tomorrow.

BTW, I&apos;ve just noticed that the old API in WebSandboxSupport should be a non-pure virtual function so that we can migrate API in Chromium side after this patch is landed. I&apos;ll modify the API before landing this patch. (I tested it locally and didn&apos;t see any problem).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504572</commentid>
    <comment_count>76</comment_count>
      <attachid>115355</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-16 22:55:53 -0800</bug_when>
    <thetext>Comment on attachment 115355
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504610</commentid>
    <comment_count>77</comment_count>
      <attachid>115536</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-16 23:56:59 -0800</bug_when>
    <thetext>Created attachment 115536
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504657</commentid>
    <comment_count>78</comment_count>
      <attachid>115536</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 01:29:52 -0800</bug_when>
    <thetext>Comment on attachment 115536
Patch for landing

Rejecting attachment 115536 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/10511094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504686</commentid>
    <comment_count>79</comment_count>
      <attachid>115549</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2011-11-17 02:48:03 -0800</bug_when>
    <thetext>Created attachment 115549
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504736</commentid>
    <comment_count>80</comment_count>
      <attachid>115549</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 04:17:16 -0800</bug_when>
    <thetext>Comment on attachment 115549
Patch for landing

Clearing flags on attachment: 115549

Committed r100601: &lt;http://trac.webkit.org/changeset/100601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504737</commentid>
    <comment_count>81</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 04:17:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55312</attachid>
            <date>2010-05-06 15:55:17 -0700</date>
            <delta_ts>2010-05-06 16:01:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20100506155401.patch</filename>
            <type>text/plain</type>
            <size>3874</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGYzNmExYTRkMDgxYWI4OWFmMTRjNGIxNWM0M2VjYTQzYmJjMjRkZi4uZGJhYmUxMzcxNmY4NDc0
MTVlMzA1NGVmN2ExNGE4MWRkMDY3OTI4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wNS0wNiAgRXZh
biBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNhbGwgZm9udGNvbmZpZyB0
d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBQcmV2aW91c2x5IHdlIHdvdWxkIGNh
bGwgZm9udGNvbmZpZyBvbmNlIHRvIGNob29zZSBhIGZvbnQgbmFtZSwKKyAgICAgICAgdGhlbiBs
YXRlciBjYWxsIGl0IGFnYWluIHRvIGxvYWQgdGhhdCBmb250LiAgTm93IHdlIG9ubHkgbG9hZCB0
aGUgZm9udAorICAgICAgICBvbmNlLgorCisJVGhpcyBwYXRjaCBpcyBhY3R1YWxseSB0aGUgc2Ft
ZSBjb2RlIGFzIGluIHI1ODM0MSwgd2hpY2ggd2FzIHJldmVydGVkCisJYmVjYXVzZSBvZiBhIHBl
cmZvcm1hbmNlIHByb2JsZW07IGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgaGFzIG5vdworICAg
ICAgICBiZWVuIGNvbW1pdHRlZCwgYW5kIHdpdGggdGhhdCBjYWNoZSBpbiBwbGFjZSB0aGlzIGNo
YW5nZSBpbXByb3ZlcworICAgICAgICB0aGUgQ2hyb21pdW0gaW50bDIgcGFnZSBjeWNsZXIgcGVy
Zm9ybWFuY2UgYnkgYW5vdGhlciA1JS4KKworICAgICAgICBTZWUgYWxzbyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5MDQgLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2JvbGQtYmVuZ2FsaS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKwogMjAxMC0wNS0wNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAppbmRleCA2ZWNhM2ViYzlh
NjM1ZWMzNTM2YzU5Zjg0YjEzZGVkMmM4MDU1MDdhLi4xMzRlYmMwZmFhNWM2YWVkZDU5MGQ0MGVl
NDg1ZDZkNDVhYzljMjY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0No
cm9taXVtQnJpZGdlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJy
aWRnZS5oCkBAIC0xMjIsNiArMTIyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAj
aWYgT1MoTElOVVgpCiAgICAgICAgIHN0YXRpYyB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtl
KGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgRm9udFJlbmRlclN0eWxlKiBy
ZXN1bHQpOworICAgICAgICAvLyBUaGlzIGNvZGUgaXMgY3VycmVudGx5IGluIHRoZSBwcm9jZXNz
IG9mIGdldHRpbmcgcmVqaWdnZXJlZCwgYW5kIHRob3VnaAorICAgICAgICAvLyBpdCBpcyBub3Qg
Y3VycmVudGx5IHVzZWQsIGl0IHdpbGwgaG9wZWZ1bGx5IGJlIHVzZWQgYWdhaW4gc29vbi4KICAg
ICAgICAgc3RhdGljIFN0cmluZyBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hh
ciosIHNpemVfdCBudW1DaGFyYWN0ZXJzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCmluZGV4IGVjZWNk
MTMzNGM5MWZiNjc4MmMxODVjYjM4YzY2OWNjYTk1MTdlZWMuLmIzN2UxYzcxMDU3M2ExNTExOGM1
OTdkY2Q3NTIwZDcxZGQyNDFiNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCkBAIC01OCwxMiArNTgsMjcgQEAgY29u
c3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNv
bnN0IEZvbnQmIGZvbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCkK
IHsKLSAgICBTdHJpbmcgZmFtaWx5ID0gQ2hyb21pdW1CcmlkZ2U6OmdldEZvbnRGYW1pbHlGb3JD
aGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCk7Ci0gICAgaWYgKGZhbWlseS5pc0VtcHR5KCkp
CisgICAgaW50IHN0eWxlID0gU2tUeXBlZmFjZTo6a05vcm1hbDsKKyAgICBpZiAoZm9udC5mb250
RGVzY3JpcHRpb24oKS53ZWlnaHQoKSA+PSBGb250V2VpZ2h0Qm9sZCkKKyAgICAgICAgc3R5bGUg
fD0gU2tUeXBlZmFjZTo6a0JvbGQ7CisgICAgaWYgKGZvbnQuZm9udERlc2NyaXB0aW9uKCkuaXRh
bGljKCkpCisgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFsaWM7CisKKyAgICBTa1R5
cGVmYWNlKiB0ZiA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZvckNoYXJzKGNoYXJhY3RlcnMsIGxlbmd0
aCAqIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxTa1R5cGVmYWNlOjpTdHlsZT4oc3R5bGUpKTsKKyAgICBpZiAoIXRmKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIEF0b21pY1N0cmluZyBhdG9taWNGYW1pbHkoZmFtaWx5KTsK
LSAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShm
b250LmZvbnREZXNjcmlwdGlvbigpLCBhdG9taWNGYW1pbHksIGZhbHNlKSk7CisgICAgLy8gRklY
TUU6IHdlIGRvbid0IGhhdmUgYSBmYW1pbHkgbmFtZSBmb3IgdGhpcyBmb250LgorICAgIC8vIEhv
d2V2ZXIsIHRoZSBmYW1pbHkgbmFtZSB3aXRoaW4gRm9udFBsYXRmb3JtRGF0YSBpcyBvbmx5IHVz
ZWQgd2hlbiBwaWNraW5nCisgICAgLy8gYSByZW5kZXIgc3R5bGUgZm9yIHRoZSBmb250LCBzbyBp
dCdzIG5vdCB0b28gZ3JlYXQgb2YgYSBsb3NzLgorICAgIEZvbnRQbGF0Zm9ybURhdGEgcmVzdWx0
KHRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvbnQuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0JvbGQpICYmICF0Zi0+
aXNCb2xkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFj
ZTo6a0l0YWxpYykgJiYgIXRmLT5pc0l0YWxpYygpKTsKKyAgICB0Zi0+dW5yZWYoKTsKKyAgICBy
ZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoJnJlc3VsdCk7CiB9CiAKIFNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55313</attachid>
            <date>2010-05-06 16:01:23 -0700</date>
            <delta_ts>2010-05-10 12:13:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20100506160007.patch</filename>
            <type>text/plain</type>
            <size>3888</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGYzNmExYTRkMDgxYWI4OWFmMTRjNGIxNWM0M2VjYTQzYmJjMjRkZi4uNTBkNDNiOWI2MjdlNzAz
OTAzNDZmODdmMDJmZjI1ZDdiNjAxY2VmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wNS0wNiAgRXZh
biBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNhbGwgZm9udGNvbmZpZyB0
d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBQcmV2aW91c2x5IHdlIHdvdWxkIGNh
bGwgZm9udGNvbmZpZyBvbmNlIHRvIGNob29zZSBhIGZvbnQgbmFtZSwKKyAgICAgICAgdGhlbiBs
YXRlciBjYWxsIGl0IGFnYWluIHRvIGxvYWQgdGhhdCBmb250LiAgTm93IHdlIG9ubHkgbG9hZCB0
aGUgZm9udAorICAgICAgICBvbmNlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWN0dWFsbHkg
dGhlIHNhbWUgY29kZSBhcyBpbiByNTgzNDEsIHdoaWNoIHdhcyByZXZlcnRlZAorICAgICAgICBi
ZWNhdXNlIG9mIGEgcGVyZm9ybWFuY2UgcHJvYmxlbTsgYSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVu
dCBoYXMgbm93CisgICAgICAgIGJlZW4gY29tbWl0dGVkLCBhbmQgd2l0aCB0aGF0IGNhY2hlIGlu
IHBsYWNlIHRoaXMgY2hhbmdlIGltcHJvdmVzCisgICAgICAgIHRoZSBDaHJvbWl1bSBpbnRsMiBw
YWdlIGN5Y2xlciBwZXJmb3JtYW5jZSBieSBhbm90aGVyIDUlLgorCisgICAgICAgIFNlZSBhbHNv
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzkwNCAuCisKKyAgICAg
ICAgVGVzdDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYm9sZC1iZW5nYWxpLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMpOgorCiAyMDEwLTA1LTA2
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBC
ZXRoIERha2luLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1
bUJyaWRnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCmlu
ZGV4IDZlY2EzZWJjOWE2MzVlYzM1MzZjNTlmODRiMTNkZWQyYzgwNTUwN2EuLjEzNGViYzBmYWE1
YzZhZWRkNTkwZDQwZWU0ODVkNmQ0NWFjOWMyNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0Nocm9taXVtQnJpZGdlLmgKQEAgLTEyMiw2ICsxMjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAjZW5kaWYKICNpZiBPUyhMSU5VWCkKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0UmVuZGVy
U3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBGb250
UmVuZGVyU3R5bGUqIHJlc3VsdCk7CisgICAgICAgIC8vIFRoaXMgY29kZSBpcyBjdXJyZW50bHkg
aW4gdGhlIHByb2Nlc3Mgb2YgZ2V0dGluZyByZWppZ2dlcmVkLCBhbmQgdGhvdWdoCisgICAgICAg
IC8vIGl0IGlzIG5vdCBjdXJyZW50bHkgdXNlZCwgaXQgd2lsbCBob3BlZnVsbHkgYmUgdXNlZCBh
Z2FpbiBzb29uLgogICAgICAgICBzdGF0aWMgU3RyaW5nIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0
ZXJzKGNvbnN0IFVDaGFyKiwgc2l6ZV90IG51bUNoYXJhY3RlcnMpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXgu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5j
cHAKaW5kZXggZWNlY2QxMzM0YzkxZmI2NzgyYzE4NWNiMzhjNjY5Y2NhOTUxN2VlYy4uYjM3ZTFj
NzEwNTczYTE1MTE4YzU5N2RjZDc1MjBkNzFkZDI0MWI2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKQEAgLTU4LDEy
ICs1OCwyNyBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZv
ckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbGVuZ3RoKQogewotICAgIFN0cmluZyBmYW1pbHkgPSBDaHJvbWl1bUJyaWRnZTo6Z2V0
Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoKTsKLSAgICBpZiAoZmFt
aWx5LmlzRW1wdHkoKSkKKyAgICBpbnQgc3R5bGUgPSBTa1R5cGVmYWNlOjprTm9ybWFsOworICAg
IGlmIChmb250LmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkKQor
ICAgICAgICBzdHlsZSB8PSBTa1R5cGVmYWNlOjprQm9sZDsKKyAgICBpZiAoZm9udC5mb250RGVz
Y3JpcHRpb24oKS5pdGFsaWMoKSkKKyAgICAgICAgc3R5bGUgfD0gU2tUeXBlZmFjZTo6a0l0YWxp
YzsKKworICAgIFNrVHlwZWZhY2UqIHRmID0gU2tUeXBlZmFjZTo6Q3JlYXRlRm9yQ2hhcnMoY2hh
cmFjdGVycywgbGVuZ3RoICogMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PFNrVHlwZWZhY2U6OlN0eWxlPihzdHlsZSkpOworICAg
IGlmICghdGYpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQXRvbWljU3RyaW5nIGF0b21pY0Zh
bWlseShmYW1pbHkpOwotICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShnZXRDYWNoZWRGb250
UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksIGF0b21pY0ZhbWlseSwgZmFsc2Up
KTsKKyAgICAvLyBGSVhNRTogd2UgZG9uJ3QgaGF2ZSBhIGZhbWlseSBuYW1lIGZvciB0aGlzIGZv
bnQuCisgICAgLy8gSG93ZXZlciwgdGhlIGZhbWlseSBuYW1lIHdpdGhpbiBGb250UGxhdGZvcm1E
YXRhIGlzIG9ubHkgdXNlZCB3aGVuIHBpY2tpbmcKKyAgICAvLyBhIHJlbmRlciBzdHlsZSBmb3Ig
dGhlIGZvbnQsIHNvIGl0J3Mgbm90IHRvbyBncmVhdCBvZiBhIGxvc3MuCisgICAgRm9udFBsYXRm
b3JtRGF0YSByZXN1bHQodGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9udC5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNp
emUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3R5bGUgJiBTa1R5cGVmYWNlOjpr
Qm9sZCkgJiYgIXRmLT5pc0JvbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3R5
bGUgJiBTa1R5cGVmYWNlOjprSXRhbGljKSAmJiAhdGYtPmlzSXRhbGljKCkpOworICAgIHRmLT51
bnJlZigpOworICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YSgmcmVzdWx0KTsKIH0KIAogU2lt
cGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udCYgZm9udCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55588</attachid>
            <date>2010-05-10 12:13:14 -0700</date>
            <delta_ts>2011-07-20 04:38:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20100510121110.patch</filename>
            <type>text/plain</type>
            <size>4156</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGYzNmExYTRkMDgxYWI4OWFmMTRjNGIxNWM0M2VjYTQzYmJjMjRkZi4uODExYjk3MjViNjY1MTAx
OTk0ZGJkODgzOGU2OWQ5ZmY3YjcyZTlhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wNS0wNiAgRXZh
biBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNhbGwgZm9udGNvbmZpZyB0
d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBQcmV2aW91c2x5IGdldEZvbnREYXRh
Rm9yQ2hhcmFjdGVycyB3b3VsZCBjYWxsIGZvbnRjb25maWcgb25jZSB0bworICAgICAgICByZXNv
bHZlIGEgZm9udCBuYW1lLCB0aGVuIHBhc3MgdGhhdCBuYW1lIHRvIGdldENhY2hlZEZvbnRQbGF0
Zm9ybURhdGEKKyAgICAgICAgdG8gbG9hZCB0aGUgZm9udC4gIFRoaXMgd291bGQgYmUgdHdvIHRy
aXBzIHRocm91Z2ggZm9udGNvbmZpZyAoaW5jbHVkaW5nCisgICAgICAgIElQQ3MpLiAgV2l0aCB0
aGlzIGNoYW5nZSwgd2UgY29tcGxldGVseSBsb2FkIHRoZSBmb250IGluIHRoZSBmaXJzdCBwYXNz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYWN0dWFsbHkgdGhlIHNhbWUgY29kZSBhcyBpbiBy
NTgzNDEsIHdoaWNoIHdhcyByZXZlcnRlZAorICAgICAgICBiZWNhdXNlIG9mIGEgcGVyZm9ybWFu
Y2UgcHJvYmxlbTsgYSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBoYXMgbm93CisgICAgICAgIGJl
ZW4gY29tbWl0dGVkLCBhbmQgd2l0aCB0aGF0IGNoYW5nZSBpbiBwbGFjZSB0aGlzIGNoYW5nZSBp
bXByb3ZlcworICAgICAgICB0aGUgQ2hyb21pdW0gaW50bDIgcGFnZSBjeWNsZXIgcGVyZm9ybWFu
Y2UgYnkgYW5vdGhlciA1JS4KKworICAgICAgICBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5MDQgLgorCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2JvbGQtYmVuZ2FsaS5odG1sCisgICAgICAgIChXYXMgY2hlY2tlZCBpbiBh
cyBwYXJ0IG9mIHRoZSBmaXJzdCBhdHRlbXB0IGF0IHRoaXMgY2hhbmdlLCBjb250aW51ZXMKKyAg
ICAgICAgdG8gcGFzcyBhZnRlciB0aGlzIGNoYW5nZS4pCisKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKwogMjAxMC0wNS0wNiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAppbmRleCA2ZWNhM2ViYzlhNjM1
ZWMzNTM2YzU5Zjg0YjEzZGVkMmM4MDU1MDdhLi4xMzRlYmMwZmFhNWM2YWVkZDU5MGQ0MGVlNDg1
ZDZkNDVhYzljMjY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9t
aXVtQnJpZGdlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRn
ZS5oCkBAIC0xMjIsNiArMTIyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYg
T1MoTElOVVgpCiAgICAgICAgIHN0YXRpYyB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKGNv
bnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgRm9udFJlbmRlclN0eWxlKiByZXN1
bHQpOworICAgICAgICAvLyBUaGlzIGNvZGUgaXMgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9m
IGdldHRpbmcgcmVqaWdnZXJlZCwgYW5kIHRob3VnaAorICAgICAgICAvLyBpdCBpcyBub3QgY3Vy
cmVudGx5IHVzZWQsIGl0IHdpbGwgaG9wZWZ1bGx5IGJlIHVzZWQgYWdhaW4gc29vbi4KICAgICAg
ICAgc3RhdGljIFN0cmluZyBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhcios
IHNpemVfdCBudW1DaGFyYWN0ZXJzKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCmluZGV4IGVjZWNkMTMz
NGM5MWZiNjc4MmMxODVjYjM4YzY2OWNjYTk1MTdlZWMuLmIzN2UxYzcxMDU3M2ExNTExOGM1OTdk
Y2Q3NTIwZDcxZGQyNDFiNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCkBAIC01OCwxMiArNTgsMjcgQEAgY29uc3Qg
U2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0
IEZvbnQmIGZvbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCkKIHsK
LSAgICBTdHJpbmcgZmFtaWx5ID0gQ2hyb21pdW1CcmlkZ2U6OmdldEZvbnRGYW1pbHlGb3JDaGFy
YWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCk7Ci0gICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCisg
ICAgaW50IHN0eWxlID0gU2tUeXBlZmFjZTo6a05vcm1hbDsKKyAgICBpZiAoZm9udC5mb250RGVz
Y3JpcHRpb24oKS53ZWlnaHQoKSA+PSBGb250V2VpZ2h0Qm9sZCkKKyAgICAgICAgc3R5bGUgfD0g
U2tUeXBlZmFjZTo6a0JvbGQ7CisgICAgaWYgKGZvbnQuZm9udERlc2NyaXB0aW9uKCkuaXRhbGlj
KCkpCisgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFsaWM7CisKKyAgICBTa1R5cGVm
YWNlKiB0ZiA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZvckNoYXJzKGNoYXJhY3RlcnMsIGxlbmd0aCAq
IDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxTa1R5cGVmYWNlOjpTdHlsZT4oc3R5bGUpKTsKKyAgICBpZiAoIXRmKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIEF0b21pY1N0cmluZyBhdG9taWNGYW1pbHkoZmFtaWx5KTsKLSAg
ICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250
LmZvbnREZXNjcmlwdGlvbigpLCBhdG9taWNGYW1pbHksIGZhbHNlKSk7CisgICAgLy8gRklYTUU6
IHdlIGRvbid0IGhhdmUgYSBmYW1pbHkgbmFtZSBmb3IgdGhpcyBmb250LgorICAgIC8vIEhvd2V2
ZXIsIHRoZSBmYW1pbHkgbmFtZSB3aXRoaW4gRm9udFBsYXRmb3JtRGF0YSBpcyBvbmx5IHVzZWQg
d2hlbiBwaWNraW5nCisgICAgLy8gYSByZW5kZXIgc3R5bGUgZm9yIHRoZSBmb250LCBzbyBpdCdz
IG5vdCB0b28gZ3JlYXQgb2YgYSBsb3NzLgorICAgIEZvbnRQbGF0Zm9ybURhdGEgcmVzdWx0KHRm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvbnQuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0JvbGQpICYmICF0Zi0+aXNC
b2xkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6
a0l0YWxpYykgJiYgIXRmLT5pc0l0YWxpYygpKTsKKyAgICB0Zi0+dW5yZWYoKTsKKyAgICByZXR1
cm4gZ2V0Q2FjaGVkRm9udERhdGEoJnJlc3VsdCk7CiB9CiAKIFNpbXBsZUZvbnREYXRhKiBGb250
Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63206</attachid>
            <date>2010-08-02 06:01:59 -0700</date>
            <delta_ts>2010-08-04 22:33:11 -0700</delta_ts>
            <desc>Patch utilizes the PlatformFontDataCache to improve the performance.</desc>
            <filename>fix-38701.patch</filename>
            <type>text/plain</type>
            <size>4344</size>
            <attacher name="ningxin hu">ningxin.hu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWFiNTliYS4uZmMxN2ZjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wOC0wMiAgbmluZ3hpbi5odSAg
PG5pbmd4aW4uaHVAaW50ZWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGlu
IGNvbXBsZXggdGV4dCBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zODcwMQorCisgICAgICAgIHI1OTQ4MyBjYXVzZXMgcGFnZV9jeWNsZXJfaW50
bDEgcmVncmVzc2lvbiBvbiBMaW51eC4KKyAgICAgICAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTIxNS4KKyAgICAgICAgVGhlIHJlYXNvbiBpcyB0aGF0IHI1
OTQ4MyBjcmVhdGVzIG5ldyBGb250UGxhdGZvcm1EYXRhIG9uIGVhY2ggY2FsbCBvZgorICAgICAg
ICBnZXRGb250RGF0YUZvckNoYXJhY3RlcnMuIEhvd2V2ZXIsIGNyZWF0aW9uIG9mIEZvbnRQbGF0
Zm9ybURhdGFMaW51eCBpcyBub3QgY2hlYXAKKyAgICAgICAgd2hpY2ggaW52b2tlcyBDaHJvbWl1
bUJyaWRnZTo6Z2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UgKElQQykuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjcmVhdGVzIG9ubHkgU2tUeXBlZmFjZSBpbiBnZXRGb250RGF0YUZvckNoYXJhY3RlcnMg
YW5kIHRoZW4gcGFzcworICAgICAgICBpdCB2aWEgc3RhdGljIGdsb2JhbCB2YXJpYWJsZSB0byBj
cmVhdGVGb250UGxhdGZvcm1EYXRhIHRvIGNyZWF0ZSBGb250UGxhdGZvcm1EYXRhLgorICAgICAg
ICBBdCBtZWFud2hpbGUsIGl0IGFsc28gdXRpbGl6ZXMgdGhlIEZvbnRQbGF0Zm9ybURhdGFDYWNo
ZSB0byBhdm9pZCB0byBjcmVhdGUKKyAgICAgICAgRm9udFBsYXRmb3JtRGF0YSBldmVyeSB0aW1l
LgorCisgICAgICAgIFNlZSBhbHNvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzkwNCAuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYm9s
ZC1iZW5nYWxpLmh0bWwKKyAgICAgICAgKFdhcyBjaGVja2VkIGluIGFzIHBhcnQgb2YgdGhlIGZp
cnN0IGF0dGVtcHQgYXQgdGhpcyBjaGFuZ2UsIGNvbnRpbnVlcworICAgICAgICB0byBwYXNzIGFm
dGVyIHRoaXMgY2hhbmdlLikKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRDYWNoZUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9u
dERhdGFGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YSk6CisKIDIwMTAtMDctMjggIFpvbHRhbiBIZXJjemVnICA8emhlcmN6
ZWdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNo
ZUxpbnV4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hl
TGludXguY3BwCmluZGV4IDUzZjRhNTIuLmI3OWIzY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCkBAIC01NCwxNiAr
NTQsMjggQEAgdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiB7CiB9CiAKKy8vIFNoYXJl
IHRoZSB0eXBlZmFjZSBiZXR3ZWVuIGdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyBhbmQgY3JlYXRl
Rm9udFBsYXRmb3JtRGF0YQorc3RhdGljIFNrVHlwZWZhY2UqIGdUeXBlZmFjZUZvckNoYXJzID0g
MDsKKwogY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFy
YWN0ZXJzKGNvbnN0IEZvbnQmIGZvbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGxlbmd0aCkKIHsKLSAgICBTdHJpbmcgZmFtaWx5ID0gQ2hyb21pdW1CcmlkZ2U6OmdldEZvbnRG
YW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCk7Ci0gICAgaWYgKGZhbWlseS5p
c0VtcHR5KCkpCisgICAgaW50IHN0eWxlID0gU2tUeXBlZmFjZTo6a05vcm1hbDsKKyAgICBpZiAo
Zm9udC5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSA+PSBGb250V2VpZ2h0Qm9sZCkKKyAgICAg
ICAgc3R5bGUgfD0gU2tUeXBlZmFjZTo6a0JvbGQ7CisgICAgaWYgKGZvbnQuZm9udERlc2NyaXB0
aW9uKCkuaXRhbGljKCkpCisgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFsaWM7Cisg
ICAgZ1R5cGVmYWNlRm9yQ2hhcnMgPSBTa1R5cGVmYWNlOjpDcmVhdGVGb3JDaGFycyhjaGFyYWN0
ZXJzLCBsZW5ndGggKiAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U2tUeXBlZmFjZTo6U3R5bGU+KHN0eWxlKSk7CisgICAg
aWYgKCFnVHlwZWZhY2VGb3JDaGFycykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBdG9taWNT
dHJpbmcgYXRvbWljRmFtaWx5KGZhbWlseSk7Ci0gICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRh
KGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udC5mb250RGVzY3JpcHRpb24oKSwgYXRvbWlj
RmFtaWx5LCBmYWxzZSkpOworICAgIC8vIFVzZSB0aGUgdW5pcXVlIElEIGFzIGZhbWlseSBuYW1l
IHRvIHV0aWxpemUgdGhlIHBsYXRmb3JtIGRhdGEgY2FjaGUKKyAgICBBdG9taWNTdHJpbmcgZmFt
aWx5TmFtZShTdHJpbmc6Om51bWJlcihnVHlwZWZhY2VGb3JDaGFycy0+dW5pcXVlSUQoKSkpOwor
ICAgIEZvbnRQbGF0Zm9ybURhdGEqIHJlc3VsdCA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEo
Zm9udC5mb250RGVzY3JpcHRpb24oKSwgZmFtaWx5TmFtZSwgZmFsc2UpOworICAgIGdUeXBlZmFj
ZUZvckNoYXJzID0gMDsKKyAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEocmVzdWx0KTsKIH0K
IAogU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udCYgZm9udCkKQEAgLTEzMCw2ICsxNDIsMTEgQEAgRm9udFBsYXRmb3JtRGF0YSog
Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udEQKICAgICAgICAgfQogICAgICAgICBpZiAoIW5hbWUpCiAgICAgICAgICAgICBuYW1lID0g
IiI7CisgICAgfSBlbHNlIGlmIChnVHlwZWZhY2VGb3JDaGFycykgeworICAgICAgICAvLyBGSVhN
RTogd2UgZG9uJ3QgaGF2ZSBhIGZhbWlseSBuYW1lIGZvciB0aGlzIGZvbnQuCisgICAgICAgIC8v
IEhvd2V2ZXIsIHRoZSBmYW1pbHkgbmFtZSB3aXRoaW4gRm9udFBsYXRmb3JtRGF0YSBpcyBvbmx5
IHVzZWQgd2hlbiBwaWNraW5nCisgICAgICAgIC8vIGEgcmVuZGVyIHN0eWxlIGZvciB0aGUgZm9u
dCwgc28gaXQncyBub3QgdG9vIGdyZWF0IG9mIGEgbG9zcy4KKyAgICAgICAgbmFtZSA9ICIiOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIGNvbnZlcnQgdGhlIG5hbWUgdG8gdXRmOAogICAgICAg
ICBzID0gZmFtaWx5LnN0cmluZygpLnV0ZjgoKTsKQEAgLTE0Miw3ICsxNTksMTMgQEAgRm9udFBs
YXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udEQKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLml0YWxpYygpKQogICAg
ICAgICBzdHlsZSB8PSBTa1R5cGVmYWNlOjprSXRhbGljOwogCi0gICAgU2tUeXBlZmFjZSogdGYg
PSBTa1R5cGVmYWNlOjpDcmVhdGVGcm9tTmFtZShuYW1lLCBzdGF0aWNfY2FzdDxTa1R5cGVmYWNl
OjpTdHlsZT4oc3R5bGUpKTsKKyAgICBTa1R5cGVmYWNlKiB0ZiA9IDA7CisKKyAgICBpZiAoZ1R5
cGVmYWNlRm9yQ2hhcnMpCisgICAgICAgIHRmID0gZ1R5cGVmYWNlRm9yQ2hhcnM7CisgICAgZWxz
ZQorICAgICAgICB0ZiA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZyb21OYW1lKG5hbWUsIHN0YXRpY19j
YXN0PFNrVHlwZWZhY2U6OlN0eWxlPihzdHlsZSkpOworCiAgICAgaWYgKCF0ZikKICAgICAgICAg
cmV0dXJuIDA7CiAK
</data>
<flag name="review"
          id="51514"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63537</attachid>
            <date>2010-08-04 20:21:20 -0700</date>
            <delta_ts>2010-08-04 22:33:11 -0700</delta_ts>
            <desc>add typeface cache</desc>
            <filename>typeface-cache.patch</filename>
            <type>text/plain</type>
            <size>4355</size>
            <attacher name="ningxin hu">ningxin.hu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTUyNDZjOC4uZDNkMzA4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wOC0wNCAgTmluZ3hpbiBIdSAg
PG5pbmd4aW4uaHVAaW50ZWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHR5cGVmYWNlIGNhY2hlIGludG8gZ2V0
Rm9udERhdGFGb3JDaGFyYWN0ZXJzIGJhc2VkCisgICAgICAgIG9uIHI1OTQ4My4gV2l0aCB0aGUg
cGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvcgorICAgICAgICBwYWdlX2N5Y2xl
cl9pbnRsMSBkaXNhcHBlYXJzLgorICAgICAgICBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyMTUKKworICAgICAgICBUbyBwdXJnZSB0aGUgdHlwZWZh
Y2UgY2FjaGUsIGFkZCBGb250Q2FjaGU6OmludmFsaWRhdGVQbGF0Zm9ybSB3aGljaAorICAgICAg
ICBpcyBjYWxsZWQgaW4gRm9udENhY2hlOjppbnZhbGlkYXRlIHRvIHB1cmdlIHBsYXRmb3JtIGRh
dGEuCisKKyAgICAgICAgW2Nocm9taXVtXSBkb24ndCBjYWxsIGZvbnRjb25maWcgdHdpY2UgaW4g
Y29tcGxleCB0ZXh0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4NzAxCisKKyAgICAgICAgU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM3OTA0IC4KKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvYm9sZC1iZW5nYWxpLmh0bWwKKyAgICAgICAgKFdhcyBjaGVja2VkIGluIGFzIHBh
cnQgb2YgdGhlIGZpcnN0IGF0dGVtcHQgYXQgdGhpcyBjaGFuZ2UsIGNvbnRpbnVlcworICAgICAg
ICB0byBwYXNzIGFmdGVyIHRoaXMgY2hhbmdlLikKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6aW52YWxpZGF0ZVBsYXRmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKwogMjAxMC0wNy0yMyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggMWEzYmE2OS4uYjA5MzkxYyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJp
dmF0ZToKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBieSBlYWNoIHBsYXRm
b3JtLgogICAgIFNpbXBsZUZvbnREYXRhKiBnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250Jik7CiAgICAgRm9udFBsYXRmb3JtRGF0YSogY3JlYXRlRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CisgICAg
dm9pZCBpbnZhbGlkYXRlUGxhdGZvcm0oKTsKIAogICAgIFNpbXBsZUZvbnREYXRhKiBnZXRDYWNo
ZWRGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhKik7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKaW5kZXggNTNm
NGE1Mi4uNmVmM2ZhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKQEAgLTUwLDIwICs1MCw2MSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFNrVHlwZWZhY2UqPiBUeXBl
ZmFjZUNhY2hlOworCitzdGF0aWMgVHlwZWZhY2VDYWNoZSAqZ1R5cGVmYWNlQ2hhY2hlID0gMDsK
Kwogdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiB7CiB9CiAKK3ZvaWQgRm9udENhY2hl
OjppbnZhbGlkYXRlUGxhdGZvcm0oKQoreworICAgIGlmICghZ1R5cGVmYWNlQ2hhY2hlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBUeXBlZmFjZUNhY2hlOjppdGVyYXRvciBpdCA9IGdUeXBlZmFj
ZUNoYWNoZS0+YmVnaW4oKTsKKyAgICBmb3IoOyBpdCAhPSBnVHlwZWZhY2VDaGFjaGUtPmVuZCgp
OyArK2l0KQorICAgICAgICBpdC0+c2Vjb25kLT51bnJlZigpOworICAgIGdUeXBlZmFjZUNoYWNo
ZS0+Y2xlYXIoKTsKK30KKwogY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9u
dERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZvbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGxlbmd0aCkKIHsKLSAgICBTdHJpbmcgZmFtaWx5ID0gQ2hyb21pdW1Ccmlk
Z2U6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCk7Ci0gICAg
aWYgKGZhbWlseS5pc0VtcHR5KCkpCisgICAgaW50IHN0eWxlID0gU2tUeXBlZmFjZTo6a05vcm1h
bDsKKyAgICBpZiAoZm9udC5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSA+PSBGb250V2VpZ2h0
Qm9sZCkKKyAgICAgICAgc3R5bGUgfD0gU2tUeXBlZmFjZTo6a0JvbGQ7CisgICAgaWYgKGZvbnQu
Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkpCisgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6
OmtJdGFsaWM7CisKKyAgICBpZiAoIWdUeXBlZmFjZUNoYWNoZSkKKyAgICAgICAgZ1R5cGVmYWNl
Q2hhY2hlID0gbmV3IFR5cGVmYWNlQ2FjaGU7CisKKyAgICBTa1R5cGVmYWNlICp0ZiA9IDA7CisK
KyAgICBTdHJpbmcga2V5KGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgVHlwZWZhY2VDYWNoZTo6
aXRlcmF0b3IgaXQgPSBnVHlwZWZhY2VDaGFjaGUtPmZpbmQoa2V5KTsKKyAgICBpZiAoaXQgIT0g
Z1R5cGVmYWNlQ2hhY2hlLT5lbmQoKSkKKyAgICAgICAgdGYgPSBpdC0+c2Vjb25kOworICAgIGVs
c2UgeworICAgICAgICB0ZiA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZvckNoYXJzKGNoYXJhY3RlcnMs
IGxlbmd0aCAqIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PFNrVHlwZWZhY2U6OlN0eWxlPihzdHlsZSkpOworICAgICAgICBnVHlwZWZhY2VDaGFj
aGUtPnNldChrZXksIHRmKTsKKyAgICB9CisgICAgaWYgKCF0ZikKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KGZhbWlseSk7Ci0gICAgcmV0dXJuIGdl
dENhY2hlZEZvbnREYXRhKGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udC5mb250RGVzY3Jp
cHRpb24oKSwgYXRvbWljRmFtaWx5LCBmYWxzZSkpOworICAgIC8vIEZJWE1FOiB3ZSBkb24ndCBo
YXZlIGEgZmFtaWx5IG5hbWUgZm9yIHRoaXMgZm9udC4KKyAgICAvLyBIb3dldmVyLCB0aGUgZmFt
aWx5IG5hbWUgd2l0aGluIEZvbnRQbGF0Zm9ybURhdGEgaXMgb25seSB1c2VkIHdoZW4gcGlja2lu
ZworICAgIC8vIGEgcmVuZGVyIHN0eWxlIGZvciB0aGUgZm9udCwgc28gaXQncyBub3QgdG9vIGdy
ZWF0IG9mIGEgbG9zcy4KKyAgICBGb250UGxhdGZvcm1EYXRhIHJlc3VsdCh0ZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250
LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtCb2xkKSAmJiAhdGYtPmlzQm9sZCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtJdGFsaWMpICYm
ICF0Zi0+aXNJdGFsaWMoKSk7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKCZyZXN1bHQp
OwogfQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250JiBmb250KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63553</attachid>
            <date>2010-08-04 22:33:11 -0700</date>
            <delta_ts>2010-08-05 01:20:31 -0700</delta_ts>
            <desc>patch to add typeface cache</desc>
            <filename>typeface-cache.patch</filename>
            <type>text/plain</type>
            <size>4356</size>
            <attacher name="ningxin hu">ningxin.hu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTUyNDZjOC4uZDNkMzA4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wOC0wNCAgTmluZ3hpbiBIdSAg
PG5pbmd4aW4uaHVAaW50ZWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHR5cGVmYWNlIGNhY2hlIGludG8gZ2V0
Rm9udERhdGFGb3JDaGFyYWN0ZXJzIGJhc2VkCisgICAgICAgIG9uIHI1OTQ4My4gV2l0aCB0aGUg
cGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvcgorICAgICAgICBwYWdlX2N5Y2xl
cl9pbnRsMSBkaXNhcHBlYXJzLgorICAgICAgICBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyMTUKKworICAgICAgICBUbyBwdXJnZSB0aGUgdHlwZWZh
Y2UgY2FjaGUsIGFkZCBGb250Q2FjaGU6OmludmFsaWRhdGVQbGF0Zm9ybSB3aGljaAorICAgICAg
ICBpcyBjYWxsZWQgaW4gRm9udENhY2hlOjppbnZhbGlkYXRlIHRvIHB1cmdlIHBsYXRmb3JtIGRh
dGEuCisKKyAgICAgICAgW2Nocm9taXVtXSBkb24ndCBjYWxsIGZvbnRjb25maWcgdHdpY2UgaW4g
Y29tcGxleCB0ZXh0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4NzAxCisKKyAgICAgICAgU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM3OTA0IC4KKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvYm9sZC1iZW5nYWxpLmh0bWwKKyAgICAgICAgKFdhcyBjaGVja2VkIGluIGFzIHBh
cnQgb2YgdGhlIGZpcnN0IGF0dGVtcHQgYXQgdGhpcyBjaGFuZ2UsIGNvbnRpbnVlcworICAgICAg
ICB0byBwYXNzIGFmdGVyIHRoaXMgY2hhbmdlLikKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6aW52YWxpZGF0ZVBsYXRmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKwogMjAxMC0wNy0yMyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggMWEzYmE2OS4uYjA5MzkxYyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJp
dmF0ZToKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBieSBlYWNoIHBsYXRm
b3JtLgogICAgIFNpbXBsZUZvbnREYXRhKiBnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250Jik7CiAgICAgRm9udFBsYXRmb3JtRGF0YSogY3JlYXRlRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CisgICAg
dm9pZCBpbnZhbGlkYXRlUGxhdGZvcm0oKTsKIAogICAgIFNpbXBsZUZvbnREYXRhKiBnZXRDYWNo
ZWRGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhKik7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKaW5kZXggNTNm
NGE1Mi4uMzVlYjJjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKQEAgLTUwLDIwICs1MCw2MSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFNrVHlwZWZhY2UqPiBUeXBl
ZmFjZUNhY2hlOworCitzdGF0aWMgVHlwZWZhY2VDYWNoZSAqZ1R5cGVmYWNlQ2hhY2hlID0gMDsK
Kwogdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiB7CiB9CiAKK3ZvaWQgRm9udENhY2hl
OjppbnZhbGlkYXRlUGxhdGZvcm0oKQoreworICAgIGlmICghZ1R5cGVmYWNlQ2hhY2hlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBUeXBlZmFjZUNhY2hlOjppdGVyYXRvciBpdCA9IGdUeXBlZmFj
ZUNoYWNoZS0+YmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gZ1R5cGVmYWNlQ2hhY2hlLT5lbmQo
KTsgKytpdCkKKyAgICAgICAgaXQtPnNlY29uZC0+dW5yZWYoKTsKKyAgICBnVHlwZWZhY2VDaGFj
aGUtPmNsZWFyKCk7Cit9CisKIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZv
bnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiBmb250LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBsZW5ndGgpCiB7Ci0gICAgU3RyaW5nIGZhbWlseSA9IENocm9taXVtQnJp
ZGdlOjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBsZW5ndGgpOwotICAg
IGlmIChmYW1pbHkuaXNFbXB0eSgpKQorICAgIGludCBzdHlsZSA9IFNrVHlwZWZhY2U6OmtOb3Jt
YWw7CisgICAgaWYgKGZvbnQuZm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkgPj0gRm9udFdlaWdo
dEJvbGQpCisgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtCb2xkOworICAgIGlmIChmb250
LmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKQorICAgICAgICBzdHlsZSB8PSBTa1R5cGVmYWNl
OjprSXRhbGljOworCisgICAgaWYgKCFnVHlwZWZhY2VDaGFjaGUpCisgICAgICAgIGdUeXBlZmFj
ZUNoYWNoZSA9IG5ldyBUeXBlZmFjZUNhY2hlOworCisgICAgU2tUeXBlZmFjZSogdGYgPSAwOwor
CisgICAgU3RyaW5nIGtleShjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIFR5cGVmYWNlQ2FjaGU6
Oml0ZXJhdG9yIGl0ID0gZ1R5cGVmYWNlQ2hhY2hlLT5maW5kKGtleSk7CisgICAgaWYgKGl0ICE9
IGdUeXBlZmFjZUNoYWNoZS0+ZW5kKCkpCisgICAgICAgIHRmID0gaXQtPnNlY29uZDsKKyAgICBl
bHNlIHsKKyAgICAgICAgdGYgPSBTa1R5cGVmYWNlOjpDcmVhdGVGb3JDaGFycyhjaGFyYWN0ZXJz
LCBsZW5ndGggKiAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxTa1R5cGVmYWNlOjpTdHlsZT4oc3R5bGUpKTsKKyAgICAgICAgZ1R5cGVmYWNlQ2hh
Y2hlLT5zZXQoa2V5LCB0Zik7CisgICAgfQorICAgIGlmICghdGYpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgQXRvbWljU3RyaW5nIGF0b21pY0ZhbWlseShmYW1pbHkpOwotICAgIHJldHVybiBn
ZXRDYWNoZWRGb250RGF0YShnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2Ny
aXB0aW9uKCksIGF0b21pY0ZhbWlseSwgZmFsc2UpKTsKKyAgICAvLyBGSVhNRTogd2UgZG9uJ3Qg
aGF2ZSBhIGZhbWlseSBuYW1lIGZvciB0aGlzIGZvbnQuCisgICAgLy8gSG93ZXZlciwgdGhlIGZh
bWlseSBuYW1lIHdpdGhpbiBGb250UGxhdGZvcm1EYXRhIGlzIG9ubHkgdXNlZCB3aGVuIHBpY2tp
bmcKKyAgICAvLyBhIHJlbmRlciBzdHlsZSBmb3IgdGhlIGZvbnQsIHNvIGl0J3Mgbm90IHRvbyBn
cmVhdCBvZiBhIGxvc3MuCisgICAgRm9udFBsYXRmb3JtRGF0YSByZXN1bHQodGYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9u
dC5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc3R5bGUgJiBTa1R5cGVmYWNlOjprQm9sZCkgJiYgIXRmLT5pc0JvbGQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3R5bGUgJiBTa1R5cGVmYWNlOjprSXRhbGljKSAm
JiAhdGYtPmlzSXRhbGljKCkpOworICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YSgmcmVzdWx0
KTsKIH0KIAogU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udCYgZm9udCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63563</attachid>
            <date>2010-08-05 01:20:31 -0700</date>
            <delta_ts>2010-08-19 22:41:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>typeface-cache.patch</filename>
            <type>text/plain</type>
            <size>3414</size>
            <attacher name="ningxin hu">ningxin.hu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTUyNDZjOC4uNTU1YTdjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wOC0wNCAgTmluZ3hpbiBIdSAg
PG5pbmd4aW4uaHVAaW50ZWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHR5cGVmYWNlIGNhY2hlIGludG8gZ2V0
Rm9udERhdGFGb3JDaGFyYWN0ZXJzIGJhc2VkCisgICAgICAgIG9uIHI1OTQ4My4gV2l0aCB0aGUg
cGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvcgorICAgICAgICBwYWdlX2N5Y2xl
cl9pbnRsMSBkaXNhcHBlYXJzLgorICAgICAgICBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyMTUKKworICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNh
bGwgZm9udGNvbmZpZyB0d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBTZWUgYWxz
byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5MDQgLgorICAgICAg
ICBUZXN0OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ib2xkLWJlbmdhbGkuaHRtbAorICAgICAg
ICAoV2FzIGNoZWNrZWQgaW4gYXMgcGFydCBvZiB0aGUgZmlyc3QgYXR0ZW1wdCBhdCB0aGlzIGNo
YW5nZSwgY29udGludWVzCisgICAgICAgIHRvIHBhc3MgYWZ0ZXIgdGhpcyBjaGFuZ2UuKQorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjppbnZhbGlkYXRlUGxhdGZvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMpOgorCiAyMDEw
LTA3LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCmluZGV4IDUzZjRhNTIuLmJhOGQ1OWYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXgu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGlu
dXguY3BwCkBAIC01NCwxNiArNTQsNDYgQEAgdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgp
CiB7CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFNrVHlwZWZhY2UqPiBUeXBlZmFjZUNh
Y2hlOworCiBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNo
YXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbGVuZ3RoKQogewotICAgIFN0cmluZyBmYW1pbHkgPSBDaHJvbWl1bUJyaWRnZTo6Z2V0Rm9u
dEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoKTsKLSAgICBpZiAoZmFtaWx5
LmlzRW1wdHkoKSkKKyAgICBpbnQgc3R5bGUgPSBTa1R5cGVmYWNlOjprTm9ybWFsOworICAgIGlm
IChmb250LmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkKQorICAg
ICAgICBzdHlsZSB8PSBTa1R5cGVmYWNlOjprQm9sZDsKKyAgICBpZiAoZm9udC5mb250RGVzY3Jp
cHRpb24oKS5pdGFsaWMoKSkKKyAgICAgICAgc3R5bGUgfD0gU2tUeXBlZmFjZTo6a0l0YWxpYzsK
KworICAgIC8vIFRoaXMgY2FjaGUgaXMganVzdCBsZWFrZWQgb24gc2h1dGRvd24uCisgICAgc3Rh
dGljIFR5cGVmYWNlQ2FjaGUgKmdUeXBlZmFjZUNoYWNoZSA9IDA7CisgICAgaWYgKCFnVHlwZWZh
Y2VDaGFjaGUpCisgICAgICAgIGdUeXBlZmFjZUNoYWNoZSA9IG5ldyBUeXBlZmFjZUNhY2hlOwor
CisgICAgU2tUeXBlZmFjZSogdGYgPSAwOworCisgICAgU3RyaW5nIGtleShjaGFyYWN0ZXJzLCBs
ZW5ndGgpOworICAgIFR5cGVmYWNlQ2FjaGU6Oml0ZXJhdG9yIGl0ID0gZ1R5cGVmYWNlQ2hhY2hl
LT5maW5kKGtleSk7CisgICAgaWYgKGl0ICE9IGdUeXBlZmFjZUNoYWNoZS0+ZW5kKCkpCisgICAg
ICAgIHRmID0gaXQtPnNlY29uZDsKKyAgICBlbHNlIHsKKyAgICAgICAgdGYgPSBTa1R5cGVmYWNl
OjpDcmVhdGVGb3JDaGFycyhjaGFyYWN0ZXJzLCBsZW5ndGggKiAyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTa1R5cGVmYWNlOjpTdHlsZT4oc3R5
bGUpKTsKKyAgICAgICAgZ1R5cGVmYWNlQ2hhY2hlLT5zZXQoa2V5LCB0Zik7CisgICAgfQorICAg
IGlmICghdGYpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQXRvbWljU3RyaW5nIGF0b21pY0Zh
bWlseShmYW1pbHkpOwotICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShnZXRDYWNoZWRGb250
UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksIGF0b21pY0ZhbWlseSwgZmFsc2Up
KTsKKyAgICAvLyBGSVhNRTogd2UgZG9uJ3QgaGF2ZSBhIGZhbWlseSBuYW1lIGZvciB0aGlzIGZv
bnQuCisgICAgLy8gSG93ZXZlciwgdGhlIGZhbWlseSBuYW1lIHdpdGhpbiBGb250UGxhdGZvcm1E
YXRhIGlzIG9ubHkgdXNlZCB3aGVuIHBpY2tpbmcKKyAgICAvLyBhIHJlbmRlciBzdHlsZSBmb3Ig
dGhlIGZvbnQsIHNvIGl0J3Mgbm90IHRvbyBncmVhdCBvZiBhIGxvc3MuCisgICAgRm9udFBsYXRm
b3JtRGF0YSByZXN1bHQodGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9udC5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNp
emUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3R5bGUgJiBTa1R5cGVmYWNlOjpr
Qm9sZCkgJiYgIXRmLT5pc0JvbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3R5
bGUgJiBTa1R5cGVmYWNlOjprSXRhbGljKSAmJiAhdGYtPmlzSXRhbGljKCkpOworICAgIHJldHVy
biBnZXRDYWNoZWRGb250RGF0YSgmcmVzdWx0KTsKIH0KIAogU2ltcGxlRm9udERhdGEqIEZvbnRD
YWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udCYgZm9udCkK
</data>
<flag name="review"
          id="52218"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64925</attachid>
            <date>2010-08-19 22:41:22 -0700</date>
            <delta_ts>2010-10-21 09:00:34 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>typeface-cache-1.patch</filename>
            <type>text/plain</type>
            <size>3458</size>
            <attacher name="ningxin hu">ningxin.hu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTUyNDZjOC4uNTU1YTdjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wOC0wNCAgTmluZ3hpbiBIdSAg
PG5pbmd4aW4uaHVAaW50ZWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHR5cGVmYWNlIGNhY2hlIGludG8gZ2V0
Rm9udERhdGFGb3JDaGFyYWN0ZXJzIGJhc2VkCisgICAgICAgIG9uIHI1OTQ4My4gV2l0aCB0aGUg
cGF0Y2gsIHRoZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvcgorICAgICAgICBwYWdlX2N5Y2xl
cl9pbnRsMSBkaXNhcHBlYXJzLgorICAgICAgICBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyMTUKKworICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNh
bGwgZm9udGNvbmZpZyB0d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBTZWUgYWxz
byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5MDQgLgorICAgICAg
ICBUZXN0OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ib2xkLWJlbmdhbGkuaHRtbAorICAgICAg
ICAoV2FzIGNoZWNrZWQgaW4gYXMgcGFydCBvZiB0aGUgZmlyc3QgYXR0ZW1wdCBhdCB0aGlzIGNo
YW5nZSwgY29udGludWVzCisgICAgICAgIHRvIHBhc3MgYWZ0ZXIgdGhpcyBjaGFuZ2UuKQorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjppbnZhbGlkYXRlUGxhdGZvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMpOgorCiAyMDEw
LTA3LTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCmluZGV4IDUzZjRhNTIuLjNkMmQ0NDcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXgu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGlu
dXguY3BwCkBAIC01NCwxNiArNTQsNDcgQEAgdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgp
CiB7CiB9CiAKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFNrVHlwZWZhY2UqPiBUeXBlZmFjZUNh
Y2hlOworCiBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNo
YXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbGVuZ3RoKQogewotICAgIFN0cmluZyBmYW1pbHkgPSBDaHJvbWl1bUJyaWRnZTo6Z2V0Rm9u
dEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoKTsKLSAgICBpZiAoZmFtaWx5
LmlzRW1wdHkoKSkKKyAgICBpbnQgc3R5bGUgPSBTa1R5cGVmYWNlOjprTm9ybWFsOworICAgIGlm
IChmb250LmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkKQorICAg
ICAgICBzdHlsZSB8PSBTa1R5cGVmYWNlOjprQm9sZDsKKyAgICBpZiAoZm9udC5mb250RGVzY3Jp
cHRpb24oKS5pdGFsaWMoKSkKKyAgICAgICAgc3R5bGUgfD0gU2tUeXBlZmFjZTo6a0l0YWxpYzsK
KworICAgIC8vIFRoaXMgY2FjaGUgaXMganVzdCBsZWFrZWQgb24gc2h1dGRvd24uCisgICAgc3Rh
dGljIFR5cGVmYWNlQ2FjaGUgKmdUeXBlZmFjZUNoYWNoZSA9IDA7CisgICAgaWYgKCFnVHlwZWZh
Y2VDaGFjaGUpCisgICAgICAgIGdUeXBlZmFjZUNoYWNoZSA9IG5ldyBUeXBlZmFjZUNhY2hlOwor
CisgICAgU2tUeXBlZmFjZSogdGYgPSAwOworCisgICAgU3RyaW5nIGtleShjaGFyYWN0ZXJzLCBs
ZW5ndGgpOworICAgIGtleS5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KHN0eWxlKSk7CisgICAg
VHlwZWZhY2VDYWNoZTo6aXRlcmF0b3IgaXQgPSBnVHlwZWZhY2VDaGFjaGUtPmZpbmQoa2V5KTsK
KyAgICBpZiAoaXQgIT0gZ1R5cGVmYWNlQ2hhY2hlLT5lbmQoKSkKKyAgICAgICAgdGYgPSBpdC0+
c2Vjb25kOworICAgIGVsc2UgeworICAgICAgICB0ZiA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZvckNo
YXJzKGNoYXJhY3RlcnMsIGxlbmd0aCAqIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PFNrVHlwZWZhY2U6OlN0eWxlPihzdHlsZSkpOworICAgICAg
ICBnVHlwZWZhY2VDaGFjaGUtPnNldChrZXksIHRmKTsKKyAgICB9CisgICAgaWYgKCF0ZikKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KGZhbWlseSk7
Ci0gICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEo
Zm9udC5mb250RGVzY3JpcHRpb24oKSwgYXRvbWljRmFtaWx5LCBmYWxzZSkpOworICAgIC8vIEZJ
WE1FOiB3ZSBkb24ndCBoYXZlIGEgZmFtaWx5IG5hbWUgZm9yIHRoaXMgZm9udC4KKyAgICAvLyBI
b3dldmVyLCB0aGUgZmFtaWx5IG5hbWUgd2l0aGluIEZvbnRQbGF0Zm9ybURhdGEgaXMgb25seSB1
c2VkIHdoZW4gcGlja2luZworICAgIC8vIGEgcmVuZGVyIHN0eWxlIGZvciB0aGUgZm9udCwgc28g
aXQncyBub3QgdG9vIGdyZWF0IG9mIGEgbG9zcy4KKyAgICBGb250UGxhdGZvcm1EYXRhIHJlc3Vs
dCh0ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb250LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtCb2xkKSAmJiAhdGYt
PmlzQm9sZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlwZWZh
Y2U6OmtJdGFsaWMpICYmICF0Zi0+aXNJdGFsaWMoKSk7CisgICAgcmV0dXJuIGdldENhY2hlZEZv
bnREYXRhKCZyZXN1bHQpOwogfQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1p
bGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65987</attachid>
            <date>2010-08-30 17:57:13 -0700</date>
            <delta_ts>2011-07-20 04:39:01 -0700</delta_ts>
            <desc>updated patch based on comment #35</desc>
            <filename>typeface-cache-2.patch</filename>
            <type>text/plain</type>
            <size>3523</size>
            <attacher name="ningxin hu">ningxin.hu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTUyNDZjOC4uM2IyMTQxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wOC0wNCAgTmluZ3hpbiBIdSAg
PG5pbmd4aW4uaHVAaW50ZWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNhbGwgZm9udGNvbmZpZyB0d2ljZSBpbiBj
b21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSB0eXBlZmFjZSBjYWNo
ZSBpbnRvIGdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyBiYXNlZAorICAgICAgICBvbiByNTk0ODMu
IFdpdGggdGhlIHBhdGNoLCB0aGUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBmb3IKKyAgICAgICAg
cGFnZV9jeWNsZXJfaW50bDEgZGlzYXBwZWFycy4KKyAgICAgICAgU2VlIGFsc28gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MjE1CisKKyAgICAgICAgU2VlIGFsc28g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3OTA0IC4KKyAgICAgICAg
VGVzdDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYm9sZC1iZW5nYWxpLmh0bWwKKyAgICAgICAg
KFdhcyBjaGVja2VkIGluIGFzIHBhcnQgb2YgdGhlIGZpcnN0IGF0dGVtcHQgYXQgdGhpcyBjaGFu
Z2UsIGNvbnRpbnVlcworICAgICAgICB0byBwYXNzIGFmdGVyIHRoaXMgY2hhbmdlLikKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0ZVBsYXRmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKwogMjAxMC0w
Ny0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcAppbmRleCA1M2Y0YTUyLi4wMDRiMzhlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4
LmNwcApAQCAtNTQsMTYgKzU0LDQ0IEBAIHZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQog
ewogfQogCi1jb25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNo
YXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbGVuZ3RoKQordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU2tUeXBlZmFjZSo+IFR5cGVmYWNl
Q2FjaGU7CisKK2NvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9y
Q2hhcmFjdGVycyhjb25zdCBGb250JiBmb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50
IGxlbmd0aCkKIHsKLSAgICBTdHJpbmcgZmFtaWx5ID0gQ2hyb21pdW1CcmlkZ2U6OmdldEZvbnRG
YW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCk7Ci0gICAgaWYgKGZhbWlseS5p
c0VtcHR5KCkpCisgICAgaW50IHN0eWxlID0gU2tUeXBlZmFjZTo6a05vcm1hbDsKKyAgICBpZiAo
Zm9udC5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSA+PSBGb250V2VpZ2h0Qm9sZCkKKyAgICAg
ICAgc3R5bGUgfD0gU2tUeXBlZmFjZTo6a0JvbGQ7CisgICAgaWYgKGZvbnQuZm9udERlc2NyaXB0
aW9uKCkuaXRhbGljKCkpCisgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFsaWM7CisK
KyAgICBzdGF0aWMgVHlwZWZhY2VDYWNoZSAqZ1R5cGVmYWNlQ2hhY2hlID0gMDsKKyAgICBpZiAo
IWdUeXBlZmFjZUNoYWNoZSkKKyAgICAgICAgZ1R5cGVmYWNlQ2hhY2hlID0gbmV3IFR5cGVmYWNl
Q2FjaGU7CisKKyAgICBTa1R5cGVmYWNlKiB0ZiA9IDA7CisKKyAgICBTdHJpbmcga2V5KGNoYXJh
Y3RlcnMsIGxlbmd0aCk7CisgICAga2V5LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oc3R5bGUp
KTsKKyAgICBUeXBlZmFjZUNhY2hlOjppdGVyYXRvciBpdCA9IGdUeXBlZmFjZUNoYWNoZS0+Zmlu
ZChrZXkpOworICAgIGlmIChpdCAhPSBnVHlwZWZhY2VDaGFjaGUtPmVuZCgpKQorICAgICAgICB0
ZiA9IGl0LT5zZWNvbmQ7CisgICAgZWxzZSB7CisgICAgICAgIHRmID0gU2tUeXBlZmFjZTo6Q3Jl
YXRlRm9yQ2hhcnMoY2hhcmFjdGVycywgbGVuZ3RoICogMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U2tUeXBlZmFjZTo6U3R5bGU+KHN0eWxlKSk7
CisgICAgICAgIGdUeXBlZmFjZUNoYWNoZS0+c2V0KGtleSwgdGYpOworICAgIH0KKyAgICBpZiAo
IXRmKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEF0b21pY1N0cmluZyBhdG9taWNGYW1pbHko
ZmFtaWx5KTsKLSAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZ2V0Q2FjaGVkRm9udFBsYXRm
b3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBhdG9taWNGYW1pbHksIGZhbHNlKSk7Cisg
ICAgLy8gRklYTUU6IHdlIGRvbid0IGhhdmUgYSBmYW1pbHkgbmFtZSBmb3IgdGhpcyBmb250Lgor
ICAgIC8vIEhvd2V2ZXIsIHRoZSBmYW1pbHkgbmFtZSB3aXRoaW4gRm9udFBsYXRmb3JtRGF0YSBp
cyBvbmx5IHVzZWQgd2hlbiBwaWNraW5nCisgICAgLy8gYSByZW5kZXIgc3R5bGUgZm9yIHRoZSBm
b250LCBzbyBpdCdzIG5vdCB0b28gZ3JlYXQgb2YgYSBsb3NzLgorICAgIEZvbnRQbGF0Zm9ybURh
dGEgcmVzdWx0KHRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvbnQuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0JvbGQp
ICYmICF0Zi0+aXNCb2xkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYg
U2tUeXBlZmFjZTo6a0l0YWxpYykgJiYgIXRmLT5pc0l0YWxpYygpKTsKKyAgICByZXR1cm4gZ2V0
Q2FjaGVkRm9udERhdGEoJnJlc3VsdCk7CiB9CiAKIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6
OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101449</attachid>
            <date>2011-07-20 04:39:14 -0700</date>
            <delta_ts>2011-07-25 19:06:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20110720203912.patch</filename>
            <type>text/plain</type>
            <size>7748</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEzNTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZDZhNzVkMTRjZDE5YWJm
Y2I2NGRmYzNjMmNmZjhhMTAyNTUyM2I2Li41ODk5MDFiMTkwMjk3NTY0NGU1OGZkNTVmMTlkODRm
ZWFkZjViMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMjAgIEtlbmlj
aGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
ZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4dCBwYXRoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwMQorCisgICAgICAg
IENyZWF0ZXMgRm9udFBsYXRmb3JtRGF0YSBpbiBnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoKSB0
byBwcmV2ZW50IGNhbGxpbmcgZm9udGNvbmZpZyB0d2ljZS4gIEFkZHMgdGhlIGNyZWF0ZWQgRm9u
dFBsYXRmb3JtRGF0YSB0byBjYWNoZSB0byBhZGRyZXNzIHRoZSBwZXJmb3JtYW5jZSByZWdyZXNz
aW9uKHI1OTQ4MykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHBhdGNoIHdpbGwgbWFrZSBDaHJvbWl1bSBsaW51eCBw
b3J0IHBhc3MgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYm9sZC1iZW5nYWxpLmh0bWwuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpoYXNDYWNoZWRGb250UGxhdGZvcm1EYXRhRm9yKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnNldEZvbnRQbGF0Zm9ybURhdGEpOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlU2tpYVN0eWxlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyk6IENyZWF0ZXMgRm9udFBsYXRmb3JtRGF0YSBhbmQg
c2V0cyBpdCB0byB0aGUgY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldExh
c3RSZXNvcnRGYWxsYmFja0ZvbnQpOiBDYWxscyBnZXRDYWNoZWRGb250RGF0YSgpIGluc3RlYWQg
b2YgZ2V0Rm9udFBsYXRmb3JtRGF0YSgpLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpj
cmVhdGVGb250UGxhdGZvcm1EYXRhKTogRXh0cmFjdGVkIGNvbXB1dGluZyBTa2lhIHN0eWxlIGZs
YWcgYXMgYSBzdGF0aWMgZnVuY3Rpb24uCisKIDIwMTEtMDctMjAgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI5MTI4NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCmluZGV4IGYxZWM5ZWYzMWM1NTQ2ZDAyYzI3MzZiMmRmMWZjMGI3ZTEzYjM2MDkuLmQ1
ZGU3OGY1N2YyMDA1YWViYzljOWZjOTBkNWZjMTBhYWUwMzIxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMjY5LDYgKzI2OSwyNyBA
QCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250RGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShw
bGF0Zm9ybURhdGEsIHNob3VsZFJldGFpbik7CiB9CiAKK2Jvb2wgRm9udENhY2hlOjpoYXNDYWNo
ZWRGb250UGxhdGZvcm1EYXRhRm9yKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0
aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3sKKyAgICBpZiAoIWdGb250UGxhdGZv
cm1EYXRhQ2FjaGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGb250UGxhdGZvcm1EYXRh
Q2FjaGVLZXkga2V5KGZhbWlseSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCks
IGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSwgZm9udERlc2NyaXB0aW9uLml0YWxpYygpLCBmb250
RGVzY3JpcHRpb24udXNlUHJpbnRlckZvbnQoKSwgZm9udERlc2NyaXB0aW9uLnJlbmRlcmluZ01v
ZGUoKSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi50ZXh0
T3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKTsKKyAgICByZXR1
cm4gZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+ZmluZChrZXkpICE9IGdGb250UGxhdGZvcm1EYXRh
Q2FjaGUtPmVuZCgpOworfQorCit2b2lkIEZvbnRDYWNoZTo6c2V0Rm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHksIEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSkKK3sKKyAgICBBU1NFUlQo
cGxhdGZvcm1EYXRhKTsKKworICAgIGlmICghZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZSkgeworICAg
ICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlID0gbmV3IEZvbnRQbGF0Zm9ybURhdGFDYWNoZTsK
KyAgICAgICAgcGxhdGZvcm1Jbml0KCk7CisgICAgfQorICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNo
ZUtleSBrZXkoZmFtaWx5LCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZm9u
dERlc2NyaXB0aW9uLndlaWdodCgpLCBmb250RGVzY3JpcHRpb24uaXRhbGljKCksIGZvbnREZXNj
cmlwdGlvbi51c2VQcmludGVyRm9udCgpLCBmb250RGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgp
LCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLnRleHRPcmll
bnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCkpOworICAgIEFTU0VSVChn
Rm9udFBsYXRmb3JtRGF0YUNhY2hlLT5maW5kKGtleSkgPT0gZ0ZvbnRQbGF0Zm9ybURhdGFDYWNo
ZS0+ZW5kKCkpOworICAgIGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPnNldChrZXksIHBsYXRmb3Jt
RGF0YSk7Cit9CisKIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnREYXRh
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgU2hvdWxkUmV0YWluIHNob3Vs
ZFJldGFpbikKIHsKICAgICBpZiAoIXBsYXRmb3JtRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggNTBhMjlhZTcxNGJjYzczNTAyYzA2MTc4
N2ViNWI3YWFiZDIzMmEzZi4uODUyYzg1NTFmYzg4YjExYWU2ZjNiMWQ5ZGQxNzQ3NmE0NjJkMzQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAg
LTExOSw2ICsxMTksOSBAQCBwcml2YXRlOgogCiAgICAgU2ltcGxlRm9udERhdGEqIGdldENhY2hl
ZEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqLCBTaG91bGRSZXRhaW4gPSBSZXRhaW4p
OwogCisgICAgYm9vbCBoYXNDYWNoZWRGb250UGxhdGZvcm1EYXRhRm9yKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKKyAgICB2b2lkIHNldEZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHksIEZvbnRQbGF0Zm9ybURhdGEqKTsKKwogICAgIC8vIERvbid0IHB1cmdlIGlmIHRoaXMg
Y291bnQgaXMgPiAwOwogICAgIGludCBtX3B1cmdlUHJldmVudENvdW50OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2Fj
aGVMaW51eC5jcHAKaW5kZXggYWQyMThkNzg0NjU4ZjI0ZDkwYWM1ZDY0ZDVlMjhiMmMyZjVlMTBi
NS4uNDg5NTVmNzgzOTY0Y2EwNDljZmZlMjAxY2IwMTNlYTg3NmQyZGE5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRD
YWNoZUxpbnV4LmNwcApAQCAtNTAsNiArNTAsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdGF0aWMgaW50IGNvbXB1dGVTa2lhU3R5bGUoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24pCit7CisgICAgaW50IHN0eWxlID0gU2tUeXBlZmFjZTo6a05vcm1hbDsKKyAg
ICBpZiAoZm9udERlc2NyaXB0aW9uLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkKQorICAgICAg
ICBzdHlsZSB8PSBTa1R5cGVmYWNlOjprQm9sZDsKKyAgICBpZiAoZm9udERlc2NyaXB0aW9uLml0
YWxpYygpKQorICAgICAgICBzdHlsZSB8PSBTa1R5cGVmYWNlOjprSXRhbGljOworICAgIHJldHVy
biBzdHlsZTsKK30KKwogdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiB7CiB9CkBAIC02
Myw4ICs3MywxOSBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0
YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwKICAgICBpZiAoZmFtaWx5LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KGZh
bWlseSk7Ci0gICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGdldENhY2hlZEZvbnRQbGF0Zm9y
bURhdGEoZm9udC5mb250RGVzY3JpcHRpb24oKSwgYXRvbWljRmFtaWx5LCBEb05vdFJldGFpbikp
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyBhdG9taWNGYW1pbHkoZmFtaWx5KTsKKyAgICBpZiAo
IWhhc0NhY2hlZEZvbnRQbGF0Zm9ybURhdGFGb3IoZm9udC5mb250RGVzY3JpcHRpb24oKSwgYXRv
bWljRmFtaWx5KSkgeworICAgICAgICBpbnQgc3R5bGUgPSBjb21wdXRlU2tpYVN0eWxlKGZvbnQu
Zm9udERlc2NyaXB0aW9uKCkpOworICAgICAgICBTa1R5cGVmYWNlKiB0eXBlZmFjZSA9IFNrVHlw
ZWZhY2U6OkNyZWF0ZUZvckNoYXJzKGNoYXJhY3RlcnMsIGxlbmd0aCAqIDIsIHN0YXRpY19jYXN0
PFNrVHlwZWZhY2U6OlN0eWxlPihzdHlsZSkpOworICAgICAgICBpZiAoIXR5cGVmYWNlKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1E
YXRhID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEodHlwZWZhY2UsIGZhbWlseS51dGY4KCkuZGF0YSgp
LCBmb250LmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpLCAoc3R5bGUgJiBTa1R5cGVm
YWNlOjprQm9sZCkgJiYgIXR5cGVmYWNlLT5pc0JvbGQoKSwgKHN0eWxlICYgU2tUeXBlZmFjZTo6
a0l0YWxpYykgJiYgIXR5cGVmYWNlLT5pc0l0YWxpYygpKTsKKyAgICAgICAgdHlwZWZhY2UtPnVu
cmVmKCk7CisgICAgICAgIHNldEZvbnRQbGF0Zm9ybURhdGEoZm9udC5mb250RGVzY3JpcHRpb24o
KSwgYXRvbWljRmFtaWx5LCBwbGF0Zm9ybURhdGEpOworICAgICAgICByZXR1cm4gZ2V0Q2FjaGVk
Rm9udERhdGEocGxhdGZvcm1EYXRhLCBEb05vdFJldGFpbik7CisgICAgfQorICAgIHJldHVybiBn
ZXRDYWNoZWRGb250RGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBhdG9taWNGYW1pbHksIGZh
bHNlLCBEb05vdFJldGFpbik7CiB9CiAKIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldFNp
bWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCkBAIC03OCwyMiArOTksMTgg
QEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
IHNlcmlmU3RyKCJTZXJpZiIpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgbW9ub3Nw
YWNlU3RyKCJNb25vc3BhY2UiKTsKIAotICAgIEZvbnRQbGF0Zm9ybURhdGEqIGZvbnRQbGF0Zm9y
bURhdGEgPSAwOwogICAgIHN3aXRjaCAoZGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpKSB7CiAg
ICAgY2FzZSBGb250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5OgotICAgICAgICBmb250UGxhdGZv
cm1EYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbiwgc2VyaWZTdHIp
OwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGRlc2Ny
aXB0aW9uLCBzZXJpZlN0cik7CiAgICAgY2FzZSBGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZh
bWlseToKLSAgICAgICAgZm9udFBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURh
dGEoZGVzY3JpcHRpb24sIG1vbm9zcGFjZVN0cik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBy
ZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZGVzY3JpcHRpb24sIG1vbm9zcGFjZVN0cik7CiAgICAg
Y2FzZSBGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseToKICAgICBkZWZhdWx0OgotICAg
ICAgICBmb250UGxhdGZvcm1EYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShkZXNjcmlw
dGlvbiwgc2Fuc1N0cik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gZ2V0Q2FjaGVk
Rm9udERhdGEoZGVzY3JpcHRpb24sIHNhbnNTdHIpOwogICAgIH0KIAotICAgIEFTU0VSVChmb250
UGxhdGZvcm1EYXRhKTsKLSAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZm9udFBsYXRmb3Jt
RGF0YSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIHZv
aWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eU5hbWUsCkBAIC0xMzcsMTEgKzE1NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAgICAg
ICAgIG5hbWUgPSBzLmRhdGEoKTsKICAgICB9CiAKLSAgICBpbnQgc3R5bGUgPSBTa1R5cGVmYWNl
OjprTm9ybWFsOwotICAgIGlmIChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkgPj0gRm9udFdlaWdo
dEJvbGQpCi0gICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtCb2xkOwotICAgIGlmIChmb250
RGVzY3JpcHRpb24uaXRhbGljKCkpCi0gICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFs
aWM7CisgICAgaW50IHN0eWxlID0gY29tcHV0ZVNraWFTdHlsZShmb250RGVzY3JpcHRpb24pOwog
CiAgICAgU2tUeXBlZmFjZSogdGYgPSBTa1R5cGVmYWNlOjpDcmVhdGVGcm9tTmFtZShuYW1lLCBz
dGF0aWNfY2FzdDxTa1R5cGVmYWNlOjpTdHlsZT4oc3R5bGUpKTsKICAgICBpZiAoIXRmKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101960</attachid>
            <date>2011-07-25 19:07:07 -0700</date>
            <delta_ts>2011-09-05 06:15:19 -0700</delta_ts>
            <desc>Patch (Fix breaking tests)</desc>
            <filename>bug-38701-20110726110705.patch</filename>
            <type>text/plain</type>
            <size>9376</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3MzUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyY2M5OWY3NTU4YWU3YmM4MjAxMWUy
YjlkMDEyZWUxMGIwMDAyZjlhLi44MjBlYzdmNTI5NjgzZWMwZjU0NGYzZDc4YmIzNDhmM2ViYWJi
N2I0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjUgIEtlbmljaGkgSXNoaWJhc2hp
ICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gZG9uJ3QgY2FsbCBm
b250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4dCBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwMQorCisgICAgICAgIFVwZGF0ZXMgZXhw
ZWN0YXRpb25zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OiBNYXJrZWQgZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvYm9sZC1iZW5nYWxpLmh0bWwgYXMgUEFTUyBmb3IgTElOVVgu
CisKIDIwMTEtMDctMjUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBbY2hyb21pdW1dIE1hcmsgZmFzdC9jeWNsaWMtcHJvdG90eXBlcy5odG1sIGFzIGEgZmxh
a3kgY3Jhc2hlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAppbmRleCA5NzdjOWUwOGI5YTI2ODFhM2M1OGZlZDQ4NzQ3NTgxYjAx
Njg1NzdhLi44OTQ4YjA3NWE5ZGQ3Mzc5ODAyNWE0MWU4MWE3OWJiMmY0M2MxM2NjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CkBAIC0xODM5LDYgKzE4MzksNyBAQCBCVUdXSzM4MTA4IE1BQyA6IGZhc3QvYmFja2dyb3VuZHMv
c2l6ZS9jb250YWluLWFuZC1jb3Zlci5odG1sID0gSU1BR0UKIC8vIFdlYktpdCByb2xsIDU4MzA0
OjU4NDAwCiAvLyBTa2lwIHNpbmNlIG5vdCByZWxldmFudAogQlVHVUtBSSBXSU4gTUFDIFNLSVAg
OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ib2xkLWJlbmdhbGkuaHRtbCA9IEZBSUwKK0JVR1VL
QUkgTElOVVggOiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ib2xkLWJlbmdhbGkuaHRtbCA9IFBB
U1MKIAogLy8gVGhlc2UgNSwwMDArIHRlc3RzIGFyZSBhbHJlYWR5IGJlaW5nIHJ1biBieSB0aGUg
VjggdGVhbSAoYW5kIGhhdmUgbm8gY2hyb21pdW0gZXhwZWN0YXRpb25zKS4KIC8vIFRoZXkgc2hv
dWxkIGJlIG1vdmVkIHRvIHRoZSBKYXZhU2NyaXB0Q29yZSB0ZXN0IHN1aXRlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDM0YWRhYWZmMmU2MjI2YzcyNjM0MjllMzg2ZGRkNjExZDNjODQ3MzQuLmZlYTkzNmE1OWE0
YzM4NmRmYzE4YmJmNzk5ZjA5MzFiN2NlOWRjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAxMS0wNy0yNSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBkb24ndCBjYWxsIGZvbnRjb25maWcgdHdpY2UgaW4gY29tcGxl
eCB0ZXh0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4NzAxCisKKyAgICAgICAgQ3JlYXRlcyBGb250UGxhdGZvcm1EYXRhIGluIGdldEZvbnRE
YXRhRm9yQ2hhcmFjdGVycygpIHRvIHByZXZlbnQgY2FsbGluZyBmb250Y29uZmlnIHR3aWNlLiAg
QWRkcyB0aGUgY3JlYXRlZCBGb250UGxhdGZvcm1EYXRhIHRvIGNhY2hlIHRvIGFkZHJlc3MgdGhl
IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24ocjU5NDgzKS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgcGF0Y2ggd2lsbCBt
YWtlIENocm9taXVtIGxpbnV4IHBvcnQgcGFzcyBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9ib2xk
LWJlbmdhbGkuaHRtbC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omhhc0NhY2hlZEZvbnRQbGF0Zm9ybURh
dGFGb3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c2V0Rm9udFBsYXRm
b3JtRGF0YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVTa2lhU3R5bGUpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKTogQ3JlYXRlcyBG
b250UGxhdGZvcm1EYXRhIGFuZCBzZXRzIGl0IHRvIHRoZSBjYWNoZS4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IENhbGxzIGdldENhY2hl
ZEZvbnREYXRhKCkgaW5zdGVhZCBvZiBnZXRGb250UGxhdGZvcm1EYXRhKCkuCisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOiBFeHRyYWN0ZWQgY29t
cHV0aW5nIFNraWEgc3R5bGUgZmxhZyBhcyBhIHN0YXRpYyBmdW5jdGlvbi4KKwogMjAxMS0wNy0y
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZmFjdG9yIFNjcm9s
bGFibGVBcmVhIHBpbm5lZCBwcmVkaWNhdGVzIHRvIGJlIG1vcmUgZ2VuZXJhbGx5IHVzZWZ1bApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXgg
ZjFlYzllZjMxYzU1NDZkMDJjMjczNmIyZGYxZmMwYjdlMTNiMzYwOS4uZDVkZTc4ZjU3ZjIwMDVh
ZWJjOWM5ZmM5MGQ1ZmMxMGFhZTAzMjFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yNjksNiArMjY5LDI3IEBAIFNpbXBsZUZvbnRE
YXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyaXB0CiAgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKHBsYXRmb3JtRGF0YSwg
c2hvdWxkUmV0YWluKTsKIH0KIAorYm9vbCBGb250Q2FjaGU6Omhhc0NhY2hlZEZvbnRQbGF0Zm9y
bURhdGFGb3IoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0
b21pY1N0cmluZyYgZmFtaWx5KQoreworICAgIGlmICghZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSBrZXko
ZmFtaWx5LCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZm9udERlc2NyaXB0
aW9uLndlaWdodCgpLCBmb250RGVzY3JpcHRpb24uaXRhbGljKCksIGZvbnREZXNjcmlwdGlvbi51
c2VQcmludGVyRm9udCgpLCBmb250RGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgpLCBmb250RGVz
Y3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlvbigp
LCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCkpOworICAgIHJldHVybiBnRm9udFBsYXRm
b3JtRGF0YUNhY2hlLT5maW5kKGtleSkgIT0gZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+ZW5kKCk7
Cit9CisKK3ZvaWQgRm9udENhY2hlOjpzZXRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgRm9u
dFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURhdGEp
OworCisgICAgaWYgKCFnRm9udFBsYXRmb3JtRGF0YUNhY2hlKSB7CisgICAgICAgIGdGb250UGxh
dGZvcm1EYXRhQ2FjaGUgPSBuZXcgRm9udFBsYXRmb3JtRGF0YUNhY2hlOworICAgICAgICBwbGF0
Zm9ybUluaXQoKTsKKyAgICB9CisgICAgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5IGtleShmYW1p
bHksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmb250RGVzY3JpcHRpb24u
d2VpZ2h0KCksIGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKSwgZm9udERlc2NyaXB0aW9uLnVzZVBy
aW50ZXJGb250KCksIGZvbnREZXNjcmlwdGlvbi5yZW5kZXJpbmdNb2RlKCksIGZvbnREZXNjcmlw
dGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24udGV4dE9yaWVudGF0aW9uKCksIGZv
bnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSk7CisgICAgQVNTRVJUKGdGb250UGxhdGZvcm1E
YXRhQ2FjaGUtPmZpbmQoa2V5KSA9PSBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5lbmQoKSk7Cisg
ICAgZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+c2V0KGtleSwgcGxhdGZvcm1EYXRhKTsKK30KKwog
U2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhLCBTaG91bGRSZXRhaW4gc2hvdWxkUmV0YWluKQogewog
ICAgIGlmICghcGxhdGZvcm1EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaAppbmRleCA1MGEyOWFlNzE0YmNjNzM1MDJjMDYxNzg3ZWI1YjdhYWJkMjMy
YTNmLi44NTJjODU1MWZjODhiMTFhZTZmM2IxZDlkZDE3NDc2YTQ2MmQzNDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMTE5LDYgKzExOSw5
IEBAIHByaXZhdGU6CiAKICAgICBTaW1wbGVGb250RGF0YSogZ2V0Q2FjaGVkRm9udERhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSosIFNob3VsZFJldGFpbiA9IFJldGFpbik7CiAKKyAgICBib29s
IGhhc0NhY2hlZEZvbnRQbGF0Zm9ybURhdGFGb3IoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworICAgIHZvaWQgc2V0Rm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgRm9udFBs
YXRmb3JtRGF0YSopOworCiAgICAgLy8gRG9uJ3QgcHVyZ2UgaWYgdGhpcyBjb3VudCBpcyA+IDA7
CiAgICAgaW50IG1fcHVyZ2VQcmV2ZW50Q291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcApp
bmRleCBhZDIxOGQ3ODQ2NThmMjRkOTBhYzVkNjRkNWUyOGIyYzJmNWUxMGI1Li5lZmQ1YjQ1Zjlj
MTlmNmQ3ZDE2ODJmODJmOTc1YzdiM2E0ZGJiY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3Bw
CkBAIC01MCw2ICs1MCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbnQg
Y29tcHV0ZVNraWFTdHlsZShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikK
K3sKKyAgICBpbnQgc3R5bGUgPSBTa1R5cGVmYWNlOjprTm9ybWFsOworICAgIGlmIChmb250RGVz
Y3JpcHRpb24ud2VpZ2h0KCkgPj0gRm9udFdlaWdodEJvbGQpCisgICAgICAgIHN0eWxlIHw9IFNr
VHlwZWZhY2U6OmtCb2xkOworICAgIGlmIChmb250RGVzY3JpcHRpb24uaXRhbGljKCkpCisgICAg
ICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFsaWM7CisgICAgcmV0dXJuIHN0eWxlOworfQor
CiB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1Jbml0KCkKIHsKIH0KQEAgLTYzLDggKzczLDIwIEBA
IGNvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVy
cyhjb25zdCBGb250JiBmb250LAogICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIEF0b21pY1N0cmluZyBhdG9taWNGYW1pbHkoZmFtaWx5KTsKLSAgICBy
ZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZv
bnREZXNjcmlwdGlvbigpLCBhdG9taWNGYW1pbHksIERvTm90UmV0YWluKSk7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nIGF0b21pY0ZhbWlseShmYW1pbHkpOworICAgIGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uID0gZm9udC5mb250RGVzY3JpcHRpb24oKTsKKyAgICBpZiAo
IWhhc0NhY2hlZEZvbnRQbGF0Zm9ybURhdGFGb3IoZm9udERlc2NyaXB0aW9uLCBhdG9taWNGYW1p
bHkpKSB7CisgICAgICAgIGludCBzdHlsZSA9IGNvbXB1dGVTa2lhU3R5bGUoZm9udERlc2NyaXB0
aW9uKTsKKyAgICAgICAgU2tUeXBlZmFjZSogdHlwZWZhY2UgPSBTa1R5cGVmYWNlOjpDcmVhdGVG
b3JDaGFycyhjaGFyYWN0ZXJzLCBsZW5ndGggKiAyLCBzdGF0aWNfY2FzdDxTa1R5cGVmYWNlOjpT
dHlsZT4oc3R5bGUpKTsKKyAgICAgICAgaWYgKCF0eXBlZmFjZSkKKyAgICAgICAgICAgIHJldHVy
biAwOworCisgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IG5ldyBGb250
UGxhdGZvcm1EYXRhKHR5cGVmYWNlLCBmYW1pbHkudXRmOCgpLmRhdGEoKSwgZm9udERlc2NyaXB0
aW9uLmNvbXB1dGVkU2l6ZSgpLCAoc3R5bGUgJiBTa1R5cGVmYWNlOjprQm9sZCkgJiYgIXR5cGVm
YWNlLT5pc0JvbGQoKSwgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0l0YWxpYykgJiYgIXR5cGVmYWNl
LT5pc0l0YWxpYygpLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0
aW9uLnRleHRPcmllbnRhdGlvbigpKTsKKyAgICAgICAgdHlwZWZhY2UtPnVucmVmKCk7CisgICAg
ICAgIHNldEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBhdG9taWNGYW1pbHksIHBs
YXRmb3JtRGF0YSk7CisgICAgICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShwbGF0Zm9ybURh
dGEsIERvTm90UmV0YWluKTsKKyAgICB9CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZv
bnREZXNjcmlwdGlvbiwgYXRvbWljRmFtaWx5LCBmYWxzZSwgRG9Ob3RSZXRhaW4pOwogfQogCiBT
aW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250JiBmb250KQpAQCAtNzgsMjIgKzEwMCwxOCBAQCBTaW1wbGVGb250RGF0YSogRm9udENh
Y2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVz
YwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc2VyaWZTdHIoIlNlcmlmIik7CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBtb25vc3BhY2VTdHIoIk1vbm9zcGFjZSIpOwogCi0g
ICAgRm9udFBsYXRmb3JtRGF0YSogZm9udFBsYXRmb3JtRGF0YSA9IDA7CiAgICAgc3dpdGNoIChk
ZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkpIHsKICAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6
U2VyaWZGYW1pbHk6Ci0gICAgICAgIGZvbnRQbGF0Zm9ybURhdGEgPSBnZXRDYWNoZWRGb250UGxh
dGZvcm1EYXRhKGRlc2NyaXB0aW9uLCBzZXJpZlN0cik7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZGVzY3JpcHRpb24sIHNlcmlmU3RyKTsKICAgICBj
YXNlIEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFtaWx5OgotICAgICAgICBmb250UGxhdGZv
cm1EYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbiwgbW9ub3NwYWNl
U3RyKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShk
ZXNjcmlwdGlvbiwgbW9ub3NwYWNlU3RyKTsKICAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6U2Fu
c1NlcmlmRmFtaWx5OgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGZvbnRQbGF0Zm9ybURhdGEgPSBn
ZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uLCBzYW5zU3RyKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShkZXNjcmlwdGlvbiwgc2Fu
c1N0cik7CiAgICAgfQogCi0gICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEpOwotICAgIHJldHVy
biBnZXRDYWNoZWRGb250RGF0YShmb250UGxhdGZvcm1EYXRhKTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBGb250Q2FjaGU6OmdldFRyYWl0c0lu
RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwKQEAgLTEzNywxMSArMTU1LDcg
QEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udEQKICAgICAgICAgbmFtZSA9IHMuZGF0YSgpOwogICAg
IH0KIAotICAgIGludCBzdHlsZSA9IFNrVHlwZWZhY2U6OmtOb3JtYWw7Ci0gICAgaWYgKGZvbnRE
ZXNjcmlwdGlvbi53ZWlnaHQoKSA+PSBGb250V2VpZ2h0Qm9sZCkKLSAgICAgICAgc3R5bGUgfD0g
U2tUeXBlZmFjZTo6a0JvbGQ7Ci0gICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKSkKLSAg
ICAgICAgc3R5bGUgfD0gU2tUeXBlZmFjZTo6a0l0YWxpYzsKKyAgICBpbnQgc3R5bGUgPSBjb21w
dXRlU2tpYVN0eWxlKGZvbnREZXNjcmlwdGlvbik7CiAKICAgICBTa1R5cGVmYWNlKiB0ZiA9IFNr
VHlwZWZhY2U6OkNyZWF0ZUZyb21OYW1lKG5hbWUsIHN0YXRpY19jYXN0PFNrVHlwZWZhY2U6OlN0
eWxlPihzdHlsZSkpOwogICAgIGlmICghdGYpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106327</attachid>
            <date>2011-09-05 06:15:27 -0700</date>
            <delta_ts>2011-11-01 19:44:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20110905221525.patch</filename>
            <type>text/plain</type>
            <size>12062</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ1MDgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YmYzMDVjNDRmY2UyMTM4ZDliNDEz
NjhlZDcwZWM3ZWI3OWFkZjExLi5kNjA5YjM5YWI5Zjg0NmNjMTI0ODY2YzNlYmI1OWQ2MjljOGQ0
NmQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMDUgIEtlbmljaGkgSXNoaWJhc2hp
ICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gZG9uJ3QgY2FsbCBm
b250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4dCBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0OiBNYXJrZWQgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYm9sZC1iZW5nYWxp
Lmh0bWwgYXMgUEFTUyBmb3IgTElOVVguCisKIDIwMTEtMDktMDQgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzEyNTY+IFJldGFp
biByZXRpcmVkIGN1c3RvbSBmb250cyB1bnRpbCB0aGUgbmV4dCBzdHlsZSByZWNhbGMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApp
bmRleCBkYzRhNzNhZDRmZjVjODg2OTQ4M2QzNDIwYjNjZjBmOGU1YzYzYTc0Li41ZmE3MjQ1ZDk1
YzdjNGUwZGI2ODg5ZTZiYWRiMDRiZDg2NTQxMTExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xNzc4LDYgKzE3Nzgs
NyBAQCBCVUdXSzM4MTA4IE1BQyA6IGZhc3QvYmFja2dyb3VuZHMvc2l6ZS9jb250YWluLWFuZC1j
b3Zlci5odG1sID0gSU1BR0UKIC8vIFdlYktpdCByb2xsIDU4MzA0OjU4NDAwCiAvLyBTa2lwIHNp
bmNlIG5vdCByZWxldmFudAogQlVHVUtBSSBTS0lQIE1BQyBXSU4gOiBmYXN0L3RleHQvaW50ZXJu
YXRpb25hbC9ib2xkLWJlbmdhbGkuaHRtbCA9IEZBSUwKK0JVR1VLQUkgTElOVVggOiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9ib2xkLWJlbmdhbGkuaHRtbCA9IFBBU1MKIAogLy8gVGhlc2UgNSww
MDArIHRlc3RzIGFyZSBhbHJlYWR5IGJlaW5nIHJ1biBieSB0aGUgVjggdGVhbSAoYW5kIGhhdmUg
bm8gY2hyb21pdW0gZXhwZWN0YXRpb25zKS4KIC8vIFRoZXkgc2hvdWxkIGJlIG1vdmVkIHRvIHRo
ZSBKYXZhU2NyaXB0Q29yZSB0ZXN0IHN1aXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNmNTI1MmVlMjBiZWU0
YTFiZjM2M2UzMmFkNDhmN2JkOTM5YTY0NDEuLjk2NmIxNTI5YjMyNGIyYmExNjczZmJmM2VlNGE5
NTcyZWM1MzEwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wOS0wNSAgS2Vu
aWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBkb24ndCBjYWxsIGZvbnRjb25maWcgdHdpY2UgaW4gY29tcGxleCB0ZXh0IHBhdGgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzAxCisKKyAgICAg
ICAgR2l2ZW4gY2hhcmFjdGVycywgcmV0dXJucyBhIFNpbXBsZUZvbnREYXRhIHdoaWNoIGFzc29j
aWF0ZWQgd2l0aCBhIEZvbnRQbGF0Zm9ybURhdGEgdGhhdCBpcyBjcmVhdGVkIGRlcGVuZHMgb24g
dGhlIHJlc3VsdCBvZiBmb250Y29uZmlnLCBpbmNsdWRpbmcgZm9udCBmYW1pbHksIGJvbGQgYW5k
IGl0YWxpYy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOiBBZGRlZCBpc0JvbGQgYW5k
IGlzSXRhbGljIGFyZ3VtZW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250Q2FjaGVMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZv
bnREYXRhRm9yQ2hhcmFjdGVycyk6IENhbGxzIGdldENhY2hlZEZvbnREYXRhKCkgd2l0aCBhIEZv
bnRQbGF0Zm9ybURhdGEgd2hpY2ggaXMgY3JlYXRlZCBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBv
ZiBmb250Y29uZmlnLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQ
bGF0Zm9ybURhdGFMaW51eC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
c2V0RmFrZUJvbGQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
OnNldEZha2VJdGFsaWMpOiBBZGRlZC4KKwogMjAxMS0wOS0wNCAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3MTI1Nj4gUmV0YWlu
IHJldGlyZWQgY3VzdG9tIGZvbnRzIHVudGlsIHRoZSBuZXh0IHN0eWxlIHJlY2FsYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRl
eCA3OGUwMTc0ZDIwMGI1ODEzMWQwODM2Yzc4MTBjODk5NGY0MjQ4MzEwLi42YTVkMGQ0ZDhjZDBk
MThlMjBhMWZhNjU4YjdiZDIwYzIwZmZhODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBsb2FkRm9udChOU0ZvbnQqIHNyY0ZvbnQsIEFUU0ZvbnRD
b250YWluZXJSZWYqLCB1aW50MzJfdCogZm9udElEKTsKICNlbGlmIE9TKFVOSVgpCiAgICAgc3Rh
dGljIHZvaWQgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQg
c2l6ZUFuZFN0eWxlLCBGb250UmVuZGVyU3R5bGUqIHJlc3VsdCk7Ci0gICAgc3RhdGljIFN0cmlu
ZyBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciosIHNpemVfdCBudW1DaGFy
YWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUpOworICAgIHN0YXRpYyBTdHJpbmcg
Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFj
dGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBib29sKiBpc0JvbGQsIGJvb2wqIGlz
SXRhbGljKTsKICNlbmRpZgogCiAgICAgLy8gRm9ybXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4
LmNwcAppbmRleCA3MjRlNWU5ZWJiMGRmOTA1NTAwMzAzMGE0OGFkYjEyMDFmOWM2M2ZiLi4xN2Mz
N2Y2MDQ4MDNiMWEzNTQ2ZmRlNGFiOTZlNTk3NTlkZDUyZTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGlu
dXguY3BwCkBAIC01OSwxMiArNTksMzggQEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNo
ZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZvbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0
aCkKIHsKICAgICBpY3U6OkxvY2FsZSBsb2NhbGUgPSBpY3U6OkxvY2FsZTo6Z2V0RGVmYXVsdCgp
OwotICAgIFN0cmluZyBmYW1pbHkgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JD
aGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCwgbG9jYWxlLmdldExhbmd1YWdlKCkpOworICAg
IGJvb2wgaXNCb2xkID0gZmFsc2U7CisgICAgYm9vbCBpc0l0YWxpYyA9IGZhbHNlOworICAgIFN0
cmluZyBmYW1pbHkgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJz
KGNoYXJhY3RlcnMsIGxlbmd0aCwgbG9jYWxlLmdldExhbmd1YWdlKCksICZpc0JvbGQsICZpc0l0
YWxpYyk7CiAgICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgQXRvbWljU3RyaW5nIGF0b21pY0ZhbWlseShmYW1pbHkpOwotICAgIHJldHVybiBnZXRDYWNo
ZWRGb250RGF0YShnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9u
KCksIGF0b21pY0ZhbWlseSwgRG9Ob3RSZXRhaW4pLCBEb05vdFJldGFpbik7CisgICAgLy8gQ2hh
bmdlcyB3ZWlnaHQgYW5kL29yIGl0YWxpYyBvZiBnaXZlbiBGb250RGVzY3JpcHRpb24gZGVwZW5k
cyBvbgorICAgIC8vIHRoZSByZXN1bHQgb2YgZm9udGNvbmZpZyBzbyB0aGF0IGtlZXBpbmcgdGhl
IGNvcnJlY3QgZm9udCBtYXBwaW5nCisgICAgLy8gb2YgdGhlIGdpdmVuIGNoYXJhY3RlcnMuIFNl
ZSBodHRwOi8vY3JidWcuY29tLzMyMTA5IGZvciBkZXRhaWxzLgorICAgIGJvb2wgc2hvdWxkU2V0
RmFrZUJvbGQgPSBmYWxzZTsKKyAgICBib29sIHNob3VsZFNldEZha2VJdGFsaWMgPSBmYWxzZTsK
KyAgICBGb250RGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZm9udC5mb250RGVzY3JpcHRpb24oKSk7
CisgICAgaWYgKGlzQm9sZCAmJiBkZXNjcmlwdGlvbi53ZWlnaHQoKSA8IEZvbnRXZWlnaHRCb2xk
KQorICAgICAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOworICAgIGlm
ICghaXNCb2xkICYmIGRlc2NyaXB0aW9uLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkKSB7Cisg
ICAgICAgIHNob3VsZFNldEZha2VCb2xkID0gdHJ1ZTsKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0
V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOworICAgIH0KKyAgICBpZiAoaXNJdGFsaWMgJiYgZGVz
Y3JpcHRpb24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09mZikKKyAgICAgICAgZGVzY3JpcHRpb24u
c2V0SXRhbGljKEZvbnRJdGFsaWNPbik7CisgICAgaWYgKCFpc0l0YWxpYyAmJiBkZXNjcmlwdGlv
bi5pdGFsaWMoKSA9PSBGb250SXRhbGljT24pIHsKKyAgICAgICAgc2hvdWxkU2V0RmFrZUl0YWxp
YyA9IHRydWU7CisgICAgICAgIGRlc2NyaXB0aW9uLnNldEl0YWxpYyhGb250SXRhbGljT2ZmKTsK
KyAgICB9CisKKyAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YSA9IEZvbnRQbGF0Zm9y
bURhdGEoKmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24sIGF0b21pY0ZhbWls
eSwgRG9Ob3RSZXRhaW4pKTsKKyAgICBpZiAoc2hvdWxkU2V0RmFrZUJvbGQpCisgICAgICAgIHBs
YXRmb3JtRGF0YS5zZXRGYWtlQm9sZCh0cnVlKTsKKyAgICBpZiAoc2hvdWxkU2V0RmFrZUl0YWxp
YykKKyAgICAgICAgcGxhdGZvcm1EYXRhLnNldEZha2VJdGFsaWModHJ1ZSk7CisgICAgcmV0dXJu
IGdldENhY2hlZEZvbnREYXRhKCZwbGF0Zm9ybURhdGEsIERvTm90UmV0YWluKTsKIH0KIAogU2lt
cGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udCYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUxpbnV4LmgKaW5kZXggODZiOTQx
Y2FlNDA1MTlhOTRhMWY4YTQwOTJlZGE0ZTZhNmQxM2Y4Yi4uMTBkY2U5MDUwNDUwNTgzYzM3MmEz
NDc1MmU5MzEwMjU0YzNlMTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUxpbnV4LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUxpbnV4LmgK
QEAgLTExOCw3ICsxMTgsOCBAQCBwdWJsaWM6CiAKICAgICBGb250T3JpZW50YXRpb24gb3JpZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9y
aWVudGF0aW9uOyB9Ci0gICAgCisgICAgdm9pZCBzZXRGYWtlQm9sZChib29sIGZha2VCb2xkKSB7
IG1fZmFrZUJvbGQgPSBmYWtlQm9sZDsgfQorICAgIHZvaWQgc2V0RmFrZUl0YWxpYyhib29sIGZh
a2VJdGFsaWMpIHsgbV9mYWtlSXRhbGljID0gZmFrZUl0YWxpYzsgfQogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhJikgY29uc3Q7CiAgICAgRm9udFBsYXRmb3JtRGF0
YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKICAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlZmFjZSA9PSBoYXNoVGFibGVE
ZWxldGVkRm9udFZhbHVlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzNkM2Vj
M2RiYzA3ZWE1NTIyMDVhZjM0MDE2MWI1ZWE5NGE4NTVlNi4uODE2YThhNmU4NmY2NjliOTkzM2Fm
MjRhMWFiNGRiNjlmNmYwYjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAxMS0wOS0wNSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBkb24ndCBjYWxsIGZvbnRjb25maWcgdHdpY2UgaW4g
Y29tcGxleCB0ZXh0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4NzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkcyBpc0JvbGQgYW5kIGlzSXRhbGljIHBhcmFtZXRlcnMgdG8gV2ViRm9udElu
Zm86OmdldEZhbWlseUZvckNoYXJzKCkgc28gdGhhdCBrZWVwaW5nIGNvcnJlY3QgZm9udCBtYXBw
aW5nIG9mIHRoZSBnaXZlbiBjaGFyYWN0ZXJzLgorCisgICAgICAgICogcHVibGljL2d0ay9XZWJG
b250SW5mby5oOiBBZGRlZCBhcmd1bWVudHMgdG8gZmFtaWx5Rm9yQ2hhcnMoKS4KKyAgICAgICAg
KiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Vw
cG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMpOiBEaXR0by4KKyAgICAgICAgKiBzcmMv
Z3RrL1dlYkZvbnRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9udEluZm86OmZhbWls
eUZvckNoYXJzKTogTW9kaWZpZWQgdG8gZ2V0IHdlaWdodCBhbmQgaXRhbGljIHByb3BlcnRpZXMg
b2YgdGhlIGZvbnQuCisKIDIwMTEtMDktMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBtdXRsaXBsZSB0byBXZWJQb3B1cE1lbnVJbmZv
IGZvciBBbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9n
dGsvV2ViRm9udEluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJG
b250SW5mby5oCmluZGV4IDVkNTI1ODQ0YWU3NjRhNGVlMjlhZThiNTczM2QxZjY1OTAyNWI4YWUu
LmZjM2Q1N2VjOGQzYTRmNzhkMWJjNDI5MDRhMGFmYjM5MmFjNTE0YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJGb250SW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0ay9XZWJGb250SW5mby5oCkBAIC00OSw4ICs0OSwx
MSBAQCBwdWJsaWM6CiAgICAgLy8gICAgICAgICAgICAgICAgICAgIChlLmcuICJlbiIsICJqYSIs
ICJ6aC1DTiIpCiAgICAgLy8KICAgICAvLyBSZXR1cm5zOiB0aGUgZm9udCBmYW1pbHkgb3IgYW4g
ZW1wdHkgc3RyaW5nIGlmIHRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZQotICAgIC8vIHNhdGlzZmll
ZC4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDU3RyaW5nIGZhbWlseUZvckNoYXJzKGNv
bnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hh
ciogcHJlZmVycmVkTG9jYWxlKTsKKyAgICAvLyBzYXRpc2ZpZWQuIElzQm9sZCBhbmQgaXNJdGFs
aWMgd2lsbCBiZSBzZXQgdHJ1ZSBpZiB0aGUgZm9udCBzaG91bGQgYmUKKyAgICAvLyB0cmVhdGVk
IGFzIGJvbGQgYW5kIGl0YWxpYywgcmVzcGVjdGl2ZWx5LgorICAgIC8vIEZJWE1FOiBSZW1vdmUg
ZGVmYXVsdCBhcmd1bWVudHMgb2YgaXNCb2xkIGFuZCBpc0l0YWxpYyBhZnRlciBDaHJvbWl1bQor
ICAgIC8vIHNpZGUgaXMgdXBkYXRlZC4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDU3Ry
aW5nIGZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVt
Q2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBib29sKiBpc0JvbGQgPSAw
LCBib29sKiBpc0l0YWxpYyA9IDApOwogCiAgICAgLy8gRmlsbCBvdXQgdGhlIGdpdmVuIFdlYkZv
bnRSZW5kZXJTdHlsZSB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgZm9yCiAgICAgLy8gcmVu
ZGVyaW5nIHRoZSBnaXZlbiBmb250IGF0IHRoZSBnaXZlbiBzaXplLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggYTQ4MTE1NWM3M2I3YzJm
OGVjNjY3MWVkOTkwN2FiMDU1NjNlNTU1My4uZWFkYjM4YTcyZWI3OWUwMjRkYjUxNDNlMjkzZDM1
ZjAxNjQwMmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwCkBAIC00NTksMTIgKzQ1OSwxMyBAQCBib29sIFBsYXRmb3JtU3VwcG9ydDo6bG9h
ZEZvbnQoTlNGb250KiBzcmNGb250LCBBVFNGb250Q29udGFpbmVyUmVmKiBjb250YWluZXIsCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogI2VsaWYgT1MoVU5JWCkKLVN0cmluZyBQbGF0Zm9ybVN1cHBv
cnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBz
aXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKQorU3RyaW5n
IFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRM
b2NhbGUsIGJvb2wqIGlzQm9sZCwgYm9vbCogaXNJdGFsaWMpCiB7CisgICAgLy8gRklYTUU6IFBh
c3MgaXNCb2xkIGFuZCBpc0l0YWxpYyBhcmd1bWVudHMgb25jZSB0aGUgQ2hyb21pdW0gc2lkZSBw
YXRjaCBpcyBsYW5kZWQuCiAgICAgaWYgKHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW5kYm94
U3VwcG9ydCgpKQogICAgICAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPnNhbmRi
b3hTdXBwb3J0KCktPmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIG51bUNo
YXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSk7CiAKLSAgICBXZWJDU3RyaW5nIGZhbWlseSA9IFdl
YkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVm
ZXJyZWRMb2NhbGUpOworICAgIFdlYkNTdHJpbmcgZmFtaWx5ID0gV2ViRm9udEluZm86OmZhbWls
eUZvckNoYXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgaXNC
b2xkLCBpc0l0YWxpYyk7CiAgICAgaWYgKGZhbWlseS5kYXRhKCkpCiAgICAgICAgIHJldHVybiBX
ZWJTdHJpbmc6OmZyb21VVEY4KGZhbWlseS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViRm9udEluZm8uY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvZ3RrL1dlYkZvbnRJbmZvLmNwcAppbmRleCBkN2FkMTdiYTY1OGU0ZGExYWZk
ZDIwNjk2Y2FlNjQyMTVjYWZmZmM0Li4xMWMzNGRmZjNkZmQwMzc3NGMxOTE3NjdjOTdlYzA2NGNh
YmEzZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViRm9u
dEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJGb250SW5m
by5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNTdHJp
bmcgV2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKQorV2Vi
Q1N0cmluZyBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUs
IGJvb2wqIGlzQm9sZCwgYm9vbCogaXNJdGFsaWMpCiB7CiAgICAgRmNDaGFyU2V0KiBjc2V0ID0g
RmNDaGFyU2V0Q3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGFyYWN0
ZXJzOyArK2kpIHsKQEAgLTEwNCw2ICsxMDQsMjAgQEAgV2ViQ1N0cmluZyBXZWJGb250SW5mbzo6
ZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGEK
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNoYXJGYW1pbHkgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPihmYW1pbHkpOwogICAgICAgICAgICAgcmVzdWx0ID0gV2ViQ1N0cmluZyhjaGFyRmFtaWx5
LCBzdHJsZW4oY2hhckZhbWlseSkpOwogICAgICAgICB9CisgICAgICAgIGlmIChpc0JvbGQpIHsK
KyAgICAgICAgICAgIGludCB3ZWlnaHQ7CisgICAgICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50
ZWdlcihjdXJyZW50LCBGQ19XRUlHSFQsIDAsICZ3ZWlnaHQpID09IEZjUmVzdWx0TWF0Y2gpCisg
ICAgICAgICAgICAgICAgKmlzQm9sZCA9IHdlaWdodCA+PSBGQ19XRUlHSFRfQk9MRDsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAqaXNCb2xkID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGlzSXRhbGljKSB7CisgICAgICAgICAgICBpbnQgc2xhbnQ7CisgICAgICAg
ICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihjdXJyZW50LCBGQ19TTEFOVCwgMCwgJnNsYW50
KSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICAgICAgICAgICppc0l0YWxpYyA9IHNsYW50ICE9
IEZDX1NMQU5UX1JPTUFOOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICppc0l0
YWxpYyA9IGZhbHNlOworICAgICAgICB9CiAgICAgICAgIEZjRm9udFNldERlc3Ryb3koZm9udFNl
dCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113272</attachid>
            <date>2011-11-01 19:44:57 -0700</date>
            <delta_ts>2011-11-02 03:39:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20111102114456.patch</filename>
            <type>text/plain</type>
            <size>13174</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwMjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZmMwZWUwNTQ2ZjI3ZmI1
MTllODU0ZGNmNDgzNjMyOGUyZTg1ZGNhLi4xMTIzOGQ5YzY4ZWMxMzA2Y2JmNzhiNTU0ZmEwMWNl
YWYyYTQ5ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTEtMDEgIEtlbmlj
aGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
ZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4dCBwYXRoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwMQorCisgICAgICAg
IEdpdmVuIGNoYXJhY3RlcnMsIHJldHVybnMgYSBTaW1wbGVGb250RGF0YSB3aGljaCBhc3NvY2lh
dGVkIHdpdGggYSBGb250UGxhdGZvcm1EYXRhIHRoYXQgaXMgY3JlYXRlZCBkZXBlbmRzIG9uIHRo
ZSByZXN1bHQgb2YgZm9udGNvbmZpZywgaW5jbHVkaW5nIGZvbnQgZmFtaWx5LCBib2xkIGFuZCBp
dGFsaWMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDogQWRkZWQgaXNCb2xkIGFuZCBp
c0l0YWxpYyBhcmd1bWVudHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udENhY2hlTGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250
RGF0YUZvckNoYXJhY3RlcnMpOiBDYWxscyBnZXRDYWNoZWRGb250RGF0YSgpIHdpdGggYSBGb250
UGxhdGZvcm1EYXRhIHdoaWNoIGlzIGNyZWF0ZWQgZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2Yg
Zm9udGNvbmZpZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxh
dGZvcm1EYXRhTGludXguaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNl
dEZha2VCb2xkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpz
ZXRGYWtlSXRhbGljKTogQWRkZWQuCisKIDIwMTEtMTEtMDEgIEFubmEgQ2F2ZW5kZXIgIDxhbm5h
Y2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2VzIFtSZWZsZWN0XSB3b3JrIGZvciBjb25z
dGFudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhmY2IxNTQ3YzNkOTU0NTBkZmVh
YzI2ZjkyYWFmNjljMmYyNDE4NjIuLjUzOWM2MjEwODFlNDhhN2M2YTE3YjY1MGExZmM0NjYzNDNm
NzIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEt
MTEtMDEgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4dCBw
YXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
aXNCb2xkIGFuZCBpc0l0YWxpYyBwYXJhbWV0ZXJzIHRvIFdlYkZvbnRJbmZvOjpnZXRGYW1pbHlG
b3JDaGFycygpIHNvIHRoYXQga2VlcGluZyBjb3JyZWN0IGZvbnQgbWFwcGluZyBvZiB0aGUgZ2l2
ZW4gY2hhcmFjdGVycy4KKworICAgICAgICAqIHB1YmxpYy9ndGsvV2ViRm9udEluZm8uaDogQWRk
ZWQgYXJndW1lbnRzIHRvIGZhbWlseUZvckNoYXJzKCkuCisgICAgICAgICogc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRG
YW1pbHlGb3JDaGFyYWN0ZXJzKTogRGl0dG8uCisgICAgICAgICogc3JjL2d0ay9XZWJGb250SW5m
by5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyk6IE1v
ZGlmaWVkIHRvIGdldCB3ZWlnaHQgYW5kIGl0YWxpYyBwcm9wZXJ0aWVzIG9mIHRoZSBmb250Lgor
CiAyMDExLTExLTAxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFBhY2sgUmVuZGVyVGFibGVDZWxsIGJpdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggMDMyZmU2YTZjNDZm
ZDg4ZDZlOWI1NzM0Mjk3MDlkMDcwZmNjNDM4NC4uMDk0MjZlMTFkOWJiZDUxOGRmMWY4MmEwN2I5
YzQ5YzJiYTBmM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgbG9hZEZvbnQoTlNGb250KiBzcmNGb250LCBDR0ZvbnRSZWYqLCB1aW50MzJfdCog
Zm9udElEKTsKICNlbGlmIE9TKFVOSVgpCiAgICAgc3RhdGljIHZvaWQgZ2V0UmVuZGVyU3R5bGVG
b3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBGb250UmVuZGVy
U3R5bGUqIHJlc3VsdCk7Ci0gICAgc3RhdGljIFN0cmluZyBnZXRGb250RmFtaWx5Rm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciosIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVm
ZXJyZWRMb2NhbGUpOworICAgIHN0YXRpYyBTdHJpbmcgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3Rl
cnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVy
cmVkTG9jYWxlLCBib29sKiBpc0JvbGQsIGJvb2wqIGlzSXRhbGljKTsKICNlbmRpZgogCiAgICAg
Ly8gRm9ybXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcAppbmRleCA3MjRlNWU5ZWJiMGRm
OTA1NTAwMzAzMGE0OGFkYjEyMDFmOWM2M2ZiLi4xN2MzN2Y2MDQ4MDNiMWEzNTQ2ZmRlNGFiOTZl
NTk3NTlkZDUyZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCkBAIC01OSwxMiArNTksMzgg
QEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0
ZXJzKGNvbnN0IEZvbnQmIGZvbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCkKIHsKICAgICBpY3U6OkxvY2FsZSBs
b2NhbGUgPSBpY3U6OkxvY2FsZTo6Z2V0RGVmYXVsdCgpOwotICAgIFN0cmluZyBmYW1pbHkgPSBQ
bGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxl
bmd0aCwgbG9jYWxlLmdldExhbmd1YWdlKCkpOworICAgIGJvb2wgaXNCb2xkID0gZmFsc2U7Cisg
ICAgYm9vbCBpc0l0YWxpYyA9IGZhbHNlOworICAgIFN0cmluZyBmYW1pbHkgPSBQbGF0Zm9ybVN1
cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCwgbG9j
YWxlLmdldExhbmd1YWdlKCksICZpc0JvbGQsICZpc0l0YWxpYyk7CiAgICAgaWYgKGZhbWlseS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQXRvbWljU3RyaW5nIGF0b21pY0Zh
bWlseShmYW1pbHkpOwotICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShnZXRDYWNoZWRGb250
UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksIGF0b21pY0ZhbWlseSwgRG9Ob3RS
ZXRhaW4pLCBEb05vdFJldGFpbik7CisgICAgLy8gQ2hhbmdlcyB3ZWlnaHQgYW5kL29yIGl0YWxp
YyBvZiBnaXZlbiBGb250RGVzY3JpcHRpb24gZGVwZW5kcyBvbgorICAgIC8vIHRoZSByZXN1bHQg
b2YgZm9udGNvbmZpZyBzbyB0aGF0IGtlZXBpbmcgdGhlIGNvcnJlY3QgZm9udCBtYXBwaW5nCisg
ICAgLy8gb2YgdGhlIGdpdmVuIGNoYXJhY3RlcnMuIFNlZSBodHRwOi8vY3JidWcuY29tLzMyMTA5
IGZvciBkZXRhaWxzLgorICAgIGJvb2wgc2hvdWxkU2V0RmFrZUJvbGQgPSBmYWxzZTsKKyAgICBi
b29sIHNob3VsZFNldEZha2VJdGFsaWMgPSBmYWxzZTsKKyAgICBGb250RGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24oZm9udC5mb250RGVzY3JpcHRpb24oKSk7CisgICAgaWYgKGlzQm9sZCAmJiBkZXNj
cmlwdGlvbi53ZWlnaHQoKSA8IEZvbnRXZWlnaHRCb2xkKQorICAgICAgICBkZXNjcmlwdGlvbi5z
ZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOworICAgIGlmICghaXNCb2xkICYmIGRlc2NyaXB0aW9u
LndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xkKSB7CisgICAgICAgIHNob3VsZFNldEZha2VCb2xk
ID0gdHJ1ZTsKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwp
OworICAgIH0KKyAgICBpZiAoaXNJdGFsaWMgJiYgZGVzY3JpcHRpb24uaXRhbGljKCkgPT0gRm9u
dEl0YWxpY09mZikKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0SXRhbGljKEZvbnRJdGFsaWNPbik7
CisgICAgaWYgKCFpc0l0YWxpYyAmJiBkZXNjcmlwdGlvbi5pdGFsaWMoKSA9PSBGb250SXRhbGlj
T24pIHsKKyAgICAgICAgc2hvdWxkU2V0RmFrZUl0YWxpYyA9IHRydWU7CisgICAgICAgIGRlc2Ny
aXB0aW9uLnNldEl0YWxpYyhGb250SXRhbGljT2ZmKTsKKyAgICB9CisKKyAgICBGb250UGxhdGZv
cm1EYXRhIHBsYXRmb3JtRGF0YSA9IEZvbnRQbGF0Zm9ybURhdGEoKmdldENhY2hlZEZvbnRQbGF0
Zm9ybURhdGEoZGVzY3JpcHRpb24sIGF0b21pY0ZhbWlseSwgRG9Ob3RSZXRhaW4pKTsKKyAgICBp
ZiAoc2hvdWxkU2V0RmFrZUJvbGQpCisgICAgICAgIHBsYXRmb3JtRGF0YS5zZXRGYWtlQm9sZCh0
cnVlKTsKKyAgICBpZiAoc2hvdWxkU2V0RmFrZUl0YWxpYykKKyAgICAgICAgcGxhdGZvcm1EYXRh
LnNldEZha2VJdGFsaWModHJ1ZSk7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKCZwbGF0
Zm9ybURhdGEsIERvTm90UmV0YWluKTsKIH0KIAogU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6
Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udCYgZm9udCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURh
dGFMaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dFBsYXRmb3JtRGF0YUxpbnV4LmgKaW5kZXggODZiOTQxY2FlNDA1MTlhOTRhMWY4YTQwOTJlZGE0
ZTZhNmQxM2Y4Yi4uMTBkY2U5MDUwNDUwNTgzYzM3MmEzNDc1MmU5MzEwMjU0YzNlMTNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBs
YXRmb3JtRGF0YUxpbnV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUxpbnV4LmgKQEAgLTExOCw3ICsxMTgsOCBAQCBwdWJs
aWM6CiAKICAgICBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBt
X29yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihGb250T3JpZW50YXRpb24g
b3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9Ci0gICAgCisgICAg
dm9pZCBzZXRGYWtlQm9sZChib29sIGZha2VCb2xkKSB7IG1fZmFrZUJvbGQgPSBmYWtlQm9sZDsg
fQorICAgIHZvaWQgc2V0RmFrZUl0YWxpYyhib29sIGZha2VJdGFsaWMpIHsgbV9mYWtlSXRhbGlj
ID0gZmFrZUl0YWxpYzsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1E
YXRhJikgY29uc3Q7CiAgICAgRm9udFBsYXRmb3JtRGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmKTsKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlZmFjZSA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZv
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250SW5mby5oCmlu
ZGV4IDVkNTI1ODQ0YWU3NjRhNGVlMjlhZThiNTczM2QxZjY1OTAyNWI4YWUuLmZjM2Q1N2VjOGQz
YTRmNzhkMWJjNDI5MDRhMGFmYjM5MmFjNTE0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaApAQCAtNDksOCArNDksMTEgQEAgcHVi
bGljOgogICAgIC8vICAgICAgICAgICAgICAgICAgICAoZS5nLiAiZW4iLCAiamEiLCAiemgtQ04i
KQogICAgIC8vCiAgICAgLy8gUmV0dXJuczogdGhlIGZvbnQgZmFtaWx5IG9yIGFuIGVtcHR5IHN0
cmluZyBpZiB0aGUgcmVxdWVzdCBjb3VsZCBub3QgYmUKLSAgICAvLyBzYXRpc2ZpZWQuCi0gICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQ1N0cmluZyBmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJV
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZl
cnJlZExvY2FsZSk7CisgICAgLy8gc2F0aXNmaWVkLiBJc0JvbGQgYW5kIGlzSXRhbGljIHdpbGwg
YmUgc2V0IHRydWUgaWYgdGhlIGZvbnQgc2hvdWxkIGJlCisgICAgLy8gdHJlYXRlZCBhcyBib2xk
IGFuZCBpdGFsaWMsIHJlc3BlY3RpdmVseS4KKyAgICAvLyBGSVhNRTogUmVtb3ZlIGRlZmF1bHQg
YXJndW1lbnRzIG9mIGlzQm9sZCBhbmQgaXNJdGFsaWMgYWZ0ZXIgQ2hyb21pdW0KKyAgICAvLyBz
aWRlIGlzIHVwZGF0ZWQuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQ1N0cmluZyBmYW1p
bHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3Rl
cnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgYm9vbCogaXNCb2xkID0gMCwgYm9vbCog
aXNJdGFsaWMgPSAwKTsKIAogICAgIC8vIEZpbGwgb3V0IHRoZSBnaXZlbiBXZWJGb250UmVuZGVy
U3R5bGUgd2l0aCB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGZvcgogICAgIC8vIHJlbmRlcmluZyB0
aGUgZ2l2ZW4gZm9udCBhdCB0aGUgZ2l2ZW4gc2l6ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCmluZGV4IDJmNTc5
Mjk4OGI2ZmYxZGM0MDJhOTQyNTljZjc1MjdmN2I4YmQyMzcuLjRmNTFhMjc0ZmUwZjMyZmJjMmNj
NTI0ZWRiYzFjNjFmZThiYzgwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaApAQCAtNTIsNyArNTIsNyBAQCBw
dWJsaWM6CiAgICAgLy8KICAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGZvbnQgZmFt
aWx5IG9uIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUKICAgICAvLyByZXF1ZXN0IGNhbm5vdCBiZSBz
YXRpc2ZpZWQuCi0gICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3Rl
cnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25z
dCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUpICA9IDA7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0
Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIGJvb2wqIGlzQm9s
ZCwgYm9vbCogaXNJdGFsaWMpICA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlbmRlclN0eWxl
Rm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJl
bmRlclN0eWxlKiBzdHlsZSkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggNTQ1MjFiODJlZWI3ZGFmMGQxZGFhYWMyZThj
YmQ3MDkxMjJkMDM0My4uYTAwZjA3MDE4YzE4NzI3ZDU0YzI4ZWU2MjEyNDk1ODU2N2VhOGY5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBA
IC00NjEsNyArNDYxLDcgQEAgYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmxvYWRGb250KE5TRm9udCog
c3JjRm9udCwgQ0dGb250UmVmKiBvdXQsIHVpbnQzMl90KiBmb250SUQKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAjZWxpZiBPUyhVTklYKQotU3RyaW5nIFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZh
bWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFy
YWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUpCitTdHJpbmcgUGxhdGZvcm1TdXBw
b3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgYm9vbCog
aXNCb2xkLCBib29sKiBpc0l0YWxpYykKIHsKICNpZiBPUyhBTkRST0lEKQogICAgIC8vIEZJWE1F
OiBXZSBkbyBub3QgdXNlIGZvbnRjb25maWcgb24gQW5kcm9pZCwgc28gdXNlIHNpbXBsZSBsb2dp
YyBmb3Igbm93LgpAQCAtNDY5LDkgKzQ2OSw5IEBAIFN0cmluZyBQbGF0Zm9ybVN1cHBvcnQ6Omdl
dEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplCiAg
ICAgcmV0dXJuIFdlYlN0cmluZygiQXJpYWwiKTsKICNlbHNlCiAgICAgaWYgKHdlYktpdFBsYXRm
b3JtU3VwcG9ydCgpLT5zYW5kYm94U3VwcG9ydCgpKQotICAgICAgICByZXR1cm4gd2ViS2l0UGxh
dGZvcm1TdXBwb3J0KCktPnNhbmRib3hTdXBwb3J0KCktPmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0
ZXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSk7CisgICAgICAg
IHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+c2FuZGJveFN1cHBvcnQoKS0+Z2V0Rm9u
dEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVk
TG9jYWxlLCBpc0JvbGQsIGlzSXRhbGljKTsKIAotICAgIFdlYkNTdHJpbmcgZmFtaWx5ID0gV2Vi
Rm9udEluZm86OmZhbWlseUZvckNoYXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZl
cnJlZExvY2FsZSk7CisgICAgV2ViQ1N0cmluZyBmYW1pbHkgPSBXZWJGb250SW5mbzo6ZmFtaWx5
Rm9yQ2hhcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlLCBpc0Jv
bGQsIGlzSXRhbGljKTsKICAgICBpZiAoZmFtaWx5LmRhdGEoKSkKICAgICAgICAgcmV0dXJuIFdl
YlN0cmluZzo6ZnJvbVVURjgoZmFtaWx5LmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcAppbmRleCA0OTE4MmQ0N2VhN2Y1YmFk
NTYyYTE2YTU5MWZkMGUwNTc0ZDUxZjc1Li4zODk1NTYzNjI4ZmMxNDI3OWNjZjEzMjVjZjExMjc0
MWY3MDA5NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9X
ZWJGb250SW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2Vi
Rm9udEluZm8uY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1X
ZWJDU3RyaW5nIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hh
cmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2Fs
ZSkKK1dlYkNTdHJpbmcgV2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFy
KiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVk
TG9jYWxlLCBib29sKiBpc0JvbGQsIGJvb2wqIGlzSXRhbGljKQogewogICAgIEZjQ2hhclNldCog
Y3NldCA9IEZjQ2hhclNldENyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
Q2hhcmFjdGVyczsgKytpKSB7CkBAIC0xMDUsNiArMTA1LDIwIEBAIFdlYkNTdHJpbmcgV2ViRm9u
dEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qg
bnVtQ2hhCiAgICAgICAgICAgICBjb25zdCBjaGFyKiBjaGFyRmFtaWx5ID0gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oZmFtaWx5KTsKICAgICAgICAgICAgIHJlc3VsdCA9IFdlYkNTdHJpbmcoY2hh
ckZhbWlseSwgc3RybGVuKGNoYXJGYW1pbHkpKTsKICAgICAgICAgfQorICAgICAgICBpZiAoaXNC
b2xkKSB7CisgICAgICAgICAgICBpbnQgd2VpZ2h0OworICAgICAgICAgICAgaWYgKEZjUGF0dGVy
bkdldEludGVnZXIoY3VycmVudCwgRkNfV0VJR0hULCAwLCAmd2VpZ2h0KSA9PSBGY1Jlc3VsdE1h
dGNoKQorICAgICAgICAgICAgICAgICppc0JvbGQgPSB3ZWlnaHQgPj0gRkNfV0VJR0hUX0JPTEQ7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKmlzQm9sZCA9IGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIGlmIChpc0l0YWxpYykgeworICAgICAgICAgICAgaW50IHNsYW50Owor
ICAgICAgICAgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIoY3VycmVudCwgRkNfU0xBTlQsIDAs
ICZzbGFudCkgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAgICAgICAgICAgICAqaXNJdGFsaWMgPSBz
bGFudCAhPSBGQ19TTEFOVF9ST01BTjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAqaXNJdGFsaWMgPSBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBGY0ZvbnRTZXREZXN0cm95
KGZvbnRTZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpvbGQgbW9kZSAxMDA3
NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDJkMDY1YmVjMDkzNDQ2ZDA0Y2E2YzdhMTg1M2RmMWQ5
ZWQ5YzA2ODIuLmI0ZTZlMjM0MjY2MGE1OWViNjU2MDM1OGUxYmE2YjZmODJjOTE5OTQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDExLTExLTAxICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNhbGwgZm9udGNvbmZpZyB0d2ljZSBp
biBjb21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogTWFy
a2VkIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JvbGQtYmVuZ2FsaS5odG1sIGFzIFBBU1MgZm9y
IExJTlVYLgorCiAyMDExLTExLTAxICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBNYWtlcyBbUmVmbGVjdF0gd29yayBmb3IgY29uc3RhbnRzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cmlu
ZGV4IDdhMGRlMDVmYjVjNWNhY2EyNjJiOGU4ODZmZWU4ZDljYWE4NGYzZDUuLjUyMWZiOGM0NzRh
MDgyMjY4MTNkNzUzY2VlN2FlYjkwZTYxN2YxNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTIwMDYsNiArMjAwNiw3
IEBAIEJVR1dLMzgwMzggOiBmYXN0L3VybC9maWxlLWh0dHAtYmFzZS5odG1sID0gVEVYVAogLy8g
V2ViS2l0IHJvbGwgNTgzMDQ6NTg0MDAKIC8vIFNraXAgc2luY2Ugbm90IHJlbGV2YW50CiBCVUdV
S0FJIFNLSVAgTUFDIFdJTiA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JvbGQtYmVuZ2FsaS5o
dG1sID0gRkFJTAorQlVHVUtBSSBMSU5VWCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JvbGQt
YmVuZ2FsaS5odG1sID0gUEFTUwogCiAvLyBUaGVzZSA1LDAwMCsgdGVzdHMgYXJlIGFscmVhZHkg
YmVpbmcgcnVuIGJ5IHRoZSBWOCB0ZWFtIChhbmQgaGF2ZSBubyBjaHJvbWl1bSBleHBlY3RhdGlv
bnMpLgogLy8gVGhleSBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIEphdmFTY3JpcHRDb3JlIHRlc3Qg
c3VpdGUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>113273</attachid>
            <date>2011-11-01 19:49:57 -0700</date>
            <delta_ts>2011-11-02 03:35:14 -0700</delta_ts>
            <desc>patch for chromium side</desc>
            <filename>chromium.patch</filename>
            <type>text/plain</type>
            <size>6400</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9zYW5kYm94
X2hvc3RfbGludXguY2MgYi9jb250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfc2Fu
ZGJveF9ob3N0X2xpbnV4LmNjCmluZGV4IDBjZTVkODguLjQ3ZWVmZTUgMTAwNjQ0Ci0tLSBhL2Nv
bnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9zYW5kYm94X2hvc3RfbGludXguY2MK
KysrIGIvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX3NhbmRib3hfaG9zdF9s
aW51eC5jYwpAQCAtMjY3LDkgKzI2NywxMiBAQCBjbGFzcyBTYW5kYm94SVBDUHJvY2VzcyAgewog
ICAgIGlmICghcGlja2xlLlJlYWRTdHJpbmcoJml0ZXIsICZwcmVmZXJyZWRfbG9jYWxlKSkKICAg
ICAgIHJldHVybjsKIAorICAgIGJvb2wgaXNCb2xkID0gZmFsc2U7CisgICAgYm9vbCBpc0l0YWxp
YyA9IGZhbHNlOwogICAgIFdlYkNTdHJpbmcgZmFtaWx5ID0gV2ViRm9udEluZm86OmZhbWlseUZv
ckNoYXJzKGNoYXJzLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bV9jaGFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmVmZXJyZWRfbG9jYWxlLmNfc3RyKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZlcnJlZF9s
b2NhbGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmaXNCb2xkLCAmaXNJdGFsaWMpOwogCiAgICAgUGlja2xlIHJlcGx5OwogICAg
IGlmIChmYW1pbHkuZGF0YSgpKSB7CkBAIC0yNzcsNiArMjgwLDggQEAgY2xhc3MgU2FuZGJveElQ
Q1Byb2Nlc3MgIHsKICAgICB9IGVsc2UgewogICAgICAgcmVwbHkuV3JpdGVTdHJpbmcoIiIpOwog
ICAgIH0KKyAgICByZXBseS5Xcml0ZUJvb2woaXNCb2xkKTsKKyAgICByZXBseS5Xcml0ZUJvb2wo
aXNJdGFsaWMpOwogICAgIFNlbmRSZW5kZXJlclJlcGx5KGZkcywgcmVwbHksIC0xKTsKICAgfQog
CmRpZmYgLS1naXQgYS9jb250ZW50L2NvbW1vbi9jaGlsZF9wcm9jZXNzX3NhbmRib3hfc3VwcG9y
dF9pbXBsX2xpbnV4LmNjIGIvY29udGVudC9jb21tb24vY2hpbGRfcHJvY2Vzc19zYW5kYm94X3N1
cHBvcnRfaW1wbF9saW51eC5jYwppbmRleCA2OTJkNGVkLi45ZWYwNmZmIDEwMDY0NAotLS0gYS9j
b250ZW50L2NvbW1vbi9jaGlsZF9wcm9jZXNzX3NhbmRib3hfc3VwcG9ydF9pbXBsX2xpbnV4LmNj
CisrKyBiL2NvbnRlbnQvY29tbW9uL2NoaWxkX3Byb2Nlc3Nfc2FuZGJveF9zdXBwb3J0X2ltcGxf
bGludXguY2MKQEAgLTIzLDcgKzIzLDggQEAgbmFtZXNwYWNlIGNvbnRlbnQgewogCiBzdGQ6OnN0
cmluZyBHZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCB1aW50MTZfdCogdXRmMTYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3V0ZjE2LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcHJlZmVy
cmVkX2xvY2FsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcHJlZmVycmVkX2xvY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wqIGlzQm9sZCwgYm9vbCogaXNJdGFsaWMpIHsKICAgUGlja2xlIHJlcXVl
c3Q7CiAgIHJlcXVlc3QuV3JpdGVJbnQoTGludXhTYW5kYm94OjpNRVRIT0RfR0VUX0ZPTlRfRkFN
SUxZX0ZPUl9DSEFSUyk7CiAgIHJlcXVlc3QuV3JpdGVJbnQobnVtX3V0ZjE2KTsKQEAgLTM5LDEw
ICs0MCwxNCBAQCBzdGQ6OnN0cmluZyBHZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCB1
aW50MTZfdCogdXRmMTYsCiAgIGlmIChuICE9IC0xKSB7CiAgICAgUGlja2xlIHJlcGx5KHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZiksIG4pOwogICAgIHZvaWQqIHBpY2tsZV9pdGVyID0gTlVM
TDsKLSAgICByZXBseS5SZWFkU3RyaW5nKCZwaWNrbGVfaXRlciwgJmZhbWlseV9uYW1lKTsKKyAg
ICBpZiAocmVwbHkuUmVhZFN0cmluZygmcGlja2xlX2l0ZXIsICZmYW1pbHlfbmFtZSkgJiYKKyAg
ICAgICAgcmVwbHkuUmVhZEJvb2woJnBpY2tsZV9pdGVyLCBpc0JvbGQpICYmCisgICAgICAgIHJl
cGx5LlJlYWRCb29sKCZwaWNrbGVfaXRlciwgaXNJdGFsaWMpKQorICAgICAgcmV0dXJuIGZhbWls
eV9uYW1lOworICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwogICB9CiAKLSAgcmV0dXJuIGZhbWls
eV9uYW1lOworICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIH0KIAogdm9pZCBHZXRSZW5kZXJTdHls
ZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGludCBzaXplQW5kU3R5bGUsCmRpZmYgLS1n
aXQgYS9jb250ZW50L2NvbW1vbi9jaGlsZF9wcm9jZXNzX3NhbmRib3hfc3VwcG9ydF9pbXBsX2xp
bnV4LmggYi9jb250ZW50L2NvbW1vbi9jaGlsZF9wcm9jZXNzX3NhbmRib3hfc3VwcG9ydF9pbXBs
X2xpbnV4LmgKaW5kZXggYjI2NjM0YS4uNWExOWI0NSAxMDA2NDQKLS0tIGEvY29udGVudC9jb21t
b24vY2hpbGRfcHJvY2Vzc19zYW5kYm94X3N1cHBvcnRfaW1wbF9saW51eC5oCisrKyBiL2NvbnRl
bnQvY29tbW9uL2NoaWxkX3Byb2Nlc3Nfc2FuZGJveF9zdXBwb3J0X2ltcGxfbGludXguaApAQCAt
MjQsNyArMjQsOCBAQCBuYW1lc3BhY2UgY29udGVudCB7CiAvLyBzYXRpc2ZpZWQuCiBzdGQ6OnN0
cmluZyBHZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCB1aW50MTZfdCogdXRmMTYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3V0ZjE2LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcHJlZmVy
cmVkX2xvY2FsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBwcmVmZXJyZWRfbG9jYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCogaXNCb2xkLCBib29sKiBpc0l0YWxpYyk7CiAKIHZvaWQgR2V0UmVuZGVy
U3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYkZvbnRSZW5kZXJTdHlsZSogb3V0
KTsKZGlmZiAtLWdpdCBhL2NvbnRlbnQvcHBhcGlfcGx1Z2luL3BwYXBpX3dlYmtpdHBsYXRmb3Jt
c3VwcG9ydF9pbXBsLmNjIGIvY29udGVudC9wcGFwaV9wbHVnaW4vcHBhcGlfd2Via2l0cGxhdGZv
cm1zdXBwb3J0X2ltcGwuY2MKaW5kZXggNDczMzkwOS4uMWM2NDdhNiAxMDA2NDQKLS0tIGEvY29u
dGVudC9wcGFwaV9wbHVnaW4vcHBhcGlfd2Via2l0cGxhdGZvcm1zdXBwb3J0X2ltcGwuY2MKKysr
IGIvY29udGVudC9wcGFwaV9wbHVnaW4vcHBhcGlfd2Via2l0cGxhdGZvcm1zdXBwb3J0X2ltcGwu
Y2MKQEAgLTQxLDcgKzQxLDggQEAgY2xhc3MgUHBhcGlXZWJLaXRQbGF0Zm9ybVN1cHBvcnRJbXBs
OjpTYW5kYm94U3VwcG9ydCA6IHB1YmxpYyBXZWJTYW5kYm94U3VwcG9ydAogICB2aXJ0dWFsIFdl
YlN0cmluZyBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycygKICAgICAgIGNvbnN0IFdlYlVDaGFy
KiBjaGFyYWN0ZXJzLAogICAgICAgc2l6ZV90IG51bUNoYXJhY3RlcnMsCi0gICAgICBjb25zdCBj
aGFyKiBwcmVmZXJyZWRfbG9jYWxlKTsKKyAgICAgIGNvbnN0IGNoYXIqIHByZWZlcnJlZF9sb2Nh
bGUsCisgICAgICBib29sKiBpc0JvbGQsIGJvb2wqIGlzSXRhbGljKTsKICAgdmlydHVhbCB2b2lk
IGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKAogICAgICAgY29uc3QgY2hhciogZmFtaWx5LCBpbnQg
c2l6ZUFuZFN0eWxlLCBXZWJLaXQ6OldlYkZvbnRSZW5kZXJTdHlsZSogb3V0KTsKIApAQCAtODQs
NyArODUsOCBAQCBXZWJTdHJpbmcKIFBwYXBpV2ViS2l0UGxhdGZvcm1TdXBwb3J0SW1wbDo6U2Fu
ZGJveFN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKAogICAgIGNvbnN0IFdlYlVD
aGFyKiBjaGFyYWN0ZXJzLAogICAgIHNpemVfdCBudW1fY2hhcmFjdGVycywKLSAgICBjb25zdCBj
aGFyKiBwcmVmZXJyZWRfbG9jYWxlKSB7CisgICAgY29uc3QgY2hhciogcHJlZmVycmVkX2xvY2Fs
ZSwKKyAgICBib29sKiBpc0JvbGQsIGJvb2wqIGlzSXRhbGljKSB7CiAgIGJhc2U6OkF1dG9Mb2Nr
IGxvY2sodW5pY29kZV9mb250X2ZhbWlsaWVzX211dGV4Xyk7CiAgIGNvbnN0IHN0cmluZzE2IGtl
eShjaGFyYWN0ZXJzLCBudW1fY2hhcmFjdGVycyk7CiAgIGNvbnN0IHN0ZDo6bWFwPHN0cmluZzE2
LCBzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPQpAQCAtOTUsNyArOTcsOCBAQCBQ
cGFwaVdlYktpdFBsYXRmb3JtU3VwcG9ydEltcGw6OlNhbmRib3hTdXBwb3J0OjpnZXRGb250RmFt
aWx5Rm9yQ2hhcmFjdGVycygKICAgY29uc3Qgc3RkOjpzdHJpbmcgZmFtaWx5X25hbWUgPSBjb250
ZW50OjpHZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycygKICAgICAgIGNoYXJhY3RlcnMsCiAgICAg
ICBudW1fY2hhcmFjdGVycywKLSAgICAgIHByZWZlcnJlZF9sb2NhbGUpOworICAgICAgcHJlZmVy
cmVkX2xvY2FsZSwKKyAgICAgIGlzQm9sZCwgaXNJdGFsaWMpOwogICB1bmljb2RlX2ZvbnRfZmFt
aWxpZXNfLmluc2VydChtYWtlX3BhaXIoa2V5LCBmYW1pbHlfbmFtZSkpOwogICByZXR1cm4gV2Vi
U3RyaW5nOjpmcm9tVVRGOChmYW1pbHlfbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9jb250ZW50L3Jl
bmRlcmVyL3JlbmRlcmVyX3dlYmtpdHBsYXRmb3Jtc3VwcG9ydF9pbXBsLmNjIGIvY29udGVudC9y
ZW5kZXJlci9yZW5kZXJlcl93ZWJraXRwbGF0Zm9ybXN1cHBvcnRfaW1wbC5jYwppbmRleCAyNjEx
YWRkLi5hOGQwZjI3IDEwMDY0NAotLS0gYS9jb250ZW50L3JlbmRlcmVyL3JlbmRlcmVyX3dlYmtp
dHBsYXRmb3Jtc3VwcG9ydF9pbXBsLmNjCisrKyBiL2NvbnRlbnQvcmVuZGVyZXIvcmVuZGVyZXJf
d2Via2l0cGxhdGZvcm1zdXBwb3J0X2ltcGwuY2MKQEAgLTEyMyw3ICsxMjMsOCBAQCBjbGFzcyBS
ZW5kZXJlcldlYktpdFBsYXRmb3JtU3VwcG9ydEltcGw6OlNhbmRib3hTdXBwb3J0CiAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJTdHJpbmcgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoCiAgICAgICBj
b25zdCBXZWJLaXQ6OldlYlVDaGFyKiBjaGFyYWN0ZXJzLAogICAgICAgc2l6ZV90IG51bUNoYXJh
Y3RlcnMsCi0gICAgICBjb25zdCBjaGFyKiBwcmVmZXJyZWRfbG9jYWxlKTsKKyAgICAgIGNvbnN0
IGNoYXIqIHByZWZlcnJlZF9sb2NhbGUsCisgICAgICBib29sKiBpc0JvbGQsIGJvb2wqIGlzSXRh
bGljKTsKICAgdmlydHVhbCB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKAogICAgICAgY29u
c3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJLaXQ6OldlYkZvbnRSZW5kZXJT
dHlsZSogb3V0KTsKIApAQCAtNDg0LDcgKzQ4NSw4IEBAIFdlYlN0cmluZwogUmVuZGVyZXJXZWJL
aXRQbGF0Zm9ybVN1cHBvcnRJbXBsOjpTYW5kYm94U3VwcG9ydDo6Z2V0Rm9udEZhbWlseUZvckNo
YXJhY3RlcnMoCiAgICAgY29uc3QgV2ViS2l0OjpXZWJVQ2hhciogY2hhcmFjdGVycywKICAgICBz
aXplX3QgbnVtX2NoYXJhY3RlcnMsCi0gICAgY29uc3QgY2hhciogcHJlZmVycmVkX2xvY2FsZSkg
eworICAgIGNvbnN0IGNoYXIqIHByZWZlcnJlZF9sb2NhbGUsCisgICAgYm9vbCogaXNCb2xkLCBi
b29sKiBpc0l0YWxpYykgewogICBiYXNlOjpBdXRvTG9jayBsb2NrKHVuaWNvZGVfZm9udF9mYW1p
bGllc19tdXRleF8pOwogICBjb25zdCBzdHJpbmcxNiBrZXkoY2hhcmFjdGVycywgbnVtX2NoYXJh
Y3RlcnMpOwogICBjb25zdCBzdGQ6Om1hcDxzdHJpbmcxNiwgc3RkOjpzdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBpdGVyID0KQEAgLTQ5NSw3ICs0OTcsOCBAQCBSZW5kZXJlcldlYktpdFBsYXRmb3Jt
U3VwcG9ydEltcGw6OlNhbmRib3hTdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycygK
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZmFtaWx5X25hbWUgPSBjb250ZW50OjpHZXRGb250RmFtaWx5
Rm9yQ2hhcmFjdGVycygKICAgICAgIGNoYXJhY3RlcnMsCiAgICAgICBudW1fY2hhcmFjdGVycywK
LSAgICAgIHByZWZlcnJlZF9sb2NhbGUpOworICAgICAgcHJlZmVycmVkX2xvY2FsZSwKKyAgICAg
IGlzQm9sZCwgaXNJdGFsaWMpOwogICB1bmljb2RlX2ZvbnRfZmFtaWxpZXNfLmluc2VydChtYWtl
X3BhaXIoa2V5LCBmYW1pbHlfbmFtZSkpOwogICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOChm
YW1pbHlfbmFtZSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113297</attachid>
            <date>2011-11-02 03:33:37 -0700</date>
            <delta_ts>2011-11-03 20:09:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20111102193336.patch</filename>
            <type>text/plain</type>
            <size>17692</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwMjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZmMwZWUwNTQ2ZjI3ZmI1
MTllODU0ZGNmNDgzNjMyOGUyZTg1ZGNhLi4wMzg0MzdjMzVkZjQ4ZmJhNGE3OTEwOGIwM2M3YzAx
ZTczNmIxMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTEtMDIgIEtlbmlj
aGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
ZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4dCBwYXRoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwMQorCisgICAgICAg
IEdpdmVuIGNoYXJhY3RlcnMsIHJldHVybnMgYSBTaW1wbGVGb250RGF0YSB3aGljaCBhc3NvY2lh
dGVkIHdpdGggYSBGb250UGxhdGZvcm1EYXRhIHRoYXQgaXMgY3JlYXRlZCBkZXBlbmRzIG9uIHRo
ZSByZXN1bHQgb2YgZm9udGNvbmZpZywgaW5jbHVkaW5nIGZvbnQgZmFtaWx5LCBib2xkIGFuZCBp
dGFsaWMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDogQWRkZWQgRm9udEZhbWlseSBz
dHJ1Y3QgYW5kIGNoYW5nZWQgdGhlIGRlY2xhcmF0aW9uIG9mIGdldEZvbnRGYW1pbHlGb3JDaGFy
YWN0ZXJzKCkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hl
TGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNo
YXJhY3RlcnMpOiBDYWxscyBnZXRDYWNoZWRGb250RGF0YSgpIHdpdGggYSBGb250UGxhdGZvcm1E
YXRhIHdoaWNoIGlzIGNyZWF0ZWQgZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2YgZm9udGNvbmZp
Zy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRh
TGludXguaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldEZha2VCb2xk
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzZXRGYWtlSXRh
bGljKTogQWRkZWQuCisKIDIwMTEtMTEtMDEgIEFubmEgQ2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIE1ha2VzIFtSZWZsZWN0XSB3b3JrIGZvciBjb25zdGFudHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhmY2IxNTQ3YzNkOTU0NTBkZmVhYzI2ZjkyYWFm
NjljMmYyNDE4NjIuLjU1Njc1YWU0ZTBiNzYyOWNhNzI0YjJmNjA2Nzk3YTJlNzY3MmQ4MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMDIgIEtl
bmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4dCBwYXRoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwMQorCisgICAg
ICAgIENoYW5nZSBkZWNsYXJhdGlvbiBvZiBXZWJGb250SW5mbzo6Z2V0RmFtaWx5Rm9yQ2hhcnMo
KSBzbyB0aGF0IGtlZXBpbmcgY29ycmVjdCBmb250IG1hcHBpbmcgb2YgdGhlIGdpdmVuIGNoYXJh
Y3RlcnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMv
bGludXgvV2ViRm9udEluZm8uaDogQ2hhbmdlZCBkZWNsYXJhdGlvbiBvZiBnZXRGYW1pbHlGb3JD
aGFycygpLgorICAgICAgICAqIHB1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oOgorICAg
ICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyk6IERpdHRvLgorICAgICAgICAq
IHNyYy9saW51eC9XZWJGb250SW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvbnRJbmZv
OjpmYW1pbHlGb3JDaGFycyk6IE1vZGlmaWVkIHRvIGdldCB3ZWlnaHQgYW5kIGl0YWxpYyBwcm9w
ZXJ0aWVzIG9mIHRoZSBmb250LgorCiAyMDExLTExLTAxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNo
YWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFBhY2sgUmVuZGVyVGFibGVDZWxsIGJpdHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0
LmgKaW5kZXggMDMyZmU2YTZjNDZmZDg4ZDZlOWI1NzM0Mjk3MDlkMDcwZmNjNDM4NC4uYTI0MWU3
ZDBjZWNiM2UyMDRkNGNjZDA2ZDI0NTAwMzUwYzU3ZjU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTE1NSw3ICsxNTUs
MTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGxvYWRGb250KE5TRm9udCogc3JjRm9udCwg
Q0dGb250UmVmKiwgdWludDMyX3QqIGZvbnRJRCk7CiAjZWxpZiBPUyhVTklYKQogICAgIHN0YXRp
YyB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNp
emVBbmRTdHlsZSwgRm9udFJlbmRlclN0eWxlKiByZXN1bHQpOwotICAgIHN0YXRpYyBTdHJpbmcg
Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFj
dGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKTsKKyAgICBzdHJ1Y3QgRm9udEZhbWls
eSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBib29sIGlzQm9sZDsKKyAgICAgICAg
Ym9vbCBpc0l0YWxpYzsKKyAgICB9OworICAgIHN0YXRpYyB2b2lkIGdldEZvbnRGYW1pbHlGb3JD
aGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIq
IHByZWZlcnJlZExvY2FsZSwgRm9udEZhbWlseSopOwogI2VuZGlmCiAKICAgICAvLyBGb3JtcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRm9udENhY2hlTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCmluZGV4IDcyNGU1ZTllYmIwZGY5MDU1MDAzMDMw
YTQ4YWRiMTIwMWY5YzYzZmIuLjIzYTkzYWIwM2FhY2Q4YTJjMDJmNWM5MjcxZGQ2MTBmMDAzMGFj
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRDYWNoZUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKQEAgLTU5LDEyICs1OSwzNSBAQCBjb25zdCBT
aW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3Qg
Rm9udCYgZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbGVuZ3RoKQogewogICAgIGljdTo6TG9jYWxlIGxvY2FsZSA9IGlj
dTo6TG9jYWxlOjpnZXREZWZhdWx0KCk7Ci0gICAgU3RyaW5nIGZhbWlseSA9IFBsYXRmb3JtU3Vw
cG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoLCBsb2Nh
bGUuZ2V0TGFuZ3VhZ2UoKSk7Ci0gICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCisgICAgUGxhdGZv
cm1TdXBwb3J0OjpGb250RmFtaWx5IGZhbWlseTsKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZv
bnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCwgbG9jYWxlLmdldExhbmd1
YWdlKCksICZmYW1pbHkpOworICAgIGlmIChmYW1pbHkubmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgQXRvbWljU3RyaW5nIGF0b21pY0ZhbWlseShmYW1pbHkpOwotICAg
IHJldHVybiBnZXRDYWNoZWRGb250RGF0YShnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQu
Zm9udERlc2NyaXB0aW9uKCksIGF0b21pY0ZhbWlseSwgRG9Ob3RSZXRhaW4pLCBEb05vdFJldGFp
bik7CisgICAgQXRvbWljU3RyaW5nIGF0b21pY0ZhbWlseShmYW1pbHkubmFtZSk7CisgICAgLy8g
Q2hhbmdlcyB3ZWlnaHQgYW5kL29yIGl0YWxpYyBvZiBnaXZlbiBGb250RGVzY3JpcHRpb24gZGVw
ZW5kcyBvbgorICAgIC8vIHRoZSByZXN1bHQgb2YgZm9udGNvbmZpZyBzbyB0aGF0IGtlZXBpbmcg
dGhlIGNvcnJlY3QgZm9udCBtYXBwaW5nCisgICAgLy8gb2YgdGhlIGdpdmVuIGNoYXJhY3RlcnMu
IFNlZSBodHRwOi8vY3JidWcuY29tLzMyMTA5IGZvciBkZXRhaWxzLgorICAgIGJvb2wgc2hvdWxk
U2V0RmFrZUJvbGQgPSBmYWxzZTsKKyAgICBib29sIHNob3VsZFNldEZha2VJdGFsaWMgPSBmYWxz
ZTsKKyAgICBGb250RGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZm9udC5mb250RGVzY3JpcHRpb24o
KSk7CisgICAgaWYgKGZhbWlseS5pc0JvbGQgJiYgZGVzY3JpcHRpb24ud2VpZ2h0KCkgPCBGb250
V2VpZ2h0Qm9sZCkKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHRCb2xk
KTsKKyAgICBpZiAoIWZhbWlseS5pc0JvbGQgJiYgZGVzY3JpcHRpb24ud2VpZ2h0KCkgPj0gRm9u
dFdlaWdodEJvbGQpIHsKKyAgICAgICAgc2hvdWxkU2V0RmFrZUJvbGQgPSB0cnVlOworICAgICAg
ICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7CisgICAgfQorICAgIGlm
IChmYW1pbHkuaXNJdGFsaWMgJiYgZGVzY3JpcHRpb24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09m
ZikKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0SXRhbGljKEZvbnRJdGFsaWNPbik7CisgICAgaWYg
KCFmYW1pbHkuaXNJdGFsaWMgJiYgZGVzY3JpcHRpb24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09u
KSB7CisgICAgICAgIHNob3VsZFNldEZha2VJdGFsaWMgPSB0cnVlOworICAgICAgICBkZXNjcmlw
dGlvbi5zZXRJdGFsaWMoRm9udEl0YWxpY09mZik7CisgICAgfQorCisgICAgRm9udFBsYXRmb3Jt
RGF0YSBwbGF0Zm9ybURhdGEgPSBGb250UGxhdGZvcm1EYXRhKCpnZXRDYWNoZWRGb250UGxhdGZv
cm1EYXRhKGRlc2NyaXB0aW9uLCBhdG9taWNGYW1pbHksIERvTm90UmV0YWluKSk7CisgICAgcGxh
dGZvcm1EYXRhLnNldEZha2VCb2xkKHNob3VsZFNldEZha2VCb2xkKTsKKyAgICBwbGF0Zm9ybURh
dGEuc2V0RmFrZUl0YWxpYyhzaG91bGRTZXRGYWtlSXRhbGljKTsKKyAgICByZXR1cm4gZ2V0Q2Fj
aGVkRm9udERhdGEoJnBsYXRmb3JtRGF0YSwgRG9Ob3RSZXRhaW4pOwogfQogCiBTaW1wbGVGb250
RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBm
b250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRm9udFBsYXRmb3JtRGF0YUxpbnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXguaAppbmRleCA4NmI5NDFjYWU0MDUx
OWE5NGExZjhhNDA5MmVkYTRlNmE2ZDEzZjhiLi4xMGRjZTkwNTA0NTA1ODNjMzcyYTM0NzUyZTkz
MTAyNTRjM2UxM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXguaApAQCAtMTE4
LDcgKzExOCw4IEBAIHB1YmxpYzoKIAogICAgIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KICAgICB2b2lkIHNldE9yaWVudGF0aW9u
KEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRp
b247IH0KLSAgICAKKyAgICB2b2lkIHNldEZha2VCb2xkKGJvb2wgZmFrZUJvbGQpIHsgbV9mYWtl
Qm9sZCA9IGZha2VCb2xkOyB9CisgICAgdm9pZCBzZXRGYWtlSXRhbGljKGJvb2wgZmFrZUl0YWxp
YykgeyBtX2Zha2VJdGFsaWMgPSBmYWtlSXRhbGljOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25zdDsKICAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVy
YXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGVmYWNlID09IGhhc2hUYWJsZURlbGV0ZWRG
b250VmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
bGludXgvV2ViRm9udEZhbWlseS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViRm9udEZhbWlseS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZjY4NGI5MzlkMDNlYjFhNDA2NjIyNTY5
NDcwN2Y4NmFjYjBkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
Rm9udEZhbWlseV9oCisjZGVmaW5lIFdlYkZvbnRGYW1pbHlfaAorCisjaW5jbHVkZSAiLi4vV2Vi
Q1N0cmluZy5oIgorI2luY2x1ZGUgIi4uL1dlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IFdFQktJVF9FWFBPUlQgV2ViRm9udEZhbWlseSB7CisgICAgV2ViQ1N0cmlu
ZyBuYW1lOworICAgIGJvb2wgaXNCb2xkOworICAgIGJvb2wgaXNJdGFsaWM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZvbnRGYW1pbHlfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgKaW5kZXggNWQ1
MjU4NDRhZTc2NGE0ZWUyOWFlOGI1NzMzZDFmNjU5MDI1YjhhZS4uZjRlZTA0N2Q4ZTcyNjI5M2Ex
OWM3NjZlODIzNzc5ZTZhZmI0ZTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9saW51eC9XZWJGb250SW5mby5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFdl
YkZvbnRJbmZvX2gKIAogI2luY2x1ZGUgIi4uL1dlYkNTdHJpbmcuaCIKKyNpbmNsdWRlICIuLi9s
aW51eC9XZWJGb250RmFtaWx5LmgiCiAjaW5jbHVkZSAiLi4vbGludXgvV2ViRm9udFJlbmRlclN0
eWxlLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTQ4LDkgKzQ5LDggQEAgcHVibGljOgog
ICAgIC8vICAgcHJlZmVycmVkTG9jYWxlOiBwcmVmZXJyZWQgbG9jYWxlIGlkZW50aWZpZXIgZm9y
IHRoZSB8Y2hhcmFjdGVyc3wKICAgICAvLyAgICAgICAgICAgICAgICAgICAgKGUuZy4gImVuIiwg
ImphIiwgInpoLUNOIikKICAgICAvLwotICAgIC8vIFJldHVybnM6IHRoZSBmb250IGZhbWlseSBv
ciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIHJlcXVlc3QgY291bGQgbm90IGJlCi0gICAgLy8gc2F0
aXNmaWVkLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkNTdHJpbmcgZmFtaWx5Rm9yQ2hh
cnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25z
dCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUpOworICAgIC8vIFJldHVybnM6IHRoZSBmb250IGZhbWls
eSBpbnN0YW5jZS4gVGhlIGluc3RhbmNlIGhhcyBhbiBlbXB0eSBmb250IG5hbWUgaWYgdGhlIHJl
cXVlc3QgY291bGQgbm90IGJlIHNhdGlzZmllZC4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2
b2lkIGZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVt
Q2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJGb250RmFtaWx5Kik7
CiAKICAgICAvLyBGaWxsIG91dCB0aGUgZ2l2ZW4gV2ViRm9udFJlbmRlclN0eWxlIHdpdGggdGhl
IHVzZXIncyBwcmVmZXJlbmNlcyBmb3IKICAgICAvLyByZW5kZXJpbmcgdGhlIGdpdmVuIGZvbnQg
YXQgdGhlIGdpdmVuIHNpemUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAppbmRleCAyZjU3OTI5ODhiNmZmMWRjNDAy
YTk0MjU5Y2Y3NTI3ZjdiOGJkMjM3Li4xOTE4YTNkZDc5ZmJmN2I5NTBkODA2ODQzYjQxYzE1OWEx
YmJkZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9X
ZWJTYW5kYm94U3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xp
bnV4L1dlYlNhbmRib3hTdXBwb3J0LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK3N0cnVjdCBXZWJGb250RmFtaWx5Owogc3RydWN0IFdlYkZvbnRSZW5kZXJTdHls
ZTsKIAogLy8gUHV0IG1ldGhvZHMgaGVyZSB0aGF0IGFyZSByZXF1aXJlZCBkdWUgdG8gc2FuZGJv
eCByZXN0cmljdGlvbnMuCkBAIC01MCw5ICs1MSw4IEBAIHB1YmxpYzoKICAgICAvLyAgIHByZWZl
cnJlZExvY2FsZTogcHJlZmVycmVkIGxvY2FsZSBpZGVudGlmaWVyIGZvciB0aGUgfGNoYXJhY3Rl
cnN8CiAgICAgLy8gICAgICAgICAgICAgICAgICAgIChlLmcuICJlbiIsICJqYSIsICJ6aC1DTiIp
CiAgICAgLy8KLSAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGZvbnQgZmFtaWx5IG9u
IGFuIGVtcHR5IHN0cmluZyBpZiB0aGUKLSAgICAvLyByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2Zp
ZWQuCi0gICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29u
c3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFy
KiBwcmVmZXJyZWRMb2NhbGUpICA9IDA7CisgICAgLy8gUmV0dXJucyBhIFdlYkZvbnRGYW1pbHkg
aW5zdGFuY2Ugd2l0aCB0aGUgZm9udCBuYW1lLiBUaGUgaW5zdGFuY2UgaGFzIGVtcHR5IGZvbnQg
bmFtZSBpZiB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgc2F0aXNmaWVkLgorICAgIHZpcnR1YWwgdm9p
ZCBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgV2ViRm9u
dEZhbWlseSopICA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtl
KGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJlbmRlclN0eWxl
KiBzdHlsZSkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAKaW5kZXggNTQ1MjFiODJlZWI3ZGFmMGQxZGFhYWMyZThjYmQ3MDkxMjJk
MDM0My4uYzE0ZDNlOGQyNTMxYjFjYWM4NmExZGZlMTIyOGI0NDE3YjU1NTk4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC00NjEsMjEg
KzQ2MSwyNSBAQCBib29sIFBsYXRmb3JtU3VwcG9ydDo6bG9hZEZvbnQoTlNGb250KiBzcmNGb250
LCBDR0ZvbnRSZWYqIG91dCwgdWludDMyX3QqIGZvbnRJRAogICAgIHJldHVybiBmYWxzZTsKIH0K
ICNlbGlmIE9TKFVOSVgpCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9y
Q2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMs
IGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSkKK3ZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRG
b250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51
bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgRm9udEZhbWlseSogZmFt
aWx5KQogewogI2lmIE9TKEFORFJPSUQpCiAgICAgLy8gRklYTUU6IFdlIGRvIG5vdCB1c2UgZm9u
dGNvbmZpZyBvbiBBbmRyb2lkLCBzbyB1c2Ugc2ltcGxlIGxvZ2ljIGZvciBub3cuCiAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTg3Ci0gICAgcmV0dXJu
IFdlYlN0cmluZygiQXJpYWwiKTsKKyAgICBmYW1pbHktPm5hbWUgPSAiQXJpYWwiOworICAgIGZh
bWlseS0+aXNCb2xkID0gZmFsc2U7CisgICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOworICAg
IHJldHVybjsKICNlbHNlCisgICAgV2ViRm9udEZhbWlseSB3ZWJGYW1pbHk7CiAgICAgaWYgKHdl
YktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW5kYm94U3VwcG9ydCgpKQotICAgICAgICByZXR1cm4g
d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPnNhbmRib3hTdXBwb3J0KCktPmdldEZvbnRGYW1pbHlG
b3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSk7
Ci0KLSAgICBXZWJDU3RyaW5nIGZhbWlseSA9IFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhj
aGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUpOwotICAgIGlmIChmYW1p
bHkuZGF0YSgpKQotICAgICAgICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOChmYW1pbHkuZGF0
YSgpKTsKLQotICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyAgICAgICAgd2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCktPnNhbmRib3hTdXBwb3J0KCktPmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNo
YXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgJndlYkZhbWlseSk7Cisg
ICAgZWxzZQorICAgICAgICBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY2hhcmFjdGVycywg
bnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlLCAmd2ViRmFtaWx5KTsKKyAgICBmYW1pbHkt
Pm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHdlYkZhbWlseS5uYW1lLmRhdGEoKSk7CisgICAgZmFt
aWx5LT5pc0JvbGQgPSB3ZWJGYW1pbHkuaXNCb2xkOworICAgIGZhbWlseS0+aXNJdGFsaWMgPSB3
ZWJGYW1pbHkuaXNJdGFsaWM7CisgICAgcmV0dXJuOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcAppbmRleCA0OTE4MmQ0
N2VhN2Y1YmFkNTYyYTE2YTU5MWZkMGUwNTc0ZDUxZjc1Li4wYmY4NWZjNDYxMTRkZGMwNDkzMGY0
MzA4YTgzM2RkNWYyZTBhY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9saW51eC9XZWJGb250SW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
bGludXgvV2ViRm9udEluZm8uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViRm9udEluZm8uaCIKIAorI2luY2x1ZGUgIldlYkZvbnRGYW1pbHku
aCIKICNpbmNsdWRlICJXZWJGb250UmVuZGVyU3R5bGUuaCIKIAogI2luY2x1ZGUgPGZvbnRjb25m
aWcvZm9udGNvbmZpZy5oPgpAQCAtMzksNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotV2ViQ1N0cmluZyBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIq
IGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRM
b2NhbGUpCit2b2lkIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExv
Y2FsZSwgV2ViRm9udEZhbWlseSogZmFtaWx5KQogewogICAgIEZjQ2hhclNldCogY3NldCA9IEZj
Q2hhclNldENyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVy
czsgKytpKSB7CkBAIC03OCw5ICs3OSwxMiBAQCBXZWJDU3RyaW5nIFdlYkZvbnRJbmZvOjpmYW1p
bHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYQogICAg
IEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CiAgICAgRmNDaGFyU2V0RGVzdHJveShjc2V0KTsK
IAotICAgIGlmICghZm9udFNldCkKLSAgICAgICAgcmV0dXJuIFdlYkNTdHJpbmcoKTsKLQorICAg
IGlmICghZm9udFNldCkgeworICAgICAgICBmYW1pbHktPm5hbWUgPSBXZWJDU3RyaW5nKCk7Cisg
ICAgICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7CisgICAgICAgIGZhbWlseS0+aXNJdGFsaWMg
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAvLyBPbGRlciB2ZXJzaW9ucyBv
ZiBmb250Y29uZmlnIGhhdmUgYSBidWcgd2hlcmUgdGhleSBjYW5ub3Qgc2VsZWN0CiAgICAgLy8g
b25seSBzY2FsYWJsZSBmb250cyBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGZpbHRlciB0aGUgcmVz
dWx0cy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbnRTZXQtPm5mb250OyArK2kpIHsKQEAg
LTk5LDE4ICsxMDMsMjcgQEAgV2ViQ1N0cmluZyBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMo
Y29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGEKICAgICAgICAgaWYgKGFj
Y2VzcyhyZWludGVycHJldF9jYXN0PGNoYXIqPihjRmlsZW5hbWUpLCBSX09LKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEZjQ2hhcjgqIGZhbWlseTsKLSAgICAgICAgV2ViQ1N0
cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmIChGY1BhdHRlcm5HZXRTdHJpbmcoY3VycmVudCwgRkNf
RkFNSUxZLCAwLCAmZmFtaWx5KSA9PSBGY1Jlc3VsdE1hdGNoKSB7Ci0gICAgICAgICAgICBjb25z
dCBjaGFyKiBjaGFyRmFtaWx5ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZmFtaWx5KTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IFdlYkNTdHJpbmcoY2hhckZhbWlseSwgc3RybGVuKGNoYXJGYW1p
bHkpKTsKKyAgICAgICAgRmNDaGFyOCogZmFtaWx5TmFtZTsKKyAgICAgICAgaWYgKEZjUGF0dGVy
bkdldFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1pbHlOYW1lKSA9PSBGY1Jlc3Vs
dE1hdGNoKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBjaGFyRmFtaWx5ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oZmFtaWx5TmFtZSk7CisgICAgICAgICAgICBmYW1pbHktPm5hbWUgPSBX
ZWJDU3RyaW5nKGNoYXJGYW1pbHksIHN0cmxlbihjaGFyRmFtaWx5KSk7CiAgICAgICAgIH0KKyAg
ICAgICAgaW50IHdlaWdodDsKKyAgICAgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIoY3VycmVu
dCwgRkNfV0VJR0hULCAwLCAmd2VpZ2h0KSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICAgICAg
ZmFtaWx5LT5pc0JvbGQgPSB3ZWlnaHQgPj0gRkNfV0VJR0hUX0JPTEQ7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7CisgICAgICAgIGludCBzbGFudDsK
KyAgICAgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIoY3VycmVudCwgRkNfU0xBTlQsIDAsICZz
bGFudCkgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAgICAgICAgIGZhbWlseS0+aXNJdGFsaWMgPSBz
bGFudCAhPSBGQ19TTEFOVF9ST01BTjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFtaWx5
LT5pc0l0YWxpYyA9IGZhbHNlOwogICAgICAgICBGY0ZvbnRTZXREZXN0cm95KGZvbnRTZXQpOwot
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgRmNG
b250U2V0RGVzdHJveShmb250U2V0KTsKLSAgICByZXR1cm4gV2ViQ1N0cmluZygpOworICAgIHJl
dHVybjsKIH0KIAogdm9pZCBXZWJGb250SW5mbzo6cmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3Qg
Y2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVuZGVyU3R5bGUqIG91dCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDJkMDY1YmVjMDkzNDQ2ZDA0
Y2E2YzdhMTg1M2RmMWQ5ZWQ5YzA2ODIuLjUxN2JjYjI1ZTM2YjE0MzMxYjNmYjQ1ZTBmMmUwMjFl
YmNlOTViNjkKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTExLTAyICBLZW5pY2hpIElzaGliYXNoaSAg
PGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNhbGwgZm9u
dGNvbmZpZyB0d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDogTWFya2VkIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JvbGQtYmVuZ2FsaS5o
dG1sIGFzIFBBU1MgZm9yIExJTlVYLgorCiAyMDExLTExLTAxICBBbm5hIENhdmVuZGVyICA8YW5u
YWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlcyBbUmVmbGVjdF0gd29yayBmb3IgY29u
c3RhbnRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CmluZGV4IDdhMGRlMDVmYjVjNWNhY2EyNjJiOGU4ODZmZWU4ZDljYWE4NGYz
ZDUuLjUyMWZiOGM0NzRhMDgyMjY4MTNkNzUzY2VlN2FlYjkwZTYxN2YxNTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAg
LTIwMDYsNiArMjAwNiw3IEBAIEJVR1dLMzgwMzggOiBmYXN0L3VybC9maWxlLWh0dHAtYmFzZS5o
dG1sID0gVEVYVAogLy8gV2ViS2l0IHJvbGwgNTgzMDQ6NTg0MDAKIC8vIFNraXAgc2luY2Ugbm90
IHJlbGV2YW50CiBCVUdVS0FJIFNLSVAgTUFDIFdJTiA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L2JvbGQtYmVuZ2FsaS5odG1sID0gRkFJTAorQlVHVUtBSSBMSU5VWCA6IGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2JvbGQtYmVuZ2FsaS5odG1sID0gUEFTUwogCiAvLyBUaGVzZSA1LDAwMCsgdGVz
dHMgYXJlIGFscmVhZHkgYmVpbmcgcnVuIGJ5IHRoZSBWOCB0ZWFtIChhbmQgaGF2ZSBubyBjaHJv
bWl1bSBleHBlY3RhdGlvbnMpLgogLy8gVGhleSBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIEphdmFT
Y3JpcHRDb3JlIHRlc3Qgc3VpdGUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>113298</attachid>
            <date>2011-11-02 03:35:14 -0700</date>
            <delta_ts>2011-11-02 03:35:14 -0700</delta_ts>
            <desc>patch for chromium side</desc>
            <filename>chromium.patch</filename>
            <type>text/plain</type>
            <size>10673</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NvbnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9zYW5kYm94
X2hvc3RfbGludXguY2MgYi9jb250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfc2Fu
ZGJveF9ob3N0X2xpbnV4LmNjCmluZGV4IDBjZTVkODguLjUwNzA2ZTkgMTAwNjQ0Ci0tLSBhL2Nv
bnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9zYW5kYm94X2hvc3RfbGludXguY2MK
KysrIGIvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX3NhbmRib3hfaG9zdF9s
aW51eC5jYwpAQCAtMjY3LDE2ICsyNjcsMjAgQEAgY2xhc3MgU2FuZGJveElQQ1Byb2Nlc3MgIHsK
ICAgICBpZiAoIXBpY2tsZS5SZWFkU3RyaW5nKCZpdGVyLCAmcHJlZmVycmVkX2xvY2FsZSkpCiAg
ICAgICByZXR1cm47CiAKLSAgICBXZWJDU3RyaW5nIGZhbWlseSA9IFdlYkZvbnRJbmZvOjpmYW1p
bHlGb3JDaGFycyhjaGFycy5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudW1fY2hhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZmVycmVkX2xvY2FsZS5jX3N0cigpKTsKKyAg
ICBXZWJLaXQ6OldlYkZvbnRGYW1pbHkgZmFtaWx5OworICAgIFdlYkZvbnRJbmZvOjpmYW1pbHlG
b3JDaGFycyhjaGFycy5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVt
X2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmZXJyZWRfbG9jYWxl
LmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmYW1pbHkpOwogCiAg
ICAgUGlja2xlIHJlcGx5OwotICAgIGlmIChmYW1pbHkuZGF0YSgpKSB7Ci0gICAgICByZXBseS5X
cml0ZVN0cmluZyhmYW1pbHkuZGF0YSgpKTsKKyAgICBpZiAoZmFtaWx5Lm5hbWUuZGF0YSgpKSB7
CisgICAgICByZXBseS5Xcml0ZVN0cmluZyhmYW1pbHkubmFtZS5kYXRhKCkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICByZXBseS5Xcml0ZVN0cmluZygiIik7CiAgICAgfQorICAgIHJlcGx5LldyaXRl
Qm9vbChmYW1pbHkuaXNCb2xkKTsKKyAgICByZXBseS5Xcml0ZUJvb2woZmFtaWx5LmlzSXRhbGlj
KTsKICAgICBTZW5kUmVuZGVyZXJSZXBseShmZHMsIHJlcGx5LCAtMSk7CiAgIH0KIApkaWZmIC0t
Z2l0IGEvY29udGVudC9jb21tb24vY2hpbGRfcHJvY2Vzc19zYW5kYm94X3N1cHBvcnRfaW1wbF9s
aW51eC5jYyBiL2NvbnRlbnQvY29tbW9uL2NoaWxkX3Byb2Nlc3Nfc2FuZGJveF9zdXBwb3J0X2lt
cGxfbGludXguY2MKaW5kZXggNjkyZDRlZC4uNDZkMDg5MSAxMDA2NDQKLS0tIGEvY29udGVudC9j
b21tb24vY2hpbGRfcHJvY2Vzc19zYW5kYm94X3N1cHBvcnRfaW1wbF9saW51eC5jYworKysgYi9j
b250ZW50L2NvbW1vbi9jaGlsZF9wcm9jZXNzX3NhbmRib3hfc3VwcG9ydF9pbXBsX2xpbnV4LmNj
CkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAiY29udGVudC9jb21tb24vY2hyb21lX2Rlc2Ny
aXB0b3JzLmgiCiAjaW5jbHVkZSAiY29udGVudC9jb21tb24vc2FuZGJveF9tZXRob2RzX2xpbnV4
LmgiCiAjaW5jbHVkZSAiY29udGVudC9jb21tb24vdW5peF9kb21haW5fc29ja2V0X3Bvc2l4Lmgi
CisjaW5jbHVkZSAidGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9XZWJLaXQv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgi
CiAKIHN0YXRpYyBpbnQgR2V0U2FuZGJveEZEKCkgewpAQCAtMjEsOSArMjIsMTAgQEAgc3RhdGlj
IGludCBHZXRTYW5kYm94RkQoKSB7CiAKIG5hbWVzcGFjZSBjb250ZW50IHsKIAotc3RkOjpzdHJp
bmcgR2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgdWludDE2X3QqIHV0ZjE2LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV91dGYxNiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZlcnJl
ZF9sb2NhbGUpIHsKK3ZvaWQgR2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgdWludDE2
X3QqIHV0ZjE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX3V0
ZjE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwcmVmZXJy
ZWRfbG9jYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYkZv
bnRGYW1pbHkqIGZhbWlseSkgewogICBQaWNrbGUgcmVxdWVzdDsKICAgcmVxdWVzdC5Xcml0ZUlu
dChMaW51eFNhbmRib3g6Ok1FVEhPRF9HRVRfRk9OVF9GQU1JTFlfRk9SX0NIQVJTKTsKICAgcmVx
dWVzdC5Xcml0ZUludChudW1fdXRmMTYpOwpAQCAtMzYsMTMgKzM4LDE5IEBAIHN0ZDo6c3RyaW5n
IEdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IHVpbnQxNl90KiB1dGYxNiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGJ1Ziks
IE5VTEwsIHJlcXVlc3QpOwogCiAgIHN0ZDo6c3RyaW5nIGZhbWlseV9uYW1lOworICBib29sIGlz
Qm9sZCA9IGZhbHNlOworICBib29sIGlzSXRhbGljID0gZmFsc2U7CiAgIGlmIChuICE9IC0xKSB7
CiAgICAgUGlja2xlIHJlcGx5KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZiksIG4pOwogICAg
IHZvaWQqIHBpY2tsZV9pdGVyID0gTlVMTDsKLSAgICByZXBseS5SZWFkU3RyaW5nKCZwaWNrbGVf
aXRlciwgJmZhbWlseV9uYW1lKTsKKyAgICBpZiAocmVwbHkuUmVhZFN0cmluZygmcGlja2xlX2l0
ZXIsICZmYW1pbHlfbmFtZSkgJiYKKyAgICAgICAgcmVwbHkuUmVhZEJvb2woJnBpY2tsZV9pdGVy
LCAmaXNCb2xkKSAmJgorICAgICAgICByZXBseS5SZWFkQm9vbCgmcGlja2xlX2l0ZXIsICZpc0l0
YWxpYykpIHsKKyAgICAgIGZhbWlseS0+bmFtZSA9IGZhbWlseV9uYW1lOworICAgICAgZmFtaWx5
LT5pc0JvbGQgPSBpc0JvbGQ7CisgICAgICBmYW1pbHktPmlzSXRhbGljID0gaXNJdGFsaWM7Cisg
ICAgfQogICB9Ci0KLSAgcmV0dXJuIGZhbWlseV9uYW1lOwogfQogCiB2b2lkIEdldFJlbmRlclN0
eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwKZGlmZiAt
LWdpdCBhL2NvbnRlbnQvY29tbW9uL2NoaWxkX3Byb2Nlc3Nfc2FuZGJveF9zdXBwb3J0X2ltcGxf
bGludXguaCBiL2NvbnRlbnQvY29tbW9uL2NoaWxkX3Byb2Nlc3Nfc2FuZGJveF9zdXBwb3J0X2lt
cGxfbGludXguaAppbmRleCBiMjY2MzRhLi5kZjE1ZDY3IDEwMDY0NAotLS0gYS9jb250ZW50L2Nv
bW1vbi9jaGlsZF9wcm9jZXNzX3NhbmRib3hfc3VwcG9ydF9pbXBsX2xpbnV4LmgKKysrIGIvY29u
dGVudC9jb21tb24vY2hpbGRfcHJvY2Vzc19zYW5kYm94X3N1cHBvcnRfaW1wbF9saW51eC5oCkBA
IC05LDYgKzksNyBAQAogI2luY2x1ZGUgImNvbnRlbnQvcHVibGljL2NvbW1vbi9jaGlsZF9wcm9j
ZXNzX3NhbmRib3hfc3VwcG9ydF9saW51eC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVj
dCBXZWJGb250RmFtaWx5Owogc3RydWN0IFdlYkZvbnRSZW5kZXJTdHlsZTsKIH0KIApAQCAtMjAs
MTEgKzIxLDExIEBAIG5hbWVzcGFjZSBjb250ZW50IHsKIC8vICAgbnVtX3V0ZjE2OiB0aGUgbnVt
YmVyIG9mIDE2LWJpdCB3b3JkcyBpbiB8dXRmMTZ8CiAvLyAgIHByZWZlcnJlZF9sb2NhbGU6IHBy
ZWZlcnJlZCBsb2NhbGUgaWRlbnRpZmllciBmb3IgdGhlIHx1dGYxNnwKIC8vCi0vLyBSZXR1cm5z
OiB0aGUgZm9udCBmYW1pbHkgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSByZXF1ZXN0IGNvdWxk
IG5vdCBiZQotLy8gc2F0aXNmaWVkLgotc3RkOjpzdHJpbmcgR2V0Rm9udEZhbWlseUZvckNoYXJh
Y3RlcnMoY29uc3QgdWludDE2X3QqIHV0ZjE2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG51bV91dGYxNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZlcnJlZF9sb2NhbGUpOworLy8gUmV0dXJuczog
dGhlIGZvbnQgZmFtaWx5IGluc3RhbmNlLiBUaGUgaW5zdGFuY2UgaGFzIGFuIGVtcHR5IGZvbnQg
bmFtZSBpZiB0aGUgcmVxdWVzdCBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLgordm9pZCBHZXRGb250
RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCB1aW50MTZfdCogdXRmMTYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1fdXRmMTYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZlcnJlZF9sb2NhbGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViRm9udEZhbWlseSogZmFtaWx5KTsKIAogdm9p
ZCBHZXRSZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGludCBzaXplQW5k
U3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViRm9udFJlbmRl
clN0eWxlKiBvdXQpOwpkaWZmIC0tZ2l0IGEvY29udGVudC9wcGFwaV9wbHVnaW4vcHBhcGlfd2Vi
a2l0cGxhdGZvcm1zdXBwb3J0X2ltcGwuY2MgYi9jb250ZW50L3BwYXBpX3BsdWdpbi9wcGFwaV93
ZWJraXRwbGF0Zm9ybXN1cHBvcnRfaW1wbC5jYwppbmRleCA0NzMzOTA5Li5kNDZkYTY4IDEwMDY0
NAotLS0gYS9jb250ZW50L3BwYXBpX3BsdWdpbi9wcGFwaV93ZWJraXRwbGF0Zm9ybXN1cHBvcnRf
aW1wbC5jYworKysgYi9jb250ZW50L3BwYXBpX3BsdWdpbi9wcGFwaV93ZWJraXRwbGF0Zm9ybXN1
cHBvcnRfaW1wbC5jYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgInRoaXJkX3BhcnR5L1dl
YktpdC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViU2FuZGJveFN1cHBvcnQu
aCIKICNlbGlmIGRlZmluZWQoT1NfUE9TSVgpCiAjaW5jbHVkZSAiY29udGVudC9jb21tb24vY2hp
bGRfcHJvY2Vzc19zYW5kYm94X3N1cHBvcnRfaW1wbF9saW51eC5oIgorI2luY2x1ZGUgInRoaXJk
X3BhcnR5L1dlYktpdC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250
RmFtaWx5LmgiCiAjaW5jbHVkZSAidGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgiCiAjZW5kaWYKIApAQCAtMzgs
MTAgKzM5LDExIEBAIGNsYXNzIFBwYXBpV2ViS2l0UGxhdGZvcm1TdXBwb3J0SW1wbDo6U2FuZGJv
eFN1cHBvcnQgOiBwdWJsaWMgV2ViU2FuZGJveFN1cHBvcnQKICAgdmlydHVhbCBib29sIGxvYWRG
b250KAogICAgICAgTlNGb250KiBzcmNGb250LCBDR0ZvbnRSZWYqIG91dCwgdWludDMyX3QqIGZv
bnRJRCk7CiAjZWxpZiBkZWZpbmVkKE9TX1BPU0lYKQotICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRG
b250RmFtaWx5Rm9yQ2hhcmFjdGVycygKKyAgdmlydHVhbCB2b2lkIGdldEZvbnRGYW1pbHlGb3JD
aGFyYWN0ZXJzKAogICAgICAgY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsCiAgICAgICBzaXpl
X3QgbnVtQ2hhcmFjdGVycywKLSAgICAgIGNvbnN0IGNoYXIqIHByZWZlcnJlZF9sb2NhbGUpOwor
ICAgICAgY29uc3QgY2hhciogcHJlZmVycmVkX2xvY2FsZSwKKyAgICAgIFdlYktpdDo6V2ViRm9u
dEZhbWlseSogZmFtaWx5KTsKICAgdmlydHVhbCB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtl
KAogICAgICAgY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJLaXQ6Oldl
YkZvbnRSZW5kZXJTdHlsZSogb3V0KTsKIApAQCAtNTEsNyArNTMsNyBAQCBjbGFzcyBQcGFwaVdl
YktpdFBsYXRmb3JtU3VwcG9ydEltcGw6OlNhbmRib3hTdXBwb3J0IDogcHVibGljIFdlYlNhbmRi
b3hTdXBwb3J0CiAgIC8vIGhlcmUuIFRoZSBrZXkgaW4gdGhpcyBtYXAgaXMgYW4gYXJyYXkgb2Yg
MTYtYml0IFVURjE2IHZhbHVlcyBmcm9tIFdlYktpdC4KICAgLy8gVGhlIHZhbHVlIGlzIGEgc3Ry
aW5nIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgZm9udCBmYW1pbHkuCiAgIGJhc2U6OkxvY2sgdW5p
Y29kZV9mb250X2ZhbWlsaWVzX211dGV4XzsKLSAgc3RkOjptYXA8c3RyaW5nMTYsIHN0ZDo6c3Ry
aW5nPiB1bmljb2RlX2ZvbnRfZmFtaWxpZXNfOworICBzdGQ6Om1hcDxzdHJpbmcxNiwgV2ViS2l0
OjpXZWJGb250RmFtaWx5PiB1bmljb2RlX2ZvbnRfZmFtaWxpZXNfOwogI2VuZGlmCiB9OwogCkBA
IC04MCwyNCArODIsMjkgQEAgYm9vbCBQcGFwaVdlYktpdFBsYXRmb3JtU3VwcG9ydEltcGw6OlNh
bmRib3hTdXBwb3J0Ojpsb2FkRm9udCgKIAogI2VsaWYgZGVmaW5lZChPU19QT1NJWCkKIAotV2Vi
U3RyaW5nCit2b2lkCiBQcGFwaVdlYktpdFBsYXRmb3JtU3VwcG9ydEltcGw6OlNhbmRib3hTdXBw
b3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycygKICAgICBjb25zdCBXZWJVQ2hhciogY2hh
cmFjdGVycywKICAgICBzaXplX3QgbnVtX2NoYXJhY3RlcnMsCi0gICAgY29uc3QgY2hhciogcHJl
ZmVycmVkX2xvY2FsZSkgeworICAgIGNvbnN0IGNoYXIqIHByZWZlcnJlZF9sb2NhbGUsCisgICAg
V2ViS2l0OjpXZWJGb250RmFtaWx5KiBmYW1pbHkpIHsKICAgYmFzZTo6QXV0b0xvY2sgbG9jayh1
bmljb2RlX2ZvbnRfZmFtaWxpZXNfbXV0ZXhfKTsKICAgY29uc3Qgc3RyaW5nMTYga2V5KGNoYXJh
Y3RlcnMsIG51bV9jaGFyYWN0ZXJzKTsKLSAgY29uc3Qgc3RkOjptYXA8c3RyaW5nMTYsIHN0ZDo6
c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9CisgIGNvbnN0IHN0ZDo6bWFwPHN0cmluZzE2
LCBXZWJLaXQ6OldlYkZvbnRGYW1pbHk+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0KICAgICAgIHVu
aWNvZGVfZm9udF9mYW1pbGllc18uZmluZChrZXkpOwotICBpZiAoaXRlciAhPSB1bmljb2RlX2Zv
bnRfZmFtaWxpZXNfLmVuZCgpKQotICAgIHJldHVybiBXZWJTdHJpbmc6OmZyb21VVEY4KGl0ZXIt
PnNlY29uZCk7Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcgZmFtaWx5X25hbWUgPSBjb250ZW50OjpH
ZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycygKKyAgaWYgKGl0ZXIgIT0gdW5pY29kZV9mb250X2Zh
bWlsaWVzXy5lbmQoKSkgeworICAgIGZhbWlseS0+bmFtZSA9IGl0ZXItPnNlY29uZC5uYW1lOwor
ICAgIGZhbWlseS0+aXNCb2xkID0gaXRlci0+c2Vjb25kLmlzQm9sZDsKKyAgICBmYW1pbHktPmlz
SXRhbGljID0gaXRlci0+c2Vjb25kLmlzSXRhbGljOworICAgIHJldHVybjsKKyAgfQorCisgIGNv
bnRlbnQ6OkdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKAogICAgICAgY2hhcmFjdGVycywKICAg
ICAgIG51bV9jaGFyYWN0ZXJzLAotICAgICAgcHJlZmVycmVkX2xvY2FsZSk7Ci0gIHVuaWNvZGVf
Zm9udF9mYW1pbGllc18uaW5zZXJ0KG1ha2VfcGFpcihrZXksIGZhbWlseV9uYW1lKSk7Ci0gIHJl
dHVybiBXZWJTdHJpbmc6OmZyb21VVEY4KGZhbWlseV9uYW1lKTsKKyAgICAgIHByZWZlcnJlZF9s
b2NhbGUsCisgICAgICBmYW1pbHkpOworICB1bmljb2RlX2ZvbnRfZmFtaWxpZXNfLmluc2VydCht
YWtlX3BhaXIoa2V5LCAqZmFtaWx5KSk7CiB9CiAKIHZvaWQgUHBhcGlXZWJLaXRQbGF0Zm9ybVN1
cHBvcnRJbXBsOjpTYW5kYm94U3VwcG9ydDo6Z2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoCmRpZmYg
LS1naXQgYS9jb250ZW50L3JlbmRlcmVyL3JlbmRlcmVyX3dlYmtpdHBsYXRmb3Jtc3VwcG9ydF9p
bXBsLmNjIGIvY29udGVudC9yZW5kZXJlci9yZW5kZXJlcl93ZWJraXRwbGF0Zm9ybXN1cHBvcnRf
aW1wbC5jYwppbmRleCAyNjExYWRkLi5lMzA1NDdmIDEwMDY0NAotLS0gYS9jb250ZW50L3JlbmRl
cmVyL3JlbmRlcmVyX3dlYmtpdHBsYXRmb3Jtc3VwcG9ydF9pbXBsLmNjCisrKyBiL2NvbnRlbnQv
cmVuZGVyZXIvcmVuZGVyZXJfd2Via2l0cGxhdGZvcm1zdXBwb3J0X2ltcGwuY2MKQEAgLTYyLDYg
KzYyLDcgQEAKIAogI2luY2x1ZGUgImJhc2Uvc3luY2hyb25pemF0aW9uL2xvY2suaCIKICNpbmNs
dWRlICJjb250ZW50L2NvbW1vbi9jaGlsZF9wcm9jZXNzX3NhbmRib3hfc3VwcG9ydF9pbXBsX2xp
bnV4LmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaCIKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9X
ZWJLaXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBv
cnQuaCIKICNlbmRpZgogCkBAIC0xMjAsMTAgKzEyMSwxMSBAQCBjbGFzcyBSZW5kZXJlcldlYktp
dFBsYXRmb3JtU3VwcG9ydEltcGw6OlNhbmRib3hTdXBwb3J0CiAgICAgICBDR0ZvbnRSZWYqIGNv
bnRhaW5lciwKICAgICAgIHVpbnQzMiogZm9udF9pZCk7CiAjZWxpZiBkZWZpbmVkKE9TX1BPU0lY
KQotICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJz
KAorICB2aXJ0dWFsIHZvaWQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoCiAgICAgICBjb25z
dCBXZWJLaXQ6OldlYlVDaGFyKiBjaGFyYWN0ZXJzLAogICAgICAgc2l6ZV90IG51bUNoYXJhY3Rl
cnMsCi0gICAgICBjb25zdCBjaGFyKiBwcmVmZXJyZWRfbG9jYWxlKTsKKyAgICAgIGNvbnN0IGNo
YXIqIHByZWZlcnJlZF9sb2NhbGUsCisgICAgICBXZWJLaXQ6OldlYkZvbnRGYW1pbHkqIGZhbWls
eSk7CiAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJTdHlsZUZvclN0cmlrZSgKICAgICAgIGNvbnN0
IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViS2l0OjpXZWJGb250UmVuZGVyU3R5
bGUqIG91dCk7CiAKQEAgLTEzMyw3ICsxMzUsNyBAQCBjbGFzcyBSZW5kZXJlcldlYktpdFBsYXRm
b3JtU3VwcG9ydEltcGw6OlNhbmRib3hTdXBwb3J0CiAgIC8vIGhlcmUuIFRoZSBrZXkgaW4gdGhp
cyBtYXAgaXMgYW4gYXJyYXkgb2YgMTYtYml0IFVURjE2IHZhbHVlcyBmcm9tIFdlYktpdC4KICAg
Ly8gVGhlIHZhbHVlIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgZm9udCBmYW1p
bHkuCiAgIGJhc2U6OkxvY2sgdW5pY29kZV9mb250X2ZhbWlsaWVzX211dGV4XzsKLSAgc3RkOjpt
YXA8c3RyaW5nMTYsIHN0ZDo6c3RyaW5nPiB1bmljb2RlX2ZvbnRfZmFtaWxpZXNfOworICBzdGQ6
Om1hcDxzdHJpbmcxNiwgV2ViS2l0OjpXZWJGb250RmFtaWx5PiB1bmljb2RlX2ZvbnRfZmFtaWxp
ZXNfOwogI2VuZGlmCiB9OwogCkBAIC00ODAsMjQgKzQ4MiwyOSBAQCBib29sIFJlbmRlcmVyV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0SW1wbDo6U2FuZGJveFN1cHBvcnQ6OmxvYWRGb250KAogCiAjZWxp
ZiBkZWZpbmVkKE9TX1BPU0lYKQogCi1XZWJTdHJpbmcKK3ZvaWQKIFJlbmRlcmVyV2ViS2l0UGxh
dGZvcm1TdXBwb3J0SW1wbDo6U2FuZGJveFN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0
ZXJzKAogICAgIGNvbnN0IFdlYktpdDo6V2ViVUNoYXIqIGNoYXJhY3RlcnMsCiAgICAgc2l6ZV90
IG51bV9jaGFyYWN0ZXJzLAotICAgIGNvbnN0IGNoYXIqIHByZWZlcnJlZF9sb2NhbGUpIHsKKyAg
ICBjb25zdCBjaGFyKiBwcmVmZXJyZWRfbG9jYWxlLAorICAgIFdlYktpdDo6V2ViRm9udEZhbWls
eSogZmFtaWx5KSB7CiAgIGJhc2U6OkF1dG9Mb2NrIGxvY2sodW5pY29kZV9mb250X2ZhbWlsaWVz
X211dGV4Xyk7CiAgIGNvbnN0IHN0cmluZzE2IGtleShjaGFyYWN0ZXJzLCBudW1fY2hhcmFjdGVy
cyk7Ci0gIGNvbnN0IHN0ZDo6bWFwPHN0cmluZzE2LCBzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPQorICBjb25zdCBzdGQ6Om1hcDxzdHJpbmcxNiwgV2ViS2l0OjpXZWJGb250RmFt
aWx5Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9CiAgICAgICB1bmljb2RlX2ZvbnRfZmFtaWxpZXNf
LmZpbmQoa2V5KTsKLSAgaWYgKGl0ZXIgIT0gdW5pY29kZV9mb250X2ZhbWlsaWVzXy5lbmQoKSkK
LSAgICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOChpdGVyLT5zZWNvbmQpOworICBpZiAoaXRl
ciAhPSB1bmljb2RlX2ZvbnRfZmFtaWxpZXNfLmVuZCgpKSB7CisgICAgZmFtaWx5LT5uYW1lID0g
aXRlci0+c2Vjb25kLm5hbWU7CisgICAgZmFtaWx5LT5pc0JvbGQgPSBpdGVyLT5zZWNvbmQuaXNC
b2xkOworICAgIGZhbWlseS0+aXNJdGFsaWMgPSBpdGVyLT5zZWNvbmQuaXNJdGFsaWM7CisgICAg
cmV0dXJuOworICB9CiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZmFtaWx5X25hbWUgPSBjb250ZW50
OjpHZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycygKKyAgY29udGVudDo6R2V0Rm9udEZhbWlseUZv
ckNoYXJhY3RlcnMoCiAgICAgICBjaGFyYWN0ZXJzLAogICAgICAgbnVtX2NoYXJhY3RlcnMsCi0g
ICAgICBwcmVmZXJyZWRfbG9jYWxlKTsKLSAgdW5pY29kZV9mb250X2ZhbWlsaWVzXy5pbnNlcnQo
bWFrZV9wYWlyKGtleSwgZmFtaWx5X25hbWUpKTsKLSAgcmV0dXJuIFdlYlN0cmluZzo6ZnJvbVVU
RjgoZmFtaWx5X25hbWUpOworICAgICAgcHJlZmVycmVkX2xvY2FsZSwKKyAgICAgIGZhbWlseSk7
CisgIHVuaWNvZGVfZm9udF9mYW1pbGllc18uaW5zZXJ0KG1ha2VfcGFpcihrZXksICpmYW1pbHkp
KTsKIH0KIAogdm9pZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113611</attachid>
            <date>2011-11-03 20:00:27 -0700</date>
            <delta_ts>2011-11-16 03:21:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20111104120026.patch</filename>
            <type>text/plain</type>
            <size>81901</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNTMxYTJiNTkwZDQ2MTc5
YTA2MTliNjRiNDM5NWQ5YjExMDIxYzRkLi4zMDYxMzhlODFkYzlmOGIxZTQ4NGNmOGQ4MzBiNjFl
YmRkNzBjMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTEtMDMgIEtlbmlj
aGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
ZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4dCBwYXRoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcwMQorCisgICAgICAg
IEdpdmVuIGNoYXJhY3RlcnMsIHJldHVybnMgYSBTaW1wbGVGb250RGF0YSB3aGljaCBhc3NvY2lh
dGVkIHdpdGggYSBGb250UGxhdGZvcm1EYXRhIHRoYXQgaXMgY3JlYXRlZCBkZXBlbmRzIG9uIHRo
ZSByZXN1bHQgb2YgZm9udGNvbmZpZywgaW5jbHVkaW5nIGZvbnQgZmFtaWx5LCBib2xkIGFuZCBp
dGFsaWMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDogQWRkZWQgRm9udEZhbWlseSBz
dHJ1Y3QgYW5kIGNoYW5nZWQgdGhlIGRlY2xhcmF0aW9uIG9mIGdldEZvbnRGYW1pbHlGb3JDaGFy
YWN0ZXJzKCkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hl
TGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNo
YXJhY3RlcnMpOiBDYWxscyBnZXRDYWNoZWRGb250RGF0YSgpIHdpdGggYSBGb250UGxhdGZvcm1E
YXRhIHdoaWNoIGlzIGNyZWF0ZWQgZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2YgZm9udGNvbmZp
Zy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRh
TGludXguaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldEZha2VCb2xk
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzZXRGYWtlSXRh
bGljKTogQWRkZWQuCisKIDIwMTEtMTEtMDMgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgTGVnYWN5RGVmYXVsdE9wdGlvbmFs
QXJndW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA5MWYxZWEzYWVlYTA5ZjNk
ZWRiNjc4YzJlMTcyZTA1MWZhNmQyNTMuLjE4YjcxNTNmNzZmMzY1ZTRmNGNhYmUwZTU1ZGQ0MGY3
YWRmNjMxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTEtMTEtMDMgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGluIGNvbXBsZXggdGV4
dCBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODcwMQorCisgICAgICAgIENoYW5nZSBkZWNsYXJhdGlvbiBvZiBXZWJGb250SW5mbzo6Z2V0RmFt
aWx5Rm9yQ2hhcnMoKSBzbyB0aGF0IGtlZXBpbmcgY29ycmVjdCBmb250IG1hcHBpbmcgb2YgdGhl
IGdpdmVuIGNoYXJhY3RlcnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwdWJsaWMvbGludXgvV2ViRm9udEluZm8uaDogQ2hhbmdlZCBkZWNsYXJhdGlvbiBvZiBn
ZXRGYW1pbHlGb3JDaGFycygpLgorICAgICAgICAqIHB1YmxpYy9saW51eC9XZWJTYW5kYm94U3Vw
cG9ydC5oOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyk6IERpdHRv
LgorICAgICAgICAqIHNyYy9saW51eC9XZWJGb250SW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyk6IE1vZGlmaWVkIHRvIGdldCB3ZWlnaHQgYW5k
IGl0YWxpYyBwcm9wZXJ0aWVzIG9mIHRoZSBmb250LgorCiAyMDExLTExLTAzICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgcmVtYWluaW5nIGNhbGxlcnMg
b2YgcmVsZWFzZVJlZiB0byBjYWxsIGxlYWtSZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNzI1NzAxMTMxZGY5MDE5N2Ew
YTRhNGQ0YzE5MDFmYTVlYWQ1ZDI4MC4uYzczNGI0OGFmOGJlMTFkMjJhMTkzM2NlN2VlNzIwNzk5
ZjlhMjlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TdXBwb3J0LmgKQEAgLTE1MSw3ICsxNTEsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGxvYWRGb250KE5TRm9udCogc3JjRm9udCwgQ0dGb250UmVmKiwgdWludDMyX3QqIGZvbnRJ
RCk7CiAjZWxpZiBPUyhVTklYKQogICAgIHN0YXRpYyB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3Ry
aWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgRm9udFJlbmRlclN0eWxl
KiByZXN1bHQpOwotICAgIHN0YXRpYyBTdHJpbmcgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMo
Y29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVk
TG9jYWxlKTsKKyAgICBzdHJ1Y3QgRm9udEZhbWlseSB7CisgICAgICAgIFN0cmluZyBuYW1lOwor
ICAgICAgICBib29sIGlzQm9sZDsKKyAgICAgICAgYm9vbCBpc0l0YWxpYzsKKyAgICB9OworICAg
IHN0YXRpYyB2b2lkIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgc2l6
ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgRm9udEZhbWls
eSopOwogI2VuZGlmCiAKICAgICAvLyBGb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3Bw
CmluZGV4IDcyNGU1ZTllYmIwZGY5MDU1MDAzMDMwYTQ4YWRiMTIwMWY5YzYzZmIuLjIzYTkzYWIw
M2FhY2Q4YTJjMDJmNWM5MjcxZGQ2MTBmMDAzMGFjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5j
cHAKQEAgLTU5LDEyICs1OSwzNSBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpn
ZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoKQog
ewogICAgIGljdTo6TG9jYWxlIGxvY2FsZSA9IGljdTo6TG9jYWxlOjpnZXREZWZhdWx0KCk7Ci0g
ICAgU3RyaW5nIGZhbWlseSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJh
Y3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoLCBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKSk7Ci0gICAgaWYg
KGZhbWlseS5pc0VtcHR5KCkpCisgICAgUGxhdGZvcm1TdXBwb3J0OjpGb250RmFtaWx5IGZhbWls
eTsKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNoYXJh
Y3RlcnMsIGxlbmd0aCwgbG9jYWxlLmdldExhbmd1YWdlKCksICZmYW1pbHkpOworICAgIGlmIChm
YW1pbHkubmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQXRvbWljU3Ry
aW5nIGF0b21pY0ZhbWlseShmYW1pbHkpOwotICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShn
ZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksIGF0b21pY0Zh
bWlseSwgRG9Ob3RSZXRhaW4pLCBEb05vdFJldGFpbik7CisgICAgQXRvbWljU3RyaW5nIGF0b21p
Y0ZhbWlseShmYW1pbHkubmFtZSk7CisgICAgLy8gQ2hhbmdlcyB3ZWlnaHQgYW5kL29yIGl0YWxp
YyBvZiBnaXZlbiBGb250RGVzY3JpcHRpb24gZGVwZW5kcyBvbgorICAgIC8vIHRoZSByZXN1bHQg
b2YgZm9udGNvbmZpZyBzbyB0aGF0IGtlZXBpbmcgdGhlIGNvcnJlY3QgZm9udCBtYXBwaW5nCisg
ICAgLy8gb2YgdGhlIGdpdmVuIGNoYXJhY3RlcnMuIFNlZSBodHRwOi8vY3JidWcuY29tLzMyMTA5
IGZvciBkZXRhaWxzLgorICAgIGJvb2wgc2hvdWxkU2V0RmFrZUJvbGQgPSBmYWxzZTsKKyAgICBi
b29sIHNob3VsZFNldEZha2VJdGFsaWMgPSBmYWxzZTsKKyAgICBGb250RGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24oZm9udC5mb250RGVzY3JpcHRpb24oKSk7CisgICAgaWYgKGZhbWlseS5pc0JvbGQg
JiYgZGVzY3JpcHRpb24ud2VpZ2h0KCkgPCBGb250V2VpZ2h0Qm9sZCkKKyAgICAgICAgZGVzY3Jp
cHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHRCb2xkKTsKKyAgICBpZiAoIWZhbWlseS5pc0JvbGQg
JiYgZGVzY3JpcHRpb24ud2VpZ2h0KCkgPj0gRm9udFdlaWdodEJvbGQpIHsKKyAgICAgICAgc2hv
dWxkU2V0RmFrZUJvbGQgPSB0cnVlOworICAgICAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFdlaWdodE5vcm1hbCk7CisgICAgfQorICAgIGlmIChmYW1pbHkuaXNJdGFsaWMgJiYgZGVzY3Jp
cHRpb24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09mZikKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0
SXRhbGljKEZvbnRJdGFsaWNPbik7CisgICAgaWYgKCFmYW1pbHkuaXNJdGFsaWMgJiYgZGVzY3Jp
cHRpb24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09uKSB7CisgICAgICAgIHNob3VsZFNldEZha2VJ
dGFsaWMgPSB0cnVlOworICAgICAgICBkZXNjcmlwdGlvbi5zZXRJdGFsaWMoRm9udEl0YWxpY09m
Zik7CisgICAgfQorCisgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGEgPSBGb250UGxh
dGZvcm1EYXRhKCpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uLCBhdG9taWNG
YW1pbHksIERvTm90UmV0YWluKSk7CisgICAgcGxhdGZvcm1EYXRhLnNldEZha2VCb2xkKHNob3Vs
ZFNldEZha2VCb2xkKTsKKyAgICBwbGF0Zm9ybURhdGEuc2V0RmFrZUl0YWxpYyhzaG91bGRTZXRG
YWtlSXRhbGljKTsKKyAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoJnBsYXRmb3JtRGF0YSwg
RG9Ob3RSZXRhaW4pOwogfQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFy
Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUxpbnV4Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1E
YXRhTGludXguaAppbmRleCA4NmI5NDFjYWU0MDUxOWE5NGExZjhhNDA5MmVkYTRlNmE2ZDEzZjhi
Li4xMGRjZTkwNTA0NTA1ODNjMzcyYTM0NzUyZTkzMTAyNTRjM2UxM2E1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRh
TGludXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250UGxhdGZvcm1EYXRhTGludXguaApAQCAtMTE4LDcgKzExOCw4IEBAIHB1YmxpYzoKIAogICAg
IEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRp
b247IH0KICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KLSAgICAKKyAgICB2b2lkIHNldEZh
a2VCb2xkKGJvb2wgZmFrZUJvbGQpIHsgbV9mYWtlQm9sZCA9IGZha2VCb2xkOyB9CisgICAgdm9p
ZCBzZXRGYWtlSXRhbGljKGJvb2wgZmFrZUl0YWxpYykgeyBtX2Zha2VJdGFsaWMgPSBmYWtlSXRh
bGljOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25z
dDsKICAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYpOwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGVmYWNlID09IGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ3ZjAzNzg4MjIyMTA5ODg2YmRmMGM0NDE3ZTI2MmMwYWM5ZGZkYmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5
LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRm9udEZhbWlseV9oCisjZGVmaW5lIFdlYkZv
bnRGYW1pbHlfaAorCisjaW5jbHVkZSAiLi4vV2ViQ1N0cmluZy5oIgorI2luY2x1ZGUgIi4uL1dl
YkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkZvbnRGYW1pbHkg
eworICAgIFdlYkNTdHJpbmcgbmFtZTsKKyAgICBib29sIGlzQm9sZDsKKyAgICBib29sIGlzSXRh
bGljOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJGb250RmFt
aWx5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YkZvbnRJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250
SW5mby5oCmluZGV4IDVkNTI1ODQ0YWU3NjRhNGVlMjlhZThiNTczM2QxZjY1OTAyNWI4YWUuLmY0
ZWUwNDdkOGU3MjYyOTNhMTljNzY2ZTgyMzc3OWU2YWZiNGU0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaApAQCAtMzIsNiArMzIs
NyBAQAogI2RlZmluZSBXZWJGb250SW5mb19oCiAKICNpbmNsdWRlICIuLi9XZWJDU3RyaW5nLmgi
CisjaW5jbHVkZSAiLi4vbGludXgvV2ViRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIi4uL2xpbnV4
L1dlYkZvbnRSZW5kZXJTdHlsZS5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00OCw5ICs0
OSw4IEBAIHB1YmxpYzoKICAgICAvLyAgIHByZWZlcnJlZExvY2FsZTogcHJlZmVycmVkIGxvY2Fs
ZSBpZGVudGlmaWVyIGZvciB0aGUgfGNoYXJhY3RlcnN8CiAgICAgLy8gICAgICAgICAgICAgICAg
ICAgIChlLmcuICJlbiIsICJqYSIsICJ6aC1DTiIpCiAgICAgLy8KLSAgICAvLyBSZXR1cm5zOiB0
aGUgZm9udCBmYW1pbHkgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSByZXF1ZXN0IGNvdWxkIG5v
dCBiZQotICAgIC8vIHNhdGlzZmllZC4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDU3Ry
aW5nIGZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVt
Q2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKTsKKyAgICAvLyBSZXR1cm5z
OiB0aGUgZm9udCBmYW1pbHkgaW5zdGFuY2UuIFRoZSBpbnN0YW5jZSBoYXMgYW4gZW1wdHkgZm9u
dCBuYW1lIGlmIHRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQuCisgICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgdm9pZCBmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFj
dGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwg
V2ViRm9udEZhbWlseSopOwogCiAgICAgLy8gRmlsbCBvdXQgdGhlIGdpdmVuIFdlYkZvbnRSZW5k
ZXJTdHlsZSB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgZm9yCiAgICAgLy8gcmVuZGVyaW5n
IHRoZSBnaXZlbiBmb250IGF0IHRoZSBnaXZlbiBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgKaW5kZXggMmY1
NzkyOTg4YjZmZjFkYzQwMmE5NDI1OWNmNzUyN2Y3YjhiZDIzNy4uMTkxOGEzZGQ3OWZiZjdiOTUw
ZDgwNjg0M2I0MWMxNTlhMWJiZGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCkBAIC0zNiw2ICszNiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgV2ViRm9udEZhbWlseTsKIHN0cnVjdCBX
ZWJGb250UmVuZGVyU3R5bGU7CiAKIC8vIFB1dCBtZXRob2RzIGhlcmUgdGhhdCBhcmUgcmVxdWly
ZWQgZHVlIHRvIHNhbmRib3ggcmVzdHJpY3Rpb25zLgpAQCAtNTAsOSArNTEsOCBAQCBwdWJsaWM6
CiAgICAgLy8gICBwcmVmZXJyZWRMb2NhbGU6IHByZWZlcnJlZCBsb2NhbGUgaWRlbnRpZmllciBm
b3IgdGhlIHxjaGFyYWN0ZXJzfAogICAgIC8vICAgICAgICAgICAgICAgICAgICAoZS5nLiAiZW4i
LCAiamEiLCAiemgtQ04iKQogICAgIC8vCi0gICAgLy8gUmV0dXJucyBhIHN0cmluZyB3aXRoIHRo
ZSBmb250IGZhbWlseSBvbiBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlCi0gICAgLy8gcmVxdWVzdCBj
YW5ub3QgYmUgc2F0aXNmaWVkLgotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldEZvbnRGYW1pbHlG
b3JDaGFyYWN0ZXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFj
dGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKSAgPSAwOworICAgIC8vIFJldHVybnMg
YSBXZWJGb250RmFtaWx5IGluc3RhbmNlIHdpdGggdGhlIGZvbnQgbmFtZS4gVGhlIGluc3RhbmNl
IGhhcyBlbXB0eSBmb250IG5hbWUgaWYgdGhlIHJlcXVlc3QgY2Fubm90IGJlIHNhdGlzZmllZC4K
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgV2ViVUNo
YXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJy
ZWRMb2NhbGUsIFdlYkZvbnRGYW1pbHkqKSAgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5k
ZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGludCBzaXplQW5kU3R5bGUsIFdl
YkZvbnRSZW5kZXJTdHlsZSogc3R5bGUpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCmluZGV4IDJmMmMyYTdlY2MyMDlmZDQ0Y2Uz
Zjk1ODFmYzRjZmUwMjAzNWIyYTIuLmJmNTIyNGJkMjhlODZjNWE2NDU5MDVlODcyMWFmNGEwNmNk
MzgxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0
LmNwcApAQCAtNDMwLDIxICs0MzAsMjUgQEAgYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmxvYWRGb250
KE5TRm9udCogc3JjRm9udCwgQ0dGb250UmVmKiBvdXQsIHVpbnQzMl90KiBmb250SUQKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAjZWxpZiBPUyhVTklYKQotU3RyaW5nIFBsYXRmb3JtU3VwcG9ydDo6
Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUpCit2b2lkIFBsYXRm
b3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUs
IEZvbnRGYW1pbHkqIGZhbWlseSkKIHsKICNpZiBPUyhBTkRST0lEKQogICAgIC8vIEZJWE1FOiBX
ZSBkbyBub3QgdXNlIGZvbnRjb25maWcgb24gQW5kcm9pZCwgc28gdXNlIHNpbXBsZSBsb2dpYyBm
b3Igbm93LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzU4NwotICAgIHJldHVybiBXZWJTdHJpbmcoIkFyaWFsIik7CisgICAgZmFtaWx5LT5uYW1lID0g
IkFyaWFsIjsKKyAgICBmYW1pbHktPmlzQm9sZCA9IGZhbHNlOworICAgIGZhbWlseS0+aXNJdGFs
aWMgPSBmYWxzZTsKKyAgICByZXR1cm47CiAjZWxzZQorICAgIFdlYkZvbnRGYW1pbHkgd2ViRmFt
aWx5OwogICAgIGlmICh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+c2FuZGJveFN1cHBvcnQoKSkK
LSAgICAgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW5kYm94U3VwcG9ydCgp
LT5nZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBw
cmVmZXJyZWRMb2NhbGUpOwotCi0gICAgV2ViQ1N0cmluZyBmYW1pbHkgPSBXZWJGb250SW5mbzo6
ZmFtaWx5Rm9yQ2hhcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxl
KTsKLSAgICBpZiAoZmFtaWx5LmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZzo6ZnJv
bVVURjgoZmFtaWx5LmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgICAg
IHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5
Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUs
ICZ3ZWJGYW1pbHkpOworICAgIGVsc2UKKyAgICAgICAgV2ViRm9udEluZm86OmZhbWlseUZvckNo
YXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgJndlYkZhbWls
eSk7CisgICAgZmFtaWx5LT5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh3ZWJGYW1pbHkubmFtZS5k
YXRhKCksIHdlYkZhbWlseS5uYW1lLmxlbmd0aCgpKTsKKyAgICBmYW1pbHktPmlzQm9sZCA9IHdl
YkZhbWlseS5pc0JvbGQ7CisgICAgZmFtaWx5LT5pc0l0YWxpYyA9IHdlYkZhbWlseS5pc0l0YWxp
YzsKKyAgICByZXR1cm47CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwCmluZGV4IDQ5MTgyZDQ3ZWE3ZjViYWQ1NjJhMTZh
NTkxZmQwZTA1NzRkNTFmNzUuLjBiZjg1ZmM0NjExNGRkYzA0OTMwZjQzMDhhODMzZGQ1ZjJlMGFj
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250SW5m
by5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJGb250SW5mby5oIgogCisjaW5jbHVkZSAiV2ViRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIldl
YkZvbnRSZW5kZXJTdHlsZS5oIgogCiAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+
CkBAIC0zOSw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJDU3RyaW5nIFdl
YkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6
ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSkKK3ZvaWQgV2Vi
Rm9udEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXpl
X3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJGb250RmFt
aWx5KiBmYW1pbHkpCiB7CiAgICAgRmNDaGFyU2V0KiBjc2V0ID0gRmNDaGFyU2V0Q3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpIHsKQEAgLTc4
LDkgKzc5LDEyIEBAIFdlYkNTdHJpbmcgV2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0
IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhCiAgICAgRmNQYXR0ZXJuRGVzdHJv
eShwYXR0ZXJuKTsKICAgICBGY0NoYXJTZXREZXN0cm95KGNzZXQpOwogCi0gICAgaWYgKCFmb250
U2V0KQotICAgICAgICByZXR1cm4gV2ViQ1N0cmluZygpOwotCisgICAgaWYgKCFmb250U2V0KSB7
CisgICAgICAgIGZhbWlseS0+bmFtZSA9IFdlYkNTdHJpbmcoKTsKKyAgICAgICAgZmFtaWx5LT5p
c0JvbGQgPSBmYWxzZTsKKyAgICAgICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOworICAgICAg
ICByZXR1cm47CisgICAgfQogICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIGZvbnRjb25maWcgaGF2
ZSBhIGJ1ZyB3aGVyZSB0aGV5IGNhbm5vdCBzZWxlY3QKICAgICAvLyBvbmx5IHNjYWxhYmxlIGZv
bnRzIHNvIHdlIGhhdmUgdG8gbWFudWFsbHkgZmlsdGVyIHRoZSByZXN1bHRzLgogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZm9udFNldC0+bmZvbnQ7ICsraSkgewpAQCAtOTksMTggKzEwMywyNyBA
QCBXZWJDU3RyaW5nIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IG51bUNoYQogICAgICAgICBpZiAoYWNjZXNzKHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNGaWxlbmFtZSksIFJfT0spKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgRmNDaGFyOCogZmFtaWx5OwotICAgICAgICBXZWJDU3RyaW5nIHJlc3VsdDsKLSAg
ICAgICAgaWYgKEZjUGF0dGVybkdldFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1p
bHkpID09IEZjUmVzdWx0TWF0Y2gpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNoYXJGYW1p
bHkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihmYW1pbHkpOwotICAgICAgICAgICAgcmVzdWx0
ID0gV2ViQ1N0cmluZyhjaGFyRmFtaWx5LCBzdHJsZW4oY2hhckZhbWlseSkpOworICAgICAgICBG
Y0NoYXI4KiBmYW1pbHlOYW1lOworICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0U3RyaW5nKGN1cnJl
bnQsIEZDX0ZBTUlMWSwgMCwgJmZhbWlseU5hbWUpID09IEZjUmVzdWx0TWF0Y2gpIHsKKyAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGNoYXJGYW1pbHkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihm
YW1pbHlOYW1lKTsKKyAgICAgICAgICAgIGZhbWlseS0+bmFtZSA9IFdlYkNTdHJpbmcoY2hhckZh
bWlseSwgc3RybGVuKGNoYXJGYW1pbHkpKTsKICAgICAgICAgfQorICAgICAgICBpbnQgd2VpZ2h0
OworICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihjdXJyZW50LCBGQ19XRUlHSFQsIDAs
ICZ3ZWlnaHQpID09IEZjUmVzdWx0TWF0Y2gpCisgICAgICAgICAgICBmYW1pbHktPmlzQm9sZCA9
IHdlaWdodCA+PSBGQ19XRUlHSFRfQk9MRDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFt
aWx5LT5pc0JvbGQgPSBmYWxzZTsKKyAgICAgICAgaW50IHNsYW50OworICAgICAgICBpZiAoRmNQ
YXR0ZXJuR2V0SW50ZWdlcihjdXJyZW50LCBGQ19TTEFOVCwgMCwgJnNsYW50KSA9PSBGY1Jlc3Vs
dE1hdGNoKQorICAgICAgICAgICAgZmFtaWx5LT5pc0l0YWxpYyA9IHNsYW50ICE9IEZDX1NMQU5U
X1JPTUFOOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYW1pbHktPmlzSXRhbGljID0gZmFs
c2U7CiAgICAgICAgIEZjRm9udFNldERlc3Ryb3koZm9udFNldCk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBGY0ZvbnRTZXREZXN0cm95KGZv
bnRTZXQpOwotICAgIHJldHVybiBXZWJDU3RyaW5nKCk7CisgICAgcmV0dXJuOwogfQogCiB2b2lk
IFdlYkZvbnRJbmZvOjpyZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGlu
dCBzaXplQW5kU3R5bGUsIFdlYkZvbnRSZW5kZXJTdHlsZSogb3V0KQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE2ZTM2NjM1
NmU3NzViZDJkOTVhZjQ1YjQzNzUyZTAzZjhlYzMyYWYuLjhjNThlNGRhZTI1ZDFkZThlYmJlZDI5
MDk3YjBkZDk1OGQ2ZjFiNDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0wMyAgS2Vu
aWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBkb24ndCBjYWxsIGZvbnRjb25maWcgdHdpY2UgaW4gY29tcGxleCB0ZXh0IHBhdGgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzAxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9udCBzZWxlY3Rpb24g
bWVjaGFuaXNtIG9mIENocm9taXVtIExpbnV4IHBvcnQgaGFzIGJlZW4gaW1wcm92ZWQuIFJlYmFz
ZWxpbmVkIGV4cGVjdGF0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2Zhc3QvdGV4dC9jZy1mYWxsYmFjay1ib2xkaW5nLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3RleHQvY2ctZmFsbGJhY2stYm9sZGluZy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwva2htZXItc2VsZWN0aW9uLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IE1hcmtlZCBmYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9ib2xkLWJlbmdhbGkuaHRtbCBhcyBQQVNTIGZvciBMSU5VWC4KKwogMjAxMS0x
MS0wMyAgQW5uYSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGVz
dHMgZm9yIFRleHRUcmFja0N1ZUxpc3QgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3RleHQvY2ctZmFsbGJhY2stYm9s
ZGluZy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9m
YXN0L3RleHQvY2ctZmFsbGJhY2stYm9sZGluZy1leHBlY3RlZC5wbmcKaW5kZXggYzAyMWVlNmZm
NDA1NTNkZTYyMTg3ZTBkYTYyYTg3NDQzN2VmZTM5Zi4uMDQyMTM2NjdjMzg1OGVlYWVkYTg2MWVk
MDE3MzA2MWJhNjkxODNlMSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDE4NTQ5Cnpj
bWVJYWN8NFQrLSM8PjklOD9lIUw2SjZGbWFOJTNxe1coSz57TkRRdmhQRXNscUhvZGR5eEBpLV5N
Ozk2antnRQp6OEI1NjZWPVFDKXpOVH5UJndiQVF5WUtKZ3t7SF57Y3N6PDIqSWRfb2RBKis3eUJE
YEt1UU1FR0tUSmJJISpLSikKeikhUV5RZHIjQlE/OW81QzJmb0ExI0xOU3FfKl8tPVVDbkpRJkZ4
Kj45QjN8IU57Tl9EaD5LWlJTKD1OQU5tX3xXCnppQXp+WmlifFZITkp2fVc3bk52SnVVKF58SVpi
byg+S31KSjZYdTN8VCR2fXt1UHlQTTNweyU4KDFwOWxQb0tRdgp6SUNefUsoc15Ua2V4LX5PJiNk
fnImejxHNjlVTnhmNTFLbUpoOFdWKk4zIXFOZW4lVFpvOWBAcD9pZWViZSo1VyoKej1LfTcoSkVV
PiY9KCQlJS0kY0UtUVhzYSM8c3k/ZlVwNT10cj9zYlBaSkV4I0grRCo8Tz5WUHNJNm0+SGl1T0xa
CnpAOSh5NWd8aEhAKEx1UWU5X0xrUHo8IyhmSGQ9WmJuayVBdlNaSFZoRWNSVzVwTU8yNTR9WlRv
bUlyXklKQTBSdwp6aFVVaCN6eF9oMld6RklJPSl9WSFFWWdneEM3ZXlIZncwalV6ZEJQbWVZVW9Y
YyhTc1hHY09Xajd3PmM2YVZ8MFEKejBLVn53WlJfMEYlM3dsNylPNFYya2k2QDNgK01henFROEhJ
YCY+JERze2QrWF4yRjI+OVVnUEtxTn19SzFVWHo7CnpgcytpQT0mTiZJTj4wbSVLS0NBPDw5ekY2
OzFzNyFyUGZnUSFVcD5nTUpJYntQPFB2OzUyS2ZSeGBLT342UGNlYQp6RF5tYVg9dloyZVgqcGBV
KyZoYWApejVFeFloKEg4KEhBZFhOYlpsPD9hNDdZQnt7ZGVAJCNoZm5aUGcyJkd2UzcKem9yPSEw
eV9kK3hRc1hhKypTR3Z3KnxYWTVjdm5mVEVnUH0hJT93JnZUNTQhQ1Q3VD9xLSNXRT9PMkpxRXB3
c3MrCnp1TnhZIW02P2JwdlQpNHc8WntXbiYlUmQ8QkYpUytII2g2JG5odzJKclltIyNrKlAre2Fg
OCkzUSlYc25mMm9zcwp6dTQmYWRjamJZak40T01ibXAya3ZBQjsqfHRaeTBXT1IkO2VFWUJ0YE9P
JXQtNGFkdGMmST9WRzZeKTdaWGJlalYKelo/TnFtYHtqb3RrTWAxYVJZeyF0ek4/QUoldyg2YT53
MTBtYGs2Q2x2Sk9qUDtRY0c/M30/eihWQXpGWXUtJHYzCnpvcGx7dCtPOH47alI8IXNwM1RPJDlK
S2YyNlNrWEh6VWpzc3JsPEVgdWpBc0JeU284SHEtJFZjeiRtfSs+VGA3Jgp6PkdzPEVrWEV3N1Bg
UjV1SHY0amQqMCR9RGtmS0YpX2h3Zm5ERyUkeShZZktKaGxRbnl2fjR7PHE3Jl5qN0J7MT8KejZg
aUNeaThjQjg1NmBVMT9WXiMja31mK2I7bDVfVldOSVpgP20lbUJ3OVdBYS0hP0x1RGYxTjNBUlo9
NVU3dyo8CnpFNlhnQXd6fWZxQCNOMSVWS25qPk1KREo4XzlZblFsb3o+OWNrWldXU3N6Kl8/KFZF
aiUqKkRLeVk2Z3hHME51ZAp6cX08P2hLR0JtV2ZKbjhPa0Q3S2NVdnBwWkVHXjk7VkhNNWhRMzZq
ZlV0PGMpcSQ+cjtyd1lzTDFsX3wyeTRzRVAKelREfj9MSHtiKTBLN0lQTUV7SEthSU17b2tZT1Ja
SWhEMXY4OUQ3bVhGbVF4WnVKcWx6OHZWQVA2VX1HT29JJEl7CnpyWGIhJU1HP31xeEt5K1kzSlcq
TUdhaShjWGBsSHI5KTVtT3FRfGd5OCtgMXhkUV9qXzxXI1YxaWhUQyQwSXFmNAp6Z1Z4TmN7KE1e
b3JSUDtYWVpyS1U4YjUhb0J6R0g7cDRjKCFXJEFhNnhsQzBvUjFmSHY8bUtIO1owanF1I3glWnYK
enw5KS0mWVgmUHt0VzdSOz1WTU5lQ2gtS08hPVgzdDVCYzVjXmtmOCtpYUBwM141cG1MLXp6SUNC
T0BjZmVFSVYyCnpvQkMkK3NGZENLeTlaV1JXYmZoODhuNzwmXllhRHRhXyV0SSpOSlFrbTFgaWtg
KX1fb2VRQDs3aXQ0WlFhPjFkdAp6YD8xS31SLTskdUpeUEZrOyYhJC1GQDhRUDlvTXQzTyp2JXVl
K3lgdmlrSjBwYmFpJDBfMSVKZCM0T35zNmxFQ3sKenFPWFRALW4pMHRxfTxoT2F9RkVVYXtsfnpg
MSkmK1BqSHtmLUs9KTJhYGclZU1YYHAmcnFVYmdNa15KKGwwfFYyCnohR25WbTU1Jj9NQ0xkZklv
eDY3SDxWQjl7RXF3PHdGOD9qM24mJDZ8IXlQZjUhYW1+fnFZbj9MVFh6eTk0cUlodgp6UjUmRUtW
NGhrU0MjPHJIdVd6Z1I+cnYoK0NAcjxRPF9HfkRpdX58VEJQXyFMdCRANklSWThGJDQtYiFtZn5u
dWIKeikmJUw5P3Jjbk1aZCs/PmxFfVRzYEFKN2skdVAwOUJLcnpkdlBIUEx8TH1qNmx3Xyl7e1c+
YSZuVXlzP056cnEwCno8bEREentyJnc8PX4pa1JfbT88ZTdTd0FkbkxfO0M/RytgbXwyWCh3KCh1
K1Q1JEVxOzchfGl9WC04QCUke2daYAp6ckQzSkIzTl89PHArbENJbVpVPmFJYXF+Rj89WW5tNl5V
UUV3QTIoT2ZidUozUGkmaU5aZlE5c2E8XnVwSWZoeHEKeiozT1I5b28hQGxZQzZATGAxQn51T0lC
dGtLUi1YYXkhUSV4LSQ1dmRERUIqXnJQeTlsRXp9QjUmeWh6emZCd2BgCnorIW1MU0BvcjAhPVhe
SHAoVUkrSy07WiF8JTE0bHB7K3NialV1fmdTbkshLV48bWI9SyVEUigmPX1XJS05d0FOSwp6Z19U
QjVNfjM9WXB+QmNsZFMtcyk7dlEyQjJHamlJJWE0eEtwejFuRntGfShnSkdYQ2x3enVhWWlQaTNO
e2NRMnsKejM9SEpXcWk9VF9FKUROKklHbH1jJlF6bmR6TlJSTTQqOHJ9QUpGIT0waVg0MjNNSD1L
fEh+OT0zUG1qWVRvKl8pCnpUV3lIe0gyVH1WZ3F1OEBwO0gtPmIwdG8jKihgNklvWFg0N0U5ZGtZ
SGwhU25wZ3FDfXVDfFN9I0JvOEsrclQxYwp6VWV9WGBoNlk1b1ZNWmU8ZVVJK3oqUkxEQURRZ1Fq
PUx5dzBMUkAqZCV1O3hHK2wpWmglZD08QzVATThkT2UhU3IKeiozalY0ZG5LKWpFKlNPfG8mLTVC
PU82OXdRU3dFNnZNIVV+QjwjQytnUHFxR01fO2A8RGlJKEl0OCE7K3FvS01sCnoren4jOXVuSHJY
RU1Yezl1WkpVY21KQmg3dHVMPzchayUwZU5XK34ocTs/LSpldDYobzdgdntxYVRjZXdnfmV8dAp6
RlNxfk5IQGU4fGVvPzwye011cXloN01fb2ZZSG18NlRTUnZzNCo4Umh1REopaHB4LWM0X0VuRVRC
Z3xzRiVRXmcKejxtUT9jK3YoY2JXIWsjSDdLSGk2RHxZdHchZG0tLWAha2VrY24rKEo2TUY5bnRf
RSY9QmowYClpSlAyNTJwO2ZkCno1bF56eHtYVXM8RlBAS35ILVReP2skQkxNPnBec3c2RG84ZENa
aFRLKV5KQl8qSShPWVB3UiZXemxOTDJYIUNwJAp6aklfcDcpOCZudmN8UFEzbCsjWF8pQHc8UkZi
KTY1eEpEej9PdiRrYUhKd35vVFlOKXgod2pHTDhvQiV7dD1wMnkKeiVGMGxkOFVudG5lYiMxUDZI
JX1PVjE/KURxLSMzSClBemRJVlFkRldvc19wbjtgOTBPMXBgPVF2YmdQPTZrYWlfCnpaKk82YypP
JGhiUm9LTEJabE9Ac09CUzBRJSpAUT5YPyVKeyMmcE1aRjJYUnclMW5IQlA9TUJQI0ZLKkxNfmpQ
Iwp6e3IhZ0lRWilMU1kjJXx5TDh2XlVXSHZiZ19MfFJsMUglaCpEWnc5aC1jPntGMm5pJEktYFV5
aVQrb0R+Py1MVVkKelRuZklVcFByXmBDVzw7WntgfiVSZFV7JD9WbHpyS3lTPUNtVmQ5S3BYMzdv
dT82citoYW08akkmNkxLZDhWPzwkCnpqZSlWKzw3aF5VNnh3N1MrZH04QHJ6SmxNNVMjd2FFXllo
OF4mKSE2OWM5aE5Mbk8jZ0lOK1J9OH5jYjdofmtATgp6allnZ2BDRVF8bik2aSU7I3ZDKTthQXdJ
K2dAP3omQEtBMSs/YkY2XkUtZnsra210e1QzfTY+cDZKX1BhVmVMYEoKej1jSyYlOVk1SlZ7VjNi
TV43OFdELXJpNTJKfUxON2pCek09WnRpPXFHb2g8VSZCYnMzVXtaO18+QD9QMlk9N2QhCnozNChD
KkUmdDQrRFFHJTtlMCZZSlg9N2ZhWm1vKkZpaUBLeEhGOUFacGBNSTRnZXtBeE1AXzRFYlZlVWwr
U0Z2PQp6NCYzb2toS3M8KHQmeyFHb08tJnR3bWhEazZ9R2hfMyU0MlYtRkExaj56KjtfVChta1pC
LUZiOF5heVF3OGNaLXIKekB2e0l3emRHSFVfO2AqfXJ+Q2xHVkIpcV9WLVlxb2Q7YzgxMGhReDw3
KH5McGl2Kz1mWE5sc2g0P3BCTTFfbUA9CnpPSDFhZXpyUUshLVlgJlE/djArLWN5QkdYY2xGbThL
S09FKDFAQ0F5V1lGO1JMI0l8WCM7MGlqSEw+LXd1LXJiJgp6RjJYcSt5ViZoO3d1WkItdDd+T3JE
bWxifEpNLTxFSF47ZkorUytFTUBJcnhQUXU+RyNrbFdvX3coclR3JmRCSj8KenlaM34wSUxKdlBV
ZWJZfG0tbCZDbUBkPUFZK3M/JF5GciZrJW1wQ352dVd3V0tRTVZfSU1oXklhIT0xWTdIekh+Cnpx
fmA5QmwzaU9eX31sSncqaFpuRHA+YzY+an5fb2ljSmBXdXdZNU83XlpjTVJfZjxjP0RnO2g8Q1J+
MTFBRjZKTwp6TihoWGV3Mkt2I0paUitfUXs1PW47RkpkZ0M0eShwaktRN3VYcEtOdSVmdypSKVlR
MHE3eWxyODg8YHhEJE52JWcKelFpJktlSTVAfkQ/fG85dkdjUE9hMGpWcUZgcGM2YEJJPnZoTX1p
VGlXV0lGI1drTnppUTxFeTB7enRqJWJqcmVMCnplRiRxfkQ0V1lqJV9GIW09O3JqPyRCIVNFM21A
X25lODdAIXM7fVEkP1lEWDAkaktqYi1SPCtEPGwtZiRmOCZrZQp6WXR3a14+Q1FCPypnTWBQQ144
OyV7UyhVQEtiTXlZJGQ/XjU1NXhwN1VBa21jQF88aUooNF4jbjBTMXZ4dHNzQEEKeiRtJEklMDEy
cXdPKEg4WnZ4S0NpWHw9RHhDZXphO0FyWFgpZ2JCaT1BZXBWVzk/RCYmelhZfHkqczwxTXo4Mi1B
CnpvWDc5JSh2d0deJCZNPnplflJVKFVFdj5TM3ZXVmg5YD1raTkrRVpXK2IpbkFXOyRZQjw5Y0Nl
VU13bFN6aTBzTQp6OyNraTdKQ0VZWGVnPGI7Q28hc2ppJGpYZXlpcntiejJafU85eT1lZjJpS0pg
d2YydGE8bU57SHt4emJtdH1mYHYKekRMYWFuNHxnRD8+TTFFQVV0fCZVdTxONkN6Z2NRWjNLYVpf
TzZtQnhJZVdtQEZ6RUQqajlORXVfVGAlZ1JoS3ZwCnptRGBleWlqIWh2Kl5WOTRIWnslUlpHIUZ5
KlB8fXhLVzkhe1Q+Uj5fWWV+e0IqQXpjODNuMVdZWGtvZ1czdiE2VQp6YlpaJTJ5IUpYRiZ2KWJK
K3FaODYwfFBiVUM4cV5rNzFTe3leTGcycCZDJGo3SiZ3SjNfZWtfc2ZOb0p+KSQzeSsKelBgTiMo
SjF3RDFka25lN3BqO2dyPVgpR0I+b2NWTUNAVXtkUTdpaVokcFkoZWh9I2hCbjd5TzVYWiR6YjtN
KWo8CnpCeC1CQGBTYSh7dGdDbC1IWEV2QUhQeVZteSk3KWhLUjxSaCRGd1JnQXdrWSMtV2FkOCtK
b0M2enJNfnt3JWpVUAp6X3Z6RHBiOHtaZWdpQCNSWXRXISFwMlNTaENlOHxDcV9ZaHdfWCNRUCtE
c31wKXpyan07NjQ0d0RxRjNVRllKM0EKelRvOT4/P3FfK0FNMjhXI0s1bXVkMkU9P04/WmVOPE12
TU02T15MPi13TkwwMnctKVBLSVlkdXwqa1UhTjIzLVkyCnpHKkxENXtVPGwwUkJfVjMlVVlGLWxJ
cyhWPkdBZEVNRVArLXF5I2dxTTYoQm4+ZTU3dlMjKFRISUVSJHghT2BVbgp6JjRrT1pxb1l+QWRE
c2x5UDYlfmArTSpWSHY5SD4lViljZllBTTFJVkZQNE1WKXFhM200bHVCUHNGdkNEYCVwUDwKeil+
b1p3T3tpJDNuS0p8ZSFEbnFnUVFXcShXajwxel9JZ2l5YChndEphJSlsdypUS21yQWFGd0lXM0s2
KjhvfW1MCnpLUjx5ZzchZUxCJEk4QntuKFVjd0tOWEFSJHJnQXdZMUVkZHh3JCMpUnp9cH42SUxf
ZGU4NHpUNj11JTg7ZmBOawp6YVlNN1FANlBnQ3RmZWJIKTR6fmZXaHUtP15WWlI8I15GYWQxQ0B+
eVooLSsrMClLdCtLay15NndtZDMrVSFCOG4KelFpLVkyOTh7OzNQNEQhU2xvWTdyYTcrNWQlcGJV
UjdLMzdoT3FgdzNwUll+V2VTTFpKTDk+eD1qX09uVzJuQWFQCnoxX3JwLWtZNjc8eytIXnJZcFY3
NyYlSkhFd3h8Pk5peTxXNndhZkVwOSk1JClAKXEhJEBhI29CIUxkQ1ZUOzZ1bgp6TGgyZzApeiRw
flQ8V15KeUBzeyM1dDVPaVNTeE5DcGluNTBEKDhYb1EqRWxsaFdUYXNqI0gjfkglOFE2ZVpQN2kK
ej1xMyYqKCZydkN8TGsxfV4tUHJ6N0x9YDQ5fXVmZWNKSlE1ZkIlKCh0dDRfLSZoXkpGdlItTCNO
TypWKjtpS18hCno+KHVpREtUR1oheUluY0IpVHQmcz9YVHpmQTVeIUskRCNKfGUlSnVJeTFNWVI7
QGVlTFFjd01JaWA0RlYzcURSeAp6OENsIXNCVXR3SGlGTlUjIU5VVEwxTH5AUyVWZ1lDI30yRUEm
eHJlc0RHLU89ZH4/UUFHSXp8KCV3VVZ8PzY4eXgKenZ7YjlMQ1AmU0JtMWE0SDM+SWpHNU59MjY3
P196WVNmbl8jZGFhS0pnYGJrMFRwSm5rQVhhJVVqcVI/Nz89SDRTCnpEKzNBJW0tfjY2MkxEfT42
bFAwal98RHZMYH1ufDVMPUApcy1VR2pWJSo/elVVVkl4RUdvYXt6bTc4aitzXncxTwp6JnBzYmMl
VWcoJkpjS1NodyNCcGAkSjNrYUZFSUZ+KXF2YysrO2oqdmAkeX1DNj90NTI0alIrSiUqMz5eS3J8
YlcKengmc1hTKWNgaVkjQ2JpNyR3SHUoYjtEfXQkJnNQWSN8KX1mZFZ6eyFeZVQoWVYlRz9JVyhM
Zn1MVGZGazF2PEJICnp1UHtROUt8fGVObyRYOFotYFJsTHY4UUIwIV9kJUJVSHUjMnhMR1pGd0Qk
SG5QYiYhQFhZMENabE5Tek5tP3F0Zgp6NkZpejljVVFWWFVjT1h0OFZnKnhEZUolRTMjPz9LbkB3
KWgpSGRSLTNgZWNqPmo/Ry10QVBQaSMxKjRYWDNWZysKemsra0RmT1o5Oz1EUlU3WWwqPmJqQC0o
Iz1BXnA0PkJ5b0xiNFZRYWtgYE8lby1uP3pLUHV8NEJFIXs7QSNIfE9QCnpWa2tQfkMjPEJpJWB3
OF4mITR7KXdHNWBEUW1JXiY5T1h3VSVGX0RWK3RJYmpjUFlIRXZ0bExlcWY+WnNUTkE9awp6NHwr
Iz41Y2xxbEV7QGhnTUlRRTlrU0VzeWpOd1cwT21QP31jfHltQ0BQRjsqPyhQbkE5VUt3QFU1fH5L
eCE5WGIKemZgfEtuTXdjTG9KM3gzbD47fXIrV159YVZFb0RCbyM3bkojKjVKM2YkfDNvbm96ZWdB
NDc3Xz0rYFo9VkEjYn1pCnomMTQwP0h1PCV5RGt7P3o3Rms1QVJkczlnbU4qSUVLbkxtUlhGQWlH
MmF2ZUxoPV4xY0o+cypza2A4Zns5KGImSAp6Y2NieTFvVndWeGh+KHRtIzA2Zy1JWFR+Xk5JdXd2
aEZGM0R2eSRCUTNPK2JSWnV5JVMkeEk0NDM+YFRrQ01FezMKejJPQz4jWV48JGZaJE4wb2c1OUJQ
e3JuVntzYTZsN0E5aDswZiNiOTFNbllGQS1eR2h9P0JuSHFPMXd8OXYtZC1ECnpoRG87NXh1ZDZO
dHZIOU9gZjA/NyFyJTl7cntgWHNBQnM7JUlDPGo0YTw+dUVIYXMyeTRTS1JRNXVudjZGMFM0QQp6
aVVrc2V5eTNleDxkSG1tO0p6XmQ/R2E3YjcpR1FuTVQtbUdtcE95eT4+dkRzO0NMPm5jdHIxfCoj
eDVFUU9TMHsKej4mLUZzcmxJOSptaU1TQXlUJTRnPmNUVV53fEY2d3N0K0dOITBmWWU+OUgtYEgt
R0JMYGg7KzlLdSY8fkNIQ09CCnpDODZ5Tkw3d0JgNk5tMH1tMm9ZTm8tM01+RlE7N3MzRjhSKWw/
dD9eSyp8MW5OQSFXMV84WXFiRilBKGZZPnBPTwp6LTdIUHZtR0BiI2RecX07X35oKWgoRG04RUhZ
U3o2M1hnPzRNI2I0NDFvU05jb3w+QVB6UF49fGtweVdNWHR7YzMKelgzMj8oXjdsVU4lTkFvfVZ+
ZEs0O19fUzNaaFV6UGtIX2E0bWxlUUJtWD09NUUqVHBldEMlbHU/IX1sP3hRQ3NSCnpFJjJISVY/
bHY0QWF9emxzMVBlUGRsQDVSVipEeDc9XlkmJUtDODMmcT00eWpIZUteKz5GSWlSP3BSbl8rTHt6
KAp6Njc2NmVvYU4pb2ZHMjxke3ZOVH5aPzM7c2hiZ1ZIYV9mQiVDbT1LVWB1JSV1S3x6Z2UtIzUw
e1pJWHhWR1VAOyQKelhGX2JPZnNxa0wofG4tQmZzcEJ8VkNMdkpBMyhjVCRnQ1E0SnNsayN0bTY9
blhjPj9CaS1HIU8mWCFRXnc2IX5jCnoxakcwM0BRKHUybExyIWhgdjlDcj17Yy08K3g7NEptfFd0
QFB3QX1kRjJFTjdKYjwhNSZpKChnZHJoPG5RREVIcgp6KjIjU3IkKGN9TkxRaEtuZ249eHxBVkM0
fm49OUBpa3d+SlZxVFZZJS1zZUs7Qz18MTlINzw5fWtVV1hlR3xjd0oKekVMVVk7OHlCPVN7T28h
YUVuaWdySSRRRm5VTDdgYnV0P0hqdnpZKDkkQXlYYzRZVn4yRTMxOUA/aXx0fHwxd1BQCnpJKnxi
ckRgaXNkNGJsKmJZWSNyPz96cVc9dG9GSjRkMnRwUD4rQGp8Zn1jRE0kYn1ZZVpULWwrbWhCPiZ0
JkN+Kgp6Sm54cnpVaEB4MiNmLTloUyZtLTVufmBEUV9yWlU2MmMoQkMpQklhbTZgWSkkXkp7K3Uw
eDZzeXMqc1k5OzBxcEcKei1oaDh+Rl59dE1LP2VxKSo9MF52aj4tSjs8JVd1T21sUjh9NzxyZXt2
R3lJZiU7QE43Z0p+R00xVkd8SElkU29zCnopTjVoPExQQ2dlRjtQKUt4SGJlQHtMU19zI0Z9bzh3
b0Z1ZmZNbyhoQHMySkFMMWtHeVRhK0ZnTFVBUHo/cSp8bwp6WVFTfSUyISQheCh8d2VVRSNwODEm
O3kzd01RVTwwO1lZJXptSE9JfHV5I1dePHFiQylMK1Q4ZCZSJjFIR0N3cWMKeiUzRD82OHkpZkpj
U1ZjNEdXeSVuPSROKjleNGA+O0YwPXx1O1NGTnNJJiRjY19VX2tXKlhpM3hSP1NPQmpIXypyCnpE
UmYjJWE/O1EhPDFAPVc3RUJFY1lfc213MlF3PV9gJVQoK0p1ZT8rRWBTZ3FsNjtZdjRvfGY+bVBA
QyFZZUhyYAp6JmMte1EmVXVFXkV3Z3AjVSR4aDUlQ3RwX0BwLWZ7bWcxKHZlQCN0JXRRNzI4S259
MWNybnpoJUpkcEVUZTBPeEwKej1Gd2dYNC1AOV9ra0EzbCVAU2AhQ3ctflBANF5eVmJrQDg5P2hH
biEpMyMkSnkrUHRHYFEqTGohT0A0LUM1QXpRCnpyeWx9VzJTcmJBWE1HJT1gZGRwMmRHbUdoO15J
VHtBXmx+X09tMnZPdV5vWm0rPXd6Uj5Db1QxKGxvaEZBPHYqSwp6VmZ8eD5keTNBJHRQfmQpbGJr
ZCghVnVqPiRIJmpAbkAhVCkmWElmdkleayR0a2cjem5SbTEzaWxJKnR7T1IqWSsKenVmdERELV5i
NGRrT2R4RG5KKUFKem5xQkR2JE1DU1ZvNENZSGtnRyQrUWdAOD5GRDU3IXhie0NRWlVGTDRQaE1V
CnpoPjxOI2spJnlkTCg8WlhxWjlPKFpVMWkpS15eO3dVfGJIfTZ6dlRCPmFrPFRCejIhWWRsdUlY
UXJyJjRZYGZfbQp6UGQyKnNaLWYzaUFfUX5GJGwpfWkmUG1zK1g2Vz10O18pcU5wKXtGOEI0I3c/
Xld3YmxYJjVRNXBXanpqVDtxWSQKel83TUA5PHJXZk81cEFtOHdBaDIyUVJhJDQ0WW1EQFNJNil2
K3goKTUpfGpiLSt2NygoQ1h3bmp4OTVoZERnZEZQCno2KzJmKmdxZCUjVndDSUdVWV8mPFg9V31M
MDNwYm5vMXFUVjtaUXRePjNWWF9rUz1KVjZBOypHNURwZG0kfDs7Xwp6RFpFZmRsbiM+UmktRzhk
RUFIc35SUlRmKXV8KUZKdCFiVj0rVSFvRiRyYiRwLW05fTJKRj9KUG1IYTxKTnp6UGAKeiVjdSZx
QVVlY1RxT09TTGRUZ3lQNiVgYyRlU25UTEtVanY+Q3d6VyEwI0lLMytxV05FXkMmdVZsMHB8UnNe
N2VzCnp6WXI9UExAT3xJK31aaE1Ue0cqJFBBRHpGQW41N29IJj49endrYyQmUWMhcTdFRSk3LXBz
O0I0SlhzRUtUbHR8KQp6Ul5+ekkqNE5qdz9MTWlaOylBKmROPzVrT00maHJncjBWfWBhc09rUz5H
eGZucUV+TjlUSlY/ekBEUmtuZm1YPD0KemooWDNEYWpfe0pXfTFuYF9BXlRXVDd4M3F1LW9QK2Fl
SCYxPjFJc1VnKzd3T1AybXhpZHBQSVdzckpqZzBlZkdRCnp8MCtJU0ZHYyhZTV9ZWGI0ckJxSktn
YHtsdGVESDBBbiR8Rlg1IypnKWAmbFJfJUoqTzBTfklsPmZDXn1ANUpzYAp6cDUoNCEtZlJyVXNN
NkMze0QkSlo0Qm48TjR5cE9fbkgoJDtSWig0Q3tvJXZhZ1c4Nk1uWT5ORnYhNU8lZ19PNGAKej9y
dVJqMCsmWWVMR1Fhcz9feDFoRVVTPWxgJUI9SlBtaDgkWjhyZnBTNCZ+emdWUVpRYDZvZmEwXzB8
QVhKXiV4CnpCcDcoKCMqSkd7PWNTfnVBWmdQdmEkWGI9en5oKUtXYERJUFkmM2FEaHdpPkVaaEY/
QjxyKk5xWGg5PVlITUpOKQp6cXdZKnkzPjJ4MURjc15HYFlMYTdye1pYPXlPRVpDJiZJZFM+N0hD
NylHY3pqNGdJejQ4SVgjPmhEcXxAQHRXSm0KentyUjZOTHUoTiFBUGtMMCF4ST1FYlhzNCRtKXZI
cFh4czI4TERvYV9wdGhNQVFwfClUNGZtejFCfnM8OU54SX1jCnpvOE5kX01+Nzk9QEI/b1hFWm00
VVo9IXxHPUpPOFZPeGIjIzVhbmspOXg8czw3MiN7d3U0IW0he1BELTU5YSlsawp6TyFxKFoxZkJ6
S1oqViZsZGxoWEtMQm99dyZCRjA3d1EtcippMGJLJEIpdmI7JUV7TmRqTTxKQjc+M1V6X09pQEQK
elNFPT9BR3RCTWQqMDt4IWEpJjtVV0d7ej5nQEd1eGZLUEFoT2pCYzRESTAkJj4rSX56RkNhaD16
Q1lLUTdCV3JmCnpAVGp3ISV5dzYpMChZKHVtTTNtXmRtJHRebjROPHw3K1NPNj9fV0d3SVJzb1Fl
KmQrOHpKfEIzLTFHaU5fb0M/Rgp6Q0dKdzdFU0E8S19Td34hJkA9fn18RS1JVGZWOU82WkxDYj0w
bkx+Q3RVMlB3SHJFejxie1lkSXsmYXl5REtSWTYKel9yV2pAYHxvYX1HO0E3eWkkP0hoOWJzaFRs
NXpiPV5qfDJETWxlbV9jNGx6dWlrY1lTQ0xvcF9mUGpRZCU0WX01CnptVUFsUmAkMiU5dGI7O2ll
KlpwKkhjKChjQnREPzdoMk1FdmRlN3IyOFgheChTeUA+RHcqfS1UPDBAfG5YPXlMbQp6eXJkMklQ
JiZBKypyOHNMb25BY1NKR21Yb0V9PCVgJGpAJl8ka2F1UkpKe0dmNC1NX3c0TTd+dHpoNTU9ellx
RWkKelh9MmZkbWFlbjJHYz02QysjeG1QZSNtWDZ5VHooSmwqfVFWOU5gQCpEa2NWfFEmO1pFTEdh
dT5Kdn4pYXA0UEUlCnpkMFFHWWV5WWlSMks1fjMyU31AdGt4VUt+QHJYMkRSUmU9USZ9SEZ3bypn
K3crMVhzISlYNEkjVSU+NjYkaCVUTQp6SG5RI1RRQXFGVkRGV3xyKmJsYkgjLUM/LStZbkNGZCsp
dGVidUVWPE9Kc09aZSRNX3ZjS15AM0RHdG5XcjZSezYKeiF8aT0qMSh3YVF4cXZLKWtraklfdk0l
Qj07fStEM1JyS0dVRzJgPDN7I3RnU1F0YVp6aTt8TT1XMW45RG1Bdno5Cnp7KGsmRyg+KjgrMkRA
M31ve00qSnlPVX04ZVBgNXRRdkJPZE4zeF5DMnY/WUhZSzVRYEJ+MTJ5bnc5PUU+NGZLRwp6JiY/
bk5KSjUwbSpTOCQ0XnhzfGNQWC10LXpjej9oQ21UdC0mLVNWYlJ9fSVWVX55YnF7Y3EpcCQrYzVG
dW9UUCsKekVNRHlKMkxfNmQtezFRWEthP2ZFK2RafEdid153S2wxPSsqR0Zpa1hFOXE9P1M9Kl9X
XzJ3a0tZKHcmbCp7LTRBCnpySUxEMzR0SDE1NzV4Q2M4eD9kNncweVczMFkpZ25VciQkMFooKnBT
WEYqQytRZTM9cHNldUV4KFNqX3gtcWgzLQp6YyQ4JHtNTj1LKypwJWN5QmN8eyNEZFVBbmBGO2NX
PiVPVlV2VDsoc2dDNGlScXF5LUU7QjxXTUF3fVptQFkpVyUKelFIQn1BVzIqdSVAWG83NnBIeEl1
PUkzQUg8Q35eYVQoMW9ndF9FZjs/fEUrSEtlN1BWJD8xU2pHQ3FGUEZTS2ZUCnohbD58KHhkVDs5
bDNMKzlMejdeJDBaLVVpX35yem4/SEtYTClKcjV1MDEzSldIcHxMNDxSfWZ6JG0tUjxgU0pmUwp6
QFN8eDNXTXdQQntBbT5ea1dzdVYmKXVFWF5iKFgxdWZgOEgpaHZZdDE+a0dxS1pPbTszPGA7OUk2
RGB0d0R1WkAKejFVTHFUNVBVemhCfjdeemReSkZZYHhZLUhFSlhkNzUwZV5oZUBRVDdLNWo5QSZW
SmlIdDNtKEduJTsjUk5TQD1VCno9S3RkNFJxWVRqWXgxUj57K3pKfkNmOEYtVUE8QHtMbU50IU1x
N0F6STV6a0NGTk1NdUg+MGZgTnVmfW5lJHNPZgp6dTh6aWt1XlY8Z0tecWVrSFRrd15WOVVAcXpO
bl5xKU97TD1AbzUxOGFKdWI0RCtnKGBLWXY9N1dfOGZ0UGtgM0gKeklNMFB4byF2X34oVHpvfVhV
MHE5T2xxPGclcyhFUFlXKFN3MmpWe0d2MTlraEkqPXNEdklkUW80d1RzVF9mT2pXCnomWjJhNjJf
TG1uIVN4QEBXSkptTjshd14wPVd6cEdKSkN5V3pIX1FLRD1tbHhfRCYoWXMyNWdxcnU0P0RTUGo+
Twp6O2NYYkRZJE5RZFkmVS1MdiYoTF9UP3ktPVVTdWgkT3xXfExQRUp5dTthJXpDPztyTiN6Q0c/
NW9jPVVtXjZ2RnoKek1SM0FQej5DcFVMQktzc0xEI257QEJCK0RoKjAxUzkkUGI3eWFTJHtaY1BF
SVVZX1l0KHR3d3tpbGJoPEB+Yil6CnomI3ghI3k2cm5ZJCRibFREaSRZRlVifkhFZEgpIV9VNEFO
Uy1+elMzJmFHMy0hJSYpWCFZY1Q8SVJnYFY8bzBWSAp6SEF5WiNFJll9JUcwJTgkQi1VRF9TLXR5
TkpLUmtqKz5KQkdQREJnRj0pWEFBNmZUR1VCMGRFTDE9IVVTTztNRVAKejtfLWl3YCNmWlF1RkNr
P2ZCNUUxRCV5Jj9zWE1NNEtQTGQtPjdkbXd2Q0k7MklHTEwzVHorQDdCbWJjK2JmYWlYCnomNzUj
JipuPFNFdGdXZXswbmsqNE9sV0lzTHJ3IVVsZEk2NDBnRG02cmNSTCl6OzBVayhRKT9UI1ZweyZ7
bUFgIwp6bjRmPzBZPEtPVllYbXo4Q0h5NVEqeT0oKyNEN1liYyEtZlBTPTNUaFNeMF5SPXlySn5a
bT5WIWEzaCNtMEMqc2sKenBjYHBLV2BmciljLWQkNTByfDRISUpMNHNIfXsqMndlSTRBcDMmRiFG
NWklfCFPYz5fN21wY0tAQS1yPk9mYkhmCnorJFFCUUtsdE92a007RitQIU9hPkpjfFghN1djNXRW
Ql4+QGsycUxNbWRXTn5aUEw9eFUlITYhXjZ+PDYyaSMwaAp6OX4kVj5hWDh+XytXMl93e05kYDhN
fkl8Zyp9bEZ8PCViMl42Y2Y/JFpmbT4la2RDdSUpcHJ0QjhoWm42OWNxIU0KempAYWtMYHJeJX1W
aENSc1U3VmV9QzxKVThBU1V6PDhKZzI3WXdLbE9iWCVTYGcmREpJYUJ5aF91TyQkaXFWV1pNCnp5
JDYqfWE+OE9icFI0YEBCLVVaalhLWnohNVBjPGUlMC02Rlh0NChJSy13Zz9WcEBCKil0fj1xZFZf
SFNLQGsrRgp6YkVJKzU+JUIpRihLUihVRH10Tj80K2B7U1U4NUV7Um0wMHVNdEFQcUYpJTI1SUk0
c3YrWXdUaFVQQnYlRGhOVyQKemBubzRqTCprRFFKNE1QdE0qd2s+N0ZkZE45c2E4a3VqXz5PSzNW
Y0hEZjt6bVozQloxdW5GRDNrJj42KzJENG4mCnpWP0h6X001cGJoc3d6SnBwUko4ZUZHUG1HKkh7
VGxsSnt8K3sxeXVuRjlecz9Ed0ZmV3pmPVFWMjJNSHNEakN2bQp6U2NpZWBUdCQ/THBwWn5FV2Vi
Ymope3ZqPyU3ezM2QTJgd0tpOE5edC07fFVkX2JhUHRBM3QjZD07VExVUmE7eHoKemB9ZkQ5MW9a
WkZ6dGIwSCM4YW1sVmhqOyhmX3NrZWtKTmlaOz42NW50ezRfQV8pRm1hXm9JNTwxWWZTYWYraWFj
CnpkNyRANzJ8ZUpNO1RadlNmNihBeXpWaWUlenlyIzBOOXVMdFAmcHlqaHFCcEJVX2E9JjhTaUx6
Qm5UPGZycy1aMQp6RnAlMWt3anxxI29HQnpsPWB4X3R4KXRCcXYpVlgkO3BkNjE/JEhraUBMeiU0
MlJITHY0NXx8cjdXVih+S0IoJj4Kek5hd0dqcXRVMyFVYyVFdExuV0IrbmRKPjw3Wjx3VWV0KT59
KF41cW4zP0ArREspYmhnOH1+R19MYWphRERQZE0oCnpWcSlxZDVRY21mc3NQWnNVTEt4UVcyTlE2
bSp5SFd1ZW8jVjZxWExQeHdpYWVvMEZFSDsoQHdINz5ETnNSN149IQp6d0NubF5kUHFoaVhzISZS
Y1FmYiE+dCExai0pMmdLNDJsbnh1N2h8Vz96aTJMREBvUklyc0BLaUZ8PihXPy07ME4KekReLU0t
ZWhTSWV7WlBVRzxvUDdNRGNFKztlcSNlbXsrQFglbk1fNiMwR3d1R20qQ3xHZSo2OUlaMjB6JSg1
TTBSCnokWUg+PEp5YH4reWlMR1RtNmVwYns3K29gKTRoa2lWOTFHe1h8aHtLS2s1OFojWD9LUnlt
O1NqVkhpPiRvdEdJYAp6JDBjP01uTEtGbnpAU0lOQk0hWmcyPWEtQ05kemdUcVQzKUBQN2hVSiVe
WkdCJDN4V1MzfDJVKFBBYnV3TjdrcmoKelBDTEleOTZlPVlsJnFWWldoWmhmMUN3PzxQWjYhNVBo
aT5WSzkrWXRGSmdnb3NDaUBZN3RFMSRTSiNmKi1kdk9BCnppbVRTZlgjWmYtbn16VFBrY2xrYkNS
bX1AIWExfGBpSTwwP1c2ZVMrMHwqSD5RV3BiPHIwNElzRTNVXkxpaVR9dwp6Pk4rOEBxbHpIfCt2
K3t2Zlg7TWpgUzFsRj1qMWQ2PCUrWVh0RSZqUSFOTHxXaDJjYEN4KnxAV1JqdVIodmk5eFUKektp
OXtAKkprXn5xQDtTUEM5QDtFOF4mbSoqcng+SklIJiRAaigwTmh6JUo2bVFLRURtKDdOKVF2eFR7
cEtVRXpaCno9N1A5VHklezxAKnduJikxYFFybkJveCQkM21VaFhFRV9gRTA3fGR9P252USVhKTY8
IXQ8NkxLM0V9NiMod3h2TAp6M0JTK1BreSFnPDR7eG9xM1ckcSQ+M3t5fThSam9CX3JpNz9BIWFW
fmFOS1N3NTQ5KWhBc0Z8WSVfS1g5JVEhYWoKekt1cTBlZH4wRHVWI3xQTmlRO3V4X3YkMGVBK081
fmBJQ0BtQGNvYThHSkNwNT8wJVphLTs/SXJxNTlYPXg+N0ppCnpweUZJVThDUSteSEolVGteZ3x0
bzE8ZVQ+PDZNO3xheEUoO3lfdllQaXA2YVhFZm5GKCo8bXpDRWt1VjdLcVNzIwp6ejNxJjxCM3s9
SWM8eCt3KF9iYFBVUHdSeTBCOGJuMUxUVGI1SURRV0F6dVVicXAwbzNhT3JSUW5TWGl1KWdAaEIK
emNqaTJTSXdSXjZBQlowQDV8Xkx2REA+MjgyN19feVM+Y308diR4JD1oSj5aQE10by17QEhZelIw
eG5hVWN0Pyl3CnpGa2NAfCZFVkxUJkJlNGNwK05saXchZXF6ZT48UTtMT0o+UTlsNmdWbWVfYWdg
Y0wyfio7V20lQm1Db14rPjIzSgp6XjlUb0pLKztzc0ZXcHppez9KKkJec2ZhUWtGfFdAe31QMT90
dCFaQGJeVllOdHR1aypUNkB0YkQxdHJmMD99JCgKenJZeCY5RDNgYkNGUUxLVHljUzlaYF90Rk52
RStYeDR+bG51PT1CfHdne1daT2pkVysqSG01O0Etc0UhWng0VX1+CnpINjdjOSZzKjk2PmM+RVIy
SkhoZlB4bjdScFBoWGBVaSFOTXUxLUc8JHBVN2oxVncqUz9NTWpKMEFgIzduTSo9Swp6MHlzWDQo
eiRjemRjezlickMwbl52Y0ZLXldmMFpjcmdYUzJeNj8jMGlqMG9WYk9Sa0FROHIhRGIjPk9qdD4k
MEcKenplRzExM2shRygzZ3EqKEBRV3g9ZjhtbmdCaSEwJHVyTT8+eUU+a3lMS1pLXnspNTtEcitv
aFdgOVdVK3FeP34xCnozTWA+YW1BbFd5JHUjOFJiX30mNiE2S3tMYHFfKk0lajchVXVJQkA+MDJP
VkolRjxnKW45Y1BUez9vVXc9bUZwVQp6S1RgdXV0fD9uYHRHKHRLODV0b2dnME5lbHtvSzVINkhK
SS1iMUd0QGhwNmw2SDVON0tJV3pLWms3LXRoUFdwVSoKemFyNHdOVT1NcEBeTC1ncDkyRk1DYnxZ
b1AoMGxkMUEpcTNTVE8+VV8zUl5CU0NyM3o3KDJyX2Racl8rbStTemR+CnpKfWBeKSRJTGE0RV4x
OG1lUW1YSkYkbXxCQ3dhX1hrM1dJV1pwK2tUJEhpJH1DKXM3fW4rPi07Zmhnd3QxOV4ocAp6VUw/
YEMtZ3tjY19taWBQdVpwJio9amM8QEQofnN0KkRNY2hDXnVvJmxjdlhyQkBSWWN1WU8pYFFfUzVW
a1EkYXMKenpISiRISVN6b1UxNGQ2M1gtWEh3bW9CRWA0PVk8QGd0cTRRQEM7LVRpV2l8ZkcrUCNJ
NyhoWXw5ND1zLXM7VygzCnpmM0dNU1J7TUlYdEUoJDFlRjZ8dClUZnU+emRhVHI+PHRQSG17Zl9m
OT5aPXVDVXppYWk4cklSMWs0alpVR2FOSgp6Q0sxNWpZJHV3PktgaDgpd3dFZ0IxZ0MoakxYfV5e
eSNkaE8tPyRUMlBnVilfREAxa19WTnMyYz8qWVVGPTB2R0MKeiswTlBkPVV8eCZTPCQ0fUY2IXRR
a1hodEZOakFaPWN3OVU2bnlyNldhSWhpI0FSb0Z1SDRneiQ7VGg7dkoxMGEwCnoxaz9uRnZ5RyYo
QmQ0ISFlRXMkPF4hYW1NVlBRUWNPUihRUzhVXlAjJDQ8bkFRfXZ6TzFYZUQ9dGwpSTZPM2ZlcAp6
RUFeP1ZvNXBaKCZ3aUoye2pzQCMlVmpRTiZ2alFoWD9tSzxgZUJhLV90YG1CcWhfYXwtfldyaSt3
STBeNWFuXnIKekJ3dlEjZUxoK2pgJD9heUNOTl9TJWVeSSlNUkhFYTxFMTtlV1gqeUEreF9iR01U
YW9gT2woRiRlaGxieys8a2BTCnpzXyZxSHRfUD1scDh+U2VyRkNFV1dFfUJCPzh7SE5ZN088b19J
OGxNeShZaTBaOTRpdVhCVmBhMHgrRHxwbkt8Sgp6V2hlZ1coKXx9I2pEa15TNT4rZllsWns8Y0JP
SWY1U049TzItI3heQ2c0dDF2XyZoZ3BVLWthZzF0UU1rPmw9dWMKejVAJW5JPkBHR1o7YSo/Umhg
WGImfDhXUE9VMCZgRFRAX2tIZDAqbjVFd0ZuSWFkK3dVKDI2SE5kLWhDZiptR1A4Cnp4TnBuKyFK
UVdZPGdrXj1jJStxdWcpMG16PFNRV09CK1NSPjE/Z0V3X2pEUzZrfSRtdlBMJUc3N0BNZlk0VCMo
TQp6PzxeLTFWY0FKbDIoUjspUj8kJS08JENgXlgjNmpkU2BrM19kJlYycV94YD4mKXNvfmo9NiR4
YC1kPUpIMG1pO0kKekh6NCkpSFlZb1QpM0Y+Q3h3ZnptU1J1Vjkwaj4rY1FkWmEoSytiQjUmUzUy
eSlFeiRoWCtNXnotVHtrKWo2RSUoCnpsU0BOV2dBRnlRQXFgaDshVikjWUk/bS0+M243TSVXPXFC
Jm1oWEI5P2N3P0pnVjx1fWl9a3R0QWxsQWZmaiF1awp6dGhqS0ZrdU54OW8yND9obiFeOTNmMjtT
LWtOM3wmRER3UFJuO0JYNlhmSThgS3A1b1M0O19ORUM7U1pgOVNWVncKejVmT050fEV8WmQqSG8r
USFidF8rKHhiNDVtfD9YO3l3bWxAanBzK2xAKjZwSW5zPEkmUzFpY1hAY1J4KnlERUc7CnpCKlh7
azNnTFFKNlUzY3lBay1IQyFVcF9SbCttODZoRHV1cmx9SiRWXlp4dyY3O0g2dCpia0gmO09+ZEJp
SmR1bgp6N1IrbDxGdFI3Rj8ldWw/dj1AZFBkJHZBcVJmbndpZi1rcmVQeXpSNnojQnlfdS1iMUs4
Jl9JM3YmPm13V1hSemwKemw+Sy1fI3xlOTg3aWRMbFlBV0U1KVojYVBpX0JXPHl6ZjRieHNBfWtA
YVEyQmtVOysyKm9hfGxqVE4ob1hnQzE4Cnp6UGBRXzd1NTRJfEZHe08pWD50QCVyKHJMRUI2TmxM
LXc4T1FTYiZZO2NveSMwdDxLJHVjZGczZz1KRSZETn5hQgp6R25qSXF3KGxaJFNDTEIzMFVjS0ZQ
LWVfZjgpPzxmJCEpQUdFTklTbmdpWmY+S1J5aCkqY2BxQyM/fHUxWEdNakUKem9GdUFlUkpBbXZf
b1Z3SD1GYlU4VThvSXl7YD9rV1ghMTQ2X1hzVTtabyEtJj94ajAmOEElNGE4IThxZW9YY25TCno2
NF54Qlp2cVQ4JlReKV9OSytkZDh5JWVwWndMLXEzT2NqbnF3PSohLTl8dH1hWCZpQzhnfTlRY31R
UjFnUiV6Ygp6KnYtX2dDVikyQ192Wl81VjxWJEBOWHVBQUomc0lCJFU1WkB3T3VwVmxqQVpDUDNi
Qjkwfmc3SGclRGppXnNERlgKeldHRGRXYUdOVzdfM0JsKTBfN3U2UFV2eEB2eWh8KT41NUMtPTlS
OTQoc1IoY2VTa1h3OEd9WEozNChGN2tPX2FfCnpXdFlqJnFocF8qKGtuZnVifmdiXyEoWCVEWk84
IWFuNGsmQjJkQGU3YFoxc2I7TjNfJDQhKF96b3pecFV6IVZrVAp6dkczYVdINCRHKGJxMTB1QEN2
a3whPUwzQHp1TEVxQCYkSXVVdmVzQHp3MF9FJUE2LW9NNyg7SFhOJGpwYko9PmkKejdoeitscyll
Wn5lRnh7XllYbmJGUCFRTzxNZXA5Nzk9V3NjcV5GQF85TzNnR25nRkR7TEpSfEZSJjJPZ3cqUit0
CnpCTEMyKHstP21zLXcmNGpgeHBLX084QHV2QHhNUSReelhJd3poNnJRQjBNfSVrJnpJND9zRE0o
Kk5ZdVcqMz1qcAp6NmJVZU9XOzFVOWJpSUIxX0lMTmEme316fllEV2d9ZlBCdSNDaTxiWXdBWTlP
YWAweHBPRGd5OHIobm0+UjdxZksKei1BUFl7PClaJUxDVU12Rkp7UmNMPmVBakpkQz1sTzVNK2Vv
MjtKOUlSTyV6TjZzRkk4bUclST5mSz5yfSZ6fSNNCnpyJEhwMzRoUlNlJk9LIXtUXiMlZDUqMWk7
bFZ6cEprWWF9e0U7YkVuPU5TejNnXzZkO1UkKk82JV9ec29lQmBpMgp6Y1dkYHhrdDczWWtOSmU0
K20oKzJJdjczKzMxRFZuUypAa3hmPXJUXntXTmR7RERtMDN4b1pnSHd6fHpIa0V1fVEKemlrajEh
MU9vX1N6QkFjYUlqUUw2V0pRUX13JCkyO24lM0d1PEFiPV42Q152N3p0Y1UkQ3VIYjNKTGA+I3RB
b1JUCnpoTUM2OE59SzhnXmRVI1c0SlN9YTsyaG1aVjJtKDMpbyFTOG8wJTs4M2Y8RWI0JCF6Ympa
UU9QUkc9UVdHWXBMaAp6VjF9JkdsO1VvZ3UwU3woan5OMjczTjZgMzBRMilgLVp+QU8hbjMpPXNv
ZCFTXmNae3VGR257QjxfSTlON0w1fngKell2SXJ5UiYpVXV2SXZsblF9ViZ2c1dDVmpBP0B8XjFH
Yj0yPHNjMT5xdmh+azFWQV4lXl5xcl87MmBWYSRQKnhZCnpjT2RvSHtjdTdKe3k3KnVDYTZTMSh8
KjVfP2pyWTkkbTJaT0smP1dNKm44ZEd2KVlvMGhHdVo9QG5MPFg9Z0RBYQp6ZlhCOUt5aFpMWUJV
YnJmRj11PzZkNz1CJkA4YCUxSlBMQkk9OFlTUjIhd1ZkbzB5ZXhuUkM2QEZ+OzF4UFhoemIKelVB
UnkjMm9FfEU3OHQ8SCFCT0VqQi0zVSNaZVZDZ2A2a3dPUyY8MGkxJGBSQXp7TFlfeFJQZjAjekE7
REFtcmM7Cno/UDkwS3s1UDctczd7S3NULW5FdVVtVWg7ZUZnZDlWNHspcHA2SGB2alE7RCZzO2E/
TFZeb3d1K30taXV2MVZhbQp6RGJLRWlOZExTSzlCfnxaVEAqbG9DazdEfEtwd0lsJXd6YWhjVzx3
YXphZnhjYTgzdUJ6K05CRSlgUGReeWc/NmQKejRNKGxPdG5tfj0wZHMrKUxqQjF1O0UrJSMtZEc5
MXAqe0JMQEl2RFZIaDUlZXhRPDY3P3Q5cmZIOXRCeVhkSGg2CnpCMW0jfm5ndC02YHRKUEFCWEJX
TCtrZ2Y4MiFOaTQpPUQtdEY+IUdGMW9fPmVaWj1OTnE9YmFvWSg/dChlcXAyegp6ZiV9ZnhvLWpa
SiVPUGY0cEdmSHRVMnJvUmdgPCZ4cmU/fmh1WEZzJDIkdXgpPyFhPShMNVEhezB2OEdtUFg8dkgK
eisoMVdyNGhnJStzVSYhdj1WfEc/MDV9OXElRWhJbmB2I0R8YiF9fTtETjNRPHxEZmFZOWVLfUJF
dClwPnhQdyFeCnpXWGB9UWZjVn1mMnZCS1ZsNXBlJDQjfHwqa15QVjU8PmNoUkFmfjBJPD90Vihy
eHk/cXJ+dmMjZ1g8eUtAYHI0NQp6Py1JSllMYigpODUjYDV+Sz5oZGNOS3hyRzFEJE1FKCZQfkxK
VUVlXiUrJlhRTnV0UWN1UHFSVCg8RUNLUC1fK2MKejtlZTAhbkVKRlJHYm1DeiFvUiEySEJYPEdy
blFHODhBUlYtLTtPZD5SO35qdDheKExCVTcxbHJUKWIzfTZMIypHCnp2KjktdTtKTnx3aG12YlN6
MjtFeF4jbVhuZEV9LXo5S2kjPFpGdHJjZW1iQztOMntoQzMzNH41ak96X1YmXmEwMwp6XitpYWRg
VzU7QnlteXFYdHlXb3ctTH0hS3UxRE9TX3FZakRLWX44RSVBRURibExMdXhhdUk8JU08TVFSNkVg
OTEKelhTRGBmWjFDa3tAQkszWFZ5aChaZ3o8MWkmMnNwcmwtak1feVlpNW9xMl42e0lyc29pS1pK
eDdnZiF4Wmo/dklPCnpqUV9jRnhFbEAtZnBwQjVGSG8/eDZ6K2V7Z3E5e0N7KTxseUMzJHkpaTs8
e3RKYGtkaSVZIXlvYU8/SExSOz53cgp6ekdOdDZgQFlOSGJyYFBmUV9nXjZ1VFVnNDs0cjMzZyhQ
VjZufmpQKWBPPGE9O1BTMkcpX0VZSlFJOTJuX0ohVEEKenhiWiNXKDF7RGN5WkBAZyU2SjYpTWdA
Uzxqfnt0b3hXT0hKand+QH0waD8pM0UoYnwpRUFZXlh6QHh3Pyl8Wm9hCnpBck1LKmMxdkNHVGty
dn1kdWFNRkpvSTY/MTZpPUI4UGsmZFJ0QEduQTwrK0tTUW9wP08oODNgTClfaTtoam5RVwp6ZS0/
e2pSUUkpdzh3Rn5+bGUrK1E4WitCTTgzQVZtTTR6SlRrT1pLZmw3UTM9PEVkTlZkcGlLJWZ9MHs2
ITs9UU0KemErPWx0VC07N0Vad1QjMzd2UjFNaGJDWV9LSmhZeEVScjFAP24oLVFTQmNZdyhfLUBT
KzhzYk14WCNXczN4biRJCnpVNS1eYSRQTEZQcGRRYlowU0xlMXZVb2dDMnFJKUFDVVlmU3VlZz1m
eCVeMlA+OE89ZEYwVVdZPzcqeDd6VmhwRwp6SD5TP3RfNDM/TUo9Zyk+MUJSPD1aUCo4TDMqPWty
YnwzJmozakMrPk53fVBsRmZFMiFaKGdeend9VVVCemcrfTMKek98e3JEMnVAO2RCX01ZSG9oZzVC
MFZ3Z082SnlqfWVzd0t+NjJRUiQyYldLIVBVQ1F+QCVMaElTVDc2QzFve1hhCnpmIURvYDMyKn4t
M2FiTGF5RkUkRU8jLT0pdWw0PkJaVUBOJTk8OEw2VXZDYEU7PVJCNVgzYiRuI3hfdGpMUEo7RAp6
JnZSY2pGJlRwV2ZFKzl4JjR5PFV4RzJiITJMbkMleSRIMlVzUkk1cUAzWjAkMD96NnVkU1RDQlom
ZmUyIXQkTzMKelNAUys+PzZVO2JHTHdzfGg4I3MoSnh0YylEVmUqdjJ0Oz5SU0U9QkgrfSVUOTJe
Klo/OyN3Izw2IXEpZVNFPSh2CnpGbT88SU52K0dOSmhANm1VZ0hCPGtQeCU5dXo9Tz1YPileYCVi
Xng7UHdMWWp0dShwPm0kO3lydXVlXlFESnk0RQp6PiFMcGVwRGYxO1oxbXU+blNoRFd6NHs8VTtH
bHBFTWpLWG9FYGczWDZ4fUplSHQ2Q0gyVV9IKnVVcEpJWig4ZlQKelpnejB7PmVaX2pSI3NId1JN
fiswcylqfWpzT0dTVXMrZyYtbnVYeE0oc1M2VGZgJnozajEwSXghPGhfSSlRMDcrCno9Yz1AUWZq
dX5jcUVUQlluQFdtQEdvZSNzeG1CeCVqKmRBfilUaU1yYFlmUGR5RHRrXjhIXzY9VDlOZ0IzUGQx
OQp6YUFIIzQxNzEpZz1zXnFtbz1ORyRTX2g4V2ViNWQ7MnFPX05Afm4hYFJ0d3R7SU1tQERYcEVn
JF5NSko0R2plZS0KemlvJkMjOzIxVHZMeT9WclZRcXNqe2FYUGV5ekVGQnl9c2JgZDNgaD43STNK
fCtVbHdEaHxpMjFPclRLPFhQJU9oCnpsSDlKYVFXYSFHNyF9c3YhTSsqVTglI3Eodz9PQFcwbEo1
UyU+YTE0OzdQSXBkNyt2SXVEMlF8ZXxIRl5BeUJzKgp6KW5lSHRBTHhzaVJadmZMTE94MXU4ZnNf
JjFLZlV7aHhpU3o0T0tCWEg0ajJla0lORU9TJSpZPlM+LSVqPEVfb0EKelVmdV5eOFp8dVJuJjhN
aTRpQCFydSN+dkNkYzAoSU5lU1k5NDdfTnx3Kz8hMTNKNHtqSyYlKjd6SSU1VTdSZDJVCnoqb3Ff
UmVaKGA3b1k0RmZjYjNBYmRHb1MkeERwKVk7bUBhYkN+dSlYLTlZSyMlKmRjKmAkPH4wZ0c7TGVO
S2g4PQp6RT0kUTwtKzlkWnd+SWdUITBUKmBfaHJTZXBWeit6Wm9wcHs1Q0opdHQmSEBmK2V8OHNB
bGM5YVZxbzJEfEl6VVAKenU1dC1aPHgoPnxFPXdTenRjM2UtclQpNmdNPHF8e3FQUWFEIVIxVy1l
QzI8U2FRYDN2Y1l9V3Voa3A8MnpleTxJCnRoeVRDLUo7PVd8KDchaih6YzxrVHV6X35EVWJhZUBB
Sy17XmZTeU5sUSRfUD9qPyYlN3t8RWRjWHlPMD4KCmxpdGVyYWwgMTg0MzEKemNtZUlhY1R8JlV5
RWg3bzF5TWw8TDsqb20xVk1Aak03clcyKGclQCo5dVZuR3FfPzJoaylsWFpzLWwxcGRKOHFFCnpB
U2coWTVJfFpgZ2dfd2wmX205Wm5mPDxkLW1+fUY+cFMyMik7YSZZezJ7WEBQbzZ4diVYUihRJkVy
MXx3RCNAYwp6K3J6QGJ2UVBXVT9eanRed2pYMCoqPUQrWDh+aCgwWlhRd2liPXBWTSlXXj1yLXA8
d0EqUFg+cSo0fCFMQHRtRlAKeklSezFnOD90aD9hXzckfkJJSW9tNChJSWImKUxkfWdnaVJUIWc3
cDdgfWQzMjAjY3wkZmRNQU8qRExjIXcrVX1RCnpCRXU/c0xHMTJjY0h7NnIqaGZ4aSMkOSFGJk91
NDxJOCRERlJPPE1gP1U7KTVKa21NYypHQGcjJDt+Pzc7LWZGNwp6Vm1ZRjVHMnJSMyFeY21fMnx2
QVh7NHAhdm0xQngjdnFCcW5IOHFaJGo8Y2MyWjQpYnQ0P0VodzQ3PktiPH1aJV4KejNOVSFZck5Q
Uj1hJEFNITtrTytnQU1kdT82bkAxWEQxdmBhcDBJKH11M1VaKC18dVBVP0gleD5NXzQmblNUNHdK
CnpJfFQyISFGQzJOYHR0V1RsPHFZWj9wYXR8KypwfkYmUmozSFlwenh6MXJqbXQzWlctb0VMaHlk
Xj40UXgla0FxQwp6eWZlfkA2YVRPQFo8RmgtdGYtMTItKjhafT9ZSDY3Unw7OTNUYiY8JGxhWD1W
Jk1zX2dGYGJ1KFg5cHFvU2FOckYKel90Rng8UTFtNDhyKl5zRF48ZVVremBsV2l7a21TPnt0Qldo
eFh2Rit6N318THUrSjF7ZDZUeT40Tz9RRXU2OXgzCnoobUoxS1h9Kz9JP00wKEZhJDR9ckkmRiRs
JSN+NEc+QF9vMzZfSWdMUkNLX3lGU3B1JWNCYVRCeX5CVEwhYnNDLQp6Jno/UXo9SF5RPUEpRThm
bG9PV2AjallScVhQMzVCZF5nRmlFJm90OHFTY3BzfE1CQztQMGEoVjR9ITRtPGkoP2sKend8K05A
ZCFyU2pmSXpnbSQ0KGFZbmIhREdSYVhZUlNMYzItSDhtd0FCX1QqNT1UNG92SmFmMyhyRTdDLWFk
QlptCnozWFFMfFpGcnkteF8tcyZMNH5rQDs7bHlWcUdFa2Y2dUYyUztxVTAzUUVvOSY1ej9fVChJ
ZXklTWIydW1pcUZTMgp6ck1oTzs5NkVrYVd9byVsbyVAc209M1o2ZjleQmh4NWE0RGlLfSE/eDJv
RH1VdzZOO1NFa01gTDxodGFLRGE1Y0QKejwxTDM+STBORmIqRFpxQyFsZztNWT1xezRAZHF4PyNh
fmRTOWtVekBsQ0U5N3h7eHs+TGhnS2hpU2lMT0hhNGNaCnpJJiR+bXo8OTI8WVZmajM9KF45dHtZ
TTlUZSVANH1XaD5VY2ckSzBBcztqSjBQVHVGfitUM3Y2T0w8JGA+XkRpfQp6P3hjfHcyflRWbnJK
I0o3JjtQMjEjRV5XZWBoaTEtNHA5KGhDVD96U3d6anMtKE1NSCNNZWtKeChRP1ZIY1hRVH0KelYp
Z1I+QG8wOHpPOTw3fmc/dF5FKEFzPy02Sk1ULTR3TlkyRWFndXREK2gwRnUzPFBCN05xcnIhTyYp
dD1pPWh4CnpEJH0qPSQ7WmNIbGd+ZjJEeUM/PGNJYktYKldrKVdlfmVkKWxlUip0SHVBWChjQXtH
X1Y+ZUFHezBgb3x7Y2NlTQp6YWg+TT1aQ19kfm4rVipSciUjX2dhYHlWfkswWnRRcDAlJmxgWl95
aExmNGxiSiRmWDM9PmF6e0ZNcTM5JHFucyoKemZZbFEqRGpBMWZCcXNKMnFTYnxlJDYmVEB2dS15
P1J8e1BrXjRIU1JsRDRTT1E+fW1aWmVqfH0yckBQOGdSOHJgCnp5TU9oKnhKQClHd15VWTtnaGZ7
dXlwb2xmYFJVVXFgZFVYQVFzfG1Sck8jd25mbU99MFo/OUY4dEZEZXRfazQ8Swp6YTdCOytBNzZp
dGFXKVopVm9XPSM4OzIxKUo3ME18SGtzYHlMPkh6cFIhM3R2Z3Yoa0g/KWBCSTNDS1ZHa254JTUK
entRVVd8P15NcnMoKkFtRGVyNVl9K3hwcjA1Z3ZNYWRYWF9QWG5hVCYqVCtpO3g8fEZYRTFoelh2
R1VkPEQ5QF9nCnpuVUtaMGVXd3FsVGwqO1AqaFReU2N9NGx7eVleb2pQX1M+fCN0c0syVi0tJH1F
VXR9emVmYitkZkFXaExtRGZNKgp6M0JCdzd6QENfRVFXciNYQT5sKUhiWHVrZz5waytNPG1HOUw5
cUlgOEcjUUg+UDIxY2J3M2NadnBSZ091aUcxRXoKemNEWCtKYFghMCk8RlUhZzU4V1NobzJLZVoq
R2pWZXU8NCZAWmckeFNWJGZIJTUxKUdJc3VkUUc+RjRMWS0qNzxZCnpzNVdYdj84UiNaX1hAQUNg
S015Tlp1T0hvVkt2Y25taio7PiQjPkJXY0A5fWleMjVzKHhQN3klNX44Qm4xcUJgKAp6JVQoQmZs
KUh3aXdDKkglUzNaOUojbD1PVGZEdStaI2p8SjYrU31WRkJScjhEZE9BOD9MY2YwZj5oOT9vOX4l
PW4KemRHWn5aXk44JD9wPXdgTHB8dz8hJjdCT2YwfHlTUUg/aWR6bX5OSUBZfih3JE1gWE48S2c3
ISQheldKfUArYXxWCnp6PVVaVSNwUFN6YFlrUHRqR28yQ1U5Kzt2UGtXa0BWcmdPYGFfP1BVb31Q
aWgqM1QhPm9CYSslV2hmI2VAOSEpdgp6RWp7NnQtWGpjazFoJUVvQUFmWH55UGBDVzV+Ul9Yd1N9
Pit1Q0I5b08+Vzt5SzheZFdNJV50b1J5Z3JXUChVcVkKejZ+OGZxJkJeJio8P1pPXkhsM3kjdGx+
cU0mOVclKERKdilgaylgSCNzQkxeKntaOzFMVE0jQGBtMGVhPVIjMEdZCnp3Q1MmanF+fkBEMSlL
N0hiY19FVWBUbUpDZXMhVCQ4WCtoNVlrWWl9TGV3U01CLT84MT5xfDtZZCVDI3Y8Mj0jVgp6dUVp
QnNjWHN8IWtHTTAqOHx9cSZuNF5xTzNWVWpZeiE3QFUzeGs3THpVXnVwZTFAZ2Z6c0IyYnZITyNk
anN5LSoKemoqSTdDRDZHI0hfdjJGclBteGA8WUlNfThRQk9ZcCp2JSVPRXhIaiZ7QGU2Ym47UT09
T05fNGFCWCR1Pz9CcCVgCnp6MjtuTnNXPWIqO3EzYFFvcjhtZTF5OyY1KEBAa2FhYXF8ZSlBc2p3
d2tKeFgzK2xgWHU8QUVTMTd6OWBtKiF7Qgp6bz41d2Jka2RefDRHbVlZTjtiYUJrfnJ+O1ZJUTs4
Ri1iMzlQV0VhZnlFP1h+UkpqbnZnJlV1cCg5K1AqPXc/WXYKek87ej11djl1ZVE0bzNMVDQ1Ris5
SEZwO35jQkh7QEtWayZ1bzc4TWhlMCQ/UjlHRmNxU3MkPF55NTx8UllTfURKCnplMXB8T0AkJkdQ
ZDNFdmJLZ0sqKWlhPUhtPHVGV0QkYG5MYmArTzAlUUprJGdIUygpMF92MWhwU0clN093R3dYWgp6
Pis3NGY/QCZjVVM2XlN7dCtBSEskaGAjMCYoWUQyUk9SZmp3XmRiWlAqTmlAMVhLZCVgcGFGTHUk
ejFTRzBMRykKelM8ZjREbntJYzZIeGNycnM7YSNFOUlrOWZJdWViXjkyWl5od3cwWllqYDc7S2J0
XmZnQEYtUH1VV1NtYF5ZOEBNCnomNkJDcT1NMlBVc1pVSHdxd0dBQ2tXQy1fJWQ9eyFzSFM7QG5y
NDM8VS1CfHJlYldHRHNeV20jYHp8NT4+QXI5SAp6bCFiKV9FdXFqZHxKbVZQYHZ2QXxkZGw5NXJV
bUBHJnVhfTtte0shfkFJUXxAI1N3UzdSWE1ZLXxLPjRSYDVIZ3AKelcqUnFISzJZSkZFYXgxe2It
Z0xfTlUxfHhsOGtMUSpZJnhQNTFOe3FQMHkqcEQwQjF2TFVlc1hMYyhkfEVUXiEyCnpPUm1YMTR7
alNDTTVkTXEtNjwrNiFsRFh1bmB0eSF8Q2ZTbFhLekFrdz57JCpfa2phbXFmUHJCaGEmMWFpRX17
fgp6ZGBKLXNwMkt7NkY1WCRoQjVyUSgkaXJ1XmUrYmBeWklDTFBAM0hYZmk9dntVZzI7eEl6NDxI
V3laSzRLSGw9bksKeks1cTxNTG5hUGhfM2t0QU1jJUo4LV80cEc8clQ4YzFJQH50Tlo7Iyk3dDFU
P2luO0xxbmF7MTVseHNLb2M/a342CnpYdFJGfGxMMGI/bz85JWctQEBsUG5tX1IxPitTZXcmdDl1
bWBjY2lYVTRGQn1MIzIqfV57KUNIRHd4ZHhCb1l9QQp6NVd2YD8heXh7NnQrYkpsb2JYRWhNXztp
V0NIO0FuPTFjMj0mUTJ+TkFAdFImVGAmayF5QGpHOEIyPHstI3p6T1QKeispSE91eHZ1fGdkPDtX
aVV8QGgkS1had21VKHBWd3s9eHBFRjE2dyNhJFd1ezcmY2oxKzJKcm9ENk8pKEkldSVjCnpPUnpk
ZXdyPGpaYStPPGlMdk5wXihOYTQ5QHB+XjYtMXtGMlZjclFzS3tyJFc7NyF0KC1pd0ozZFZ2TGVD
OFFRbwp6UyM8YyR5P2JuPHlPaGBqNXtCITd1PygpbHtDcylwPVI0YlgwZSh7N1REOE4qKGhGb0lK
QUsmbHt2NXZuP1NuLSoKeiRQfjZTTGBtNilzbj5YbXZJYERyeW14LW42JSRqYGhtVlkhdWtoM0Jr
aDlfclFhRTl3OSYwZjN0UlcmWV5zSVhZCnp1fD9NNFdJU2ZoRCp2P1NNKkpkPVc0VE03Jmh3SXtm
ZEUpKkhrPlpiJlRBOElWJmNOKz9fTWt7K3xvMT5teW8jNgp6V255OWlyOEVycjBedkRLQSE0VmRW
NFRvfV8+Wj5KVXo/KSVwRkRYb0l5IW92M3BTQW5fdF5DSlFWS2VleFVDfnkKenleIWE7JkhMTEM1
cW08fURJJTErJWZ2fV9pITFJYF45S2tBR2NxITZkMyhjKztMVGRtMHgjM2tyU0Z+aHBHbkNPCnpp
OzlYZVVxaEN3Wl9ZSXdJZFgpOVNCaEtYWWxgQUlkM29QMnVfOVNedHxWcFEjLTRuT2hLMkBtVFhN
RzBkJFVwcAp6dEV5WD5CXyNgNjg/JmZjOUZmfDJqdkQ3SXoydHVXPUUjTFk+JD8zJW03dlY0YGNr
PzlSMFUwQmtAUnNjYDZnRVcKemdJPitjKVBYNHFySk03V3VEMTMhVHYyWVclWERBeUU+NkxgIW9x
WkQ8ciFreStTK0x3OTx7cyomeTVSMUg8cURNCnpAeWpfcSNidihFbSEqfUBrQl5VIUhwaT8/Xi0z
ISU1QlJYJTwxKUBSNyVGIzc+Pnh7c2koZ2UmeXpFLWtSQENfRQp6bGx5Uk9SWX1STWBKYk8pV2RX
V3tuI2FAdUBISHxybENFMzI+Zz8/Nz9ZO1F2MzIoVy0oUDdrYDt0U1h4QmAmZV8KeiYrcF5+bUhx
VlMtK1c/Q2lTTEhFP1N4RjRfSTtvKko4YH59bFMhJXh2bEEwKSt8PD4/PiF9aFc/emhWUSVDSmo+
Cno7WXUtcT0tWlE1cylybV5JTG48Jl5fdkhNQnhMcXUtdCtWUSFlcFozYDxhIzh1MGhYeypAWTc8
ezRkLT1RQFImfQp6SjctczA7dzdHbzh0JilkWCNNKENGMHtUYkx5U1RgbHh4QCZhUis/fE15Pn1G
ODY5bTZCZlVzKikyV2J0e3AhXioKejI/PmNhWFdTK19Va2lvSS1OQmEkc3M9ZllTckc5YUwpQ00w
YjRme2ohaUA9JTc5VCU7YmE4ZG5afD1lU1lkcCV6CnokXngpKyZhcigkeGc0ND97UClhSWpWblZy
aEJ6XyMoeXloQTdiOX1VdG1MR1dsK0B8ZCZaQTlIPilUVE8zNncxNQp6SlhhVno3X1d3aG9HNyRS
WWlzTGI0VztxJVomM2RvMG1ub2lSYkY0RlZyTnFhQEVoXzJtfEdQNldRQlpoYShqKmMKelk9elF5
Y2RMakQwOWhDNT5nPHN4akBeNCNQPj8yTHN7dTheIUN+Q092KERadmQ5bnkjI3FYQ2RNKyt6fWJZ
PCE/CnpDdUlFVioqZzJNalI2dlZWYCRjSXN3Vz8yZXx+PWNIJktKWkJITyRGaUltIzRFezhVcipV
b2U0X0s0cypFK05zewp6ciQwKDNxSlIzMj4hJm4kVWByfFlhcmNpMj08KE9qOD9DdmNTdntXPCp8
WFp0KXdUU2BFR2JvS1UzIyMwWjVkWmoKenR2eWJfemZjKFBgS3BpR0hhZkRhX0h9K1NJJWdeUVpu
MTZGSXBlVVo9ZlNwMGZ6ISMzd2FGejlqPXdeI3htYE1+Cnp3KVgyZTVFM1pGcnozdFl1ST1JQUNA
bT1vVSkhNSs1JUdNT05+I2IwbVoxcj9wQ0lVKipeJEE8UVdaSlNuYHIzbgp6UDk2RGhteCQ3MGQx
SkJDbmtLNXg8T35eakRRSjF8Zk4lfHg8UiU+dUkhVStkVHdQcChYaGMrYyRidlRZOEhNN2EKelkx
RUM5Vyp0ZWVBSD9KMVV8dVZMQCsxJUs4TGFqZ0xqNFphdDwzM0wySjhqfDArRjRTck1BPzAyezRX
dXhqb2c+Cnp1aldfTD5gOyt5MTF0a256UFRAZU0lUDNxbDImbCp1cT16cjVkTD1JRCs+Z1pvKF5W
dDQ1PVJnaEJ9el9jUDlGRwp6PmlTaklXe2daO25JKWxCVlJQaSt5MEUjcW5gKjszV28yP3xZRmtp
P2tpSSk2bH1UJnU8bip3YVV3VihAVFpqcSEKem98YDcoR0F5bGx1SXNQQWw5IWlQcjdzY0t8Tk5v
dzhWfk43dyNlS1VLSXoxIXsoRTN4QWJwKzJrO044X25+cyZVCnpDej87NVlpP05QLUBMeH1SPno3
KCtIZ2RQJVklbypON1hfQ0hkcDZpRiV9bVd0MjVSKm88dX4xSkk0PjRRVmNeYgp6QWZMM2ctQkwj
NGRpaVNpblQ5cTd1Z25hJlcyUEdLYk1QKnE4e1YyJS1uMGNPUXNGK1ojQ2J8b2JlQ0Q4MTBoVFEK
ejw7I344UkFyeThvP2VfdWpeI25FSDxEOGUzYnZOPTd5amhBMWBNa3pEMmNGfE99STdKVSR2I0h0
NG1BSUV7d0pFCnpFNGF6ZnR4SjxYOyFYTWBXJEppOGEybX04aHUybDR0YkhpJHp1PEJJPCo1NWZr
KHNzaSp9eVchSFY0aUBrMEMmdAp6Yi08a1czI2txRV5fZHpRenJsbig4R1B3TEkhVyUoU3ltWkQ7
dH5mLTQ0PmRteDRzNkI9T2YjeEtue1RvdW15flQKekU/N0hOUC03aTk3OVlrfjMwd0lpQGUmfUEp
ZnhZS3t5RGotXyNuSWYrWF94RWtvZDt4VEFuZFZFPG9uaUx9X2V1Cnp6ZSVFJG01IWxkcU1CMXFQ
N2NDakBUdXU1PyZiV2hvZ2FNVSFpNiRNUkBnUWNKQDFRNXJrSj5AY0JHN0syPiFhRgp6THQzPCRe
cilzLWQzbnRQbHE/VXVNRWtIeT0oREBVYCV7VmAkVVArcUJocG9NSitDZXlpblM4TGp6aDcyTHpK
LVkKek1+JGJkMWE/c3RmYUNnNWArY0R4dD8la2NROGIzQ0FHfHlycXFhVCk0VmBzcjtTPn1zRFhB
Ryl8STY3c2pCX3d0CnpEeTRqP1JjfnozaDV6eTdBM3RpKSgkailxVig7SS0tP2J8cnk0MG5JYCl7
QEdPJClgQVU2ZVQqSFMrTVlIb0hRdwp6I2B7SWpeO24tengjaHpTKEYwemsoaWRtMD97KDwjKypj
NWsyKUgkREUyS1ZqbCp3fFJ1Q291WUNqWGk8Sk4/LV8KenkjNmglJDdaMUw1MGcwdzJ7REJxeTdj
X0BDSngjJjUjNUEpNDxEKjhkX0YtYitfXylpLTYyYHZhUF9XXlV0aiFLCnpYfSYxam40JFJ1SyUy
PERSYm5CZzk3N01QdWghQWd4ZzJAO3p8b2BoQ1Z0TyVvQzxQc2RnKkdhJEIkcUN7OFg2Mgp6WWVw
dU1JUzxSYyVGQT0+ZXJOUlUrYyFgQW5nZFl3JWE8PCQ5KXEybTY8PVpCbmpvfF9fYkBCOXpzIzhj
T2p5YTYKelFVPHBVVTRkRDhAIzRpe0EpKSRed09pRFNjSDFOR3pSRmdaVTc5NUxsUzJKe2U5R3xK
TyQrWHFKQUNBamBRfGB6CnozISNOKHprT1N+d0xVZH5eRiZGYjc8PWRNM1Q8QVhMJW57SSl6LTYw
b1Z4am8mZHRMVU59b2I9YSZRRnlkWnE8Ngp6dElQcldDUmVPd0cpNyhPLXM8LWJPeDlLPEZrMFky
O287JTBGRmt9dUV3STN+PDRha08+Pj80bCY4dk4hZmohSnQKelBlfkVIQlJMdWFIZDVsPTBQIzF7
UDV4S0g/UnUlWnYoclg+OGs0X30lIXo1WlVSfW5jYE10Kjk2VWR2VDx6UEJ2CnoofjteJCRPdXMq
cjZfcz50b3JTQC0leHBgdWNkcClpPW1fWkIkPVRMayl7MVVfR1lRRz9oMVR+WnpufnZSQXQ+Pwp6
d2BvLUxVbnJhUklgNiU/MmlMIV5qTXwlfWVOZ01fT3EhPVdKRldEWnZjbUF1Jn50ZzBoa1lvTiUm
YVdUKSo4OH4KeipgJiREP014XjJNaUprUVdKaSU3MFooTHhrI3NTJHtPYEI8LUxQdHNkfHxGaXlE
Ql9NOV9zP092YFB+V2BiPHQrCnpyMkY8ZSttVG5WI3dyfjhDK1YjcUhRKG9nczttfmFSWkZeaUxN
c3xUNSRBbV9DQFhZayVSciQzbTBEUjEhNXFMPgp6QT9ge0txVTZaQ19RKXdIakZaWGdiTUxwQytj
N35GZykkc0dUaTJlZE8jYnlOV2QwTWN2ZnVRVERfMSZvVV5sPnwKejYmOU5TQiZta05wcmZrYCpC
Jn0hYGJ2SWw/bmVWQ0JXUWo3SGg3PCVvISFkeGNSTH5yO2JQfnp3JD85U2FgTi1yCnpUM1pROEgl
IyF2aUk+cnJVMGh0Q2NwNGlNQFN6KjlYWU8lOW5kTVlsd1loWlpFPn1pUSZTP249LU8jWEQ9VGRy
JAp6enchZCshUUxZIWZEeEZ5cVQlcD8xRnNLX0V3MWVzSVI3Kik0S3gyIVF9fW1YVUVMVCNSbllG
THtpdmA9cHc+eUYKekBze1QxTilCSU5LO1ArO0o5ZG1mUnVEWnAqX0hWdUwoQnJfTDZubEM9SFd2
SzFMUHRCZVBBX0x1VV9AX0VubTAwCnpiP2NVaU5qejV1UDtOIVZISzVXcld2QURYTjYyPz9hdXMj
Z0FUMkZiVClOLUV5NigrLSRCUGJgQTReMWdJNX5aOAp6WW9pamVpVEopISRCdVJZcDMyRz1RXyZf
VEAqVktSd1BBLWhVZk4wNCpaV1RwNHcqfmQhMHV9X1M7Xm1ua2tsVyoKejxRSyMkJEtGfkFBKUlT
JVgoPyt+LTxVb30/RjtaPFlBZk9rQjs7VXVgUz5VK3Ioe0JSRC0+TH15Vz01eG13MyFWCnpSbCsm
Tj9MZ0ImdTg7XjstbklUaSNXRXBkOSsmMClvfSYxMXlzRl94eVBMZS16PWVfOW5PUDNCWEZ2byU4
bmdgbAp6cSt5Q3NKIyoma1l9OVYxeWNmTGU9SW5leFY+SlpkLUY/bHNYKkhoa1BmQVk2MVdKQiZf
djxaTkJWfVZvcC1gd1UKemgqY29zSWsqdmxJeyQrV1l1RFdQU0pzQHpYUVE7Nmsxa1kxWWJ6QmVv
dzdOaWJ4QVN8enlXfnFlKWpzY0hxVU5eCno+TkoyMFArYis7NmVMTngxLUNeMkpMUF91ZmcoRk9J
Zj5EMU9JMlFwTV9DYHgwNGV9Zz9DZWo1d0xwKVFJPjt4Zgp6ez0/MkJ2KjBZJlImQXxGUGd4bWkt
aj18aHZzVS09b01WQWB4ejI4e1UhUntuZWFifmt4QlVNN2A+O29mT2Z1KGsKek5CSF9LYiFnZ096
dj9BdDFUOWFTcC1fJXpZKz8ycjlfJi1UXzNLZV9oQEIrejlFbFIqU15CTj1xYHZmN3M/cSE4CnpE
Y248aTFRJSl1Q3E3c3Y9ZXwqMS1JRDkjZEUmSHgyV01zZFdLNUw1N0hNenRHbFlSdi1Sa05wR31s
UVhYQWNpRwp6cE5YZCNWdTFnPCluQStQTyEmIX4/a2dkZCMjK0NaezF7K0Nkdmx9UWZpNSpxPXI/
P2xSV0lNcGlZNHooQ2h2YyEKelR1TX1OZ1JQc2Vee1RkWl5QODNzYipOP3FXQHs1T0NWSitLVWcp
LS0mSDAkSFlnPElYKkhPTmNGfGhsYjI7I30zCnpLJXRWWWBDPDghd3czN3VOR2BDaCVONllIP1JE
KTxJJkB2Ji1maWFTNkwoJCVoNDZhZ3FhN1RGUWp+bWtmP0Bscwp6VXQ9NmJ7NiVLXjwmPHNLaigy
e1pRa2AlN099Y2pPQk5TdjNENEo0TSl2SCQ0fDNkMnZDbnlydFVaVzJ0a0RXKWUKekg9VjF+N1p4
Ui11TUs3MDxxaW4oYDY+Tl84WmMzSUokWXVvb3ptbWQqZWo/fmBSPzZrVGxSSDZlZSZKSytyOXdC
Cno9akx1RVhKfWx5cV82dz0lYT03O1ZIbWFPOFM7eyZGQ08+WiR1YyU4QHh9N3pGS3h1PWQ8OEQt
T3JeTldoekhscgp6T2c0NHFtT3lQSjZHTXpTfDA8RkNYKTIxTXFSbS0xPmFvKl9AeX0xMHtkMCZo
PDkjdSZpJVhZfUszZ3F3UWglYj8KentHRm54IUtpRlZVOGBVPiVeai1vaFo7bSFMTTRJRDQoMG5Z
PE1UVkNIXkEtUShrbmVsYytaZWd7LSl9c1g2N29yCnozcVlxX2t1WTBYUXFyeylfQjJod0ohdWBH
Qml1T0ZuI2lNUiNLPWxgX0d9KXdBfnB0dkxkRWJTK090XjI+QmxDXwp6ZD5oTGBRMmMrKTQlWlJH
OTZAQkg3K3hfbldQbnZzcDc/QSErMShod1RXJXEhSVl5fFhyRFlFJT1QYXE3MGxYdHAKelEkT1hy
N21ZJnZeNXFMPEhAMlJiO0g5bm8xKyplNnpnPnN6YCN0Q0hyPSpPfEUkPEwwZCteYF5FVmJDIVNQ
WHNMCnpzdmVeWDFQNk5CaU9aMlV0OzZ3YDMyUCVOSGI7VClnJVRjezd5JndNVnRsWT4wdDgjVHdJ
PWh0MmtwJCZaSXBAcgp6RjlUaD5aKEc3NWB6aWE1Nj1pUF9JaFhgVjIqcnFkRXJfKnFJIUMla2Ap
b210TkNJaU52OGpvVjUkMTxZPno5QGcKeilpMj9AZnByd0F5S1FsZ3s8VD0+bEFZc3J6dSRaUXF4
eV8xZXE4YztzSnhoZXhUcmwlNilVRXJzZCshPkNUdSg1CnpkbF9PTk9yTWRHaWpJanY4TT4xMmJn
MWB7Z2A0V2plUmxtcUl7YldtT28jfC1yO0R4ZVpsRVBtQEc+NWQwcE00dAp6UlNfQjJrak9wNHh3
Kk9Bbm52akUpUEs8dSMpSGJ3UWVLaWYodEQkIUUlOWljbVg9MHdiaE5leFBadXt3cm93eXAKelZC
ZFZXeTkqUXBrUXdzRGJmOGdre1JEXnpZUE9RayMyLS1hdz0kMn1aUChqJUB5KFhBOEEreDUxYWQ0
bkkqc1ZgCnotfF9GRHQjY2hKZ2x0MTBgZnE4QHJMP2wzKVJAfEkoOV5HN3lFWTs4P05zRlk9emw1
PHNqdExaXjJ8eUxFVVRgWAp6bkZSdVEhQWNOdlNycV9NMElvY3RYI31KWiRrKzYpdyFVWGpNQH5u
OGUmfUAwbEE7ST5pTHMkZlU4cTZKKmBVPVEKejU2e1dVOStJKll5WjF1VCtyaDwhNS1YeEJrVEI5
S0p7bUctUUhudWEqP29ZQUNxNm1aMCp5dm5USU1rI2w/WFpWCnp1KnQxentNSko3ODV6ZkVrMXJu
bTEhQmw8Vll0aWM9Mys8a3ZYTUYjbiRxTjJuJlYkaFk1Sks3TkIqR187P0M+Nwp6Rl90X1kpJTtF
YWcrdm9URG5IVy1DOWwkPyYkcVI7IVNiQzI+Qmk1bWc2bjZyQD1QQi1HfXl7MmJeVCU8cHM2Zm8K
ek9+Z0xLXzRDbElnUT9+My1ufm4tNGd6TFgySTQxeHgmR3Vraz1RPWRSfDgqYzxVYj1qYlREb2V5
OXhpJnlDeXlMCnokK3N1SEAzb0VZX2prWV44UTZKZGQmMmNzWVZSO1EkJHFXYmBwRz8yLWVsT3U4
Jj4hKjI4UE9iQGR0eSUzaTZuPQp6QnhjSGpiWDc8fDlhRD91PjdTMzZLJUZ2NzZGNzd6MGtxK2pk
akliTjlLeDgqUUs0amZEc3MwTXNCeX0od2RYYGMKej58dWFgbCsjRDxhJnxXLW8tc1NmJWJPUyVT
TFFXKG5SPGh7NG5DWkJZQzgyWSFCWiYrZEg9dG1fZUxHa3B3VnpeCnpHN1JNaTRwWXVGQzgwb2Ry
cG5QQ15Pd3FqNG9nbC1JKTM1PWpnZXUoWjRiPWBMfk1CWVVJeUFUWXYxUlY3RmlfNAp6fDFuKyhY
WiVocE1vXilfe3RTdFVPNnwpMjZoQ2cjUFZCPERlTHJ+VTVZb2I4cykoKGcyfEJLaXBmb09DeWE7
K0UKejcpKCRoJTNwZSMkOGx3VlghITlTYDtRKyNmQ3FaayhHcDFTYk54ZXJVe1Y7UVM3WmNNLXw/
PzB6SFNPenw4VmRQCnpxNlJpJF90ZF98Q0JaODNLQDZoRUlYM1RFUyNFMVhuJiVsRXFkMklDP2BC
Nz1ZWGlLbFVGIXg2TUApMTkpbVUjZgp6YFo7cjY+Nj11fnVubk1YMTdMdndYbCFuN0hpWVUwWlM8
b1gmJWhhcGhzP1NfRllTNk5kfSh0RkFzeTlyJGhROT0KentxQ316bGV+TUwoKCNrM2wxVz1WS0tz
UVNJdTBuckJ2KjY+ODBJXjtAJFd1eD0hdEx1WD04WEw0WU5LOEkmQDhaCnozdk9ZKVN4Nm1oUXxL
PFBxZTFtYnxFKlRCc1d5NThZU3hvT2wzaz94UG9FLUYrKm14U2xncjdaXzA2PCtQeiN0IQp6OUEw
b3w2dyRrcHgtc31JMD0tLWRHNmlYSzk2QDxmPzAhbUpvc3EzaHBOIXk8PXI4RmlPd3hYU0RuMmdt
OWl5TmMKekUmPmdlamB1M2IkKGJhZyg0aC1vTTlafnV1fjtibz1yPXAoR0pUQWZIIWFmViY3OGxO
KmFNSFFlNV94KyElUzZjCnp1JjNpX0tMMXs2PilPQGw+NjxyTjZEMEZkX3RRTndpXipZWXQ/MkhV
b2ZqcCgxNzg5ezdBPlNjSlVFej1sKGdQPwp6aUJvbEJ4LT9iVTl+cXxYKT5xV3UtKjU4NyVDUGh3
U3BZMEBEMnpleDd3SmJ+aHFELTV0UnVlPCUmeV9vKCZBSCEKemZ9JCgpKTBJN1hRTnYpcWR6al5+
aWZWdXRVd0c8JnU7a2EpKjYxNTZ7Pzw+NFlwa3Y4I1NYcXk1VkJKZGRKI1I/Cnp2KG5OYVV9TX1a
Qy1XUHFhKWheO25jQUxfWkZSZFJ1czJLMVcwdC14c3VZP1JNdH1lWnU4V2N8XlhDVCk0S2JRbgp6
eFFEJnVDYyNgIWNSNmNjUSl5SUgoOHUpIVVvXzgrZEtLd2A5c31NSTxlaHNQOTwmM3EoQlR5Nzx0
Zjg7SElyKiMKeipEYTVVTUp4PEBjUX0pMVYpdlpmKyl8WU4zb150ITI1dV5zQFpreXstNmt+WHhi
RSNvWkNaIUNFYz8qJiE7ak1iCnpjakBCTWxQODJ8e2QkJUA/K3NjeCtvcD54ODZSUiVqMXxxM016
NUc0dTt+MCRzVD12PkJoQWVWLWJMVm0za25LKQp6JkA5TzBVMXVDU1V0TlRDNSY4SkJreCUtZ0Yh
MTJNejBuZDw0ZUI9Ry13YXB7cDtzYGpVfnI/R0JCTkNze2koNDUKenRAcy0mS015ZjVrQ0U9eXtE
VjM7bGNua0ppQDtgJkQqNFBRX1lqJkl5KktpOER0UEI0YlMlcnNodGRQWVFIR31PCnpHTzdLeUk+
WFopRjFrPkNlekB+RW9zNW5kT1d6RipYZD9GKmM1IT14djhuMDFFUXp8bHpDSThQTUJUWUdSem8/
YAp6RDhJZnVYRHlgRjNec14tQEskYXdgMFZjRHkxUWchenZzKEtgOWFlQ0ZDSVFTK24mJnF0WHxA
Z1YjMSpja0NOKFoKejBiSiNOI3BxT3d7UUI4PjYmYCl2M1ApZSorSCRSI1NVMSZ6dj9COWgkMmtT
MztSSHQrZj9tJnEmaT1gZDRkUl93CnolcE5kcUVLKDlPI0RFM3I+Knw3anpPazZqJFlUJmV7UT8j
VU48N25tUSU1VGd7fG1MPkZ5Q35NUXYrcnMzdmhCYAp6VmdmTjdhQjI1enl3UFBrNj8pT2ZoNmJV
KVVrNjYtR2ZpYVdeQl9QN3w5PElHMH1SeE88SHYhb1dyVlU7bEV5SEoKelA2OW5JKCRtI0opaHtW
MkY/d0BaUSVrRlVaOUV5JjUmJk1RTzF8YjVaWkN0e2I0ez98TkQtbT8kSGozfEVqfCNMCnpscEJH
Yy0kJWBJaXFITCYxXypBWlc7UXhIeCtlaz4wUEV8JF5ANHtFRXFeYHtCUFRDXldFWV9AWE1HXzVE
RTdYegp6Ulc7S2deJmokMEJ3b2s/KFc5RyMrNH1fX0s2djBxPjJgKXNQflo2OChUJGR1bGsxQ25S
aCVUKTZsaE5qQ0RhVisKenRiRHxuclZPNCo/PzhhQjItRFFxKnZLUCtXU2NKWigtSWd5WDE5aHNW
TXB7RFpTKyRNYjg4OSZRNkNpRjlYb2JfCnopRHNtTVheSGJsb298fSNPfmZrTmxwZWxNVE9LUmdL
PjgxVVg/S19vZUBeWTRPKm4jNk9HWH1YRXZEb3c9S09yQwp6KzlhOzAlWW03P1gmVC0oa31SbFBw
S25sSUFHK2FKOXp5SDVzPW9TeHZzKCEyaUJzNVU8WHdtTHoxWnlaVndZcWQKeiV8SG1HK34/fVFV
Q1k/b1h1M1pkbjYjRkVmTD1tMHRjQ1ZyN0MoWVclYTQ8YW9SU3ooYVBeaX1JbnhtNDk2Mj0wCnpa
VTJ8bUVoIX0+RERUbkBnJSshWmZtcTdNT2lmYHttSUZ3d3BqKDA3SFAwVW91d2xyJUxwM3VxNklA
TT5MdVhgQwp6M3o3MUNMYT44I3UtRX07YHEhXiNhQjB2bGlfJm1eWCQ9KHJDO2ZAYi1OdUliV35F
dWgjYj0/ay1xfEhzUjZTVEcKekBLOFFDZHUpOFhoZSloajg0aVh6KkFETz5KYVdKM0s0NUNFKG07
WVh4MyhWYz9rKW91e19kU3ZYZUxaakR4ZSVjCnpLUi1aYV9eWSZJO1BPe2dDYGR+aU8xTGw7c3Yj
cS1eVCZeV0VMNnFsT0ctIShgWnZFanJzcChVUnI/cm0raz9gKwp6eWdmN0wtTWNGfkkjKF5rP3At
bDNEOUZ0e3J+JUxzNndAJEpGSWFXQ2RJJHxaKUBIdEZKTVkjVExyLXB9P2c9UWgKejI0TiEramo0
TTVTe1EtQUtfRWJaUE9DWXctfTk7UzhnaTw9WV8jYnlefk0mUDAyd0gtY3RsQ2ErNSN3KWkzdGhP
CnpONnRBd25hOHZkM1orcnIkM18rcUx3RXJ7bDIxek52PlBpPEU3QFl5S2JxOXpORUY4JilDO0Qj
PGcmVE52PmpqZwp6Wkx7YWNUUTxUNkx+OFpOdkVMRkpXX3I4M1JVbH5OKGhaX3tPSDBkRGxKenZE
JHhMNVpsXiNpMzNqd1ZabV8mV1IKemQ8SXRyT2JPcnhTWnFqKzxeajF5aXhjYmlmVXYjMXlrTkk2
JDlKTXJfI3hmQiZnWn5RblcmOWk7QEVKKTR8UXFXCnpNcnVLbHAqbWdlKyZOPWFhOU1vSiV3N2hp
QnF1OTdic25vPGchX2UzeD0rKHEhTWVEKF45PTEoUmFGJSUwRjZmdgp6OV8qeGtfKTlrIVQleiZV
Y1hqKUokcEpge0ZOSlc9WlF2YGtzPiQtcV9uVGZeVGwlRCtwYTF8QF9RWil4PmRHTTYKekRuVE95
d2R0Xmd5UEtQd3F5b3FZUiF4N3xfbFN5U3lub1kyX25rVlA1SDcoWV5BQm8zLVUqVWl6dGEmSHty
cnsoCnp0R3RnVSp2UEJ1az5nRVBecCFLODF4cyk5NkNZYCNmRGB+byhAUzdfISolbXB1MU1De0sl
VE4pYjUhWjRGUHJTPQp6K2JLZmFXIVB4PVlVRVZeXzRxNl94P3VlRjsjZVcrP35gRjA+WjtmQXR3
SWZwRz5mPENIJTF3WSphWWlnaV5MXlkKel5IMTJZN3dqWXZlQGpATFZUPmN7KkZkdHEmanJxXnxG
Qz4kQ2JGKmNUemVtMlB5OWxRZ3ZLTH5PZF5rKnlLRXtnCno7N1J5ZWMkcj5lcTdRYCZnbnoreDJ+
e2dMMGxpVllpKkZVcWV6bHtPaXBqPX5Mc19OTilaT0MoMXI/VCtOZW5PJAp6VysoOCt7UWk0bTZo
QV8qd2IrcmQ8ZVZZfDM8czJFQyFtajwwX1NiZU5qK0NvTjVAelpkfVIzfkxFZ1ZSOyQ4bHQKenFO
MyM5YG1KJms9UGI/dE81SDF8c1lETWFyOVhvSDJqNzBiWmMmbVREPj1UbkpTKE9USnd+LT1ufnRO
bT9iKXxhCnotdW1hO2BYKFdMaXxnaWk7XiFCQmdYYismek5YKDYxeik7aHRELXQtZHBxd04lKkwo
MFA9YzNWTm9pbm0oPXlxcQp6eHQ7dkZYZCh4al5FMj9rJVk7TGxKcUw9fFA8TGwzPzUlKy1WOGRS
YjhUeHs7c1QjRU91QXlNRTYtVCtCPUc2cGcKemZuYHVJR0JmUjQ7IWdMSWUlOXJpYVQrR3BnSVJg
UVk+LV5sdDB7I2BLMGp7QTREQ0dnIXtOeCo7PXZseVdRM2FFCnpebyErZWgqbV9ka2l5V2ExcUI2
eTIjKnhmOGtpcyhwbGxGRlZOKiYoV1o/RHFEJj9pTkMlQXhuMDwlPm5FZVkjVgp6Kn1CRnJwRXpj
cSExb1hhNmtmNT1DelkzJVZ9YCE4eDJMSXg7aGtZRGtFJngtZklYX0gpUF55KFYzSzZxRH5rT2sK
ekJfO2NkeDg5dFVRYG55QTteZyF3Q1B3PTc+Qi0oZzVeYnZZZDJGbTd3T3tedjw4SEV1c2VhN3Uj
Zzt5RWc0VDU1CnpmKi04Zm1Nc1NlOE9iM0s4Jj5+MXJrM184ZUZmdCZMPkhuJEJrKzA5dE5ULT9a
VEZ1eWkoSUYrK09Gc35mQihgeAp6PyM/JW17emdkMTR4NlZWTHhyKERgMVFFIzkldkkrIS0qcFVk
UkMlMVYmS1lzRjNgKTtHM3o7N29FIXhKMyMyMUEKelBjZ3ZPZ21zcGhsOUU/V3ZVcT1NIT4wLWEx
SVV3NjQ4NGl5JDtwcGpZPEIpdXZ+NzdOSitXXzczZmQ9PkozSm09CnpTczRKejhOZnJ6RDNxSENC
RE5QRTNsTU1sUXclVjd1PF55az89ZndCeVhJKXNmSHxBY1AmJFpuSmV0fSVJd2QoKgp6YzdOO1lT
Xih3aGJpfVArcEFWI1dXVUhCNFROakF3KnhQNUNYSnY+JVhFQnlnM1NRM1p7e2FnZ0A+SVlaXyo+
b24KenFXfDVBWX5hSj1weD57ckxuTn5vJWgpTWZYQnFhbSR1XjRPP0JkRXkwVVNqa2s+VXxvdCp4
YyowcWgmNzRmTTlSCno5fEp9P1ExMHB2cWhCN3dEYG07MGFtS1E4WmpHRzJnMXJ7SHtTTGtseEhQ
LSkmYl4wVU1PWDBIOFA4VVpNcEZsSAp6eSttUzhkUjs8bj81JndXTU5LMEppamB5YWNDfmJYRHdn
dT5TQEYjdThwNGZWVSFGNUlIVT5pWXZ6ODR6WHslSjIKelM2eF9LV25WSSpgUUJoaHQ9Wm8jYFl5
R15QaTZIT3xIZEV0V0Y8KkhIfXNVSHpCKVg0ekJZT3pnLTcheERDc34mCnpBXiRMMiYlbjU9Y09f
OzJTKGZNdnhjK35aQj9UTX0wNjMtQFErRD8zKDBaUEU8fiVUaj8xQyh2X3NjSmt3a0FvdAp6Z1Fq
K3loRUktZ095eHw/dkEzR1FseXw1c2Y/RV4xI0pJeElDcl5LNk0kX288U0AwYUhtUkNeOzhMa2Jh
I1FmRDYKenV0cFhZNVowYFFvPExsfExYcmBDYGxMO21nfHlYYnt4O0VwSll3QmsjYV9tayF1UVJC
fEdOPnRoMDt3cF5aM2FWCnpoXmgyZmRjOUZ0N3BGQmRlZHxEU0R6SlFKP0U9dzFDPWlLRXV2Z3hT
RlZfMlhBI3w8e0s+fGVtdD8rQ2NmSlA8JQp6bmNDbkw1OD1rWUd4M317RGstMzk+bVVUT1Q7PCZK
Tm5UKCorXyhYMj9nWVJ6aCV6Y1R3aFBjYlEzYU1jVmw5eVMKejE9eUlrankoIUd6V0sma0M4Wnpg
a2VpbFE8JGVGdCMlSGlZOForQl5fPkM0UFJoKTJWcTRkOXQ0T3FxN0Q1P0piCnpEc1QqO25uRWYk
SHY4OGM1e1gyUkRSKjtuYzZ8TEJHTD9AajxIJXBmNGpwKWlfKkBvM2N5XlhyRFUmU09QTDgzVQp6
bXh3NiZUZ3BIPjg2U3dqNSFWRHtEKm90alZIUUVHdldMN2MmOF54ZE1LbWJPRTxAYzxqV2EqIXVR
dTxAZ1VuPDwKelYofkRQSj9wT1lIaHJyRDZCWDRJSlhaIUY2Qy1YfnNfRmlrYWZETT0tSkVOeio4
KU9iVWkwJGhHKTM8d3tQKkZrCnptKn1ZZUhHcGQ4Kzl8aWBAbzc/IzJ3bkVGJSF3NWZMaHVpbDVX
UyhEPkFRRW1GO3JXNzMhbnxrYXpxQSpfbmBtZwp6PD5nc3lvK3o5bmBkRVphcFBVbVpmKlBqejxQ
aGt5UjBqa2JMa1BWYlZ2IXswZHt0WmZAd3k+UzAjel4jYXp4aSMKelpBNlhIP2ZVPWw9WCtWcCh0
ek9zPEU0RU9PfFNqRj99UGUqQWBqaWR4QEJfQDQtYzNPQ0JOek9mZDRAZzBRXjdkCnpmWT52YWpX
SygleyFFZEB7MGxockwwfkxCTDJ2JEtgYkZRfUtkOEBCUkdJMVUrVktBfEYjZGY8LXJzNUVZaTMt
Iwp6PWRIOXA5VXAheT5abyFMUnBjKykkfmk5MThOVXF9RT8tVEliSE1tWiRJSXxVO09XNHxSJHUm
akY1NTdEZjdZcTAKeiVze0JoeDMpRnxhcGAoTT9LbylgUHQ5e29TWGY0TW8xfD1MfDczNEJRNWx+
UWJeI0o/U3I8NChFSjA2SVE1a2YxCnotZTM0cjt2emg5JVolWVk5diZXcGd7TkVeODs1RWsqUnM8
ck5obz1uWUZ1WnJvZmZCdnNudUF+REJLZzxCeGBnMwp6LWFRYng/KX59VzxmK2pRdzF0XnNsKFlh
MTVPPzZqV3dDIU9xR3E4bTYjek8kYVMtRyh0eXx0OEc0TGtObG9QWGMKekU3cmlQRyZEWWY2NDk7
SXtnSlY/UVYpPytAbCZUOWZTeE1zU2VPNFlFM1J0QzRxczRFQHp4REp5e30qZTVWZkZzCnpmamVe
RyRQcTxJcl5MbnsjR2RfRGYyN3M2blUmPXw+UkN9MTlaNDVJRUJyZzRGPmNOOCl4S0NpMTRzbSRu
U0NFYAp6T0Q9eiYtX291QS0obWw2RT0tTDdyI3EqNjx4MGAlS1VgeXBDUCkqa0N7I3smNT89TX1T
KTxVb29hezk3UVVgci0Kel4ma2Vsb20waWVCcGpLOGpvJHZ9JTs1R3BkeTJjYnhrV3lMXjh8LVVR
THdkX0FxMjF0ZEpmP0dJKzYpOF5LXnRQCnoldiFsP0ZOVyVoSHMtYm1Be0dZdm9jaHxZLSRIKz1y
ODkkNGx3IypRU144YVFkeXtlfHo9WSk7cUwjaTg9NHBwQQp6ZD13ZWt5KXtRaHtwVitEclFoV2Q2
ZjYqZ1BnPz81PE8+aUFMPUpWeCM0bm8xMnE8PHo7RmJtb3N0fVNQby1NNSsKekMpYSlIYDhNbEph
TWIje3gtdGFPd0U7Iz9Ra3MxMV5SQ1ZKZCRGKzBuUSU/LWloPjBSdmNWU0FIU2tTeDdxTUxnCnow
dDB3dlpacWBPSFcyVmpqJDghMGxNcWJgQnAoJGA0NDY5NCFtPXR9d0FZbDl7IzZhYWNBNz9EZHVE
SDtMZyUyVAp6XiplKUQha2xHNTlmMUNiU2BmUmZodXNOc3ZfKldENyZBdF8xPUk8R0EqJkZpUE0z
RUBnMSh2fDJHckF0ZGtsXlUKekx9WFoyLW4+fVRRZyRJPDg7UDI5N0QtVkpNay1mVFNEUHliZn1I
OHZsVURgcF5UOXJUU2E0K2pEc3ZSe1UxWk1VCnpwQSZLJWkqV3BJKiMtTjY/IyVTQFZldFQ2QDdC
dXRyPEA5cHBqTDlAT0tmRmo8PWVNIXArVD53amB8QX1UXzlrVwp6JGAwbGs7NlYlbld1b0VaTjct
fWRLckduNFUtTnltcXJKVl5KfjtCUitCRipib3EwJVAtb0F0Uj53b2pDJGNne0EKemhmRHRiaFgw
aSNJUjc0e2V+OzR0IXxBTzUoQFI1WVRoRSZxSE5KIVE7TlQxKFdOcWdxRERSZGdMcGpFeHIpaU1M
CnpKT0FVamppZ256b1RCMSlaKyk9eXomckV3QEwwQUNoZFNGdFdURzdvSlJHODlkMSVSJnIjdz8+
MmdnaTRUdzRaOAp6UTgpTEk8M3JyNTw0X0BQVGZENFV1PnJldXAwfEVnUS0pVHp4ekd5SFUtbTR2
UG9lS0E1RlU2YyYtXjZ2eThhOX0KejB1JXRMPG5eVEZXYXlnMW90LTA5WjErKWNsST93ZG9BM0xH
aD0/RzdlUEJrYnFTaW4+ZzF8eFY7QEJTTWZ3c1peCnorN1BgNGFFOFA2dTBVQnsyZmFySFpOTlBD
aExlcCt6ZXxJcmpwLX0wTz5eYThyaXZGcUc4dllGcV93WkYrVXk2bwp6JG8tNG1kcklmKTI2ITRL
UF9GdDNBQkNuPFB7UmVqOCsod1RuJkJlZ1RkS0AkWTBtKDRXMlNkeWVDcnE2bF5IWk4Kelc5KXxw
aiNXWkw8a0taZHhNdWo/WmViUGxVe3t3Y0I9TW1tMjEqSTVzb3slP0k7aiRSJS1qTkl2dlAzfTk4
KndVCnp0cllnYjdrbCN4fEQqX1g4KXlmUXFvYkVDSDZXPU82U2lyR0xzP2Jje0lLPX4oeC0xRlNY
ZXB9IXMjWEMhY2VNZgp6Kmc3RlN7SW9FbjBpekpaSCEmRTktI35+c0hKeVktTnZ9a35tems2NXlQ
WVo0NWAkVEteSDRCST84UU5jang7TkMKemJJUlBXKysxLX5TUHVZNVQ9ciFNVUl2Xkx3bUJWOTAt
WFlxMHxFRzJKUlNvXzElTm9pWCY0eD1uY08qMFl5KGBsCnowYSQ2PitKKiFyJGNwfjVWKiplVE93
X0dnPEdAWlc8NWVKU1o3OWs3KmVlRl91WDVXJT5PViR4KjtHYkUxI0JRdQp6Z091Rj9OZHZkeik2
ITxqSERQJEgqPVQzP1ZWSWd6en15SFZaR3huMUtea04oMlN+OWhJemw3YE0xQ0pyOHotajsKel57
eDRzTX5gLVE9KT04bD5oPz5STXI0NFYzenFEdWxQNFIhKzJQZyElaWtUezRWK3dEI0twdkpUSEJi
TF5HKDlaCnomYSQmRlMjXiEjMExyZVlaO2goTVAkP15LZmQ3P0ReeUVDTSlaTiFOUUNrTTVPP0RG
QyskSWE+JHo1a09qalM8aQp6Vi1PfG5OV18odXNlcXtzcnlqRUU+OWRTMlBnRXV4RUQ3e3JoYW9e
TFk9O3ZDc3tAfChMJDVGRz5KUn5oI0J7ZnMKeksrdUpBTmA1QllLen4jYmEwSyVge35HZkY7T0Nm
bnMwJVA0JFZnIzB3PmxWYDlnfkZZUk5nTH1Da2YyKm9ySnkyCnoybCV4c3VlUD1wRmh2YnJYMiU7
TCMlZVJqOHx6dm5yS01LIUdKeS1manQjKDdCWEBxP3JoTnRUOHF+JUR5aE52dAp6aTN6YklZfEVT
NDQ4clY4VXZZeTh5SyRCdEpOXmg8PiFIME5rT3cqcWRUU3czMC01KnBZU0s2ck19am5qSWprJUkK
emB5ZElWcGtFeztfJH5hPnU4TStYYThzalEhY15sQ0plI2Z8RGs1Vk9AUkF6JXQjPilxQ2Q5MnlN
PVNzeyY8TGBGCnpKRXVIZCt8dldWaEI1YjBvZWRxRzFFLUpESklJdCt6I25pUjNiTmx3bXhDfStg
YDhPQEB+dnRyWGtHRE8zPSFaVAp6KmYwbH5RIXt3eDEzc0tLblZzKDc7ODRCcEwrZXFue2RmPCkh
U0ZOXi1kOS1nWTh6NWx3LXIpS0ZpfElxRko2UlEKekQxUFM1V2A4Zjx1YXFCXzBscXFYe2tJP0tU
VDlzJSVxSl4+KGB7V21FRyg1KHdle2dOcmlkXnp2O3BUN1p0LShSCnoxfT1ePjNreytNVUxWMT5a
JUNNZWkoWkBBTU8/d0opUGNjMD40MVk5eklUMVUtbUpiPWR9fll4aHgqam0kUEEkYQp6KDZxPUB6
JSVIeG9fJDVhMFFgZiNGaHtqfiNxVD5mKDhnJT1FUVA1YXhyMnVZRyE4VjMwOHBwdmhee1d7T09x
aE0Kej0wOVVqbjlBSmhvfU95b3NYPVI1Knd9d1l3VjlAd3lATnYjdyR+N1hjYkp0TDV7VHsoZTFL
d2s5Skw8KVdldChGCnoqak8wSHBQUjk7OXBtRVQhNm5MM0tnN2VjUGVASld2dGZ0TWxgOD10bGdg
dkx3cnV2bXZee05hbGBzV3tSbHBvKAp6STZAYmZQezZJSnQqZ3RpNn1HWkxwQTlwdGhBKVVhQ1M3
UGxBSzlnVGxQM0JSYXd8dl42RkE4QERhNVQyRFdzMCsKek5LXkgyP2UmMzNTNWM3K3YmTz9aWFVZ
RW5fd19MVD04cz1JVEpNdTcyQX0mRzJHI0VSYnJyYl9DTVhvYmR0OSQwCno1IVFMeCFDdXhXa2R0
NXRadSkrS0tIPnQhIW98aEZBYk1jdTFRaXJ2YUwrJSkhNXhwS1BUbHJob3dHJWV7VTx0WQp6IVEp
Mk9oZUV5cy0yVWxgZUw7fTkyWW13QzBiRSZTeGhvSChzdyQ7MGhfRWgpP0Z0ITxMTz5kalFnSXsr
OUhGKXMKelhCKV9pZmx+MTBGRyUmV1Z4ZylNKlgpYGlpYDhIMkNRMXBhYWErJVZ6YUY7UUFRWE9A
ZENoVG5LRVN7UT9MdSU7CnpedTQhVyg4T3lZYGg9RTtNYUJ2d0RRWkhVcTVpJiN1aVNYPzAzPVBW
JWFeT3l4JDxEaSFOJEZ2TyY9OXY5RzFRRAp6ODNKbDRpUE5JMHMmclZFNVkkPCtnaSpjQ0ohQWJy
JCRMQiE+JStzI09GanV9QCEtKjticjlGfXFwRHpoVj19fTwKejRieElVb2d9eHliS0xPYWJwcTAx
bD92JihGdFI4SzkyJXchZkwpLVUwbW5IRWxHUyZhazkjYmowUjc+WEZDTlAqCnotVmo8bTQ9TyhA
YWVgZX41VytDUGB2YUtZYCZodXRIWUQlXz4+fThKUkxVa3lEVzFNTzBKaTIkLSsxZjV6JT9qegp6
N0p0cVRUWmgkcUNDSENyN213bXVienYjbmYrMko+SUclWnMyaj8td3JebFNAND54Jj4xfko7djUx
RjR5RmpQO0MKemtCNF5GV3s2cE0tbDVKPWM+JnYqTWE3I0pQUlFoMXJwYCoqKzwpKygwMUJ8VWN1
UFpoRX1WfnFvdjJPPVFHfklVCno4UWhUdlk2TUwyUjhKZG1FZVk3UGdRSF9gNFlDfUx4SSNBM01o
OSorKllzJnUpRTs0PWgweCVTcmplamFMJEspSAp6ZzlrekckcVF7QHhFRkBldkUpYCpZNmRDaXpy
a1V5NGlSYCl6e3BSWUpVOT5lRnxoaDd3fV9nVys2ITJmRXpJJTsKemtmVUw3NDgqNmtBRG0kbWxz
Nk9AcD5YblhuPTFOLTRZT00qRyU/UzJtRHNuMnBTQV5kMkBreCNnanBnQkR0RFdECnpGelF1MEps
fVYxO0tEWD0oOCtjaGV9d3ZLZUMtLXtoJVFfclBAUmVYYTg9VCpxO1lAfF4kdih9aWR0eHB2R01i
YAp6Q1V9dnBKRUc5JCVOfHFrWih6cEAzayM+fGlpd0hzVVREeVQyU3s9S2dlclAjO0JwfnxnPUpT
RF5YfiN8S0s/QDwKejNMVHU8Sk8xSno8YWgjTEZQS3JgKGpxVEBjI1czTVNXNT5aVmxrd3VnUGFV
NDdja2dLMSg9QHEtUl5VdThZVztrCnpGcTtuOGNoR2Q9O3l+IXN5OGF4VkxUXllnP0QofVBATEBu
ZHsxOF9Ka3s4c3s3OGchZnBnOUJNSlpGZmQ5Y3MjTwp6OV5YYzFeOy08KThWVihmMXptXmJHT2pK
Uz1vJjFVZkRJfVImUXF4LXskWFlZTDVIb1lmOEtWcGEjY3pMRTw2OUAKekNsQitfMUR3RDM5K3Yk
NytGdVgmS2FFZlM+KSQ4JV9iMj9EOVF9VnBqe2QjKXtgZFpiJGlLSmZ6cWpjQiZzJWh2CmIhUDB0
JF9ucHI2TjAqPzN2MW5APXs5ZDQ4NmFJZXpLUyYlWQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvdGV4dC9jZy1mYWxsYmFjay1ib2xkaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvdGV4
dC9jZy1mYWxsYmFjay1ib2xkaW5nLWV4cGVjdGVkLnR4dAppbmRleCA2YWI0ZjdkYmE0YWVlMDVh
N2VlYWQyZjE4YjZmZTFjZjk3NWI2MzE3Li41M2M5Y2U1YmEwMTI3MWRiMWVhODlmZTViZTlhMTMx
YTliYWM4N2Q3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9mYXN0L3RleHQvY2ctZmFsbGJhY2stYm9sZGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC90ZXh0L2NnLWZhbGxiYWNrLWJvbGRp
bmctZXhwZWN0ZWQudHh0CkBAIC0xMyw1ICsxMyw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAogICAgICAgICAgIHRleHQgcnVuIGF0ICgzNSw0MCkgd2lkdGggNzQ5OiAiVGhpcyB0ZXN0
IGlzIG1ha2luZyBzdXJlIHdlIGRvbid0IG1ha2UgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGJhc2Vk
IG9mZiB0aGUgZmFjdCB0aGF0IHdlIHdvdWxkIGhhdmUgdG8gc3ludGhlc2l6ZSBib2xkIGZvciB0
aGUiCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjApIHdpZHRoIDEwOTogImZpcnN0IGZvbnQg
aW4gdGhlIGxpc3QuIgogICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDIwOCkgc2l6ZSA3ODR4
MTI4Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc1eDEyOAotICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc1IFJUTDogIlx4ezVEMH0iCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcyeDEyOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDcyIFJUTDogIlx4ezVEMH0iCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9raG1l
ci1zZWxlY3Rpb24tZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
bGludXgvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwva2htZXItc2VsZWN0aW9uLWV4cGVjdGVkLnBu
ZwppbmRleCA5ZWI1ZTQ1OTliZTJmNTBmMmViMWEwOWI5ZmFmZjBhYTk1ZGQxZjVkLi44NjQxMTYx
ZjQwMWU0N2RjM2Y5NGVmM2EyOTJlNDVkNmZhMDdhNTgzIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTI3NzEKemNtZUh1Y1VZNzZ5TFlVJHduZ0ZCOztKJipTX1BSUnZSQUR8ZWg+aT4q
LUs9fS1YcEE3dHkofiFmYEg1ajcqU1NhCnpnZkskVERrNEs3VmFXJnEhVV87RDBSa1o7SWR8SWdw
N1Q1Qnl4MDVCZCE3STRBQ0QjJUIrdjh4LXVHd1NVejA5Ygp6bkMkPVo9JDhsdFYhIUQ+ZjQrPUI/
RVYma197OUc2UHZEKHsyTSlAP1UjQjlCP0lTI3tkd0tZV00rUEReLU9wLSEKej14RDJ9ZHpAQUNJ
PDR2OXA/Mm5zbWJiVUltZ1k2QllwMnlUOShAcmNqWC0+aEYjWS01bTYhcjE3NSg3Z011TCZ4Cnpv
Uj5xaz85RzRkSXJyNSlCZ0N6clpyK3pZPlo/KHNpR0crVFdxc3twWU5zaXNBWDc1K2RafEhSckht
eWRydkFIWQp6bStHSVllTyt2SlpURXJuYjE2MThwQU5qMXtydCtPdztSN3lxMTwreyYqdHVeKEkh
QEJDVVRwaXFpTmp8M0hwTU0Kekotdmt9R0xONlBObkd1Mz0/K1RRUENKZjN7R3FlX1Y+QUxXZEYj
VDlQWXxEOXtRdGN5fDMqQSluQ0xfXztfWj8+CnpRYz1BZWBsdG8qViVNQ2M2NV9eLVBlcXJvSHNn
bU1MV0ZLVUUzNHN1SlQ0YDNkaiY/SEF0b3A3UEYmUyF7ZGo0YAp6VXdBbHtHcTJgYmYkSWAlMV4h
WFI2SzhsKCMyWktuTjQ5Q3drJS1BeFB0MEI8bXQzRnhDZyZiOHolfHgjd3h3STMKemYza3xydVZp
blhYRmFedDZmQXAzNU4jcmoqdCoyWk1qLXoyQFchNzEkSGpod2JfKlgpdVMyellATlk9JU11aHhj
CnpBQGlKYkhnTDRSby13SSZ2TVNxKzg2eihmezswWV89JF5pN0BfZERmUjdiOUF7NyVDJXxIbTJ8
SkM2Mnk3c01vQAp6TGghfVZ4JDdHP1YtZ1hFbzc7Yk4rV1ZrRXFGcWc5a3VOZFZefj5Kb3kkR3FS
aEEoZnZoYCtoIzJJbHhLI09GJHoKenVwUzhBNG1vPVM7K0hTfWNQfTx5KmFycCUrUE9weVRBNF5r
elM5XmM/eSRRSlYlSGFqQ2YydkNiTDBIX2hLOGN4Cno/Ul8lKGpjQjMzTF5kSEpJKk16bDxWeElu
VX5NckhvVT5HNE0+ZjxtK3UmU2NhMEpXcXlQbGEmNy0jWVppPjx9Swp6eEVuRHFTJE9PeHghJVF5
RClGWjhiRSslfmdXUUVuTHpubDtVUCtISHdFcz1xZ3t0PmQrcyhzK3t6fTQjNyZ6OWoKek5rZ05q
ezx0a3k2bXlObWF2N2VPQW8mZkolT342N1R3OC1fcjFoZjF0fSkrQFNmP3lpdyo+Vy03X1lWbzF1
dVR0CnotT0B0Iz9VMEZFNzcoMmVAMFReeVg5Vzd2emE8IylQKFMpbmxET2c1JjcwMnJjXzthRHl0
TkF3LTwrQWJxe0pAUAp6KSlLRn1ZK3wpOEFeYSVPNjF7NUNLLVVmbTN+YzMkYGpeVjw5IU5vbEVQ
bUF5PmRNaCZKa0U1RFhTTHRDYjchVS0KenpUSklpaT95ZllFflY1Mmc7VXIoYTdedm0+K094RElM
PmxZK34mJm1fQlF8aHtPZCVMXldtKTZWfkB3QVRUS2VKCnpZYjUjMDVqZ1I7Um0tbzlDRlZ9JCp6
SGdSOypxMyZMYWtGfHdFKnImd218KnlCNmF5WExFO1cwNm9JNUJPPHwlJgp6ZWFaVDM3bGlfVGU7
R1VAJi0lJGwyZlV3Ky1EaX1mLVV1Mn5AM35+QGc0M14oYXUmfEAqUjJAYz5iPV9aOHwyQk8KenRz
NnM1MjYzRXdCflJeZXVHRUFvP1g+OFhAIVd2YnlXTCl7Z21BTX5XLVAlaWt2cSF8eHUocCZuMWso
YUVvVjk2CnoqTmE8SjlxRmZCRnZgLWNYMEVKJHAxKjdgdDdfYit3MG9jbGJ2ZVgjIWR9PGx5VXFF
TUUyV015Sj5yb3FpazdpSQp6P2t5azRkV0QtIWllWEBMRzl0Mn5YNn5EaSkrdEQ3N3ZCXjs+eTdv
NW1WfFNURC1gelNqfF5MWHxEezFZd31kfDkKeiEmT2QlWVc1Jl5aNjNEM15abGM5YnZ8U1pqO018
WHRTemF9LUNzUjYmNGlfbC1sUnNpIURyRHMocFNkX3RLPnZaCnotT1IpNj59KnZ1eDRTaU5RJHtP
amQ9JjRtaiZtQlJTVEJsT1k0VndRZCo0SlZeZmkxeVAjZDJeaUNrQEByPEpBfgp6WmNBZGVlalpz
VWsmazZ9JTV+aVBNKlpyRzh5TFpROFRLPHxwbHkmYG4kRnpBOXN9UHg/fDA9bVQtIV9ybEE+SmMK
ekw8cExHb3k2YlhYbzMxLVp4Y05gR3RAbFpSSnlpcXVsSEw5VSV3dm5AI1M5bDw/Tj5jSCokeH47
bTFgTmk8X2opCnpSIWBvP1J9IUx8WlFZI1VyM1N8ek5CTjNzNyF4MW47SilWbCkydkljNV9PQGtH
P1NVNE80MUkjWmV5dmA1KWx7Mgp6Z0xfS1RYVFNhS3tHRDtzZD82IW9qIUxTbmVXMmxyYm5tQlZK
Z1lufSlxeHxqeVgxX3hvejJiN05SXzY/UmFNRyQKejY0SzJZJUY0PUZZZCVvX1NZRFEwWDRrMTQr
YVdBKihNd3p8Ky1KXygqP0F8VW1hayFgeEBZWiZ4PUN1aXU5eGxjCno8UHl9eyt6RCNTYmg2Xkt3
aEh5Vmk0NXc4UlctNnklKjR6b1pFVVM9NjEqYDN5VEJZSDFYQnBMUGx7cnVsaSlqewp6PHtLSXMj
KTh9VVBmT0dDKUkyVVEySGtlMTRAO2lCeEcrKlQ/Xns7YjVIe1BAUnBpPEc+U2lzQHR4WnJfKlNr
MjMKemJHeThfUEYwSGd0aVI1bjlMMkVFdmlKTExqZV5wdTJgXlFZazdQTTMqYkNLRnVqb0ltRWh+
KlY8VztVOzh9cHEpCno8SWpVTzFvbkN3Tno2MCpYP0U4WUxuUnZAcStCdnImWnshXndYQVRmPDUp
MH1nJUwwP250YEtOTSFEblI8aWg5KQp6NmxfPCphIXJTNTRGTkJ7UG9vIX56azkqekVSXzZ7Q3J8
Yz45b2k/UTlXdkxHRTd9emI3UChoS3JsMjVaVzYrS2sKek8tcmIlcyFCUG1EKExZcyUlcWtuVmVR
aDUxWTQ9Y3Y+TmJ1V2o3TWg1QFElRGdgUFBzbl5kd2UrJE0tQHpQLS01CnpDMUtiWUtIclA/QUdY
TGwlUDc3cGxUNDMhYiFSYDshIT9lSFV6Y28mVnZhKFFoTGE3VittakZHIyE8RjZTS0hpUQp6LU1L
QXhfPShkKW9wNWghPjs4LXIkVUZQSyRyenJXRjxKRT83eDR3VylpJU5RbDY5RXtlLU18TFdtblIq
JWhyYEoKelEkPzZLc3ZCfEwhXjQ5O1RoayVLPEJTRCZnYzR4YEo8PCgwQEdRdDZZbHFAOUs5K01Y
RClLSjFfcUZRRjwrN1U/CnpQeDZDRSsmUT5+cnR0WVJEVjtNM0ErRlpCZ3dsYmwlRDJyRzMtY1pC
WU52SWk5P1E4e2J1Nmd5eVgyQ0kpO0okZAp6QCNEcCtxYEVvRj9abnheJDY7T0F0akpUaSp4WG0w
PEdJYGVoWXVVb0p4M01kOyQ2UlZ0Uk16JFIkMWZAeyNOcHwKendVeTUoIV5yNEdFd2ArYWomLW18
M0F7QURtQnpzZXlUa2YoeHd9OyM+UHdkbygka0YrZHYpZkNATm5rbD1COVJ2CnpQSTBYRSEpNTBB
b0hkTWFyLWpCfWZ1LW0qPFNseSYzMmw1UF53YGNrVEh1MzNjSGk3MV9VN0k8KX5LTDRlSTxFYgp6
UHAmIXZJTl5GPCQ+bkVBN2xwWGJ4XjJ0RW04bzlKR2NMTW9DIT5OUV9Gej90a2I1TGNBS2srYnM4
PyZJb2JtZHMKel41KlRRaSQ1eXxNdSUyP3VIOFJmY15CKkZ1NG1PX2JqbW9qQmFsWW9tIXptUDFF
Nk5BbVItIVBnJD9xSVROIVVFCnpEfnhpSz5WUTJ8aGBoRXMoVFpocUkyPWs4VGZJMDVUNDM0bVZC
KmIjOWlhZVoxdj1xeChxKDEmd0RoP3c9fVFlYQp6YX5qK2RIVV9fdEpiNkc/dlYqbkc9JTBVPVol
MzM8MU5JIUxeQz1UKiQtRGdXTj9jQ35OQTVJOSFgaihaSVl2QFUKejx4WSVjb2hYO09JdmQlcSh6
ZTN9MiRNXnJYRFFsbzdXJDVOWlZ8QEF5Nzl4ViQydm1VWU5pZ3M+WXt5NDNwY1lICnpsfFNPaE83
Z21KPz9+VWt6P0JCfHdNdDZWT1hoRj5pVUQoWV9UcWNeTCFvQCMhSyF2P2Q2T29jS1lYYC0rRFgj
cQp6OWNHPWNQO0VOJEs9RzZjKHBOOEJKNkJIfkdkKjQ1OFApaGAmNU1qWT1idHNxQm5fVWJKQnNi
YzBya285N2ZlRT4Kemo5OU5GcChzPVI7fEBgRnN9fHx3aHlBKTlvYm4mNEc7SlVSKH4yQ0xWRlJQ
eGMlI0VYT3wja0JZNGM9XmEyVS1XCno0d1Z3XyVvYGFee1ZKTDlASkw1IWN6OEl1JFV1PyZ1SGJJ
Mm0hOzcpTXMxRX1TSkJJISFCZkBsNDMpcUtqJkVCYwp6PUZGR0o3cDhZRUEwfWdPQ2YhRkJtKXxs
WSp5Xlg4SVleeE1SezJAT1Z4WTB4LX1wc3R3dFNwQGBKbzJNX0tRbkQKeiVFIUBEd2FqUzhEPUkz
K24hPGYqc3BJNDA2P1Y5O20hM2c2WC1iUk0/a15sJFY+ZXpXTmRgQWctTz16TG5tTVMzCnpJfGxT
QG5peiRmZTJDdVpLPH5WaU5jPXNoRCRLSTtQM3AwPnQjO000cVoqNCkpR0Y1LXs0a3IjQmk3ez95
XzMyPQp6dnF3P3VMRn15bUEqT25kekUjXzsoISVhaUJwVjVMdzl8fEBIUi1NSiVCJCpOVFVfTFYl
SGFWYk4zdmhzWHk7PkIKelZTQTF1Tmc5N1phfTcoPmpwdlFnTlVTJTwwRmspdyZyMmkjcUk1MnVj
VnJTeWhDZ3JEPXNhZVRUNmd4KEp5Q1JzCnomdk1qdD1CLV9ocj4tfl5vfmZ8WDwhPW5UOEY2UGFI
PEBHNnFVTEUrY2h6bE90aD1PLV4yNkNjamx6dilxT05yVQp6Slo8QyRISj0oTyh2NGlLXzNFRDFI
bCpLRW1yMn4zcU5xdjA0Szs/KzYrfk5iRTwxKGpRTGFNOHVsNWo9M1QwZWUKenBIPWk/aUFoJVlk
cDBKSGBZR2o2UHFIZnA0NlJ4a1pHU0VGWjVLbnokI2ore2VgMCZVSUREPz5SNi1NVXBAQGgoCnpJ
YUAzYGxJI3c4dD1fbCklalNtQDc2UiNPKTQlTU1kRHt+N3ZkRjZSIVU8dT1iTkohMyZubzlKWHdy
SkFycXpNMAp6I01TYyRqNjIoRzMkPW5McGh4PTZaQzBNdTJhTUV5Yl5POHNYSSZmX0Q7R3t9ang1
NkAjP31AKGw9Tl9PTkl7TigKejEmX3wlOG1lLU4yS0kpPmphenRNRUNPbFJTVmNZQ29mVnNxOTdV
dl49RXQ2NTh3MGgja0NRSiFlSlBMU3U3cjQ1CnpYTCpAd3h5SEc3eUxNSCk1KW0kbkpwO1BUK0Nz
O1JMQlRTQFROM0BKRF9nOWNHcERCPldNT09uIzU7JE4yaiZtOQp6V3NCUC14VSVvcU0qWCExX2sk
TDFpbTViaVBRKEgzZXhVclM2bSNmfHA1KGtgKFdya1UkUjI8JVNQeWAzSF9uYU0KenArdHw0R3tD
WHRRTX1AeCY3NGg9X3lHRWI7eHliNElDZGZSc0xpKGZnWmR1U2h2TTRrdnNaMGduKkgwJVVWNGxy
CnpfMDQ4QUZOIUVKclExSThhVDN3dCFMIW1gNjxjNTEqaXBPc18xMEQxR2plVC0mbSpTcVNDKlQt
MEhHcGVTZmFObAp6OyNMRXglXlRaR0lQYHBCYlZnMjU7eF47e2FnJUVNbnYkQkQoQ3V8Ymc+NG5F
UX53aWxzez9AKE00ZEZjdlF4dUAKejIzVVA1PDM2Wil5MCQ+RCpAZ3lRKVlRQDw9V0Q1US1NSUNE
Y3p7Nnt0bTs4OyFAcWtCYzdMfGR6QTxFSz9wPU94CnozJHA9R0VNVTBXQzc4dFpLNDEqJlg/bmFm
MmJ2K0M/UyhOK25DbVNaOHlfYkUxKigodiEmJWVxb3IyT2RVQkF3Wgp6NjlFNHBVbzE9SGs3QD5k
Tkl0MDhZcF4qIShAekgkeTxsfnZzalQrcndSeTR8OzRiWC13RHY/fXNFNitXc0V3IXQKeiMtY0Nz
IyQ8K3o2cCp4RFJLTnQwK204YE1fX0EkOD5NTHV3WVc9b3F5aHd7MT9Nejl+d01wUHZNQ0lYNz1Z
Mng7CnoxaT1AY3o0TUp6YUk0THp5I0VodERuOGpOWTRxYzErU2o9MyswSFVOPlU+NCl3TldUVlNA
YUdJOUBmcWtIVHpvOQp6UWZXaDw7cDY+UntVRl91bHdsfktYSnRpPjQpeFhKY3xCYX5YMTgzOCZp
dEA7bSMjfEp4c1dyXy1pR2IlP1VzdG4KeiklUi18ITtaNiZFeHdVbWxAfl9wKXxUOWElX05lNU0t
d0pDJDdQWCFuc18wMCgoPG1+MX41NCRmaW9nZl9Ua31jCnpCSVBLYmRgRGI1RkRRXytKUjttNzNr
dzMhOHg/TWFQKU1tLTZHdTgmQVIxKzNDVnY0fDdqRU4oeTNHMjFMbWAoZQp6Un1xeGtnP2VibW5L
NX1uQHY+fW9ZMG1jfFV5V0BUQ1BrRFRRXk5scSZGREVyWlIkSnQwN3xSTj0/NXxJO0ZwaU8KenZU
NCZOPGJlUGErSVpCfTVfIWpfRmZXRnlveSV7QHMjZTVCPzs9LVQlYTUpfWUkT3Q+elBnTm1GMEo1
PVJvSnh6CnpKayt3JXkhNj89QmQzR0w4KjktPlo2SllOUCNEcz41clEycW1NKnp4NDN0M1FMUF5U
djteTjdSND0tX3A2LSRoPQp6bnRWV1o/Y2N4T3J3QkYyVlVDSCF4NXR9JUdneHw+VVVsdCM/S0No
YTJHRXRERiM5Y3lfKiFqVGJBfV48OHMhOX4KeldHRzt6JWdNP3FJbzI7Y15oaTZeO3loY19CfkRB
JnIxRSoybUpgUjxGMVU9JCYpZmpUUUNlSz16ViZnNmZmaVVoCnpsKz1vWjY5cHVpeV87S0c8a0ZD
S25ySXlkMkx9TylsPFZIXkRlV2U5PVZEWG5UTkk/S3cwNmk8Y0lxOVgyc287MAp6WUZJbUtXRT44
TUlxbSl2YHhUbXo9JmZudmtSM3E+MWIzTj1GaDg/JitOPGpVI1RgNVcocnsmZW5FI256PiVxSk0K
elpSQT5jaiFyPk9WWGtGcEQ2OEwkcj8qYT0hRGw7c1QoSzh7eDl1OXBXPjV9VjZFVmxCdHpBQ0Zr
Sk0zX1cje3E5Cnpec1VWe0E+VU40QE5CP2A9VThNOzsoRHA5eG9TZUZSTX1vX1UmPj4wIWImKk1G
aH4oYXlYdV99OWZuYl96Y1JUZQp6dDtZZTBfNGNBJj0jYypNXl54d21BNz5ZKHFkZ2hiMGpIfWZO
Qig4MjN5Iz15K3ZBSHVobWBYNFFESmlsbD50cVkKeiltY20+YGBLaFdZRVFwRWB0VmM3bEFCI0t4
OXtIazw0fTVpYEVGdE5oKykwPjlvb0hOYkhmK3M2fWhpdTE8enNpCnpwbkh0MTF8fXYxdXYrRnRg
cklHK25vcHtgckZ4LSU0Z2N3fVQ7ak8wV28+RCZLP2g7cFhDa1oyPGV0X1N5WmlnQwp6YDVGeTEh
K2txN15TZXVIWVNmWlRYOE1PRTkhaCtDUGY7TyRgfnlEcmdzZFUrTGsrIUM0ZztebkJxR1htUmx+
SnEKenBRfVkjNGZAc05Aem1JKkRvNyEwZTkzb2I5SkdJeGBvVmhpXzE1ISsqSlo4fClWKy1ZKn53
ejghT3E4NUs4MkNDCnpCMGtfT3FvJE1PcG1EUTBSY20jQl83YjFwdEAlYnBxNTJJbHhuY2EpJDZE
RHUhUzg/R20jMTAmNSF0VHx2N2FKNwp6PzsoNz8zLU84TWI0Y2peK2hyO0gyMG4mMDRKPzd4YX0t
fj8jRV9GN0c+Xyg3JXw4dCMmdFJjZDhZZ2RoJmVRbCoKelQyXz9kI31+VmNzfFBufj1KNnJWWlNa
PDxeRGcxPEc7Vj56KDJvZ1c/eykzXlJPeWVzallUfjc+K1kob1U4S1hzCnpRWkhfTV4qbUhfWCRu
JHFvKmgyQkAwZXlsY2VlNmdxM1ZxengpQlJ0dW82Q1FXflMrYEd9MUdTdjxAfGwrelBvQwp6Mzx6
Snt2ZnxoZkZhcVg5TUNKMHlvRTU0Ymx1NnI4Y1V5c0IhWnhnPSlaJE1ydlQrbVV1bXlMOS1PJjY4
cj52aD8KejZnR28jVUJhfmBMZStaaHtqfFZ3QDA4TWhZPHwmRntxczgzdEo4IyoxJSEkY1p6X2lv
LU11R2piOzhCWCYyMm52Cnp7PmBDPUBBMiFJRD9gJEMjUERjTW9FKDs0U2FoMGRGZVliRnVtelJ6
a3FpaGBEJkd2dlBGZ0VtLTVKNX45WlhkMQp6RHdpYVh1NDF4eEl6bkZtX1NNb2JaV1Y7QGhAamZD
JThYWjQjNiQwdzs1cUxsejgzZzBjUWZFeXV9T1VpcldJWDsKeiYqfERMdVc3IUU7MlQpR1JOSHBL
T3ZhWWk5cmwhUz5Nb2BaRTsjbyE0fm5UMFBlKDJleFZGWD9oV3puYE5UJUp7CnplezUoJkdjKSs3
JGVSMVQpYyoyPUQrYDZuMyNQR1h4amcwVEkrRzZZezBaI1RHQipKYEN0LVgyaT56dSY8alZNbQp6
ZXp2M2hiKUE5SWghP1YqZ28pVVNHY0ooe2VxTFhHeGJuLSYhJElDIWxYeSVMZjU+ckBGQENLbStJ
RGJBZUN2O2wKekw7N3wqTmpHVjFMKWR5eTQmYzBoRnlrak5YMFlvfnxISExvY1l7WEozWX5ycGkl
cEZqY0pXZTltb2Q9d290alFqCnpPYHx0cnY5c043Zi10QzhrQHducCQtS09JTlg2TkhSN0ZwYjNF
OU9ySSQ8K2tuTWtQdDd8Zl88c3tXT1B4V0srUwp6XyFKSTtwfm1vK2VYekc9UThWfFUtfCYhc3Q8
QWx3c1FodV9iYShtdjVvWFVUMT9HNUQtSkBqfWVOeSE1TTMkYlYKel9TQ09GbjFtPmgtUzZKTDZG
YTF8MEF9MjcreG9LUjg7ZzJ0bHFDcHRCaFI8THBTJChoeUNNVTx3RmdJb2VgWng9CnpXb2lhVFdp
aVBHQTk4Y3ZgV0crTndOayotZmw0NU41WGlKTilacjJocyVqc2pHS3IxN0QyWWZXdnJQNU0mSnBq
Wgp6WnxpIzcrc09mUGI+ejxFOHRfcjNuSXxgdmhGNGN3UnVlJVNmbEghK1NELTlmWjgrezNkfERZ
a1R4TUg8VXE0fVAKejBGb0JDO0c1R3xVeDFTN3pxejk5UTJQVnBSZ3pwMCZ8TUJgOVhyenZfQmA1
JXl2U2QzcDVJQC03X2V7YVEwODBiCnpyOzt2aUFON2pFZ1k4ajEya1JTemhxR18kOWh9R1FvSTl8
bVFvIWQwZXxZe0tOKl5TfGJOQlBVTT9ASXYlTDdOOwp6JSQ+YDNhJiFjSnE4QiN2UiowakA9bHZI
ZTl5KWMheFNGKVIkWGpXXztxajU2VHJrYG9wSzB3eCZfKlFTJCUoTFQKeldtcmx1dEBGNlg+MTFr
NGJPKUVmK0BoemBLJm0pN2pqP0NEZEZ1P1llKCNJVlhCcX5LSDNVS14xMnx4ajdRZSZsCnpBblZL
Kkt2QXxuZCZhblBFYSsqIz5FTVQ2Z0t3OWs9Rz1XI1EmVFpwdWpOWVE3aW4kNmdMY2srPEt0M3hK
MSp0eAp6SWtfRDxYfUxQI2JEKVN+SW1fSSkkSjJre0BpdnhubikxPypzNyhWUiNEZUM3MlBGaSVn
YCZTNDRHc3p0YmxIKDgKelAlV1ltUHkpU21wN0NgJV5RP3gzM2p9PSRKV2xLT1Z1aGxBIz4lYFhu
d1VWJWk8QmR6M1ZRNmYkMSN4ZGJrWTVaCnpVJHhgciV0eVByfEZzR1hgYylISURabExBSXt+b2wj
WnlQLVg/NkIxZkMxKSs8SzBHfFp2UnlRSFlzaSs3OWk2Twp6ZFZxLXJ0cF8hQ0xfMV4+ZF47Xn13
R3t8MStjdiM/eEdWbiFSU1UwPkx3ZnZkdVdXcUNkfmMhdWFDUEJYVSY/dDIKemdEZFlfQXI9SHtm
ZUd+V09gPG5lUlJ5d1ZJeT18TCRhUyRve28hMW4hODZCcGxpRlclI1Vkd3UrN18oXz03IzNrCnp2
Kz9YcWpKe3h0by0pPiVJYyN3bU9Bfk1pa2o1Wll3QGBkak9jdHY2WDc5NF9fSzgpQ0xDVG5sZj94
RmRMTGFFewp6QWI8YnZXZlJ7eEtxfFB8UypDemkwayorbGBUNDZlRGd9T2lBU2JZPUREVTUyOFdt
enk2QndkZ1Y9bThzYlprdEsKenRrNkY/c19XQlJ6QG00XmI8e1VCSm1GbSRFanJgWG04YXBLIUd6
U3pOQXNhaFBuVngoUjE1b2dKcGhJJGdne0l0Cno2TE13T2BzO25Qb3AtYiFjeDJ0Qk4+RF42TS11
MDllTkxMXlU1U3NVKVFFeT8oQUF5bG5JcWZgWGRzYnBrPTZ7Ygp6MmNmb2l8NTFfb2pIdT1acWpf
VVNUUTRPPk1ASl8+M09OTmVWSSEpaHFuPz1PTX1hZ0ZmeHhvbWx4PFdEeE84QmEKemU+VDdoJEJw
YHkqfnF4alF7XkBDeHFodDIkeyNRfkhFU25CeXY1RlckNi1BKT5AMH1IM356Q1RzITVoKmRoMjsr
CnpebnpMPz53PXdmcUwqSDchVVcjbVpaNWZSViF+QkZodk42X2YrS1hWYklwMnwyNSskZlhZdWZL
YWJwfmYrWiZ5cwp6RiRNQ3Q4NGAxVVYjRWlCUiY+ISlQbn08R1lVcTJ5TCEkMUNAPyQ3Sntga0Ql
QFgkfkxMfXc2JWk2MSVyc0lnR0wKem9lNS1FK1NIYGVJKGItV3ghcTI2Vk5sPl4mdEFFcit7IUV8
aUdxWHw7NjU+UTtIZWVKIXc0QFV2JDRDZmk3XippCnoyRDRZIWR3fihXcU9PQWM2bHBUU2NSIXg5
NHdadUdLckFHO1RIXyhGVWBOaV88eCtzeEw+QWRQaiVHSE5DMkcxXgp6Y1ZBR1hSJVdvVW5TNWw5
aW9xJnpFcllxJXRHNWM+cGxFMV8lUzBWbEt0YzgjK3t9MSNgTnE8OS10TjhQSjJXQW0Kej1FPnU0
KG9+dE1MMWh0VVB1NmRQKGx3SmMoYkNjeXd4ODtHVyVrYVMxZms5eGxSVnk9fDAzNVhHTkVCT0VH
dlZVCnpWT3l4S1ZKTUxIWWRmRnJvfnFVQyQ1ST8pVHNRWT8+JS1SPDN+ZWFkeEA/MnkmKWooJGR+
VU17SmJffCRCTHRYPwp6e3hYfit6V2ZkSFpzOHpyek51SGdCNzVXck5CTHdoOGo2M1JIMm93LWU/
TXBwc0Fqaz9wJG5kV3Y3UHpnQ3JmM3EKeklKcFpzK1RWJkhTeipJe1NxKUt4Vj1rWkBlKjVhVThE
Qm8oKSt4fHAkN3dIYj9PbW18NVF4O1lQYjtCfWF+ZWQ+CnpnMkRsKyotI2EtUldaRXJgUSZgQ2pq
LXliTERZc29yJS1kJSleIVJIaXNwI0xfZGxJVXR8aSVzdEtZQV87N2FIZwp6TjlMZExHVj5OQD00
N2s3az5hYFJYVnpzeVZlIWhsRCk0d2JgISRScDFfbFFzdE45VHhWcXJ5KkpwWHtRI2EkNVMKenFx
bkIrVy17TnJjPkB4MnckTnRkIWheaGJAJVk4WkA1VjRxRX5oMEckY3gobjxWO2smdEV0I1lsO2E1
OTRPSnpNCnpyeGtaUnVpYyVDdCNJN3dpREdYJT4lMz9AdUdPNUstUVMkcFVYRy0jZmVsVHZqNHhA
NzN6YlItdHFqOGtrenRIZwp6WVJfM29iRCZibWsjaTNDbztTfmYpeDc0ajQ9dnVqZUt3NmdII2NY
VnVTdHp4ZHh5ZVleLXxkP3lrM0BseU9tdygKeiRqTW9yemRkXyhwU3soQWNOaWx5YX08Qjt2O0Fm
cXNtSzg8V1ZWdjhwUCFrYWxMQ3s1WTMoOHFWMzJjOGZLMlhFCnojUWs3JnN3dEhJTW18eytPbSt0
ZzZySHFqVXckeWpWUTMyb3o2TXJrQ2NKR0dFI3lJKDVEZVpBOyNgcGApPXR3Mwp6X3ooaXxqPnZf
bChJTWthOzRpdCtuamAmMzlETSg7MkUwP3RBQmJrODdDVWc0S3VkJU9mLUZMbHkhYHlPJkRLPzgK
enRGc1hjP2B3ejcrO3duQj9GI2FkJCZUdGIqTHMoJEtMMVhPcmomNWlsP35LfGZ4dk1kI0RAcX05
TWoxOFlNcyZWCnpwO1BLV3taaXk/TEBrQHJ3dnszWi1ORUp5SWwpNVB5aGBhbnAlWk87MnV4YHND
PUgreUFFMG43VSF4KU9SRHZidQp6VSppV2d6RVF1fGUlc2NzQC0raktPWFJ0O14wfGEoVlUjIUF4
ezcrRTtBPWp2LXZ7NHchNyNKSDdIJmNpdGRkKjsKel9mb3hsWGVSNHljKmZ4WW8jMTZXMFlmXjQq
VDE3LTgyVyRjV2QmPEAmb2Q2aDU5QXIrald5WitVSld+UWBOMD5nCnoqMV4ybCQ8UXtRKikqLVVo
bU16N1ZqJXM3UHleQEUhcyReYkl9Pjk8UylSWXF3OyhESmdfPH5Vdnk+dmZlI0lzXgp6eWJ4dXBU
JkszfGJnYGlCKCFCQ3goUEQhb1dgQUtsTGpLaldBK3pqSlZiN2tudExge3hLfGJwamRsNVJCRzhG
PyYKelV8Y0VeQ0BgN3hkNiQ+OSt7QTFjZ1QhVHhtNXo+dzVEUjhMPj1OVVlZMy1uWjBEYS1rK1Mx
YUore0szPkxqSTxsCnore3Z6bmVpaTVfQVhPRW8yQmtEUWwmTno+cEspWWxCdXJHfmQ1N2hfI3Uj
LUpAN3t1dV93UGVzU0ElSGJLUV54Kwp6NU1UTDwmSHw3VTA1bSh9KDV8d0hMTExuaEtge2x3Yjgz
IVltPjZ2WCFefi1VUmU2Y20pZ0h+Rl9VYkRJMHtvJGMKem5gcmNVcFVMTHA7RjJ8RmRqTSpuQWFT
RTB5cTd5cldAeXZSK0VhPkAkJWlXNThGYl5ARmsxUkxxezRlM2Y0Mlk/CnozQzxqbEYmSSptTGpT
Zz1DTjg5KEFuaWYpJl8kekFpbENoNys1MWFaP21zJE1sQDR7SGNtVD17PTZYSWRaciFRPgp6Ylc+
Wj93NlBmTkQhUmZzaloqP3VkQ1gocG4+Vyokc2F8MSlFQ2VOPyg8ISMtZTB0VXxwc2ZfSihiOVF2
K1ElPj4KekUxfno7KXdAOXZxMXs9OENyajI5VlQ9QGQlKk50aXJrckpVTVRIKUp5fSRkKntMT2Uj
Pj8oPkJiP2RUYGNVQGxqCnpIJkphQXR2OHhfazZqdTM2RGZOZ29+fDlES3E0PDFzZFk7SGp6eGNO
ZkdnQlRGPXRZLWxsdjk3dCEqflRCdERTRQp6a1N8WXNqUzg8X1lVWFJAZXU5WXF1O29HaW1yP3Uy
VTctVjNDTDIjZjszfmI0bX5lI3FqcCUzcyU7KjJkUTJ+M28Kei05c1pqODBpTEMqP3FGbFl5VypM
dUpnVlhhcFFiQytXNFE8cHA2NFpZVE5oaXh7Oz52ck0qR3laKkdHTEghQUE/CnpuaWZrZUUrOEs5
VylmM0EmZ1FzSFZFRWVLZzB6RUpuXmtuSnhPfHsqREdDIXw4TjBDPGN+eCZXO19sUCY4eWs+JQp6
IVNxSlBBVTBtR2hIPE8pPzFZRjI0ZUNpY3loamJqITU0K3Nkbjw2SCpkWWZXU2k3WVo3fXRTVTdL
PyZCIVptOGQKejNtNmIkKjZyclZyNG80c3xBeHhsZjV1OUYxNWIrIzs+MllRPEEqOTh1eW1ubDdE
SVYjM1cqQl9rWCRyKG9mI2ZUCnpXY3NfTWxxfUBhY0QmaE1rbk0rQlRPRlc9YzFYaVYrQnRfQmdY
PnspdH13JSEmQWcwaT5hVmBNMzl+cUg4VH5FYgp6Kk5kRGg5SFo0e0ZMcXYrQXtEJHZiPDxxbCU8
QXRuYTcoIXohfWdpLSR3TjNkR31KcTFtNEB5dSg4O0NsTXMmNHYKeiYyV2tUSWV9eChnMkcwcyFp
YTk9PHpDcnc9PEB3cTxOcStXZi0reD1hKWxXVCgyTkBsWHJ8aiFqTWozPVMyVWdHCnp7PH0pSVpl
SUQlY0BtSHpman1eVnMpRjFXQnZtd0JxXk4xfEpPbyhvYSZyS2FIbmVkNkYtO31zI14tMFZ5QTFI
Xwp6TyVXbEBOQFUwe3B8QSlMWE5WM1FmRjZ5OTZ5Z2pJNkhUcX1kNkpCYjJEfXh+M1FUQjBAa3J+
MGRDc3ZraEpJaiMKentPOS0mckd0Mk0oT2tybzh2Rj93Zz5yZWp3eiMrJGkjP0c+Y1dIQEFtRFgj
eEl7JEklNzRsZyV5aj9xRDF9Rj59Cnp7NU05NEBuUURjVFFqJDZKYjkhM0lEVEp4OygtcDlxQH0o
WnhNYXNYQW55T3J4UWYhJk89YTFKSWkhbUA1TUtRawp6TnFCSSpqb3N7UGxWNSlKK1V3dDdOP0pR
KkMqeWBSciRgJXUyeGVEKmooOXd7P3Rpb15AbFk5d001PDVWJmdSZy0KejB6cDgjeSROc3Z6K1pP
Tmh5OSlQX3VOeU1YO35JWno/fjtVNGk1MmhQcmVxZV9MeFlmYFNPbUB3JSkpeGZofVNaCnpYYVdN
N041RyN3WHh0fjd6MzdBZUQ9UEA9Zn1BKiRQPEI0U0JGQWdDREAkfnlxP1J1I1o3JTFVdDU2WV9a
O085cwp6NzdWOHVadFU3a2lCbXwmKXRxRkEhKzskKFMlUD5XI0M7byZieFJGMVkoTjJYJTJeZ1V5
U2JzZVBMKE9TR31tOTkKejdZISlOajNBLU9lZksyd3NEfElXSmRJR1BWMkE8RDU7XyM+a2NYV15V
Y3dBRDQoNyV5NlJqPDhvX3F+SzM+QFA0CnpkN3tYMXlJPSRoJF9TI0NTRGpJUmpYMDhkbjMyclVk
PEZIR2tDU2x0QWUqVkFNfHpXWUFtUncodEBaakJMJXs3VQp6N0BIPzdkJnRIdVJTYDwkTV9jMmZZ
bFJ9VjwhQCNuUmRTOGNpNz8za089YCR6U2p6NDdUcD4+MDZhJFk7RCU2WEgKem9UNG9yUDg1YGlU
Q29URyhrN191cHBue0htPHQ9aGJ+cmpaUFEtd0tQWDtPWHdRLStfa3VRcmA5WXxPTER4UVBUCnpH
eiVBeHQqKS1sZWdaREN1ZTFaOGA7TFVIPnZxIUNwVmZLPTh7cl4yNCpfVmZFI2lBe2puJEIpZ0xn
UVFUdFhEcwp6eG9Sb2JKKTVRXloxLWFsVlo7SnNDZWhjNjA/QnYhcjBsJGEoZlZmdFE9cnIkVWhj
Wl97aHEwJXptbjVRNyVeb1cKelBYfWtAaVFYUUV1O35HNThIZlNxcVVAKkAyPWAjUlQzJTYrZjc8
O0lJSFE0TktGQ3Y2aHZKMU9SNVRkaWFoUEVKCnpiS3hBcGNDIX5oKnglbkRqI1IpaiZvNG0xY00y
OXwxLXZsdWk1WHBDJW8+VTVGMkF4IWZ0TU5SNGxUNGByPmkrRAp6RnZvPigoYlhELV81YmhXM2RE
bW5YWTEtaXNOQSNrMl9pe19wVjE+NDQ4UkcyTGRgKE8xSUZPUkx9Q181JGdhfWYKenM7UkM4LVAh
Knk4NzZiNjApWkdQTDg2enI7SkJPI0JLPG9DTkw9STUwVEJwbD5oQHZwbTNAUU1pKlFnMUdOZElO
CnpKRDAmS3lJcUs8UnltJnhTdGhiRzBncSYmJDN0UThuNVB7JjRkS2FaXkhPekJWUjVxKTxEUG8m
NWU+ZnEwJUBaUAp6OTV7aGp7UiFleWleTVhtWiNQMndRdUYjM2hZKk9ZS2hNNFdlZmpxVGZQWEs8
LXdXe3tyJFBUTmhRRXY5P18mN3QKcVdjMSY/QE9MbCMtMyRNVnkmI2FpTFU/PlI/JEdDLSF2RVNw
bT5PSUJUPmFENG9Cc3kmYDk+MX0KCmxpdGVyYWwgMTI3MTEKemNtZUh1Y1VZNj5gKUA0WU4tR3dz
Zn5jJW9EX2FtTDVPJUFnQV9CNUVrcy0oeUEjOH0mQXs3S0dRJn59X1ZlYih9Cno2aHZlemRuMTg+
MWl9YjJrYTZ5YEo+UE44P3t7NzJ5M1Y9SVU7WEM9Yjd8aTlkN2tfSnRvIXh4T30ocSU5NkVJZgp6
ZmsxcXRlZUpSIzA+U1llMGBaMFVTNnsjPGU3dDtPQEklNV4laVAhRCZUUiliQUc4TW9zZFR8bi1h
JCN1JDtuUnMKenlyUG5tbDlRdm9xV2xGVmQzeSE8MyVCaFppMytsbjIqaF4/P2FNeksyYyVJWkYk
c0tJcF88R0NiezVCdnw5dGMzCnpvQng+UWBOYG5nZDF9akxPV25lNWt6Q1FNSSF8ek4lR3hQRF9j
RClvUk9VcXcmVDhqaDc1TSgzUkBBOThVbUkoPwp6LXpVbzVEVShkUHBSJnZHQW85aHhXXmM2Y3JD
Z21DdSR1R1pgO0IkfVBBaWo+SjJJTGZZUnQ4K3A3Zy1wZU1aVm8KeiFfTU1scilNbE88X3JTU3lj
cWFHNkBqPjBkISFUPWNJXk41dlhyPmgrX3c2cHpDel5naDxQWUZtU2dmdTFvISNYCnpUTCUjVDVk
RyZSaUZVSF5aSGltcHY1fmlgK2FrWF5hTCtmTGJmfGsrPGkobEtqUitZcXs+dDI3WjA4QWVSYzEx
PAp6PiY9OWNnUzNDPzdVaWVHMU5VUWpyO3EtaEohSnRzPlBpN14+b0kpODFBTVdaREYlTTV5eng3
WDVWMjR2QksxT04Kelg4bShsSWpLY1dfX2hadFVtIVRtTiZjblc3dXx8U3k8Z09TSTRlM09TNlVo
Pjk8elJQNj81SzxOOUJWJDt1QihuCnpgfWpaUmdgXlE3RzU8aChTSzgkZFRsTStHfEZXYHd0P35j
aVo+RmJqUmFJQnBgZ0FLPzYrI2M3aGkhSnExdHJeYAp6S1c2QyFfc3tDKnRsK009eGg9dVJOeztW
O0tmck5OKDVGa3pXfFg4Xj1HWSEqcV8xOHpFO0RTbWtQKy1ASlRRSksKelhNQSRCbSV9aT1GaUxj
JXokUT1kREVESEluMk9AQistWlh8bU99VG1XR3ZFRUNOQXpRXiUtKUM3e3xIYG5nN09aCnpXMjU+
Q1g/NXZST0lFQX5LNkhQWk4wV1p7VzJUbF55MDBOfkokLW0rczUpcWlFRkwqalhpPFMtRl5USDNq
aGx3JAp6ZDhkPm4/elJ3SHFjckpqRWs4ZHpoKD0/aGcjMEpHQ2o7eUJQUlpGez9pKzdAX2o5cjhl
JkEyOGVHaDBwY1hhRUgKek0pKW9xNkd8MUU0OXRxKTc3N3dTUFA+XlY1TWhlVDY1b3IhPl8oXnVa
fnJqdkVtJWBvWF5tbFE4U25+NHdyVjFgCnpldyMlfjEqZUJsK2hxeSNkcDAmVVJGYU50PEJ4WER6
b3lNelRLdCQqWCt7ZEJNaGh6NllrQmxkV0FNJllnfG9oZwp6aGxrUnBeMmhHdnJSPEFkNH1JJCFj
VjJPYmBNdG1qdHFkTmhPQkFhOHs2PnZiOSpHKjZGN0VOKUhUQT5BMz0ma20KekhzMl47bEFQK15f
Uz9WcE9xakVESzxFVD5GJVFkfUBhZ15MI1E3SnlvOXJ6aTU4dypTTj47amxRdSorX3hJVUVBCnom
d2heYSt1Z293P0k/YShuVUtJQzN1bUZWbGghJUBRLU9LQHQ1WEtOVFp7ZDkxdG9sSz4lfShwYVRM
IzVZY2c2agp6X3JyTFB8TmZ2RWl0Xn1LIUpAT2Jnfn4qTVdRbUVjMiExY3FCJV9adStCYTM7JFZV
amtZfFZCUDUrfipIIzt7P14KeiZiT207VDhAPmdeNTttSll9fjNZNyo3eEU8NTBQb0JPPy1+cCNO
NT9xIy1XNSEyWVVtOzJpd2dIPGhTSmttdTgxCnojZ0ZyNmxsMEVYRHpBRTAhSlk8RnNgeWJNPnc4
O0VvaFh+cVRXPnpSeXVgXlB0bWZSND1HWXJ8UiEye2pRVy02dgp6cT9lJnEqVk0jcCtGdURLQzdP
eGVjPW15U1ZQVG5AZEZedUQtUTZmQUhGPHhWcThkaXVNSzJCSSp3IT9kd0ZhKmMKelNXSlZnRF9p
NzJ4ODFjRnw0RnBqNEJtZV9iVnNnRGFPMUlsTlQjRSYwazFrXnYpYGRETWhKUUxsWVNVQXteRy1N
CnojbTxeelpOa0NzPFA3QD89aWNJP3FRPWNXb2hVMUZMS3Fga0pEJDk+d0EjMmNSajQ2cmdaRXQ/
RFJVYnRSTm07NAp6VW19eFhreHd0Q2xGbXc9eWhUUElUTipDVyRMfT8raFJUaj01UHYoZngza0s2
JkF9NWdEPT5ZeyowUz0+TX5TPk4KekwmSzU2PVFxUVdqZFlacHh9R2BpJExZd2xwUiNOe3JYdz5z
R15GUz0tKnFOZD9jVjFQRkx4JDxedTBBSkpXPCpmCnoqSDR3P21iT05eOFFNbDVWXkZZaD59T1Vg
UClOMjdhJmRFV2F9Xm13eVFRUzJifXNabmBFJV9eNl5OM0lpcHtsPwp6JWt6Xn0oZ3hDVGByY3Zk
VC1VZUZYYnAyK0BkTG0zZTxVWVpNdkYoel9oUFpXdE44YFJrK1pkVEZOcColbWxkfEQKenArOHh+
aSFDSGpFemIoVzJtTn1nTWJLaX0pN01qaSRoYlVMUzY0RWJZLXdlK2llRDx1aWN4VyQ/fEwzP2hH
QX1DCnpfMHkxTFAtSj03dSlUYmZme3glZzYmfDBDQ2NCbkxLMFY1TE8tJmpTPT1Ea0l6PUtpRiFO
eXlDSFdSbUFoN2FnQwp6UHJpK2JtZFA4U2BBOWYzXmMhejdVdEdfS3A8NSo2KThFcz4jVFNuOW5O
M3ByJE08YyV0R1lhQm9KK1VFQSsxenkKemM0PG1EdzRQel53ck5nPFk7PzBXXjt3bUg4fXJSUXtJ
JnJ6Xm9gIT5ZTEQ/X2BmQT5EUHBAaWg0SCRVfkAoM3RPCnpNYHByYlFCWUtydjk3KVE7bDxBdFBU
aE4tOWBZb2V2cit7M250U1YzKHp5TUdRXmVpSCNpSEQ/LUMxKmdiVzxabwp6cTlMZ0hZY2NuK04/
Y1ZIeDsydUl2OX1kOXlaYnBTSFlXNClGb0I4bz00dV59UmluTyNVSyVSMFFWT0tidjVWMUwKeiZ9
KlckPn41RVVTQXpsbFpMdzhOYWF8cClWV1k+WT8lcip2RVJLVlJNezIhaUdxc3szdCkzfmtuTDBT
a19UfWdSCnpfQG9SaiV3X0dzO25VVnljJjFAdEY4I1ItdktnVTYodHc4T0VVe1lhUUMmU09wamkw
dzwhS3RWYn5Zdz5YVlFOYgp6SWFQa1UpNE5TKjJPaj4xOGVIfkdUIXEreyV0Q185PT0obmtZVHtu
IXh0Z2dVSHlAdmtoUU4oMChXZ3Y4P3dUNm0KellPKzR1UVYyaDFpZDNyTl83O3A0KGJSWnVzV2o8
cCNIJDVSdDRxMWBiRjA7e3lseU9VS2hZJGZEcSZXYnR6JDgkCnpCY3c7fThPVEV0YzUmZ3w8UGgz
TVQpIW1eVUdJcyRVVVk/NTNsT2VYVn1CVnxIaWNtXmtURS19KC1gYENUWnUpNQp6PXpeVFNQKGFV
fGkmOz95VjVXWDMqfnFKaj1IJWV1Jl5KZ092SkluPTBGemtEdTsobE9nbkhrX0tBJkU3ckJOMmUK
ejNsamBvIy1kP2FxWjFQaWNXMFcqOU5MbndzcUNXQ2ZabjV3KlR+djcpWlFkdE91bkErQ1Q8WENx
dk5tNVdzJDdjCnpfKmg4NU1ofn5LVkElOGF5QFozcCkpVDRqT2s+O3VEZCpHcU5DVTMlYlplPEVk
TWMzPUpEbTlsSH04aTJicHcqTwp6c140PCRFLV58Wj09MDBEUE1sR209Un5kQ1hvaXk0NmFjUHAr
eHA2Nkp5LWZqalRnJFV6Tm8wRUcoQU4wTSp9bW4KejxmKiZ+fDU3NS0pNVlidnN7aEtiVW13ZTQ/
Y2NGJktYNnRtejsxdFE3PT1aOCtjVnw3MSQmPiNJV1h4b1RKVFlhCnpjVGIrbkpMfDJwNClVNDNh
UEd+cDItVGFxQyo2UHRFe29VS1AjJT8ke3F3QXNJey1DViU+N3hVWkkhREB0Z3czQQp6NlU7dVAx
X2RQS0VoeSN7cFJsUWotcC15UEErdm5McXRqbEp1OyV1MkAxSTZUTjFzKFM+WG1kfm4yNCN4SHxO
PykKejY+eWBgWGFHclghUFRrODtFN3NxaSV7Xy1qMnAzJVcpd284eCoxKnw5aW55YGpfQ2IkdkBB
KVNQfHNwV2BAYkxVCnolO3IpRmZxN01QJnBAekVVd3Z6ISh4c25CJklsKHlTa1RXUHlENlpfMTY2
THJxVHtmRypVbjlAaFY5Z3NnaV9wVQp6cm8ofi0rcWpOUD89QklUT1VNfF5iX0YmKWZjUk1aIype
N3Y5MWFJQ0wwWlZ8WCZFVHoqUipmRkUkZzEzXzdHUUsKeldabHxsR2FfRjNKOT0+LWIpQFdMPnU2
MzdSITh+Um5YUVhfb0YpXk5Pekc+MTh8cTV2KUF7IUAtPSo4S2tNVk1RCnppKHklKmtob0tzLT4+
Q1I9bWwlPzx0WnNDSHVaakkkOH5qZUwtI2YlTH5mQSVYNUtld2tQYTNxeERETSVgRWZCZgp6KXpo
LXgmJV5YYzEpZEY5YX1+a0xaUyt9OTx9NlJ4K0MkPHsjfHwmX3s5PHtoakRVTDNXPHs/P1lRS0F7
I19EOCEKeiZDVFpuTS12YTEoKCRkclB+MV42Yz00RTdzcDQ4OTImMU0/emk8KGU4bmFMMloyX0Yp
aE55KCNzd0o2KWZyaDxmCnpROXxCdGtDMFMxV1JvJGZgNGFBQTlTaWpDYmAycVBxZyFjcHRaRkhs
S3Fxfj9Edn59SlZMdiNYR1ZvQDhfeTskbgp6TmwpTHZPIW1yK0IxZmk0e15IJU9VTEVGTnR2MGkl
MW1LV2hxJkVzSWNzQU1Fa1JIRkB5dlQ8UXI/KHIwN1ZUfFEKej5TMEwoJEdEbzlUUDQlYntxNVV1
Vm85PG5DfVJ1Zl5lc1RJPDF2QW9BRnNCPmlsRCtnJCFkcW90c1JBb3ljZGhaCnpvWE5WJllvRSlu
K2p6XnwpX29GcnlBYXQmdz1nYn5BR0ZUZGRweT0mXzVKZFZQTCNSSStCTVN6ez9iaEc2amd1RQp6
bk5EYSElISZfSXIme2RCdnpyMGowO2YqcD5TSHRkVFp4cHA+Qz5YWlZZQFNoT1lfU28pcXtNZ244
VntXVVMzfFcKemdWdE81eGtSY1NYVERrczdSZU85JmE1S1NYJmNVNiZrUUR2WCZMdUFsVndHZT8+
WUE1UlAwIz9Ub143dlZka0daCnppO207WVVRZnJnNHhieUVtezFFP2A/UiQqako/Kyg1eGwqOFFx
Z15jLTg/UlIrMCs7a1d+WmFCbGF3UU1HSnlPKwp6R1EtXmN7cUx0aTlZfkVAT3czU29KMzAqfjA9
Qn0+MXhnZmZnTGIxUE5Fb0BneHZ7SkljNHJiRmNBTiZOSDw/YVAKem5kOGFKbUx+bSljeGlkYWc1
NSNpVEg7MldMU0B7Ti16MXdqaU1jV2pZdDVYKDBpT1ZmckVhYFdiM1I9cUA0WT5UCnpZY2Zxbmgw
ISo4SEw+b1AtSTw4OUpsNiE8MDI+Nk1KcGVAaFowREpVYHlkTnRMWUJzd0xpYSZXYkJTRCROSylZ
JAp6SGAoNGtTUXgzfXpoJX1RPSZwSm1VdWJCU3JsWSlzMnxGbmpeVyMmNkQ4bmtIVE8/RV9HMmJk
SXNKQEJJSHoxY0oKekQ9aWY4Z0gtO3ZyTFlWUEg2OXpYX0oodTMrTXxCYG94cFZQWVU1bXZHZDkk
MztGVz10UytWPF9Jey11UCRiJHR5Cno4ViFMeXlqb1YoP3ZHfiFtV0dQTERkKClKRkI/RmU8Ulc3
VEVYSnpsK0dgSHpve2ZjR2VXcUVIeHN9eTg1UEdKIwp6V24mUTklRjJxSUBxbUw8MkJiYDkobTQ+
ODBBdVA8YSpYWTl1ZDQ8RmVTTDkxIylaJmBRTD5fXz9XSktheER8WDgKeisoZFBNeGd1SEdCNXFs
ZXszPEkrIyU2M31XT3I3Q2deYkxjWF5BTVl1QT40KT5QKUhJKV9CX1JZTFM5RmJTaUpYCnpgMmBm
K0heT1NqbXw1TGFNWlBQSG1ITzJ5MkFnb0J5bHJKPXdqRyhPXkh+NTYqVnVVOCVQV2NzZTA9PyZk
RCFHVgp6NnJJUXE8KyM9JiFhTlRSVEdCeE1eX2JvPl48WTEkO2t7SHZ1YzxWNXhSK3twYmxlcmcp
cUFkc01DOGd+IUVodj4KelJHaHpDI1VzPTh4QXlXKlQ+O2N+dkdLN25ifkRIOHNvKnxyV01ncjxp
T0QmJj4jbTJhWmlXO1VzLSpkaXhzYkckCnp4ezk+WkhOKkU0RSNuSSVsQmFWOSRUezMlWGxKcmY4
ajVabyZZJVJAbVJte0BKbyRfQ2FEKEUzZXFvRnk2cXVKVgp6KjhhNVlpWT18O2NaSWRJX1dva2Ej
e0hGZ2E3IXp8ZVp2Qy1uezQkTW5GLVF+dVNPQm5Gb3dCKyhXQHJ4NFZMdHoKekRSMGNEZGQxOEpi
VWwrfTh2cjE3M31ZQ1I5PTVsTCtIS35LR3BWXnVRfHBvcHJhcnxIJWYlKlRDYzVMQ085UUlTCnoy
KV9KRT02Nm1uXzJHPjA0cTJUTj0rP1N+cyUhSUlRKXhkWk4pdT4wSF9JNk5KMWsofXNMVlRxYDZs
N1BIcn1UQAp6MiR6fXBzWDsrbyhfZlpmSGBjd35BKDlqcz9xTWReWTRWbDFTSHQ/ZFo8SHBeLX5J
R0BlWVAhYFpxKzxtO21qazUKenlnTzJBMmU+YVRoPCFpR0tBbCM2bChtdE95Zl5WSjY9UVhUZmc0
Wjw+NktxbHolQj4+PHE8aSo8cT0+K1FDVDRYCnpSOHNVPz8qXnl0NmJZbDtmcXtYdiExP0N7VERS
QXNWTFk3SHs/XmpZZE1yalFQfU9kbyp2ZU12P1dCJksxcGkmSQp6MXA/PTl7WHx2Mjs1SS1DKSNJ
KihvZGl2Tzw7ZSpIZE1+QyEkTjBpKT5RWWlMaChZTCk4anRiZ1pSO2dyVExuTjgKejA5fD48bTdS
VFl7Pm9McC1oJEEjcT15SDt4Z1BmNmNaSkdHdkV5IWM/JGlSUCFAbTtLT000Y3dUVD1VUDY8fEY+
CnpPdnhVeTFOIy07MD4mVnxDaXZrKiVEfWpCbko2SDQ7ZVN5QklfQ24rM2ZWUCkzazExdFY+NDt4
KW8zISZOT2VBKQp6Q3ZPcC1YSHlrOXlTb0Z1KkRpKXQzKXgpKkpQS1dRNVJ0T29CTyt5bEtoM3Fy
WXFEcykxbjZzVCE0a19WQClQLTwKeiZycX09d15tPlMyN0xNUXg/OHJCOFhkVjROflhNbmxVQXEp
cVl7NWlSbW85UiNIWD1nMWF+YVV7LW81OXlrNHI3CnpRU0pAeCMjcXcxZ144LVRibWFvO3w5UWxj
TiNjMUlFTWB2VW1EMGA+ZVNYY2xSfj1qVWE3Smtze2o/P0UmWDxfbwp6NzdAX1ppb21HaWt6PiNw
ZnV1d0BDJjU/Sz8qOztLRWYjaDZOSGFnYSk2MVdhKEY5WGVHd0Mtejg+P3dNdlNBUSMKem9jbENx
dVk7Uj8yPUFeI0ZYeHBAbW9EKll3YnokS0pjcUFzbUJEfGAxU2w4dCh4NlAjWkdoVHBga1djWD9W
RzB9CnpnR05TLW8+MFp2RTNtQndwc1pWUVUyZl5aOExHNzRNZWFCVzVCbV5mLSVtRU9EeSEjPFMk
MWxiX09UaiFwT3FLVgp6YGZJJFZMRnIoOWA/U3FhcD1mR1VBLTRncE1ZLSRVaCZGOHkyflR6dj5W
bz1tRzRfNE0tTEk2ZDx5Sm1rS1FkITsKejlkWjlQe2tMeHMtPD8wZV59ayg4V3hoN29Ocz85dURe
Wl9HRCY8Wkw+JEExLWI+Xng1eTI2aCNDZF51Qj05MGJQCnokREV2SSp3YCghQE1zRT5Fej9EVU99
UkwmT3pKUUdEPFYwND5DcTNFUGRTJWdlPXFvTVl4JlgzQFchYHhBK2leaAp6P3tqc0lsc1R5U091
RzhFbSQ7bkoyLXlXTSFOV3UkPGxJTH0qYEQ+JnN1JT9nUWQkaC1EZVlkdElyRFozJkg7PlEKemVG
JSpUV3heSTAyRTAocVVldmpFM0BzVT4zP2tEPVB4PFVYeFFnYT5WSmcpaTs0ciZjTERsTXxEdGF2
VDx0Ui1CCnolcyU9Pzs1enFMJFNVcTtpJk5NNilyVlZ+ZCl+ITFQcG84ZilSeXxUJG84K3NhVj9L
bDxXKk5JNT1iJTg9aUlnTwp6N3NZSWZxP2BpVlJAX2JYNUFDYX0rMk1uI14rOE5VWHdxa31wd2gx
el95VnRFN0Y0SGM2YEsxTStxTj5PMShCcX0Kejt+SXh6WFdsPE9xdlNzRjBoQ0RgQk9QbD0hV1Um
czUqfGZfN0lXQlUyM3g5MTMldzR7SVdMRW9hV1VDRlZrZylwCnp3NSFUaVp0YT8lQWU4WCVOKV4o
T3k0bzYrXnM0LW5rZCRSfCZ8KiQ8dTVSajNvPDBeXy11ZVBHI0BiQWE+YS1LfQp6KGtuZzF6T3JE
O3ZTdnpTZ3xmUUQpYnMtPEE0fjNscD1oUDRYWUB+dHtEZlVDQGJWWFAzV3pISD8jciNebWhXQVoK
ejJlTiEkaT9wKT81O1lyaW19fTBWNSN5TlJYTT5ZOFl0RHd0SEMwMXNtRmoyQz1fWH1XOThJT1hU
cDNjIyVST0YhCnpTUmZNKjRAeXE1P0l9TFM8SGZsZ0JCaT56OGkwJSkxemR7WVpVaWhwIzk0P1Vn
aDNSdXdZOVl+NzNgKG0yP3dLWAp6U3Z3Yn0xRD9VdDZSYVgoMD9ITk9Rdygjcnt6SWN5KU4jSVFv
Z1BVKTdHbyMmbHRSOClpRVQ+K2szUkRQP1hOODQKejh2KF5NQFkzKm9udjZ3I0U+Nnd1NXJAMlZL
VDgmcXZDeFl9KiorKz1PRU54RkhJOW8mOUl0WFMoO0hPezQ0R35VCno/ZXh6OD5Ee1p6cUM7bi1y
bGNIfnV7S0FjcmtedTs2UH1jRFAhZ3Y1enZNYzhTVitacD9iOTJ1cFc1bTw5UmcyVAp6dUMobSM2
cX5kQU1xKztDdipuaGI+RiU7TTVDZyF8bWVAQSNmJlNFPEB7JT5SP0pMeUlLckl3VDtQPHdwV0R7
NT8KemF7YSFtPlk9c2pkeCV4X3dudnRFJiVTR3E3YUpaUG9gekJlQkpLY30xYz9hQlR3VCZ1RChA
NXR5K1IqfD5gIVhTCnojekFabDFiJlokbGJoYkk5flJmJm40Xjt7OGo0KVpqd2QzU2VhVEc7QXZF
VXhze2NtZU8yJmVVK2Y2PWFodTI8bQp6a0Q8c3YoIUx+Y3NCQ3tEd04jaWtndlojbSpCTjxsY1pn
aUplU1BadXQ9STNPMT4pUHojTFBtRGJvPiMocngkT3YKelJ+O3p7KDZfM3RFKWRqNyl8S2N6KT53
Mz1NVEhZUDkpTjVJZilAI1huZiYpdiE/eWQ3NW1aLUpOP1ZsQVJiVXpKCnpmXjh6OHU+MS04bGpC
fjVNalVSRDNwbSVyJSUlITc1T1RqZHtjaUt1Jnw8RDA5eVZxNj5gRWdkZyUjYitgeSY0SQp6c3NX
JXkrbj8lZChCfD9xd3M0XjBFNlUyJiFIWTxHb3AqYjdjSkxhLWs4SWFePmVNTlhefmReYDRTdX0h
YGhHeiUKekp8Qm1aa2xDKntaYmp0XnFtV0xKY1J1OWcwViVvVDVVWlpGVHZBZV5aX3xBPk1sY1lm
c1YxbTBGblpHak9AZ0t9CnpNTSomK2xxN30xbTZUe002Oz8zVUF+Ym5ybz0pcFErPm1IeSVrflpz
Y35tIXV3bFlGeSF1ZmxrSTZUSXkpent4MQp6VkBHejctPHBKbEJyMUsrOFo2WWQzYWc3XztFdChv
OWtuPjs4JjtqU045KUNDLTErY0FiKWAxVDUjeT58QXNTZGwKelJtcUVLdzR2fVROQF9nOTMwKjds
WChjQXQjRSZnRndtd3R4dlcwcyNoalZkJGJMdk8lP0t+UjB3P0BsdmhZd35FCnp0STk/MTQoaz9D
YjdXbn1QcD1BKGZ8MTBkbXFoaDU9JCRDJGd9aCk7dmlsUFk4cDlKNGZeRlZfcSMpUGg3S2dobAp6
QFdCfk4wflB0dHFZbl5ULTtRI2poYzUxb0lLLVleeSsxVEs3eiEjX1pSWGN3KWJhTVhLfFJCcVkz
Nm5mYmRqdj4KelRFKDdHaCQlVnpvPVFLMU9KXnVPS2VyfTVWUiF7SkYkN3JzVmBDe312Q1oyNlIw
MEE1SV56dDIqJCFvVjcqZkNsCnpFYDl8Q2A/dFJ9XldxOCRxP1REd2lNfGxMcGRlRigkYjttWmM7
fXopS2hEOUAobFQ9WT0xN0pMbm1rdEo3RWNqVQp6Xn4rWCNycVZAcSZHeElPbSliKkV4N2QqPTEt
ZnpAJl4ySjROVDgoPnc3MFIpKVY9Q0UqNXdTeWM2QnE8bHYlc2sKejQodWN3Jk48IyR2fSlyXjBZ
JiMraD1Obz04ODh8OTVSdld6XnBNVD4qe2oyPkpydD58dTVOPDNmTmleSEVOUFMqCnpTUGNkUUxL
NlQyP2J6bVh0N2ApfEJQR3Y/WFlSZUpOfkBkd2BtJmwkOVJkYi02dEBRSCtObCtxWG5TWWZQWG90
KQp6PkRzPjZ7KH4kd3p+WmN+a2ExYUI4ekVxczshM2NJd00kZ08rcGwreVlnMERoaUh5dmkwTV5t
I2owO20tZDYlR2wKekpDbUI/b1k+TEM8Nn5tO3s7Tk8kZGdZPk96X3I2RE9sVj48d2B4S0NMWTx5
XkxDV1h9UFI4K2dsWmU5Yk48YjFVCnppQHBHRSFrO28kYj8wTHlTYz5fWV9fS3NgMDh2RSsxd1Bx
Yld2KmM2cGlqYD96bj5RMXpEKWdjYE55b1FueEcjXgp6M35fZjZwZyMkVXNieTE/fE1wX1BTUVE2
fCZzV2VEJStvKlZMRyVhdGxNX0hOV0x5MWtCMVVHPG9CYVMwY1VDNT8KekxaPVVubGh7cDF2dWxN
d0d4S31Venh2eTxSQEtXOEE/akROO1ppSWs7Q3QzP3BgS0lwdDUxeGJYIyY4O3AjI05ACno2ck5L
KmUjV3FORiEyO247SDlPU2chRTwhVCVAZUFrJiNoPURqd3BFanpmOUVydEl5Rmo4fUJTa298YEsw
bjZYMAp6WGlPPktieGY9enJzMWdUVVN8ODBwdStfWEFOaXRDUSttTn1oSyVVcVQjfGh7IU0tKWUz
Jk5XQXREISNsOWU1TkoKemRlRyQwMm5vX2A2SSskI0tMQnY2KEFDTGQjN29YJXp2NmdibitXTFEx
czh4OVU+TXBlaUA2I30kP05kU2AhKj13CnpWZyF1aitYRUtuKWEzZkA7Pnk4LWk0YGlUNjlCe0Ze
VkojNzh3UnsqeT1kR2dGRjMtYzxXUT1gWnN8VGR8RlY8Owp6MFZJRVFGVVRwam99a2VlR19samhm
XkF0PldBKk1XWkJ4Y0srPTZKTldaMG1NY0U2KVg7dFVjdGkkYjB+Q2J+TUoKej4qcUBDTDEqWXZG
d3tPVVJIbFhJYXZvIXF0fSFLfHc7PUNOen1BOU0xbXp1NWclVGBmPVktOG4kI0dvM1lhaipUCnoo
OU1zSV4pRnhBP1FKZXZJR1ojYTMzb0M9NihMPEp3KH5wfXhfK2Zyc0EhSD9XRDg/V2BxSCMqMytM
OGwzOHdYOQp6VWMoT05ReDY5RU9yKm5IUlZfa2dMfmMhRjIteFUkd3lJIVNCWHk+dVdTZSMmP2Y7
JHR1b3g/I3Y7dld3aD8xeEUKeng7YSZMbENKX15mYytDaT48RnoxWDskWDFlMihgYVZ9S3ZRQSUt
aiEpaV5haU92SGNrZjA2RWJlNEFSNEtaXlIkCnomREh0bDFTQjdwRnNjQmNJPjtsT3d5Z1k1SH5X
a3BwOTVDNSYwN3NsS0AxeUdVUXxRQDNlbk0hcn5fank5JEQ9Xgp6ZGJEbDVlemkkSj5tJCZJTzx3
PklEZVRiR2hTZVIkRHUocmRRfX5YbllsPGRAc2x7KUArcU1xT0MwalFhTjg0Q3sKenVmI0N2Ql5i
c01BZmw5ViFOfV9lOVFAfWpEPyRDS3R+TE5qV3FgOE0zb31wTXZ9M3pAamZWZm1PZVIoKXY5VHpA
CnpVdjtiMHo2UFM8aThgT0B1emdDaSEyRmtOU18paTkyT1lHKWZOLWo0ZXopKnNKcENWYFA+TFhh
Ql5yemRmaWVpWQp6UUd7QWJeKkc9aGxRUFhMSSZVI1AmYTckTERvWFdnM1dPNDMmcXVuUiVYOTQp
eFFtJnJ0QX1vbkkkdz1HUmR0V2wKekAjeFZiQkl+KH5PRFFwVzxkNSo3VUd9UFdxYkAwNHVfd2JP
b01HXz95Kk1vWUJ7SFRORUIqJCZqY2QoWlhLVEpJCnokaX5JMTxASCFObHIlQWpzZk9KUz1BPmgw
V3hGSXdfT3xrKD9Sdy0+Y2R5YSV2eXF0KTV0I1RDNEo1SHdCcHp1Uwp6dmZmSWFSbkBIT05OeiZM
Zk9+ezZ3Oz93LTdaUWJaY3JJOHxKTkJAKjtCPiVqR3xVd0h6ez1obj5IanhzZnVlWU8KemwxKGl0
O0JaWH1Pd1g+S1BZZTxMcCg8VGtuVVhFVDF9Qj11O0JxWF8rdllmUS1sMlN5JVhxPVgqWjk/QHtl
eT4zCnpvUUc3KHVeMEFvdjs7K24jbjVNQUImMTE3RmdoLTQzcSVHcCVgZj9fWigzUVlmKz55PTRp
WjxFR2JwIU5yZ3FBVAp6e0NNWEJiU0xDOXw2IWN0RmJAcE5aOStgVDBMdW1rMmljRGdhbmNEQEtY
Kz1RVyZzYTd1d2tEYilFKm5YOTdPZzwKenl1dm44PEF3fClFTnI4eG8mWkplYTVpa2YhZ1JeQ1o3
dlF3bW1FZVFqK3xxXjMoJnZONTBrV19ua2g+PG5YTzluCnpGPzs9a2Y+P1J7VC1vQXEkdXg+Rmh+
Zik3Nn1udjMyN3tCZXg1eEFnYVg0alllQXZ5MnZUYk08Tkl4VUBfVnojKQp6TFl+JGMmZnB1QFBV
aiVXcE5eVVJrMzhVLWRRKnlrS31haURXRFM/alY4Zn1GIXQhan1ANzxtVnJCY3wyd0NJV2cKelRK
TXwtYEc7UGRQZnRRWUliJlBuayVAKmtVbGV4bFRHRWNQK2tGY0RCa2YlQmJWYHB0VFE5YFN2WkxK
Ujdqa2xRCno9ZXkqNHI2dF5sSG56c3hPMCoxJmNZVTF7bERYPzJuZmNVOW5kVENHKGlMN3NSPiY+
YUpWUUZYPzZKSENVT29XMAp6XzZMI2dxP3EzWm5XfGNwa0Z9ckQ9fXt7RHRaeT1iM2koTSVSJDRq
dm5xemwrJmt9WG9AZXBGb1VeWjVyPDZvfjQKenl0WDYwJThEVHklKT9kWDE3bEJ8ZFF1d1BXNWRI
UTUjSygke35zNH5QTDgzdmckI2playUpK3ZMZ35MZUIjKkJ3Cno7P3N2JilSOHpCNylASCRjcSZ7
JXlsQTk7Vkh6dDtHYGsoKW9lMHZ2JGpVMFhIaWpGNCpQRDwxM0toQ0Z4VSRASwp6O0soMENUazZn
bm1yMmdIWk9zenpQUFJUKWdSQCM1YXJkezUheytTSkRAJmFHRntfUWdYKVBTWWJJZUtrYDgrVFIK
eldvXlEka2N8PiE9TnApTk9BQmN9ZFJVRTZIakJjamhxTWU2dVIzQys2ZmpeOVAmUWNjc3xMbj4/
JUpIcEVmZnBBCnpgU35MeG1CTW9OWiRZa2J3WHUzeF5qP1N9SUhBTkxtMTV0cXkjJlY/OCpWelRe
LSY0M256PkhzRm5Wc0xJUjRLTgp6cldqQW83Z2k1KXF+Snl0aD8wcFJfQVdFYztWPX4heFp3Qytl
UDwkbVN6O0E0Z3d9Q1hOSG9DJXtqeDw+YH1BbzcKej12YnJKbDUkWjRVWFBLfG5kT1JKVkcjMHdS
WXZ1a2g9ai1ySzNueUAmc2l7YC16dmVSaGJWKGhacX1KP2leVnwxCnoxQk0qa3VkQWVHRmFYQT9G
bnQpfXlONWcpQllrfV4pUWpzNCtwWnZXQ219JXtEdGUzIWpFJiojVE8tMzVkd2oqSgp6fEN9ZVdI
VHIpKSVGNEI4UFpMal56Y3U/VklfbWcyJHRPNz5gVTtea2c0V2hhfE1sejwkTFBnLW1KUUBtYl5L
dXQKekh4YVp7MWpDcShgRUNJUFM3WStKJDxQbXJjbUZtMjNzT2VCeE5MSHVBU1draEh5R3BOPDFe
RVYkSyZWYz1hRGYkCnpvOVp4PU49clg7PCV4SlVlMlMrIWJwb1N5ckt8Y2t8TjM+aVUyQl98Kk9S
bTNwdHU7WlZWaGFWNyVhP2NmcCQjIwp6ZncrTj4qaSRGU29vMWQ8KWR4NTApXjItUzxtI3A0IUpS
bjxnOWw9SkZGaDhfN3peITxOTE9NNk1ATDQ/RlZMeTgKejF2cVcqMm1ySV5YZjRER2F9ekBEJWVl
fDxSYUkzdWcmbkZ3NG0lQ3lMMTY2QCpoaStVOG41KkhYblM0PVJnPF5ACnpgN2ZsSWJ4X3t2bndZ
UmFyNUdnZng4YGw3cnVGRmtSZjE7QloyYnk7JCYwbl5ScDI1U25hU0ZYV2QtYWw9Q09sIwp6RndR
Yj1gdF5JVHJHVUNaQEtRPHBIdSgwfHh3YT9eaEFoRmVFSylaeTc8bFIreDFmMUw5KGBCUiYyVkF7
WUc9V2sKejdxUURDe2FRamElWCg3ZCE1JUJKVzVsN000QT0rPXN5aiFPO1JUSzZNUnNRRFRHNHRY
Uj01JDAxc01aJUJGeDhsCnpEX056KEsweXYxd1l3QUVaNGAoO0kmelF4SEhqRj9hTlNFQSVsWjE0
czJiRT15QmA0Zj0zQFdHSzZXZ2dvR0t7Pwp6XkpEMHcjQVJ2YXJqQz8zLXhHLVVhWFp8bSEwajBq
VjlOSShYTXFTRlhXb0k3eXF5VUd5PyQqUC1XS3RGXlVJZXwKejNVMCYyajRvJTVjKXtRQzh4U00w
PDlwRDxUVCMkalYyRUhzbDBBQnFaOD4yQyo5NlEzWjFEPSU5eyE8TTxDWkJUCnpfJSl1PG5WKjRT
OUExV3RNKjxJZmc+SXh5KD51KFgzXyorUDhvflA+cEZjVzQmI311VTxvbCpTcz9gYCpELURlewp6
JShsMDEmanZVO2h8MERvSFBnYWMyQnojUGtnbWVmYCRGZ0N2NEw8WEZ2dy0/RXRPel5TYWJseVF7
MU4tPk9SYnsKemBUUTNTTUJ1JlZWTng9UlozanU2JHpvVThXM2hINyhJLXpZLUV6MFFzVlF0X3FS
czs1OX18SSk0TURKZEJNcz8yCnppQVJVfjlxTFlFNTVGTT85ZCpWdyFmT35YKz1YbnJWaSRqdztw
TzJgUjhTQk01LWlfYyhxLW4pZmNHXlVmbzNIfgp6amRaYShgTnA2NztFKFpgd2k9aWJRMU9aRyQ8
e1RPT15xeWF7dikmOXtjd3BWTTtOODZUZHR5WnlDWSM+PT9sYlQKekp3e3Y/MVhlc0NxKjY2UGda
YExYdnR0UmNtWnJ0bDdFS2llbkQmMThVTnhVX2p+YUY2P3lPQV5BTDcyTkZGOTVuCno8QC0/IWNw
UjclQ1khTE41WkRgOE5HfUp7VSpjMnF0RSNxUXohMS07eFp5Vj81ZU81cUAje1R5VG4oWkZhP21D
Swp6PlVkR3pGX15HYExRMktVOH5iO3JxbFlYJlE4Un5YbiRSRysoMzIoek04NXdCUSVEX2dwQ2lZ
SntmNV5+ejFMcUwKenpQaj1FPD9sV0N5QUordGdUSkJSWnpUTDEzSTlnSXptZjMmSHhlJGg0c2RB
cl9LfUFfNnZGPyFLeGt7fVRgczxPCkg+ekRybG4pRWVACgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGNjN2Q5ZjJiMjc1
YTgyMDA0MDg5ZDAzYjQ3ZTNkZDQ0YTllZWRjOTEuLmYzNDFjN2ZhZjJiNzMxYmI0YzBiYzhkZmYx
MmZhZjVjZDNhNzU4N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTE5NjYsNiArMTk2Niw3IEBAIEJVR1dLMzgwMzgg
OiBmYXN0L3VybC9maWxlLWh0dHAtYmFzZS5odG1sID0gVEVYVAogLy8gV2ViS2l0IHJvbGwgNTgz
MDQ6NTg0MDAKIC8vIFNraXAgc2luY2Ugbm90IHJlbGV2YW50CiBCVUdVS0FJIFNLSVAgTUFDIFdJ
TiA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JvbGQtYmVuZ2FsaS5odG1sID0gRkFJTAorQlVH
VUtBSSBMSU5VWCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2JvbGQtYmVuZ2FsaS5odG1sID0g
UEFTUwogCiAvLyBUaGVzZSA1LDAwMCsgdGVzdHMgYXJlIGFscmVhZHkgYmVpbmcgcnVuIGJ5IHRo
ZSBWOCB0ZWFtIChhbmQgaGF2ZSBubyBjaHJvbWl1bSBleHBlY3RhdGlvbnMpLgogLy8gVGhleSBz
aG91bGQgYmUgbW92ZWQgdG8gdGhlIEphdmFTY3JpcHRDb3JlIHRlc3Qgc3VpdGUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115355</attachid>
            <date>2011-11-16 03:14:37 -0800</date>
            <delta_ts>2011-11-16 23:56:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38701-20111116201436.patch</filename>
            <type>text/plain</type>
            <size>16650</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2QzMWQ5YWM3YjYzYzZl
NjA5YzNlMmJlY2FlM2M2M2QzN2MxMzQ3OC4uMzMwZWZhOTc5MmU1NjQzMGM5NDA3MTgxZjBiMzdi
ODY2ZjM5MGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTE2ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IGRvbid0IGNhbGwgZm9udGNvbmZpZyB0d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAg
ICBBZGRzIGEgbmV3IEFQSSBmb3IgZ2V0dGluZyBmb250IGZhbWlseS4gRm9yIG5vdywgRm9udENh
Y2hlTGludXggY2FsbHMgdGhlIG5ldyBBUEksIGJ1dCBkb24ndCB1c2UgYWRkaXRpb25hbCBwcm9w
ZXJ0aWVzIGZvciBjb21wYXRpYmlsaXR5LiBUaGUgb2xkIEFQSSB3aWxsIGJlIHJlbW92ZWQgd2hl
biBDaHJvbWl1bSBpcyByZWFkeSB0byB1c2UgbmV3IEFQSS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW9yIGNo
YW5nZXMgZm9yIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oOiBBZGRlZCBGb250RmFtaWx5IHN0cnVjdCBhbmQgY2hhbmdlZCB0aGUgZGVjbGFyYXRp
b24gb2YgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyk6IFVzZXMgbmV3IFBsYXRmb3JtU3Vw
cG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXguaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldEZha2VCb2xkKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpzZXRGYWtlSXRhbGljKTogQWRkZWQuCisKIDIwMTEtMTEt
MTYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFVzZSBHUXVhcmsncyBpbiB0aGUgQVRLIHdyYXBwZXIgdG8gZ2V0IGFuZCBzZXQgYXJi
aXRyYXJ5IGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWFhZGNiYzM2YTY5NzVi
OTAzYzUwZGI3YjRmODc2NjA3ZDU2NDIxYy4uMDI3YTc4Y2QxMDM4YWM0YzU0OTBmMzkyNzQ4MjRk
MTJiZDYyZTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMS0xMS0xNiAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBkb24ndCBjYWxsIGZvbnRjb25maWcgdHdpY2UgaW4gY29tcGxleCB0
ZXh0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM4NzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIG5ldyBBUEkgZm9yIGdldEZhbWlseUZvckNoYXJzKCkgc28gdGhhdCBrZWVwaW5nIGNvcnJl
Y3QgZm9udCBtYXBwaW5nIG9mIHRoZSBnaXZlbiBjaGFyYWN0ZXJzLgorCisgICAgICAgICogcHVi
bGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL2xpbnV4
L1dlYkZvbnRJbmZvLmg6IEFkZCBhIG5ldyBBUEkuCisgICAgICAgICogcHVibGljL2xpbnV4L1dl
YlNhbmRib3hTdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNhbmRib3hTdXBwb3J0Ojpn
ZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyk6IERpdHRvLgorICAgICAgICAqIHNyYy9QbGF0Zm9y
bVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRGb250
RmFtaWx5Rm9yQ2hhcmFjdGVycyk6IERpdHRvLgorICAgICAgICAqIHNyYy9saW51eC9XZWJGb250
SW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyk6
IE1vZGlmaWVkIHRvIGdldCB3ZWlnaHQgYW5kIGl0YWxpYyBwcm9wZXJ0aWVzIG9mIHRoZSBmb250
LiBPbGQgQVBJIHVzZXMgbmV3IEFQSSBpbnRlcm5hbGx5LgorCiAyMDExLTExLTE1ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTAwMzQwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCA0MTNlZGZjY2E1NTYwMTVlMGRiNjZlMWI4
MzAxMDliYjYzZWZlYjE0Li42OGJhNzk0YmUxMGM1YTE1YWQzNmUzMzUwM2NiZjNjMGZkOGEwOTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaApAQCAtMTUyLDcgKzE1MiwxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbG9h
ZEZvbnQoTlNGb250KiBzcmNGb250LCBDR0ZvbnRSZWYqLCB1aW50MzJfdCogZm9udElEKTsKICNl
bGlmIE9TKFVOSVgpCiAgICAgc3RhdGljIHZvaWQgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29u
c3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBGb250UmVuZGVyU3R5bGUqIHJlc3Vs
dCk7Ci0gICAgc3RhdGljIFN0cmluZyBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBV
Q2hhciosIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUp
OworICAgIHN0cnVjdCBGb250RmFtaWx5IHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAg
IGJvb2wgaXNCb2xkOworICAgICAgICBib29sIGlzSXRhbGljOworICAgIH07CisgICAgc3RhdGlj
IHZvaWQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVt
Q2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBGb250RmFtaWx5Kik7CiAj
ZW5kaWYKIAogICAgIC8vIEZvcm1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKaW5kZXgg
NGRkNjYwZGFmMmRhNzJhYjEyN2RlN2QwYWE5Nzc0Y2JmMDE1YTAzNC4uZWNhN2IwMzMxOWQ2Y2Rj
NjBhNzJkNDhmYTk2ODQzN2M5Y2ExZTk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcApAQCAt
NTksMTIgKzU5LDQwIEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnRE
YXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiBmb250LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgpCiB7CiAgICAg
aWN1OjpMb2NhbGUgbG9jYWxlID0gaWN1OjpMb2NhbGU6OmdldERlZmF1bHQoKTsKLSAgICBTdHJp
bmcgZmFtaWx5ID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhj
aGFyYWN0ZXJzLCBsZW5ndGgsIGxvY2FsZS5nZXRMYW5ndWFnZSgpKTsKLSAgICBpZiAoZmFtaWx5
LmlzRW1wdHkoKSkKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OkZvbnRGYW1pbHkgZmFtaWx5OworICAg
IFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywg
bGVuZ3RoLCBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKSwgJmZhbWlseSk7CisgICAgaWYgKGZhbWlseS5u
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBdG9taWNTdHJpbmcgYXRv
bWljRmFtaWx5KGZhbWlseSk7CisgICAgQXRvbWljU3RyaW5nIGF0b21pY0ZhbWlseShmYW1pbHku
bmFtZSk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzICNpZiBhZnRlciBBUEkgdHJhbnNpdGlv
biBjb21wbGV0ZS4KKyNpZiAwCisgICAgLy8gQ2hhbmdlcyB3ZWlnaHQgYW5kL29yIGl0YWxpYyBv
ZiBnaXZlbiBGb250RGVzY3JpcHRpb24gZGVwZW5kcyBvbgorICAgIC8vIHRoZSByZXN1bHQgb2Yg
Zm9udGNvbmZpZyBzbyB0aGF0IGtlZXBpbmcgdGhlIGNvcnJlY3QgZm9udCBtYXBwaW5nCisgICAg
Ly8gb2YgdGhlIGdpdmVuIGNoYXJhY3RlcnMuIFNlZSBodHRwOi8vY3JidWcuY29tLzMyMTA5IGZv
ciBkZXRhaWxzLgorICAgIGJvb2wgc2hvdWxkU2V0RmFrZUJvbGQgPSBmYWxzZTsKKyAgICBib29s
IHNob3VsZFNldEZha2VJdGFsaWMgPSBmYWxzZTsKKyAgICBGb250RGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24oZm9udC5mb250RGVzY3JpcHRpb24oKSk7CisgICAgaWYgKGZhbWlseS5pc0JvbGQgJiYg
ZGVzY3JpcHRpb24ud2VpZ2h0KCkgPCBGb250V2VpZ2h0Qm9sZCkKKyAgICAgICAgZGVzY3JpcHRp
b24uc2V0V2VpZ2h0KEZvbnRXZWlnaHRCb2xkKTsKKyAgICBpZiAoIWZhbWlseS5pc0JvbGQgJiYg
ZGVzY3JpcHRpb24ud2VpZ2h0KCkgPj0gRm9udFdlaWdodEJvbGQpIHsKKyAgICAgICAgc2hvdWxk
U2V0RmFrZUJvbGQgPSB0cnVlOworICAgICAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdl
aWdodE5vcm1hbCk7CisgICAgfQorICAgIGlmIChmYW1pbHkuaXNJdGFsaWMgJiYgZGVzY3JpcHRp
b24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09mZikKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0SXRh
bGljKEZvbnRJdGFsaWNPbik7CisgICAgaWYgKCFmYW1pbHkuaXNJdGFsaWMgJiYgZGVzY3JpcHRp
b24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09uKSB7CisgICAgICAgIHNob3VsZFNldEZha2VJdGFs
aWMgPSB0cnVlOworICAgICAgICBkZXNjcmlwdGlvbi5zZXRJdGFsaWMoRm9udEl0YWxpY09mZik7
CisgICAgfQorCisgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGEgPSBGb250UGxhdGZv
cm1EYXRhKCpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uLCBhdG9taWNGYW1p
bHksIERvTm90UmV0YWluKSk7CisgICAgcGxhdGZvcm1EYXRhLnNldEZha2VCb2xkKHNob3VsZFNl
dEZha2VCb2xkKTsKKyAgICBwbGF0Zm9ybURhdGEuc2V0RmFrZUl0YWxpYyhzaG91bGRTZXRGYWtl
SXRhbGljKTsKKyAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoJnBsYXRmb3JtRGF0YSwgRG9O
b3RSZXRhaW4pOworI2Vsc2UKICAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZ2V0Q2FjaGVk
Rm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBhdG9taWNGYW1pbHksIERv
Tm90UmV0YWluKSwgRG9Ob3RSZXRhaW4pOworI2VuZGlmCiB9CiAKIFNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
UGxhdGZvcm1EYXRhTGludXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oCmluZGV4IDg2Yjk0MWNhZTQwNTE5YTk0YTFm
OGE0MDkyZWRhNGU2YTZkMTNmOGIuLjEwZGNlOTA1MDQ1MDU4M2MzNzJhMzQ3NTJlOTMxMDI1NGMz
ZTEzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oCkBAIC0xMTgsNyArMTE4
LDggQEAgcHVibGljOgogCiAgICAgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQogICAgIHZvaWQgc2V0T3JpZW50YXRpb24oRm9udE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQot
ICAgIAorICAgIHZvaWQgc2V0RmFrZUJvbGQoYm9vbCBmYWtlQm9sZCkgeyBtX2Zha2VCb2xkID0g
ZmFrZUJvbGQ7IH0KKyAgICB2b2lkIHNldEZha2VJdGFsaWMoYm9vbCBmYWtlSXRhbGljKSB7IG1f
ZmFrZUl0YWxpYyA9IGZha2VJdGFsaWM7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYpIGNvbnN0OwogICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShj
b25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZWZhY2UgPT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1
ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9X
ZWJGb250RmFtaWx5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJG
b250RmFtaWx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdmMDM3ODgyMjIxMDk4ODZiZGYwYzQ0MTdlMjYyYzBh
YzlkZmRiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L2xpbnV4L1dlYkZvbnRGYW1pbHkuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGb250RmFt
aWx5X2gKKyNkZWZpbmUgV2ViRm9udEZhbWlseV9oCisKKyNpbmNsdWRlICIuLi9XZWJDU3RyaW5n
LmgiCisjaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dHJ1Y3QgV2ViRm9udEZhbWlseSB7CisgICAgV2ViQ1N0cmluZyBuYW1lOworICAgIGJvb2wgaXNC
b2xkOworICAgIGJvb2wgaXNJdGFsaWM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYkZvbnRGYW1pbHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgKaW5kZXggNWQ1MjU4NDRhZTc2NGE0ZWUyOWFlOGI1
NzMzZDFmNjU5MDI1YjhhZS4uOWIzNDcyYjZjZmM1MjNhNWQ0ODQ2MWMzYjI2NTFjZWNlODhjZTAz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9u
dEluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250
SW5mby5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFdlYkZvbnRJbmZvX2gKIAogI2luY2x1
ZGUgIi4uL1dlYkNTdHJpbmcuaCIKKyNpbmNsdWRlICIuLi9saW51eC9XZWJGb250RmFtaWx5Lmgi
CiAjaW5jbHVkZSAiLi4vbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmgiCiAKICNpbmNsdWRlIDxz
dHJpbmcuaD4KQEAgLTUwLDcgKzUxLDEwIEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIFJldHVy
bnM6IHRoZSBmb250IGZhbWlseSBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIHJlcXVlc3QgY291
bGQgbm90IGJlCiAgICAgLy8gc2F0aXNmaWVkLgorICAgIC8vIEZJWE1FOiBEZXByZWNpYXRlZCBB
UEkuIFJlbW92ZSBsYXRlci4KICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDU3RyaW5nIGZh
bWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFj
dGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKTsKKyAgICAvLyBSZXR1cm5zOiB0aGUg
Zm9udCBmYW1pbHkgaW5zdGFuY2UuIFRoZSBpbnN0YW5jZSBoYXMgYW4gZW1wdHkgZm9udCBuYW1l
IGlmIHRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQuCisgICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgdm9pZCBmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgV2ViRm9u
dEZhbWlseSopOwogCiAgICAgLy8gRmlsbCBvdXQgdGhlIGdpdmVuIFdlYkZvbnRSZW5kZXJTdHls
ZSB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMgZm9yCiAgICAgLy8gcmVuZGVyaW5nIHRoZSBn
aXZlbiBmb250IGF0IHRoZSBnaXZlbiBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgKaW5kZXggMmY1NzkyOTg4
YjZmZjFkYzQwMmE5NDI1OWNmNzUyN2Y3YjhiZDIzNy4uOWI4MTI0YmEwOGY5NDYyZmI1ZjZjMzlj
NGQ3NjY5NjE5NGVjYzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICIuLi9XZWJDb21tb24uaCIKICNpbmNsdWRlICIuLi9XZWJTdHJpbmcuaCIKKyNpbmNs
dWRlICJXZWJGb250RmFtaWx5LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01Miw3ICs1
MywxNSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhl
IGZvbnQgZmFtaWx5IG9uIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUKICAgICAvLyByZXF1ZXN0IGNh
bm5vdCBiZSBzYXRpc2ZpZWQuCisgICAgLy8gRklYTUU6IERlcHJlY2lhdGVkIEFQSS4gUmVtb3Zl
IGxhdGVyLgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJz
KGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3Qg
Y2hhciogcHJlZmVycmVkTG9jYWxlKSAgPSAwOworICAgIC8vIFJldHVybnMgYSBXZWJGb250RmFt
aWx5IGluc3RhbmNlIHdpdGggdGhlIGZvbnQgbmFtZS4gVGhlIGluc3RhbmNlIGhhcyBlbXB0eSBm
b250IG5hbWUgaWYgdGhlIHJlcXVlc3QgY2Fubm90IGJlIHNhdGlzZmllZC4KKyAgICAvLyBGSVhN
RTogTWFrZSB0aGlzIHRvIGJlIGEgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGFmdGVyIHRyYW5zaXRp
b24uCisgICAgdmlydHVhbCB2b2lkIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFdl
YlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJl
ZmVycmVkTG9jYWxlLCBXZWJGb250RmFtaWx5KiBmYW1pbHkpCisgICAgeworICAgICAgICBmYW1p
bHktPm5hbWUgPSBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFy
YWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUpLnV0ZjgoKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFu
ZFN0eWxlLCBXZWJGb250UmVuZGVyU3R5bGUqIHN0eWxlKSA9IDA7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBmMWY2Njg2MTAx
ZjYyNjkxMTRkOGRkYmQ5NzcyOTY4ZTVmMWYzNDc4Li43ZWQ3NWNjYzkyNzdkMDMwNDI0ODUyYTlm
NDkyNzUxMjcwZGU5ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAKQEAgLTQzNywyMSArNDM3LDIzIEBAIGJvb2wgUGxhdGZvcm1TdXBwb3J0
Ojpsb2FkRm9udChOU0ZvbnQqIHNyY0ZvbnQsIENHRm9udFJlZiogb3V0LCB1aW50MzJfdCogZm9u
dElECiAgICAgcmV0dXJuIGZhbHNlOwogfQogI2VsaWYgT1MoVU5JWCkKLVN0cmluZyBQbGF0Zm9y
bVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKQor
dm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVy
cmVkTG9jYWxlLCBGb250RmFtaWx5KiBmYW1pbHkpCiB7CiAjaWYgT1MoQU5EUk9JRCkKICAgICAv
LyBGSVhNRTogV2UgZG8gbm90IHVzZSBmb250Y29uZmlnIG9uIEFuZHJvaWQsIHNvIHVzZSBzaW1w
bGUgbG9naWMgZm9yIG5vdy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njc1ODcKLSAgICByZXR1cm4gV2ViU3RyaW5nKCJBcmlhbCIpOworICAgIGZhbWls
eS0+bmFtZSA9ICJBcmlhbCI7CisgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsKKyAgICBmYW1p
bHktPmlzSXRhbGljID0gZmFsc2U7CiAjZWxzZQorICAgIFdlYkZvbnRGYW1pbHkgd2ViRmFtaWx5
OwogICAgIGlmICh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+c2FuZGJveFN1cHBvcnQoKSkKLSAg
ICAgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW5kYm94U3VwcG9ydCgpLT5n
ZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVm
ZXJyZWRMb2NhbGUpOwotCi0gICAgV2ViQ1N0cmluZyBmYW1pbHkgPSBXZWJGb250SW5mbzo6ZmFt
aWx5Rm9yQ2hhcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlKTsK
LSAgICBpZiAoZmFtaWx5LmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZzo6ZnJvbVVU
RjgoZmFtaWx5LmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgICAgIHdl
YktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250RmFtaWx5Rm9y
Q2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUsICZ3
ZWJGYW1pbHkpOworICAgIGVsc2UKKyAgICAgICAgV2ViRm9udEluZm86OmZhbWlseUZvckNoYXJz
KGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgJndlYkZhbWlseSk7
CisgICAgZmFtaWx5LT5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh3ZWJGYW1pbHkubmFtZS5kYXRh
KCksIHdlYkZhbWlseS5uYW1lLmxlbmd0aCgpKTsKKyAgICBmYW1pbHktPmlzQm9sZCA9IHdlYkZh
bWlseS5pc0JvbGQ7CisgICAgZmFtaWx5LT5pc0l0YWxpYyA9IHdlYkZhbWlseS5pc0l0YWxpYzsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51
eC9XZWJGb250SW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJG
b250SW5mby5jcHAKaW5kZXggNDkxODJkNDdlYTdmNWJhZDU2MmExNmE1OTFmZDBlMDU3NGQ1MWY3
NS4uNGQzMDNkMjRjYzFhMGM1ODljZDg2MGJhZGExMzQ5MzgxZjZhNTdiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkZvbnRJbmZvLmgiCiAK
KyNpbmNsdWRlICJXZWJGb250RmFtaWx5LmgiCiAjaW5jbHVkZSAiV2ViRm9udFJlbmRlclN0eWxl
LmgiCiAKICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KQEAgLTM5LDggKzQwLDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisvLyBGSVhNRTogRGVwcmVjaWF0ZWQgQVBJLiBS
ZW1vdmUgbGF0ZXIuCiBXZWJDU3RyaW5nIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhjb25z
dCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIq
IHByZWZlcnJlZExvY2FsZSkKIHsKKyAgICBXZWJGb250RmFtaWx5IGZhbWlseTsKKyAgICBmYW1p
bHlGb3JDaGFycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUsICZm
YW1pbHkpOworICAgIHJldHVybiBmYW1pbHkubmFtZTsKK30KKwordm9pZCBXZWJGb250SW5mbzo6
ZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFy
YWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIFdlYkZvbnRGYW1pbHkqIGZhbWls
eSkKK3sKICAgICBGY0NoYXJTZXQqIGNzZXQgPSBGY0NoYXJTZXRDcmVhdGUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkgewogICAgICAgICBpZiAoVTE2
X0lTX1NVUlJPR0FURShjaGFyYWN0ZXJzW2ldKQpAQCAtNzgsOSArODcsMTIgQEAgV2ViQ1N0cmlu
ZyBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCBudW1DaGEKICAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOwogICAgIEZjQ2hh
clNldERlc3Ryb3koY3NldCk7CiAKLSAgICBpZiAoIWZvbnRTZXQpCi0gICAgICAgIHJldHVybiBX
ZWJDU3RyaW5nKCk7Ci0KKyAgICBpZiAoIWZvbnRTZXQpIHsKKyAgICAgICAgZmFtaWx5LT5uYW1l
ID0gV2ViQ1N0cmluZygpOworICAgICAgICBmYW1pbHktPmlzQm9sZCA9IGZhbHNlOworICAgICAg
ICBmYW1pbHktPmlzSXRhbGljID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAg
Ly8gT2xkZXIgdmVyc2lvbnMgb2YgZm9udGNvbmZpZyBoYXZlIGEgYnVnIHdoZXJlIHRoZXkgY2Fu
bm90IHNlbGVjdAogICAgIC8vIG9ubHkgc2NhbGFibGUgZm9udHMgc28gd2UgaGF2ZSB0byBtYW51
YWxseSBmaWx0ZXIgdGhlIHJlc3VsdHMuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb250U2V0
LT5uZm9udDsgKytpKSB7CkBAIC05OSwxOCArMTExLDI2IEBAIFdlYkNTdHJpbmcgV2ViRm9udElu
Zm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVt
Q2hhCiAgICAgICAgIGlmIChhY2Nlc3MocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY0ZpbGVuYW1l
KSwgUl9PSykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBGY0NoYXI4KiBmYW1p
bHk7Ci0gICAgICAgIFdlYkNTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0
U3RyaW5nKGN1cnJlbnQsIEZDX0ZBTUlMWSwgMCwgJmZhbWlseSkgPT0gRmNSZXN1bHRNYXRjaCkg
ewotICAgICAgICAgICAgY29uc3QgY2hhciogY2hhckZhbWlseSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGZhbWlseSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBXZWJDU3RyaW5nKGNoYXJGYW1p
bHksIHN0cmxlbihjaGFyRmFtaWx5KSk7CisgICAgICAgIEZjQ2hhcjgqIGZhbWlseU5hbWU7Cisg
ICAgICAgIGlmIChGY1BhdHRlcm5HZXRTdHJpbmcoY3VycmVudCwgRkNfRkFNSUxZLCAwLCAmZmFt
aWx5TmFtZSkgPT0gRmNSZXN1bHRNYXRjaCkgeworICAgICAgICAgICAgY29uc3QgY2hhciogY2hh
ckZhbWlseSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZhbWlseU5hbWUpOworICAgICAgICAg
ICAgZmFtaWx5LT5uYW1lID0gV2ViQ1N0cmluZyhjaGFyRmFtaWx5LCBzdHJsZW4oY2hhckZhbWls
eSkpOwogICAgICAgICB9CisgICAgICAgIGludCB3ZWlnaHQ7CisgICAgICAgIGlmIChGY1BhdHRl
cm5HZXRJbnRlZ2VyKGN1cnJlbnQsIEZDX1dFSUdIVCwgMCwgJndlaWdodCkgPT0gRmNSZXN1bHRN
YXRjaCkKKyAgICAgICAgICAgIGZhbWlseS0+aXNCb2xkID0gd2VpZ2h0ID49IEZDX1dFSUdIVF9C
T0xEOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYW1pbHktPmlzQm9sZCA9IGZhbHNlOwor
ICAgICAgICBpbnQgc2xhbnQ7CisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKGN1cnJl
bnQsIEZDX1NMQU5ULCAwLCAmc2xhbnQpID09IEZjUmVzdWx0TWF0Y2gpCisgICAgICAgICAgICBm
YW1pbHktPmlzSXRhbGljID0gc2xhbnQgIT0gRkNfU0xBTlRfUk9NQU47CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKICAgICAgICAgRmNGb250U2V0
RGVzdHJveShmb250U2V0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIEZjRm9udFNldERlc3Ryb3koZm9udFNldCk7Ci0gICAgcmV0dXJuIFdl
YkNTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJGb250SW5mbzo6cmVuZGVyU3R5bGVGb3JTdHJpa2Uo
Y29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVuZGVyU3R5bGUq
IG91dCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115536</attachid>
            <date>2011-11-16 23:56:59 -0800</date>
            <delta_ts>2011-11-17 02:47:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-38701-20111117165658.patch</filename>
            <type>text/plain</type>
            <size>16773</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUwM2RjZDUzNWM0NGRk
ZDY3NWRlNTE5MzA4Njg4MTZiZmUxZjViMC4uNTU3YjdjOGM0MTY5MThkN2VjMzk5OWZjMzc4OTJm
Zjk2ZTM4MzkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTE2ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IGRvbid0IGNhbGwgZm9udGNvbmZpZyB0d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAg
ICBBZGRzIGEgbmV3IEFQSSBmb3IgZ2V0dGluZyBmb250IGZhbWlseS4gRm9yIG5vdywgRm9udENh
Y2hlTGludXggY2FsbHMgdGhlIG5ldyBBUEksIGJ1dCBkb24ndCB1c2UgYWRkaXRpb25hbCBwcm9w
ZXJ0aWVzIGZvciBjb21wYXRpYmlsaXR5LiBUaGUgb2xkIEFQSSB3aWxsIGJlIHJlbW92ZWQgd2hl
biBDaHJvbWl1bSBpcyByZWFkeSB0byB1c2UgbmV3IEFQSS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGJlaGF2aW9yIGNo
YW5nZXMgZm9yIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oOiBBZGRlZCBGb250RmFtaWx5IHN0cnVjdCBhbmQgY2hhbmdlZCB0aGUgZGVjbGFyYXRp
b24gb2YgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyk6IFVzZXMgbmV3IFBsYXRmb3JtU3Vw
cG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXguaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldEZha2VCb2xkKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpzZXRGYWtlSXRhbGljKTogQWRkZWQuCisKIDIwMTEtMTEt
MTYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBm
aWx0ZXIgZnVuY3Rpb24gc2hvcnRoYW5kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBl
MjA3NDE3MWEyNzU1OTg1ZTYyYzFiY2U0ZDNkMWQ4NDA3ZDBjMTYzLi5mNmUxNmYxYTY4MTY3Mzg4
YzUxYTliYmQ4ZDdlZWE3ZTc3ZGI4MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDExLTExLTE2ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIGRvbid0IGNhbGwgZm9udGNvbmZpZyB0d2lj
ZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgbmV3IEFQSSBmb3IgZ2V0RmFtaWx5Rm9yQ2hhcnMoKSBzbyB0aGF0
IGtlZXBpbmcgY29ycmVjdCBmb250IG1hcHBpbmcgb2YgdGhlIGdpdmVuIGNoYXJhY3RlcnMuCisK
KyAgICAgICAgKiBwdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oOiBBZGRlZC4KKyAgICAgICAg
KiBwdWJsaWMvbGludXgvV2ViRm9udEluZm8uaDogQWRkIGEgbmV3IEFQSS4KKyAgICAgICAgKiBw
dWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2Fu
ZGJveFN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKTogRGl0dG8uCisgICAgICAg
ICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1
cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKTogRGl0dG8uCisgICAgICAgICogc3Jj
L2xpbnV4L1dlYkZvbnRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9udEluZm86OmZh
bWlseUZvckNoYXJzKTogTW9kaWZpZWQgdG8gZ2V0IHdlaWdodCBhbmQgaXRhbGljIHByb3BlcnRp
ZXMgb2YgdGhlIGZvbnQuIE9sZCBBUEkgdXNlcyBuZXcgQVBJIGludGVybmFsbHkuCisKIDIwMTEt
MTEtMTEgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hy
b21pdW1dIEV4cG9zZSBtb2NrIHNjcm9sbGJhcnMgdG8gd2luZG93LmludGVybmFscwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRl
eCA0MTNlZGZjY2E1NTYwMTVlMGRiNjZlMWI4MzAxMDliYjYzZWZlYjE0Li42OGJhNzk0YmUxMGM1
YTE1YWQzNmUzMzUwM2NiZjNjMGZkOGEwOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtMTUyLDcgKzE1MiwxMiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbG9hZEZvbnQoTlNGb250KiBzcmNGb250LCBDR0ZvbnRS
ZWYqLCB1aW50MzJfdCogZm9udElEKTsKICNlbGlmIE9TKFVOSVgpCiAgICAgc3RhdGljIHZvaWQg
Z2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0
eWxlLCBGb250UmVuZGVyU3R5bGUqIHJlc3VsdCk7Ci0gICAgc3RhdGljIFN0cmluZyBnZXRGb250
RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciosIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBj
b25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUpOworICAgIHN0cnVjdCBGb250RmFtaWx5IHsKKyAg
ICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIGJvb2wgaXNCb2xkOworICAgICAgICBib29sIGlz
SXRhbGljOworICAgIH07CisgICAgc3RhdGljIHZvaWQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3Rl
cnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVy
cmVkTG9jYWxlLCBGb250RmFtaWx5Kik7CiAjZW5kaWYKIAogICAgIC8vIEZvcm1zIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
Q2FjaGVMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250Q2FjaGVMaW51eC5jcHAKaW5kZXggNGRkNjYwZGFmMmRhNzJhYjEyN2RlN2QwYWE5Nzc0
Y2JmMDE1YTAzNC4uZWNhN2IwMzMxOWQ2Y2RjNjBhNzJkNDhmYTk2ODQzN2M5Y2ExZTk1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENh
Y2hlTGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRDYWNoZUxpbnV4LmNwcApAQCAtNTksMTIgKzU5LDQwIEBAIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiBm
b250LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBsZW5ndGgpCiB7CiAgICAgaWN1OjpMb2NhbGUgbG9jYWxlID0gaWN1OjpMb2Nh
bGU6OmdldERlZmF1bHQoKTsKLSAgICBTdHJpbmcgZmFtaWx5ID0gUGxhdGZvcm1TdXBwb3J0Ojpn
ZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBsZW5ndGgsIGxvY2FsZS5nZXRM
YW5ndWFnZSgpKTsKLSAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKKyAgICBQbGF0Zm9ybVN1cHBv
cnQ6OkZvbnRGYW1pbHkgZmFtaWx5OworICAgIFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWls
eUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoLCBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKSwg
JmZhbWlseSk7CisgICAgaWYgKGZhbWlseS5uYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KGZhbWlseSk7CisgICAgQXRvbWlj
U3RyaW5nIGF0b21pY0ZhbWlseShmYW1pbHkubmFtZSk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGlzICNpZiBhZnRlciBBUEkgdHJhbnNpdGlvbiBjb21wbGV0ZS4KKyNpZiAwCisgICAgLy8gQ2hh
bmdlcyB3ZWlnaHQgYW5kL29yIGl0YWxpYyBvZiBnaXZlbiBGb250RGVzY3JpcHRpb24gZGVwZW5k
cyBvbgorICAgIC8vIHRoZSByZXN1bHQgb2YgZm9udGNvbmZpZyBzbyB0aGF0IGtlZXBpbmcgdGhl
IGNvcnJlY3QgZm9udCBtYXBwaW5nCisgICAgLy8gb2YgdGhlIGdpdmVuIGNoYXJhY3RlcnMuIFNl
ZSBodHRwOi8vY3JidWcuY29tLzMyMTA5IGZvciBkZXRhaWxzLgorICAgIGJvb2wgc2hvdWxkU2V0
RmFrZUJvbGQgPSBmYWxzZTsKKyAgICBib29sIHNob3VsZFNldEZha2VJdGFsaWMgPSBmYWxzZTsK
KyAgICBGb250RGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZm9udC5mb250RGVzY3JpcHRpb24oKSk7
CisgICAgaWYgKGZhbWlseS5pc0JvbGQgJiYgZGVzY3JpcHRpb24ud2VpZ2h0KCkgPCBGb250V2Vp
Z2h0Qm9sZCkKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHRCb2xkKTsK
KyAgICBpZiAoIWZhbWlseS5pc0JvbGQgJiYgZGVzY3JpcHRpb24ud2VpZ2h0KCkgPj0gRm9udFdl
aWdodEJvbGQpIHsKKyAgICAgICAgc2hvdWxkU2V0RmFrZUJvbGQgPSB0cnVlOworICAgICAgICBk
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7CisgICAgfQorICAgIGlmIChm
YW1pbHkuaXNJdGFsaWMgJiYgZGVzY3JpcHRpb24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09mZikK
KyAgICAgICAgZGVzY3JpcHRpb24uc2V0SXRhbGljKEZvbnRJdGFsaWNPbik7CisgICAgaWYgKCFm
YW1pbHkuaXNJdGFsaWMgJiYgZGVzY3JpcHRpb24uaXRhbGljKCkgPT0gRm9udEl0YWxpY09uKSB7
CisgICAgICAgIHNob3VsZFNldEZha2VJdGFsaWMgPSB0cnVlOworICAgICAgICBkZXNjcmlwdGlv
bi5zZXRJdGFsaWMoRm9udEl0YWxpY09mZik7CisgICAgfQorCisgICAgRm9udFBsYXRmb3JtRGF0
YSBwbGF0Zm9ybURhdGEgPSBGb250UGxhdGZvcm1EYXRhKCpnZXRDYWNoZWRGb250UGxhdGZvcm1E
YXRhKGRlc2NyaXB0aW9uLCBhdG9taWNGYW1pbHksIERvTm90UmV0YWluKSk7CisgICAgcGxhdGZv
cm1EYXRhLnNldEZha2VCb2xkKHNob3VsZFNldEZha2VCb2xkKTsKKyAgICBwbGF0Zm9ybURhdGEu
c2V0RmFrZUl0YWxpYyhzaG91bGRTZXRGYWtlSXRhbGljKTsKKyAgICByZXR1cm4gZ2V0Q2FjaGVk
Rm9udERhdGEoJnBsYXRmb3JtRGF0YSwgRG9Ob3RSZXRhaW4pOworI2Vsc2UKICAgICByZXR1cm4g
Z2V0Q2FjaGVkRm9udERhdGEoZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNj
cmlwdGlvbigpLCBhdG9taWNGYW1pbHksIERvTm90UmV0YWluKSwgRG9Ob3RSZXRhaW4pOworI2Vu
ZGlmCiB9CiAKIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZv
cm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXguaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5o
CmluZGV4IDg2Yjk0MWNhZTQwNTE5YTk0YTFmOGE0MDkyZWRhNGU2YTZkMTNmOGIuLjEwZGNlOTA1
MDQ1MDU4M2MzNzJhMzQ3NTJlOTMxMDI1NGMzZTEzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9y
bURhdGFMaW51eC5oCkBAIC0xMTgsNyArMTE4LDggQEAgcHVibGljOgogCiAgICAgRm9udE9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQogICAg
IHZvaWQgc2V0T3JpZW50YXRpb24oRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3Jp
ZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQotICAgIAorICAgIHZvaWQgc2V0RmFrZUJvbGQoYm9v
bCBmYWtlQm9sZCkgeyBtX2Zha2VCb2xkID0gZmFrZUJvbGQ7IH0KKyAgICB2b2lkIHNldEZha2VJ
dGFsaWMoYm9vbCBmYWtlSXRhbGljKSB7IG1fZmFrZUl0YWxpYyA9IGZha2VJdGFsaWM7IH0KICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0OwogICAgIEZv
bnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAgICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZWZhY2Ug
PT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdmMDM3
ODgyMjIxMDk4ODZiZGYwYzQ0MTdlMjYyYzBhYzlkZmRiZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJGb250RmFtaWx5X2gKKyNkZWZpbmUgV2ViRm9udEZhbWlseV9o
CisKKyNpbmNsdWRlICIuLi9XZWJDU3RyaW5nLmgiCisjaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViRm9udEZhbWlseSB7CisgICAgV2Vi
Q1N0cmluZyBuYW1lOworICAgIGJvb2wgaXNCb2xkOworICAgIGJvb2wgaXNJdGFsaWM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZvbnRGYW1pbHlfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8u
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgKaW5k
ZXggNWQ1MjU4NDRhZTc2NGE0ZWUyOWFlOGI1NzMzZDFmNjU5MDI1YjhhZS4uOWIzNDcyYjZjZmM1
MjNhNWQ0ODQ2MWMzYjI2NTFjZWNlODhjZTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250SW5mby5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVm
aW5lIFdlYkZvbnRJbmZvX2gKIAogI2luY2x1ZGUgIi4uL1dlYkNTdHJpbmcuaCIKKyNpbmNsdWRl
ICIuLi9saW51eC9XZWJGb250RmFtaWx5LmgiCiAjaW5jbHVkZSAiLi4vbGludXgvV2ViRm9udFJl
bmRlclN0eWxlLmgiCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTUwLDcgKzUxLDEwIEBAIHB1
YmxpYzoKICAgICAvLwogICAgIC8vIFJldHVybnM6IHRoZSBmb250IGZhbWlseSBvciBhbiBlbXB0
eSBzdHJpbmcgaWYgdGhlIHJlcXVlc3QgY291bGQgbm90IGJlCiAgICAgLy8gc2F0aXNmaWVkLgor
ICAgIC8vIEZJWE1FOiBEZXByZWNpYXRlZCBBUEkuIFJlbW92ZSBsYXRlci4KICAgICBXRUJLSVRf
RVhQT1JUIHN0YXRpYyBXZWJDU3RyaW5nIGZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBj
aGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9j
YWxlKTsKKyAgICAvLyBSZXR1cm5zOiB0aGUgZm9udCBmYW1pbHkgaW5zdGFuY2UuIFRoZSBpbnN0
YW5jZSBoYXMgYW4gZW1wdHkgZm9udCBuYW1lIGlmIHRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZSBz
YXRpc2ZpZWQuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBmYW1pbHlGb3JDaGFycyhj
b25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNo
YXIqIHByZWZlcnJlZExvY2FsZSwgV2ViRm9udEZhbWlseSopOwogCiAgICAgLy8gRmlsbCBvdXQg
dGhlIGdpdmVuIFdlYkZvbnRSZW5kZXJTdHlsZSB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMg
Zm9yCiAgICAgLy8gcmVuZGVyaW5nIHRoZSBnaXZlbiBmb250IGF0IHRoZSBnaXZlbiBzaXplLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJv
eFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRi
b3hTdXBwb3J0LmgKaW5kZXggMmY1NzkyOTg4YjZmZjFkYzQwMmE5NDI1OWNmNzUyN2Y3YjhiZDIz
Ny4uNDI4M2RmMzcxYzZhZDg4ZDgyMWJlNWIxMmI5MGJiMDFhNjgyZmVjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9y
dC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIKICNpbmNs
dWRlICIuLi9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJGb250RmFtaWx5LmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC01Miw3ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAv
LyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggdGhlIGZvbnQgZmFtaWx5IG9uIGFuIGVtcHR5IHN0cmlu
ZyBpZiB0aGUKICAgICAvLyByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2ZpZWQuCi0gICAgdmlydHVh
bCBXZWJTdHJpbmcgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgV2ViVUNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2Nh
bGUpICA9IDA7CisgICAgLy8gRklYTUU6IERlcHJlY2lhdGVkIEFQSS4gUmVtb3ZlIGxhdGVyLgor
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFdl
YlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJl
ZmVycmVkTG9jYWxlKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorICAgIC8vIFJldHVybnMgYSBX
ZWJGb250RmFtaWx5IGluc3RhbmNlIHdpdGggdGhlIGZvbnQgbmFtZS4gVGhlIGluc3RhbmNlIGhh
cyBlbXB0eSBmb250IG5hbWUgaWYgdGhlIHJlcXVlc3QgY2Fubm90IGJlIHNhdGlzZmllZC4KKyAg
ICAvLyBGSVhNRTogTWFrZSB0aGlzIHRvIGJlIGEgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGFmdGVy
IHRyYW5zaXRpb24uCisgICAgdmlydHVhbCB2b2lkIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJz
KGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3Qg
Y2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJGb250RmFtaWx5KiBmYW1pbHkpCisgICAgeworICAg
ICAgICBmYW1pbHktPm5hbWUgPSBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJz
LCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUpLnV0ZjgoKTsKKyAgICB9CisKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBp
bnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVuZGVyU3R5bGUqIHN0eWxlKSA9IDA7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBm
MWY2Njg2MTAxZjYyNjkxMTRkOGRkYmQ5NzcyOTY4ZTVmMWYzNDc4Li43ZWQ3NWNjYzkyNzdkMDMw
NDI0ODUyYTlmNDkyNzUxMjcwZGU5ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTQzNywyMSArNDM3LDIzIEBAIGJvb2wgUGxhdGZv
cm1TdXBwb3J0Ojpsb2FkRm9udChOU0ZvbnQqIHNyY0ZvbnQsIENHRm9udFJlZiogb3V0LCB1aW50
MzJfdCogZm9udElECiAgICAgcmV0dXJuIGZhbHNlOwogfQogI2VsaWYgT1MoVU5JWCkKLVN0cmlu
ZyBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVk
TG9jYWxlKQordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJz
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hh
ciogcHJlZmVycmVkTG9jYWxlLCBGb250RmFtaWx5KiBmYW1pbHkpCiB7CiAjaWYgT1MoQU5EUk9J
RCkKICAgICAvLyBGSVhNRTogV2UgZG8gbm90IHVzZSBmb250Y29uZmlnIG9uIEFuZHJvaWQsIHNv
IHVzZSBzaW1wbGUgbG9naWMgZm9yIG5vdy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njc1ODcKLSAgICByZXR1cm4gV2ViU3RyaW5nKCJBcmlhbCIpOwor
ICAgIGZhbWlseS0+bmFtZSA9ICJBcmlhbCI7CisgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsK
KyAgICBmYW1pbHktPmlzSXRhbGljID0gZmFsc2U7CiAjZWxzZQorICAgIFdlYkZvbnRGYW1pbHkg
d2ViRmFtaWx5OwogICAgIGlmICh3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+c2FuZGJveFN1cHBv
cnQoKSkKLSAgICAgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW5kYm94U3Vw
cG9ydCgpLT5nZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0
ZXJzLCBwcmVmZXJyZWRMb2NhbGUpOwotCi0gICAgV2ViQ1N0cmluZyBmYW1pbHkgPSBXZWJGb250
SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVk
TG9jYWxlKTsKLSAgICBpZiAoZmFtaWx5LmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIFdlYlN0cmlu
Zzo6ZnJvbVVURjgoZmFtaWx5LmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gV2ViU3RyaW5nKCk7Cisg
ICAgICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW5kYm94U3VwcG9ydCgpLT5nZXRGb250
RmFtaWx5Rm9yQ2hhcmFjdGVycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRM
b2NhbGUsICZ3ZWJGYW1pbHkpOworICAgIGVsc2UKKyAgICAgICAgV2ViRm9udEluZm86OmZhbWls
eUZvckNoYXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSwgJndl
YkZhbWlseSk7CisgICAgZmFtaWx5LT5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh3ZWJGYW1pbHku
bmFtZS5kYXRhKCksIHdlYkZhbWlseS5uYW1lLmxlbmd0aCgpKTsKKyAgICBmYW1pbHktPmlzQm9s
ZCA9IHdlYkZhbWlseS5pc0JvbGQ7CisgICAgZmFtaWx5LT5pc0l0YWxpYyA9IHdlYkZhbWlseS5p
c0l0YWxpYzsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9saW51eC9XZWJGb250SW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9s
aW51eC9XZWJGb250SW5mby5jcHAKaW5kZXggNDkxODJkNDdlYTdmNWJhZDU2MmExNmE1OTFmZDBl
MDU3NGQ1MWY3NS4uNGQzMDNkMjRjYzFhMGM1ODljZDg2MGJhZGExMzQ5MzgxZjZhNTdiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkZvbnRJ
bmZvLmgiCiAKKyNpbmNsdWRlICJXZWJGb250RmFtaWx5LmgiCiAjaW5jbHVkZSAiV2ViRm9udFJl
bmRlclN0eWxlLmgiCiAKICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KQEAgLTM5
LDggKzQwLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisvLyBGSVhNRTogRGVwcmVjaWF0
ZWQgQVBJLiBSZW1vdmUgbGF0ZXIuCiBXZWJDU3RyaW5nIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JD
aGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNv
bnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSkKIHsKKyAgICBXZWJGb250RmFtaWx5IGZhbWlseTsK
KyAgICBmYW1pbHlGb3JDaGFycyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRM
b2NhbGUsICZmYW1pbHkpOworICAgIHJldHVybiBmYW1pbHkubmFtZTsKK30KKwordm9pZCBXZWJG
b250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVmZXJyZWRMb2NhbGUsIFdlYkZvbnRGYW1p
bHkqIGZhbWlseSkKK3sKICAgICBGY0NoYXJTZXQqIGNzZXQgPSBGY0NoYXJTZXRDcmVhdGUoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkgewogICAgICAg
ICBpZiAoVTE2X0lTX1NVUlJPR0FURShjaGFyYWN0ZXJzW2ldKQpAQCAtNzgsOSArODcsMTIgQEAg
V2ViQ1N0cmluZyBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2ViVUNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBudW1DaGEKICAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOwog
ICAgIEZjQ2hhclNldERlc3Ryb3koY3NldCk7CiAKLSAgICBpZiAoIWZvbnRTZXQpCi0gICAgICAg
IHJldHVybiBXZWJDU3RyaW5nKCk7Ci0KKyAgICBpZiAoIWZvbnRTZXQpIHsKKyAgICAgICAgZmFt
aWx5LT5uYW1lID0gV2ViQ1N0cmluZygpOworICAgICAgICBmYW1pbHktPmlzQm9sZCA9IGZhbHNl
OworICAgICAgICBmYW1pbHktPmlzSXRhbGljID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgZm9udGNvbmZpZyBoYXZlIGEgYnVnIHdoZXJl
IHRoZXkgY2Fubm90IHNlbGVjdAogICAgIC8vIG9ubHkgc2NhbGFibGUgZm9udHMgc28gd2UgaGF2
ZSB0byBtYW51YWxseSBmaWx0ZXIgdGhlIHJlc3VsdHMuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBmb250U2V0LT5uZm9udDsgKytpKSB7CkBAIC05OSwxOCArMTExLDI2IEBAIFdlYkNTdHJpbmcg
V2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBz
aXplX3QgbnVtQ2hhCiAgICAgICAgIGlmIChhY2Nlc3MocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y0ZpbGVuYW1lKSwgUl9PSykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBGY0No
YXI4KiBmYW1pbHk7Ci0gICAgICAgIFdlYkNTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoRmNQ
YXR0ZXJuR2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZBTUlMWSwgMCwgJmZhbWlseSkgPT0gRmNSZXN1
bHRNYXRjaCkgewotICAgICAgICAgICAgY29uc3QgY2hhciogY2hhckZhbWlseSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGZhbWlseSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBXZWJDU3RyaW5n
KGNoYXJGYW1pbHksIHN0cmxlbihjaGFyRmFtaWx5KSk7CisgICAgICAgIEZjQ2hhcjgqIGZhbWls
eU5hbWU7CisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRTdHJpbmcoY3VycmVudCwgRkNfRkFNSUxZ
LCAwLCAmZmFtaWx5TmFtZSkgPT0gRmNSZXN1bHRNYXRjaCkgeworICAgICAgICAgICAgY29uc3Qg
Y2hhciogY2hhckZhbWlseSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZhbWlseU5hbWUpOwor
ICAgICAgICAgICAgZmFtaWx5LT5uYW1lID0gV2ViQ1N0cmluZyhjaGFyRmFtaWx5LCBzdHJsZW4o
Y2hhckZhbWlseSkpOwogICAgICAgICB9CisgICAgICAgIGludCB3ZWlnaHQ7CisgICAgICAgIGlm
IChGY1BhdHRlcm5HZXRJbnRlZ2VyKGN1cnJlbnQsIEZDX1dFSUdIVCwgMCwgJndlaWdodCkgPT0g
RmNSZXN1bHRNYXRjaCkKKyAgICAgICAgICAgIGZhbWlseS0+aXNCb2xkID0gd2VpZ2h0ID49IEZD
X1dFSUdIVF9CT0xEOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYW1pbHktPmlzQm9sZCA9
IGZhbHNlOworICAgICAgICBpbnQgc2xhbnQ7CisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRJbnRl
Z2VyKGN1cnJlbnQsIEZDX1NMQU5ULCAwLCAmc2xhbnQpID09IEZjUmVzdWx0TWF0Y2gpCisgICAg
ICAgICAgICBmYW1pbHktPmlzSXRhbGljID0gc2xhbnQgIT0gRkNfU0xBTlRfUk9NQU47CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKICAgICAgICAg
RmNGb250U2V0RGVzdHJveShmb250U2V0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIEZjRm9udFNldERlc3Ryb3koZm9udFNldCk7Ci0gICAg
cmV0dXJuIFdlYkNTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJGb250SW5mbzo6cmVuZGVyU3R5bGVG
b3JTdHJpa2UoY29uc3QgY2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVu
ZGVyU3R5bGUqIG91dCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115549</attachid>
            <date>2011-11-17 02:48:03 -0800</date>
            <delta_ts>2011-11-17 04:17:16 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-38701-20111117194802.patch</filename>
            <type>text/plain</type>
            <size>16765</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUwM2RjZDUzNWM0NGRk
ZDY3NWRlNTE5MzA4Njg4MTZiZmUxZjViMC4uZjA1ZDQzOWViMWQzOTUxZjU5OTNlZjA3NzM5Yzkx
MDgzODIxYjY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTE2ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IGRvbid0IGNhbGwgZm9udGNvbmZpZyB0d2ljZSBpbiBjb21wbGV4IHRleHQgcGF0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MDEKKworICAgICAg
ICBBZGRzIGEgbmV3IEFQSSBmb3IgZ2V0dGluZyBmb250IGZhbWlseS4gRm9yIG5vdywgRm9udENh
Y2hlTGludXggY2FsbHMgdGhlIG5ldyBBUEksIGJ1dCBkb24ndCB1c2UgYWRkaXRpb25hbCBwcm9w
ZXJ0aWVzIGZvciBjb21wYXRpYmlsaXR5LiBUaGUgb2xkIEFQSSB3aWxsIGJlIHJlbW92ZWQgd2hl
biBDaHJvbWl1bSBpcyByZWFkeSB0byB1c2UgbmV3IEFQSS4KKworICAgICAgICBSZXZpZXdlZCBi
eSBUb255IENoYW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3IgY2hhbmdl
cyBmb3Igbm93LgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0
Lmg6IEFkZGVkIEZvbnRGYW1pbHkgc3RydWN0IGFuZCBjaGFuZ2VkIHRoZSBkZWNsYXJhdGlvbiBv
ZiBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycygpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKTogVXNlcyBuZXcgUGxhdGZvcm1TdXBwb3J0
OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycygpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURhdGFMaW51eC5oOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6c2V0RmFrZUJvbGQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnNldEZha2VJdGFsaWMpOiBBZGRlZC4KKwogMjAxMS0xMS0xNiAg
RGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGZpbHRl
ciBmdW5jdGlvbiBzaG9ydGhhbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUyMDc0
MTcxYTI3NTU5ODVlNjJjMWJjZTRkM2QxZDg0MDdkMGMxNjMuLjQ0YmI5NWNkNDZjYzg1YzhlNmY4
MjYyZjA2NzBkZWY2YmY0NzFmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTEtMTEtMTYgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gZG9uJ3QgY2FsbCBmb250Y29uZmlnIHR3aWNlIGlu
IGNvbXBsZXggdGV4dCBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zODcwMQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAg
ICAgICAgQWRkIG5ldyBBUEkgZm9yIGdldEZhbWlseUZvckNoYXJzKCkgc28gdGhhdCBrZWVwaW5n
IGNvcnJlY3QgZm9udCBtYXBwaW5nIG9mIHRoZSBnaXZlbiBjaGFyYWN0ZXJzLgorCisgICAgICAg
ICogcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaDogQWRkZWQuCisgICAgICAgICogcHVibGlj
L2xpbnV4L1dlYkZvbnRJbmZvLmg6IEFkZCBhIG5ldyBBUEkuCisgICAgICAgICogcHVibGljL2xp
bnV4L1dlYlNhbmRib3hTdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNhbmRib3hTdXBw
b3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyk6IERpdHRvLgorICAgICAgICAqIHNyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0Ojpn
ZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyk6IERpdHRvLgorICAgICAgICAqIHNyYy9saW51eC9X
ZWJGb250SW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvbnRJbmZvOjpmYW1pbHlGb3JD
aGFycyk6IE1vZGlmaWVkIHRvIGdldCB3ZWlnaHQgYW5kIGl0YWxpYyBwcm9wZXJ0aWVzIG9mIHRo
ZSBmb250LiBPbGQgQVBJIHVzZXMgbmV3IEFQSSBpbnRlcm5hbGx5LgorCiAyMDExLTExLTExICBB
ZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBF
eHBvc2UgbW9jayBzY3JvbGxiYXJzIHRvIHdpbmRvdy5pbnRlcm5hbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNDEzZWRm
Y2NhNTU2MDE1ZTBkYjY2ZTFiODMwMTA5YmI2M2VmZWIxNC4uNjhiYTc5NGJlMTBjNWExNWFkMzZl
MzM1MDNjYmYzYzBmZDhhMDkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTE1Miw3ICsxNTIsMTIgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGxvYWRGb250KE5TRm9udCogc3JjRm9udCwgQ0dGb250UmVmKiwgdWlu
dDMyX3QqIGZvbnRJRCk7CiAjZWxpZiBPUyhVTklYKQogICAgIHN0YXRpYyB2b2lkIGdldFJlbmRl
clN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgRm9u
dFJlbmRlclN0eWxlKiByZXN1bHQpOwotICAgIHN0YXRpYyBTdHJpbmcgZ2V0Rm9udEZhbWlseUZv
ckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hh
ciogcHJlZmVycmVkTG9jYWxlKTsKKyAgICBzdHJ1Y3QgRm9udEZhbWlseSB7CisgICAgICAgIFN0
cmluZyBuYW1lOworICAgICAgICBib29sIGlzQm9sZDsKKyAgICAgICAgYm9vbCBpc0l0YWxpYzsK
KyAgICB9OworICAgIHN0YXRpYyB2b2lkIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0
IFVDaGFyKiwgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2Fs
ZSwgRm9udEZhbWlseSopOwogI2VuZGlmCiAKICAgICAvLyBGb3JtcyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGlu
dXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENh
Y2hlTGludXguY3BwCmluZGV4IDRkZDY2MGRhZjJkYTcyYWIxMjdkZTdkMGFhOTc3NGNiZjAxNWEw
MzQuLmVjYTdiMDMzMTlkNmNkYzYwYTcyZDQ4ZmE5Njg0MzdjOWNhMWU5NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
Q2FjaGVMaW51eC5jcHAKQEAgLTU5LDEyICs1OSw0MCBAQCBjb25zdCBTaW1wbGVGb250RGF0YSog
Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbGVuZ3RoKQogewogICAgIGljdTo6TG9jYWxlIGxvY2FsZSA9IGljdTo6TG9jYWxlOjpnZXRE
ZWZhdWx0KCk7Ci0gICAgU3RyaW5nIGZhbWlseSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZh
bWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoLCBsb2NhbGUuZ2V0TGFuZ3VhZ2Uo
KSk7Ci0gICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCisgICAgUGxhdGZvcm1TdXBwb3J0OjpGb250
RmFtaWx5IGZhbWlseTsKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFy
YWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCwgbG9jYWxlLmdldExhbmd1YWdlKCksICZmYW1pbHkp
OworICAgIGlmIChmYW1pbHkubmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgQXRvbWljU3RyaW5nIGF0b21pY0ZhbWlseShmYW1pbHkpOworICAgIEF0b21pY1N0cmluZyBh
dG9taWNGYW1pbHkoZmFtaWx5Lm5hbWUpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyAjaWYg
YWZ0ZXIgQVBJIHRyYW5zaXRpb24gY29tcGxldGUuCisjaWYgMAorICAgIC8vIENoYW5nZXMgd2Vp
Z2h0IGFuZC9vciBpdGFsaWMgb2YgZ2l2ZW4gRm9udERlc2NyaXB0aW9uIGRlcGVuZHMgb24KKyAg
ICAvLyB0aGUgcmVzdWx0IG9mIGZvbnRjb25maWcgc28gdGhhdCBrZWVwaW5nIHRoZSBjb3JyZWN0
IGZvbnQgbWFwcGluZworICAgIC8vIG9mIHRoZSBnaXZlbiBjaGFyYWN0ZXJzLiBTZWUgaHR0cDov
L2NyYnVnLmNvbS8zMjEwOSBmb3IgZGV0YWlscy4KKyAgICBib29sIHNob3VsZFNldEZha2VCb2xk
ID0gZmFsc2U7CisgICAgYm9vbCBzaG91bGRTZXRGYWtlSXRhbGljID0gZmFsc2U7CisgICAgRm9u
dERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGZvbnQuZm9udERlc2NyaXB0aW9uKCkpOworICAgIGlm
IChmYW1pbHkuaXNCb2xkICYmIGRlc2NyaXB0aW9uLndlaWdodCgpIDwgRm9udFdlaWdodEJvbGQp
CisgICAgICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0Qm9sZCk7CisgICAgaWYg
KCFmYW1pbHkuaXNCb2xkICYmIGRlc2NyaXB0aW9uLndlaWdodCgpID49IEZvbnRXZWlnaHRCb2xk
KSB7CisgICAgICAgIHNob3VsZFNldEZha2VCb2xkID0gdHJ1ZTsKKyAgICAgICAgZGVzY3JpcHRp
b24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOworICAgIH0KKyAgICBpZiAoZmFtaWx5Lmlz
SXRhbGljICYmIGRlc2NyaXB0aW9uLml0YWxpYygpID09IEZvbnRJdGFsaWNPZmYpCisgICAgICAg
IGRlc2NyaXB0aW9uLnNldEl0YWxpYyhGb250SXRhbGljT24pOworICAgIGlmICghZmFtaWx5Lmlz
SXRhbGljICYmIGRlc2NyaXB0aW9uLml0YWxpYygpID09IEZvbnRJdGFsaWNPbikgeworICAgICAg
ICBzaG91bGRTZXRGYWtlSXRhbGljID0gdHJ1ZTsKKyAgICAgICAgZGVzY3JpcHRpb24uc2V0SXRh
bGljKEZvbnRJdGFsaWNPZmYpOworICAgIH0KKworICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZv
cm1EYXRhID0gRm9udFBsYXRmb3JtRGF0YSgqZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShkZXNj
cmlwdGlvbiwgYXRvbWljRmFtaWx5LCBEb05vdFJldGFpbikpOworICAgIHBsYXRmb3JtRGF0YS5z
ZXRGYWtlQm9sZChzaG91bGRTZXRGYWtlQm9sZCk7CisgICAgcGxhdGZvcm1EYXRhLnNldEZha2VJ
dGFsaWMoc2hvdWxkU2V0RmFrZUl0YWxpYyk7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRh
KCZwbGF0Zm9ybURhdGEsIERvTm90UmV0YWluKTsKKyNlbHNlCiAgICAgcmV0dXJuIGdldENhY2hl
ZEZvbnREYXRhKGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udC5mb250RGVzY3JpcHRpb24o
KSwgYXRvbWljRmFtaWx5LCBEb05vdFJldGFpbiksIERvTm90UmV0YWluKTsKKyNlbmRpZgogfQog
CiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250JiBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUxpbnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXguaAppbmRleCA4
NmI5NDFjYWU0MDUxOWE5NGExZjhhNDA5MmVkYTRlNmE2ZDEzZjhiLi4xMGRjZTkwNTA0NTA1ODNj
MzcyYTM0NzUyZTkzMTAyNTRjM2UxM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGlu
dXguaApAQCAtMTE4LDcgKzExOCw4IEBAIHB1YmxpYzoKIAogICAgIEZvbnRPcmllbnRhdGlvbiBv
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KICAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9u
ID0gb3JpZW50YXRpb247IH0KLSAgICAKKyAgICB2b2lkIHNldEZha2VCb2xkKGJvb2wgZmFrZUJv
bGQpIHsgbV9mYWtlQm9sZCA9IGZha2VCb2xkOyB9CisgICAgdm9pZCBzZXRGYWtlSXRhbGljKGJv
b2wgZmFrZUl0YWxpYykgeyBtX2Zha2VJdGFsaWMgPSBmYWtlSXRhbGljOyB9CiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25zdDsKICAgICBGb250UGxhdGZv
cm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGVmYWNlID09IGhhc2hU
YWJsZURlbGV0ZWRGb250VmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZjAzNzg4MjIyMTA5
ODg2YmRmMGM0NDE3ZTI2MmMwYWM5ZGZkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViRm9udEZhbWlseV9oCisjZGVmaW5lIFdlYkZvbnRGYW1pbHlfaAorCisjaW5j
bHVkZSAiLi4vV2ViQ1N0cmluZy5oIgorI2luY2x1ZGUgIi4uL1dlYkNvbW1vbi5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYkZvbnRGYW1pbHkgeworICAgIFdlYkNTdHJpbmcg
bmFtZTsKKyAgICBib29sIGlzQm9sZDsKKyAgICBib29sIGlzSXRhbGljOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJGb250RmFtaWx5X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250SW5mby5oCmluZGV4IDVkNTI1
ODQ0YWU3NjRhNGVlMjlhZThiNTczM2QxZjY1OTAyNWI4YWUuLjliMzQ3MmI2Y2ZjNTIzYTVkNDg0
NjFjM2IyNjUxY2VjZTg4Y2UwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvbGludXgvV2ViRm9udEluZm8uaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJG
b250SW5mb19oCiAKICNpbmNsdWRlICIuLi9XZWJDU3RyaW5nLmgiCisjaW5jbHVkZSAiLi4vbGlu
dXgvV2ViRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIi4uL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHls
ZS5oIgogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC01MCw3ICs1MSwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8KICAgICAvLyBSZXR1cm5zOiB0aGUgZm9udCBmYW1pbHkgb3IgYW4gZW1wdHkgc3RyaW5n
IGlmIHRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZQogICAgIC8vIHNhdGlzZmllZC4KKyAgICAvLyBG
SVhNRTogRGVwcmVjaWF0ZWQgQVBJLiBSZW1vdmUgbGF0ZXIuCiAgICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgV2ViQ1N0cmluZyBmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVy
cywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSk7Cisg
ICAgLy8gUmV0dXJuczogdGhlIGZvbnQgZmFtaWx5IGluc3RhbmNlLiBUaGUgaW5zdGFuY2UgaGFz
IGFuIGVtcHR5IGZvbnQgbmFtZSBpZiB0aGUgcmVxdWVzdCBjb3VsZCBub3QgYmUgc2F0aXNmaWVk
LgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHZvaWQgZmFtaWx5Rm9yQ2hhcnMoY29uc3QgV2Vi
VUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBwcmVm
ZXJyZWRMb2NhbGUsIFdlYkZvbnRGYW1pbHkqKTsKIAogICAgIC8vIEZpbGwgb3V0IHRoZSBnaXZl
biBXZWJGb250UmVuZGVyU3R5bGUgd2l0aCB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGZvcgogICAg
IC8vIHJlbmRlcmluZyB0aGUgZ2l2ZW4gZm9udCBhdCB0aGUgZ2l2ZW4gc2l6ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9y
dC5oCmluZGV4IDJmNTc5Mjk4OGI2ZmYxZGM0MDJhOTQyNTljZjc1MjdmN2I4YmQyMzcuLjQyODNk
ZjM3MWM2YWQ4OGQ4MjFiZTViMTJiOTBiYjAxYTY4MmZlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaApAQCAt
MzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiLi4v
V2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViRm9udEZhbWlseS5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtNTIsNyArNTMsMTUgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gUmV0dXJu
cyBhIHN0cmluZyB3aXRoIHRoZSBmb250IGZhbWlseSBvbiBhbiBlbXB0eSBzdHJpbmcgaWYgdGhl
CiAgICAgLy8gcmVxdWVzdCBjYW5ub3QgYmUgc2F0aXNmaWVkLgotICAgIHZpcnR1YWwgV2ViU3Ry
aW5nIGdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKSAgPSAw
OworICAgIC8vIEZJWE1FOiBEZXByZWNpYXRlZCBBUEkuIFJlbW92ZSBsYXRlci4KKyAgICB2aXJ0
dWFsIFdlYlN0cmluZyBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBXZWJVQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExv
Y2FsZSkgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KKyAgICAvLyBSZXR1cm5zIGEgV2ViRm9udEZh
bWlseSBpbnN0YW5jZSB3aXRoIHRoZSBmb250IG5hbWUuIFRoZSBpbnN0YW5jZSBoYXMgZW1wdHkg
Zm9udCBuYW1lIGlmIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2ZpZWQuCisgICAgLy8gRklY
TUU6IE1ha2UgdGhpcyB0byBiZSBhIHB1cmUgdmlydHVhbCBmdW5jdGlvbiBhZnRlciB0cmFuc2l0
aW9uLgorICAgIHZpcnR1YWwgdm9pZCBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBX
ZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHBy
ZWZlcnJlZExvY2FsZSwgV2ViRm9udEZhbWlseSogZmFtaWx5KQorICAgIHsKKyAgICAgICAgZmFt
aWx5LT5uYW1lID0gZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbnVtQ2hh
cmFjdGVycywgcHJlZmVycmVkTG9jYWxlKS51dGY4KCk7CisgICAgfQorCiAgICAgdmlydHVhbCB2
b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVB
bmRTdHlsZSwgV2ViRm9udFJlbmRlclN0eWxlKiBzdHlsZSkgPSAwOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggZjFmNjY4NjEw
MWY2MjY5MTE0ZDhkZGJkOTc3Mjk2OGU1ZjFmMzQ3OC4uN2VkNzVjY2M5Mjc3ZDAzMDQyNDg1MmE5
ZjQ5Mjc1MTI3MGRlOWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0
Zm9ybVN1cHBvcnQuY3BwCkBAIC00MzcsMjEgKzQzNywyMyBAQCBib29sIFBsYXRmb3JtU3VwcG9y
dDo6bG9hZEZvbnQoTlNGb250KiBzcmNGb250LCBDR0ZvbnRSZWYqIG91dCwgdWludDMyX3QqIGZv
bnRJRAogICAgIHJldHVybiBmYWxzZTsKIH0KICNlbGlmIE9TKFVOSVgpCi1TdHJpbmcgUGxhdGZv
cm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSkK
K3ZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZl
cnJlZExvY2FsZSwgRm9udEZhbWlseSogZmFtaWx5KQogewogI2lmIE9TKEFORFJPSUQpCiAgICAg
Ly8gRklYTUU6IFdlIGRvIG5vdCB1c2UgZm9udGNvbmZpZyBvbiBBbmRyb2lkLCBzbyB1c2Ugc2lt
cGxlIGxvZ2ljIGZvciBub3cuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY3NTg3Ci0gICAgcmV0dXJuIFdlYlN0cmluZygiQXJpYWwiKTsKKyAgICBmYW1p
bHktPm5hbWUgPSAiQXJpYWwiOworICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7CisgICAgZmFt
aWx5LT5pc0l0YWxpYyA9IGZhbHNlOwogI2Vsc2UKKyAgICBXZWJGb250RmFtaWx5IHdlYkZhbWls
eTsKICAgICBpZiAod2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPnNhbmRib3hTdXBwb3J0KCkpCi0g
ICAgICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+c2FuZGJveFN1cHBvcnQoKS0+
Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJl
ZmVycmVkTG9jYWxlKTsKLQotICAgIFdlYkNTdHJpbmcgZmFtaWx5ID0gV2ViRm9udEluZm86OmZh
bWlseUZvckNoYXJzKGNoYXJhY3RlcnMsIG51bUNoYXJhY3RlcnMsIHByZWZlcnJlZExvY2FsZSk7
Ci0gICAgaWYgKGZhbWlseS5kYXRhKCkpCi0gICAgICAgIHJldHVybiBXZWJTdHJpbmc6OmZyb21V
VEY4KGZhbWlseS5kYXRhKCkpOwotCi0gICAgcmV0dXJuIFdlYlN0cmluZygpOworICAgICAgICB3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+c2FuZGJveFN1cHBvcnQoKS0+Z2V0Rm9udEZhbWlseUZv
ckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlLCAm
d2ViRmFtaWx5KTsKKyAgICBlbHNlCisgICAgICAgIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFy
cyhjaGFyYWN0ZXJzLCBudW1DaGFyYWN0ZXJzLCBwcmVmZXJyZWRMb2NhbGUsICZ3ZWJGYW1pbHkp
OworICAgIGZhbWlseS0+bmFtZSA9IFN0cmluZzo6ZnJvbVVURjgod2ViRmFtaWx5Lm5hbWUuZGF0
YSgpLCB3ZWJGYW1pbHkubmFtZS5sZW5ndGgoKSk7CisgICAgZmFtaWx5LT5pc0JvbGQgPSB3ZWJG
YW1pbHkuaXNCb2xkOworICAgIGZhbWlseS0+aXNJdGFsaWMgPSB3ZWJGYW1pbHkuaXNJdGFsaWM7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGlu
dXgvV2ViRm9udEluZm8uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2Vi
Rm9udEluZm8uY3BwCmluZGV4IDQ5MTgyZDQ3ZWE3ZjViYWQ1NjJhMTZhNTkxZmQwZTA1NzRkNTFm
NzUuLjRkMzAzZDI0Y2MxYTBjNTg5Y2Q4NjBiYWRhMTM0OTM4MWY2YTU3YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9saW51eC9XZWJGb250SW5mby5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJGb250SW5mby5oIgog
CisjaW5jbHVkZSAiV2ViRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIldlYkZvbnRSZW5kZXJTdHls
ZS5oIgogCiAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+CkBAIC0zOSw4ICs0MCwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gRklYTUU6IERlcHJlY2lhdGVkIEFQSS4g
UmVtb3ZlIGxhdGVyLgogV2ViQ1N0cmluZyBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY29u
c3QgV2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFy
KiBwcmVmZXJyZWRMb2NhbGUpCiB7CisgICAgV2ViRm9udEZhbWlseSBmYW1pbHk7CisgICAgZmFt
aWx5Rm9yQ2hhcnMoY2hhcmFjdGVycywgbnVtQ2hhcmFjdGVycywgcHJlZmVycmVkTG9jYWxlLCAm
ZmFtaWx5KTsKKyAgICByZXR1cm4gZmFtaWx5Lm5hbWU7Cit9CisKK3ZvaWQgV2ViRm9udEluZm86
OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hh
cmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJGb250RmFtaWx5KiBmYW1p
bHkpCit7CiAgICAgRmNDaGFyU2V0KiBjc2V0ID0gRmNDaGFyU2V0Q3JlYXRlKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpIHsKICAgICAgICAgaWYgKFUx
Nl9JU19TVVJST0dBVEUoY2hhcmFjdGVyc1tpXSkKQEAgLTc4LDkgKzg3LDEyIEBAIFdlYkNTdHJp
bmcgV2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbnVtQ2hhCiAgICAgRmNQYXR0ZXJuRGVzdHJveShwYXR0ZXJuKTsKICAgICBGY0No
YXJTZXREZXN0cm95KGNzZXQpOwogCi0gICAgaWYgKCFmb250U2V0KQotICAgICAgICByZXR1cm4g
V2ViQ1N0cmluZygpOwotCisgICAgaWYgKCFmb250U2V0KSB7CisgICAgICAgIGZhbWlseS0+bmFt
ZSA9IFdlYkNTdHJpbmcoKTsKKyAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsKKyAgICAg
ICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IC8vIE9sZGVyIHZlcnNpb25zIG9mIGZvbnRjb25maWcgaGF2ZSBhIGJ1ZyB3aGVyZSB0aGV5IGNh
bm5vdCBzZWxlY3QKICAgICAvLyBvbmx5IHNjYWxhYmxlIGZvbnRzIHNvIHdlIGhhdmUgdG8gbWFu
dWFsbHkgZmlsdGVyIHRoZSByZXN1bHRzLgogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udFNl
dC0+bmZvbnQ7ICsraSkgewpAQCAtOTksMTggKzExMSwyNiBAQCBXZWJDU3RyaW5nIFdlYkZvbnRJ
bmZvOjpmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51
bUNoYQogICAgICAgICBpZiAoYWNjZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNGaWxlbmFt
ZSksIFJfT0spKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgRmNDaGFyOCogZmFt
aWx5OwotICAgICAgICBXZWJDU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKEZjUGF0dGVybkdl
dFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1pbHkpID09IEZjUmVzdWx0TWF0Y2gp
IHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNoYXJGYW1pbHkgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPihmYW1pbHkpOwotICAgICAgICAgICAgcmVzdWx0ID0gV2ViQ1N0cmluZyhjaGFyRmFt
aWx5LCBzdHJsZW4oY2hhckZhbWlseSkpOworICAgICAgICBGY0NoYXI4KiBmYW1pbHlOYW1lOwor
ICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZBTUlMWSwgMCwgJmZh
bWlseU5hbWUpID09IEZjUmVzdWx0TWF0Y2gpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNo
YXJGYW1pbHkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihmYW1pbHlOYW1lKTsKKyAgICAgICAg
ICAgIGZhbWlseS0+bmFtZSA9IFdlYkNTdHJpbmcoY2hhckZhbWlseSwgc3RybGVuKGNoYXJGYW1p
bHkpKTsKICAgICAgICAgfQorICAgICAgICBpbnQgd2VpZ2h0OworICAgICAgICBpZiAoRmNQYXR0
ZXJuR2V0SW50ZWdlcihjdXJyZW50LCBGQ19XRUlHSFQsIDAsICZ3ZWlnaHQpID09IEZjUmVzdWx0
TWF0Y2gpCisgICAgICAgICAgICBmYW1pbHktPmlzQm9sZCA9IHdlaWdodCA+PSBGQ19XRUlHSFRf
Qk9MRDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsK
KyAgICAgICAgaW50IHNsYW50OworICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihjdXJy
ZW50LCBGQ19TTEFOVCwgMCwgJnNsYW50KSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICAgICAg
ZmFtaWx5LT5pc0l0YWxpYyA9IHNsYW50ICE9IEZDX1NMQU5UX1JPTUFOOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBmYW1pbHktPmlzSXRhbGljID0gZmFsc2U7CiAgICAgICAgIEZjRm9udFNl
dERlc3Ryb3koZm9udFNldCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBGY0ZvbnRTZXREZXN0cm95KGZvbnRTZXQpOwotICAgIHJldHVybiBX
ZWJDU3RyaW5nKCk7CiB9CiAKIHZvaWQgV2ViRm9udEluZm86OnJlbmRlclN0eWxlRm9yU3RyaWtl
KGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJlbmRlclN0eWxl
KiBvdXQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>