<?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>10874</bug_id>
          
          <creation_ts>2006-09-15 13:08:21 -0700</creation_ts>
          <short_desc>lang, xml:lang, content-language ignored when choosing fonts</short_desc>
          <delta_ts>2012-10-09 01:12:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>419.x</version>
          <rep_platform>Mac (PowerPC)</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://en.wikipedia.org/wiki/Han_unification</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>18085</dependson>
    
    <dependson>93985</dependson>
    
    <dependson>9454</dependson>
    
    <dependson>20797</dependson>
    
    <dependson>67586</dependson>
    
    <dependson>76701</dependson>
    
    <dependson>76892</dependson>
    
    <dependson>78184</dependson>
    
    <dependson>83792</dependson>
    
    <dependson>97929</dependson>
          <blocked>24574</blocked>
    
    <blocked>77568</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Stoklund Olesen">stoklund</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>andy.dyson</cc>
    
    <cc>ap</cc>
    
    <cc>bashi</cc>
    
    <cc>chrajohn</cc>
    
    <cc>darin</cc>
    
    <cc>efidler</cc>
    
    <cc>falken</cc>
    
    <cc>macpherson</cc>
    
    <cc>meliste</cc>
    
    <cc>mitz</cc>
    
    <cc>nickshanks</cc>
    
    <cc>phiw2</cc>
    
    <cc>robburns1</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>55606</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Stoklund Olesen">stoklund</who>
    <bug_when>2006-09-15 13:08:21 -0700</bug_when>
    <thetext>When rendering Chinese, Japanese and Korean pages, WebKit uses the International preferences for choosing the font. The language attributes are not considered. This means that Chinese pages come out wrong on a Japanese computer.

Example:

&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;zh-CN&quot; lang=&quot;zh-CN&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;content-language&quot; content=&quot;zh-CN&quot;/&gt;
&lt;title&gt;&amp;#x6E24;&amp;#x9EA6;&amp;#x5802;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;&amp;#x9EA6;&amp;#x754C;&amp;#x65B0;&amp;#x95FB; &amp;#x82F9;&amp;#x679C; It&apos;s Showtime &amp;#x7279;&amp;#x522B;&amp;#x53D1;&amp;#x5E03;&amp;#x4F1A;&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;

The H1 is rendered in different fonts, depending on the user&apos;s language choice. Traditional Chinese, simplified Chinese, and Japanese give three different results, only the simplified Chinese is correct.

WebKit should look at lang/xml:lang attributes, and HTTP&apos;s Content-Language header before using user defaults to choose fonts for unihan characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55673</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-09-16 11:34:13 -0700</bug_when>
    <thetext>Do other browsers do this?   What do WinIE and Firefox do?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55675</commentid>
    <comment_count>2</comment_count>
    <who name="Jakob Stoklund Olesen">stoklund</who>
    <bug_when>2006-09-16 12:33:15 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Do other browsers do this?   What do WinIE and Firefox do?

Firefox/Mac uses the lang attribute, as you can see by opening the wikipedia URL in FF.
Don&apos;t know about WinIE.
Opera 9.01/Mac uses the lang attribute.

Firefox gets the example wrong - it uses a mixture of traditional and simplified Chinese fonts. 
Opera displays the example in a single simplified Chinese font as it should.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55699</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-09-17 00:49:08 -0700</bug_when>
    <thetext>Although Han unification is by far the most prominent, it is not the only problematic one - the same issues exist with Arabic/Urdu, Greek/Coptic, Russian/Serbian, and modern/old (church) Cyrillic (examples taken from Unicode Demystified by Richard Gillam, chapter 3).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29895</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-01-31 04:31:05 -0800</bug_when>
    <thetext>it seems :lang selection doesn&apos;t work at all:
http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-styling-css-05-b.html
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20805</commentid>
    <comment_count>5</comment_count>
    <who name="Andrew Dyson">andy.dyson</who>
    <bug_when>2007-03-01 11:29:59 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Do other browsers do this?   What do WinIE and Firefox do?

See 

test case : 

http://www.w3.org/International/tests/sec-cjk-fonts

test result : note that Safari does not take into account &apos;lang&apos; when selecting fonts while FF, IE, and Opera do. 

http://www.w3.org/International/tests/results/results-lang-and-cjk-font.php

(In reply to comment #4)
&gt; it seems :lang selection doesn&apos;t work at all:
&gt; http://www.w3.org/Graphics/SVG/Test/20061213/htmlEmbedHarness/full-styling-css-05-b.html
&gt; 

I guess this needs to be a separate bug. Nonetheless, here are some links

http://www.w3.org/International/tests/#css-lang
http://www.w3.org/International/tests/results/css-lang
http://www.w3.org/International/questions/qa-css-lang
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10931</commentid>
    <comment_count>6</comment_count>
    <who name="Robert Burns">robburns1</who>
    <bug_when>2007-05-06 00:01:47 -0700</bug_when>
    <thetext>This is one of those things where WebKit gets it right and most other browsers get it really really wrong. Unfortunately that creates an issue where WebKit has to decide what path to take. Changing fonts due to language attributes is a really bad idea. Its not what Unicode intended for Unihan ideographs. It takes control away from content creators. And the list goes on. Glyphs should change when content creators specify different fonts. 

For fallback, WebKit (and other browsers) should select an appropriate glyph based on language context. Or if an OpenType font includes support for language dependent glyph variants. But the behavior demonstrated in these examples is just plain wrong from the spec. Also, this is not to say that WebKit doesn&apos;t need to fix its support for the lang CSS selectors which I believe it did with bug#3233). However, that&apos;s handled in other bug reports. Fixing the language selector and adding CJKV language dependent fonts to the default styleshet would be a setp towards addressing this issue. The only other thing that should be done would be to ensure that fallback font selection made use of that default useragent stylesheet before other fallbacks. Unicode suggests its the users enviornment settings that should govern the font selection (for plain text anyway). I think that should also guide fallback algorithms for CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717</commentid>
    <comment_count>7</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2007-08-22 10:01:30 -0700</bug_when>
    <thetext>This is actually a bug in Unicode. You should report it there.  But we need to fix it in webkit too.

The issue is that unicode is completely inconsistent. In the beginning they represented separated symbols. For instance there is different encodings for European numbers and Arabic number even though the meaning are the same, they are separated because the symbols are different. This made Unicode usefull for encoding fonts. But when the same type of issues appears in Asian scripts, Unicode changes and decides on encoding semantics instead of symbols, so suddenly the one unicode-character has several different graphical symbol.

Unfortunately it is unlikely that Unicode will fix their bugs, since it is so fundamentally flawed already.

Btw. Another place language is needed is in correct capitalization (like CSS text-transform). In Turkish a small &apos;i&apos; needs to be capitalized to a big &amp;#304;(dot over I), and a large &apos;I&apos; to be lower-cased to &apos;&amp;#305;&apos; (i with no dot).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699</commentid>
    <comment_count>8</comment_count>
    <who name="Robert Burns">robburns1</who>
    <bug_when>2007-08-22 11:53:38 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This is actually a bug in Unicode. You should report it there.  But we need to
&gt; fix it in webkit too.

I&apos;m not so sure it is a bug in Unicode. Unicode has to balance many competing interests. They unify some things and dis-unify others. The rationale may not always be clear, but however they handle unification, it doesn&apos;t prevent proper glyph matching and text layout. It simply moves it to the presentation level (without an underlying character/semantic difference).

&gt; &gt; The issue is that unicode is completely inconsistent. In the beginning they
&gt; represented separated symbols. For instance there is different encodings for
&gt; European numbers and Arabic number even though the meaning are the same, they
&gt; are separated because the symbols are different. This made Unicode usefull for
&gt; encoding fonts. But when the same type of issues appears in Asian scripts,
&gt; Unicode changes and decides on encoding semantics instead of symbols, so
&gt; suddenly the one unicode-character has several different graphical symbol.

This is actually one of the *features* of Unicode. Separating the semantics from the presentation or the model from the view.

&gt; Btw. Another place language is needed is in correct capitalization (like CSS
&gt; text-transform). In Turkish a small &apos;i&apos; needs to be capitalized to a big
&gt; &amp;#304;(dot over I), and a large &apos;I&apos; to be lower-cased to &apos;&amp;#305;&apos; (i with no
&gt; dot).

This is actually a better example where glyphs should be different depending on the language settings. These CSS text transforms should be language aware for glyph selection.

In the case of Han unification, the webpage author should select a suitable font to display the Han characters with the desired glyphs.  The font the author selects will already be language dependent.

However, WebKit (and the various text systems it uses) should be language aware in it&apos;s glyph fallback selection. That is when the fonts specified by the author are not available, the text system should select the appropriate Han glyphs from an appropriate font based on the language settings of that run of text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61231</commentid>
    <comment_count>9</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-11-14 12:57:15 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Do other browsers do this?   What do WinIE and Firefox do?

Firefox has separate font preferences for script/langGroup and it does honor lang/xml:lang when selecting fonts. If lang/xml:lang is not specified, it falls back to script/langGroup inferred from charset (that does not always work, but in many cases, it works more or less).  Of course, documents encoded in UTF-{8,16,32} (or with a lot of NCRs to represent characters outside the repertoire of the current charset), this breaks down. For UTF-{8,16,32}, it falls back to the font for the lang/scriptGroup corresponding to the current application locale. (its lang/scriptGroup is not optimal being written almost 10 years ago. It&apos;d be done differently if it was to be done today). 

I have a partial patch in that direction, but it&apos;s not anywhere near to be complete.

WebKit currently has only a single set of font preference across all languages/scripts.  |Settings| in webkit is not expressive enough (because it does not have a general &apos;key-value&apos; with or without hierarchy) to have these font preferences.

font.&lt;script&gt;.serif
font.&lt;script&gt;.sans-serif
font.&lt;script&gt;.monospace

As for Han-disambiguation and Cyrillic-lang dependency, we need to do more than the above, but the above is a start. 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75280</commentid>
    <comment_count>10</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2008-03-26 02:26:46 -0700</bug_when>
    <thetext>Regarding comment #9, I believe you are touching upon a bug in CSS, whereby serif/sans-serif and monospace/proportional are actually orthogonal properties which have been conflated.
For example, compare Courier and Monaco.

If WebKit implements hierarchical preferences like Gecko has, we should use:

font.&lt;script&gt;.serif
font.&lt;script&gt;.serif.monospace
font.&lt;script&gt;.sans-serif
font.&lt;script&gt;.sans-serif.monospace

Presumably the font used for characters that have no script would be chosen based on the surrounding script, if any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89328</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-08-25 18:23:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/3605214&gt; is a related Apple bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112860</commentid>
    <comment_count>12</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-03-09 10:53:39 -0700</bug_when>
    <thetext>bug 18085 has a tentative patch (that does not use &apos;lang/xml:lang&apos; but infers &apos;dominant script&apos; from the document character encoding). With bug 16801 (for which I just uploaded a tentative patch) fixed and some more changes in Settings, it can be made a patch for this bug. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112861</commentid>
    <comment_count>13</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-03-09 10:56:53 -0700</bug_when>
    <thetext>Sorry for bug spam. I meant to take this adding the previous comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113582</commentid>
    <comment_count>14</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2009-03-13 04:33:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; In the case of Han unification, the webpage author should select a suitable
&gt; font to display the Han characters with the desired glyphs.  The font the
&gt; author selects will already be language dependent.

I whole heartedly disagree with you here. In all my websites I do not specify a typeface for the &quot;body copy&quot; (main bulk text) of my site. I don&apos;t even use the &apos;serif&apos; and &apos;sans-serif&apos; generic classes. I let the user specify their preferred font. If they want to read the internet in comic sans, then that&apos;s their problem, and I will be happy to let them suffer through it.

However, I do expect that Urdu and Farsi content will be presented in a Nasta&apos;liq font, while Arabic would be presented using a Naskh font; and that Chinese will be presented in a Han font while Japanese will be presented in a Kanji font. Similarly, I expect a passage in Old Church Slavonic will use a single typeface for the entire passage that contains the OCS glyphs required, and not use the default Cyrillic font for 99% of the glyphs (such as Lucida Grande) and then find it needs to fall back to another font (like Gentium) to display one letter here and there, making the presentation look like rotten turds. Can you imagine what an English sentence would look like if the letters q and z had to come from Helvetica while the rest of the passage was set in Times?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418620</commentid>
    <comment_count>15</comment_count>
      <attachid>96724</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-06-10 03:36:39 -0700</bug_when>
    <thetext>Created attachment 96724
work in progress patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418622</commentid>
    <comment_count>16</comment_count>
      <attachid>96724</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-06-10 03:37:40 -0700</bug_when>
    <thetext>Comment on attachment 96724
work in progress patch

This patch is not yet ready for formal review, but any comments would be appreciated. It is based strongly on Jungshik&apos;s patch on bug 18085 and includes a version of the patch on bug 20797 that can be removed when that is committed. This patch:

1. Adds a script member to FontDescription.
2. Sets that script in CSSStyleSelector based on lang/xml:lang/content-language.
3. Modifies fontDataForGenericFamily to get the appropriate font for the script

This patch does not yet:

1. Infer language/script from the charset (Jungshik&apos;s patch for bug 18085 has this)
2. Choose a good font when the lang attribute is used but font style is not.
3. Deal with lang changing dynamically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419007</commentid>
    <comment_count>17</comment_count>
      <attachid>96724</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-10 15:51:18 -0700</bug_when>
    <thetext>Comment on attachment 96724
work in progress patch

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

It&apos;s great that you are working in this. This is a huge issue, in my opinion.

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        * wtf/unicode/UScriptCode.h: Added.

Is this the same one that&apos;s being added in bug 20797? I previously made some comments in that bug.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:4260
&gt; +        AtomicString lang = m_element-&gt;computeInheritedLanguage();

This bug is blocked on bug 16801, which says that language computation is likely unacceptably slow to be used for text rendering yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419009</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-10 15:52:25 -0700</bug_when>
    <thetext>&gt; Is this the same one that&apos;s being added in bug 20797?

I see now that you said that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419481</commentid>
    <comment_count>19</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-06-13 02:25:30 -0700</bug_when>
    <thetext>Thanks for the comments! I am aware of bug 16801 and am hoping first to get a functioning implementation to better understand what needs to be done and measure the performance impact. It may be easier to tackle bug 16801 once that is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426841</commentid>
    <comment_count>20</comment_count>
      <attachid>98483</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-06-24 05:10:39 -0700</bug_when>
    <thetext>Created attachment 98483
improved patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426846</commentid>
    <comment_count>21</comment_count>
      <attachid>98483</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-06-24 05:16:22 -0700</bug_when>
    <thetext>Comment on attachment 98483
improved patch

Sorry, I forgot to pass --no-review to webkit-patch upload. 

This patch is now easier to understand as it no longer contains the patch from bug 20797. It also  implements the 3 things that the previous patch is listed as not implementing.

Again, it is based strongly on Jungshik&apos;s earlier patches (bug 16801 and bug 18085).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426899</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-24 08:48:26 -0700</bug_when>
    <thetext>I talked to Dan about efficiently propagating language, and we now have an idea about how to do that.

WebKit already has a -webkit-locale CSS property, which affects hyphenation and line breaking. You could just turn lang into a mapped attribute (like for example font) to translate it into -webkit-locale, and use that for font selection, too. If the difference between locale and language is important here (which I don&apos;t think it is), you may also add a new CSS property.

I would suggest doing that in separate steps:
1) Add per-script defaults for languages. That would need some discussion with Safari engineers, because silently overriding preferences set by a user is not so nice. 
2) Implement font selection based on explicitly specified -webkit-locale. At this point, you can already have regression tests.
3) Add mapping from lang to -webkit-locale.
4) Add logic that takes encoding into account.

Does that sound like a reasonable approach to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427179</commentid>
    <comment_count>23</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-06-24 15:04:11 -0700</bug_when>
    <thetext>&gt;  just turn lang into a mapped attribute (like for example font) to translate it into -webkit-locale, and use that for font selection

We hit upon the same idea almost simultaneously :-)  Yesterday, I was scanning recent changes in ChangeLog and came across Dan&apos;s patch  to make LineBreakIterator dependent on webkit-locale. I&apos;m trying it for bug 16801 (to use in bug 21312).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427797</commentid>
    <comment_count>24</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-06-27 02:08:35 -0700</bug_when>
    <thetext>Alexey, thank you very much for your detailed comment!  It sounds like a reasonable approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428091</commentid>
    <comment_count>25</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-06-27 10:52:34 -0700</bug_when>
    <thetext>&gt; 1) Add per-script defaults for languages. . 

For ICU platforms, it&apos;s almost free because ICU has an API for that : add_likelySubtag  and getScript. For instance, ru will be expanded to ru_Cyrl_RU and getScript run on that expanded that will return Cyrl. 
If we pass sr_Latn, &apos;Latn&apos; will remain as it is. 

&apos;Cyrl&apos; can be converted to ICU UScriptCode enum with another API. 

There&apos;s one problem, though. The ICU API in question was added in ICU 3.8 or 4.0 and Mac OS 10.5 has ICU 3.6....   

For non-ICU platforms, we need to do what Matt is doing (hard-coding and caching). Even on ICU platforms, we can do caching. 

&gt; That would need some discussion with Safari engineers, because silently overriding preferences set by a user is not so nice

Actually, as long as Safari does not have per-script font preferences (but just global font preferences), the behavior will not be changed because in that case, the current patch will fall back to fonts for UScriptCommon (which is the only 

If we want to hard-code some preferences for Safari on Mac (as the latest patch does), what we can do is :

- replace each CSS generic with two fonts : one for ScriptCommon (that corresponds to the font selected by a user in Safari&apos;s UI) followed by a hard-coded font for each script + CSS generic. 

That way, what a user selected in the UI is still respected. 

As for the plan outlined, that looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433359</commentid>
    <comment_count>26</comment_count>
      <attachid>99959</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-07-07 02:14:23 -0700</bug_when>
    <thetext>Created attachment 99959
use -webkit-locale for font selection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433362</commentid>
    <comment_count>27</comment_count>
      <attachid>99959</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-07-07 02:22:47 -0700</bug_when>
    <thetext>Comment on attachment 99959
use -webkit-locale for font selection

This patch links -webkit-locale with the per-script font settings that Jungshik implemented in bug 20797 (i.e., step #2 in Alexey&apos;s comment #22).

The default settings have not changed, so there should still be no visible change yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436154</commentid>
    <comment_count>28</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-07-12 18:57:10 -0700</bug_when>
    <thetext>Could someone please review the latest patch? Since there is no visible effect (default fonts haven&apos;t changed), I didn&apos;t include a regression test. Would it be better to include one now and update the expectations when the font settings change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439907</commentid>
    <comment_count>29</comment_count>
      <attachid>99959</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-20 12:00:30 -0700</bug_when>
    <thetext>Comment on attachment 99959
use -webkit-locale for font selection

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

Mitz asked me to look over parts other than CSS and font code.

&gt; Source/WebCore/ChangeLog:30
&gt; +        * css/LocaleUtils.cpp: Added.

This file should have a &quot;Default&quot; suffix, matching e.g Collator in JavaScriptCore/wtf/Unicode. Without it, it looks like a file that&apos;s used by all platforms.

These files should be in platform/text, not in css.

&quot;Utils&quot; is not so great to have in file name. It doesn&apos;t convey any information. I don&apos;t have a suggestion at the moment, but at the very least, &quot;Utilities&quot; should not be abbreviated.

&gt; Source/WebCore/WebCore.gypi:2373
&gt; +            &apos;css/LocaleUtils.cpp&apos;,
&gt; +            &apos;css/LocaleUtilsICU.cpp&apos;,

Why does this this file list both? Wy doesn&apos;t that break the build due to duplicate definition of localeToScriptCode()?

&gt; Source/WebCore/css/LocaleUtils.cpp:47
&gt; +    // TODO: Need to add all the languages.

We use FIXME, not TODO. Furthermore, this comment is not actionable. It&apos;s not practically possible to add all languages.

I would have said something like &quot;The below list only includes languages that need correct script identification for choosing a default font&quot;.

How hard would it be to just take all languages some modern version of ICU supports though?

&gt; Source/WebCore/css/LocaleUtils.cpp:48
&gt; +    const LocaleScript localeScriptList[] = {

This looks like it will be copied every time, no?

&gt; Source/WebCore/css/LocaleUtils.cpp:52
&gt; +        { &quot;de&quot;, USCRIPT_LATIN },
&gt; +        { &quot;en&quot;, USCRIPT_LATIN },
&gt; +        { &quot;es&quot;, USCRIPT_LATIN },
&gt; +        { &quot;fr&quot;, USCRIPT_LATIN },

The short list of Roman languages seems particularly evil. Perhaps you should just maps them all to USCRIPT_COMMON, given that no port is going to set different defaults for COMMON and for ROMAN.

&gt; Source/WebCore/css/LocaleUtils.h:34
&gt; +#include &lt;wtf/text/AtomicString.h&gt;

No need to include, a forward declaration would work better.

&gt; Source/WebCore/css/LocaleUtils.h:39
&gt; +UScriptCode localeToScriptCode(const AtomicString&amp; locale);

This should take const String&amp;, since you don&apos;t ever use AtomicString features.

&gt; Source/WebCore/css/LocaleUtilsICU.cpp:40
&gt; +UScriptCode canonicalizeScriptCode(UScriptCode scriptCode)

This should be a static. The build should have broken because this doesn&apos;t have a forward declaration otherwise.

What does &quot;Canonical&quot; mean here? I&apos;m quite confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440765</commentid>
    <comment_count>30</comment_count>
      <attachid>101680</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-07-21 18:00:51 -0700</bug_when>
    <thetext>Created attachment 101680
update patch after ap&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440770</commentid>
    <comment_count>31</comment_count>
      <attachid>99959</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-07-21 18:09:03 -0700</bug_when>
    <thetext>Comment on attachment 99959
use -webkit-locale for font selection

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

Thank you for the review! I&apos;ve added a new patch.

&gt;&gt; Source/WebCore/WebCore.gypi:2373
&gt;&gt; +            &apos;css/LocaleUtilsICU.cpp&apos;,
&gt; 
&gt; Why does this this file list both? Wy doesn&apos;t that break the build due to duplicate definition of localeToScriptCode()?

I looked at similar cases and it seems like the .gypi includes all files and then excludes the unwanted ones in the .gyp file (as I did here). For example, the TextIteratorIterator* files in WebCore.

&gt;&gt; Source/WebCore/css/LocaleUtils.cpp:47
&gt;&gt; +    // TODO: Need to add all the languages.
&gt; 
&gt; We use FIXME, not TODO. Furthermore, this comment is not actionable. It&apos;s not practically possible to add all languages.
&gt; 
&gt; I would have said something like &quot;The below list only includes languages that need correct script identification for choosing a default font&quot;.
&gt; 
&gt; How hard would it be to just take all languages some modern version of ICU supports though?

I think it should be straightforward to do that.

&gt;&gt; Source/WebCore/css/LocaleUtils.cpp:52
&gt;&gt; +        { &quot;fr&quot;, USCRIPT_LATIN },
&gt; 
&gt; The short list of Roman languages seems particularly evil. Perhaps you should just maps them all to USCRIPT_COMMON, given that no port is going to set different defaults for COMMON and for ROMAN.

Right, I kind of just meant this list as a preview for before adding &quot;all the languages&quot;. Maybe it is better to just remove the Latin languages for now. I can add all the ICU languages in a later patch.

&gt;&gt; Source/WebCore/css/LocaleUtilsICU.cpp:40
&gt;&gt; +UScriptCode canonicalizeScriptCode(UScriptCode scriptCode)
&gt; 
&gt; This should be a static. The build should have broken because this doesn&apos;t have a forward declaration otherwise.
&gt; 
&gt; What does &quot;Canonical&quot; mean here? I&apos;m quite confused.

I added a comment in the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441283</commentid>
    <comment_count>32</comment_count>
      <attachid>101680</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-22 17:00:47 -0700</bug_when>
    <thetext>Comment on attachment 101680
update patch after ap&apos;s review

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

&gt; Source/WebCore/page/Settings.cpp:71
&gt; +    if (script == USCRIPT_COMMON)
&gt; +        return emptyAtom;
&gt; +    return getGenericFontFamilyForScript(fontMap, USCRIPT_COMMON);

I don&apos;t understand why an empty font family is returned for USCRIPT_COMMON.

&gt; Source/WebCore/platform/text/LocaleToScriptMapping.h:38
&gt; +namespace WTF {
&gt; +
&gt; +class String;

I gave a bad/incomplete advice. This file should be including wtf/Forward.h.

&gt; Source/WebCore/platform/text/LocaleToScriptMapping.h:44
&gt; +UScriptCode localeToScriptCode(const WTF::String&amp; locale);

Then you won&apos;t need this WTF::

&gt; Source/WebCore/platform/text/LocaleToScriptMappingICU.cpp:41
&gt; +// There are certain families of script codes that we want to treat as a single
&gt; +// script for the purpose of assigning a per-script font in Settings. For

I&apos;d call the function scriptCodeForFontSelection() then. The rest of this comment is easy to infer from the intent, which should be conveyed by function name.

&gt; Source/WebCore/platform/text/LocaleToScriptMappingICU.cpp:61
&gt; +UScriptCode localeToScriptCode(const String&amp; locale)

And since this always returns a script code for font selection, this would be localeToScriptCodeForFontSelection(). 

Does that make sense? Do you envision any other uses of localeToScriptCode, with or without such canonicalization?

&gt; Source/WebCore/platform/text/LocaleToScriptMappingICU.cpp:80
&gt; +    // Ignore error that multiple scripts could be returned, since we only want
&gt; +    // one script.

This is a short line, no need to break it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441501</commentid>
    <comment_count>33</comment_count>
      <attachid>101680</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-24 16:33:49 -0700</bug_when>
    <thetext>Comment on attachment 101680
update patch after ap&apos;s review

Attachment 101680 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9233734</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441924</commentid>
    <comment_count>34</comment_count>
      <attachid>101929</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-07-25 15:42:58 -0700</bug_when>
    <thetext>Created attachment 101929
revised after second review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441935</commentid>
    <comment_count>35</comment_count>
      <attachid>101680</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-07-25 15:52:51 -0700</bug_when>
    <thetext>Comment on attachment 101680
update patch after ap&apos;s review

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

Thanks again for the review. I uploaded a new patch.

&gt;&gt; Source/WebCore/page/Settings.cpp:71
&gt;&gt; +    return getGenericFontFamilyForScript(fontMap, USCRIPT_COMMON);
&gt; 
&gt; I don&apos;t understand why an empty font family is returned for USCRIPT_COMMON.

It&apos;s just falling back to USCRIPT_COMMON. I feel like we always want to fallback here, but perhaps there is some situation where we must not fallback. In that case, I would have to move the fallback code outside of this function.

&gt;&gt; Source/WebCore/platform/text/LocaleToScriptMappingICU.cpp:61
&gt;&gt; +UScriptCode localeToScriptCode(const String&amp; locale)
&gt; 
&gt; And since this always returns a script code for font selection, this would be localeToScriptCodeForFontSelection(). 
&gt; 
&gt; Does that make sense? Do you envision any other uses of localeToScriptCode, with or without such canonicalization?

Yes, this makes sense. I imagine it will always be used for font selection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441958</commentid>
    <comment_count>36</comment_count>
      <attachid>101929</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-25 16:11:02 -0700</bug_when>
    <thetext>Comment on attachment 101929
revised after second review

Thank you, looks good to me. Dan?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446311</commentid>
    <comment_count>37</comment_count>
      <attachid>101929</attachid>
    <who name="">mitz</who>
    <bug_when>2011-08-03 21:06:52 -0700</bug_when>
    <thetext>Comment on attachment 101929
revised after second review

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

r=me but please see the comment below and address if needed.

&gt; Source/WebCore/css/CSSFontSelector.cpp:500
&gt; +        if (fontDescription.genericFamily() == FontDescription::StandardFamily &amp;&amp; !fontDescription.isSpecifiedFont())
&gt; +            return fontDataForGenericFamily(m_document, fontDescription, &quot;-webkit-standard&quot;);

I think you need similar handling in the !m_fontFaces.isEmpty() case that follows a few lines below. That case would be hit if the document had @font-face rules but you were still looking at the initial font.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446383</commentid>
    <comment_count>38</comment_count>
      <attachid>102883</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-08-04 01:25:33 -0700</bug_when>
    <thetext>Created attachment 102883
revise after mitz&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446386</commentid>
    <comment_count>39</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-08-04 01:29:58 -0700</bug_when>
    <thetext>Thanks for the review! I&apos;ve added a new patch addressing your comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446507</commentid>
    <comment_count>40</comment_count>
      <attachid>102883</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 08:22:18 -0700</bug_when>
    <thetext>Comment on attachment 102883
revise after mitz&apos;s review

Clearing flags on attachment: 102883

Committed r92375: &lt;http://trac.webkit.org/changeset/92375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446508</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-04 08:22:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446943</commentid>
    <comment_count>42</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2011-08-04 18:10:35 -0700</bug_when>
    <thetext>This bug should probably not be marked RESOLVED until lang/xml:lang is mapped to -webkit-locale as Jungshik&apos;s patch for bug 16801 does.  But it seems I can&apos;t change the Status directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446947</commentid>
    <comment_count>43</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-04 18:14:57 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; This bug should probably not be marked RESOLVED until lang/xml:lang is mapped to -webkit-locale as Jungshik&apos;s patch for bug 16801 does.  But it seems I can&apos;t change the Status directly.

Ok, I reopen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551775</commentid>
    <comment_count>44</comment_count>
      <attachid>125996</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-02-07 21:37:47 -0800</bug_when>
    <thetext>Created attachment 125996
add tests for language-based font selection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551785</commentid>
    <comment_count>45</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-02-07 21:51:41 -0800</bug_when>
    <thetext>Now that lang/xml:lang is mapped to -webkit-locale (bug 67586), lang/xml:lang is used for font selection. I proposed a patch with some tests for that.

Font selection based on http-equiv content-language is also implemented (bug 76701). But the content-language in the HTTP header is not yet used (bug 76892).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551865</commentid>
    <comment_count>46</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-08 00:55:36 -0800</bug_when>
    <thetext>Please note that this bug covers making it work in Safari (it was filed in 2006).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552656</commentid>
    <comment_count>47</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-02-08 17:08:08 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; Please note that this bug covers making it work in Safari (it was filed in 2006).

That&apos;s true. It works on Safari but the tests rely on per-script font settings support in overridePreference of DumpRenderTree which is only implemented for the Chromium port so far. I&apos;ve filed bug 78184.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579087</commentid>
    <comment_count>48</comment_count>
      <attachid>125996</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-03-14 20:45:12 -0700</bug_when>
    <thetext>Comment on attachment 125996
add tests for language-based font selection

Clear r? on stale patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599560</commentid>
    <comment_count>49</comment_count>
      <attachid>136522</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-10 13:16:32 -0700</bug_when>
    <thetext>Created attachment 136522
Mac fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599600</commentid>
    <comment_count>50</comment_count>
      <attachid>136522</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-10 13:58:17 -0700</bug_when>
    <thetext>Comment on attachment 136522
Mac fix

Attachment 136522 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12383407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599635</commentid>
    <comment_count>51</comment_count>
      <attachid>136541</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-10 14:18:30 -0700</bug_when>
    <thetext>Created attachment 136541
Mac fix

Oh llvm_gcc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599892</commentid>
    <comment_count>52</comment_count>
      <attachid>136541</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-10 18:20:57 -0700</bug_when>
    <thetext>Comment on attachment 136541
Mac fix

Withdrawing for now, got some offline review comments to address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600462</commentid>
    <comment_count>53</comment_count>
      <attachid>136717</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-11 11:58:33 -0700</bug_when>
    <thetext>Created attachment 136717
Mac fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600507</commentid>
    <comment_count>54</comment_count>
      <attachid>136728</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-11 12:49:44 -0700</bug_when>
    <thetext>Created attachment 136728
Mac fix

Forgot to include tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600529</commentid>
    <comment_count>55</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-04-11 13:13:54 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/changeset/113900&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96724</attachid>
            <date>2011-06-10 03:36:39 -0700</date>
            <delta_ts>2011-06-24 05:10:32 -0700</delta_ts>
            <desc>work in progress patch</desc>
            <filename>bug-10874-20110610193637.patch</filename>
            <type>text/plain</type>
            <size>41193</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg1MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ0
MzhjYzk0NjQ5ZjkwZWZmYjNjMDIyYWJkMTE1MDVkYTZmNmQ2OTMuLjQyMjRmMzJmYTg0Y2Q1OThi
NjMyZGI1ODEzMDQwNTcxNWE1ZWJiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTA2LTEwICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBs
YW5nLCB4bWw6bGFuZywgY29udGVudC1sYW5ndWFnZSBpZ25vcmVkIHdoZW4gY2hvb3NpbmcgZm9u
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc0
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9q
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd3RmL3VuaWNvZGUvVVNjcmlwdENvZGUuaDogQWRkZWQuCisKIDIwMTEtMDYtMDkg
IEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXg6
IENvcnJlY3RlZCBoZWFkZXIgc3BlbGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDMwZWFiZDkzZjU1NGJjZDVkODViOTZlZmMyNzY1ZmZjZjU5OTBm
YTguLjU0ODg3ZmFmNWI4ODI1OWJhNTg1NmNkNjNiNmUxMWVhMWMwYTMwZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01NjEsNiArNTYxLDcgQEAgamF2
YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmlj
b2RlL0NvbGxhdG9yRGVmYXVsdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5p
Y29kZS9Db2xsYXRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVW5p
Y29kZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVNjcmlwdENvZGUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1VudXNlZFBhcmFtLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZ3lwaQppbmRleCA1ZmVkMGVmMDM1ODA5NGI1OWRjZDhjNWNkYjY3NGMwZjYwZDNjMjk5
Li4yZWMyNTNmZDk1MGVlZWZkNzI5ODkwMGRiMDQ1ZmExZGM1M2NkMTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjMwLDYgKzIzMCw3IEBACiAgICAg
ICAgICAgICAnd3RmL3RleHQvV1RGU3RyaW5nLmgnLAogICAgICAgICAgICAgJ3d0Zi91bmljb2Rl
L0NoYXJhY3Rlck5hbWVzLmgnLAogICAgICAgICAgICAgJ3d0Zi91bmljb2RlL0NvbGxhdG9yLmgn
LAorICAgICAgICAgICAgJ3d0Zi91bmljb2RlL1VTY3JpcHRDb2RlLmgnLAogICAgICAgICAgICAg
J3d0Zi91bmljb2RlL1VURjguaCcsCiAgICAgICAgICAgICAnd3RmL3VuaWNvZGUvVW5pY29kZS5o
JywKICAgICAgICAgICAgICd3dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52
Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9X
VEYudmNwcm9qCmluZGV4IGU1NzJiMTY0NTk0OGFmMmE0MDY5YmI1MTRkODY1ZmY3OTg4MzY4OGUu
LjJjYWQ0OGEwMzYxMzRlYmI5Mzg3MTQ0YWFlMjFlOTg0ZTNjM2U5YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RG
LnZjcHJvagpAQCAtNDE2LDYgKzQxNiwxMSBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcdW5pY29kZVxVU2NyaXB0Q29kZS5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKworCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0Zlx1
bmljb2RlXFVURjguY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMGNhM2FiYWNiNDM4MDY1ZDdhNjRkNjMzYzFlYTI4ZWU1YzMyNDhhOS4uMGRj
OTdhYTEwNjZhODE1YzYzYmZjMDljMTQ1MWFhMmIxYzA1NzkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIyOSw2ICsyMjksNyBAQAogCQk2NUZERTQ5QzBCREQxRDRBMDBFODAx
MTEgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUUyMTdCODA4RTdFRUNDMDAyM0U1RjYgLyogQXNzZXJ0aW9ucy5jcHAgKi87
IH07CiAJCTcxODZBNkVDMTMxMDBCQTUwMDQ0NzlFMSAvKiBIZXhOdW1iZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxODZBNkU4MTMxMDBCNTcwMDQ0
NzlFMSAvKiBIZXhOdW1iZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MURBOUQ4MjEzNEYzRjNEMDBCNzY3RTcgLyogU3RyaW5nT3BlcmF0b3Jz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MThBODQ4
MjEzNEYzQTEyMDBCODc1MjkgLyogU3RyaW5nT3BlcmF0b3JzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzYwNkFCNEIxMzdDREU4NDAwNjJEMTlG
IC8qIFVTY3JpcHRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NjA2QUIxRTEzN0NDQUFCMDA2MkQxOUYgLyogVVNjcmlwdENvZGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NkZCOUYwRjEyRTg1
MTg2MDA1MUEyRUIgLyogU0hBMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzZGQjlGMEUxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NkZCOUYxMTEyRTg1MTk2
MDA1MUEyRUIgLyogU0hBMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3NkZCOUYxMDEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgKi87IH07CiAJ
CTc5MzRCQjdCMTM2MTk3OTMwMENCOTlBMSAvKiBQYXJhbGxlbEpvYnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5MzRCQjc2MTM2MTk3OTMwMENCOTlB
MSAvKiBQYXJhbGxlbEpvYnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtOTE0LDYgKzkxNSw3IEBACiAJCTcwNEZEMzUzMDU2OTdFNkQwMDNEQkVE
OSAvKiBCb29sZWFuT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB9OwogCQk3MTg2QTZFODEzMTAwQjU3MDA0NDc5RTEgLyogSGV4TnVtYmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhleE51bWJlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MThBODQ4MjEzNEYzQTEyMDBCODc1MjkgLyogU3RyaW5n
T3BlcmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0cmluZ09wZXJh
dG9ycy5oOyBwYXRoID0gdGV4dC9TdHJpbmdPcGVyYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzYwNkFCMUUxMzdDQ0FBQjAwNjJEMTlGIC8qIFVTY3JpcHRDb2RlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVTY3JpcHRDb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNIQTEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzZGQjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU0hBMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc5MzRCQjc2MTM2MTk3OTMwMENCOTlBMSAvKiBQYXJhbGxlbEpvYnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyYWxsZWxKb2JzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTc1LDYgKzIxNzcsNyBAQAogCQkJCUUxQTg2MkFBMEQ3
RUJCN0QwMDFFQzZBQSAvKiBDb2xsYXRvci5oICovLAogCQkJCUUxQTg2MkQ1MEQ3RjJCNUMwMDFF
QzZBQSAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovLAogCQkJCUUxOTU2Nzk0MDlFN0NGMTIwMEI4
OUQxMyAvKiBVbmljb2RlLmggKi8sCisJCQkJNzYwNkFCMUUxMzdDQ0FBQjAwNjJEMTlGIC8qIFVT
Y3JpcHRDb2RlLmggKi8sCiAJCQkJRTFFRjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3Bw
ICovLAogCQkJCUUxRUY3OUE5MENFOTdCQTYwMDg4RDUwMCAvKiBVVEY4LmggKi8sCiAJCQkpOwpA
QCAtMjUyMyw2ICsyNTI2LDcgQEAKIAkJCQlCQzE4QzQ3MzBFMTZGNUNEMDBCMzQ0NjAgLyogVW5p
Y29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzQwRTE2RjVDRDAwQjM0NDYwIC8qIFVu
aWNvZGVJY3UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc1MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBVbnVzZWRQYXJhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzYwNkFCNEIxMzdDREU4NDAwNjJE
MTlGIC8qIFVTY3JpcHRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3NjBFMTZGNUNE
MDBCMzQ0NjAgLyogVVN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhEREE1QzExMjY0NjMx
NzAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3
NzBFMTZGNUNEMDBCMzQ0NjAgLyogVVRGOC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVNjcmlwdENvZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VU2NyaXB0Q29kZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjZTQ4
NWMxYWY5ZTZmM2ZiYmQyZmFlMjc5MjFlNTEwOGUyMjc1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVNjcmlwdENvZGUuaApAQCAtMCwwICsx
LDIxNiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMTk5NS0yMDExIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycworICoKKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj
aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2Fy
ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisg
KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg
d2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt
ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucworICogdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZShzKSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNv
cGllcworICogb2YgdGhlIFNvZnR3YXJlIGFuZCB0aGF0IGJvdGggdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UocykgYW5kIHRoaXMKKyAqIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBw
b3J0aW5nIGRvY3VtZW50YXRpb24uCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCwK
KyAqIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO
RlJJTkdFTUVOVCBPRiBUSElSRCBQQVJUWSBSSUdIVFMuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiBIT0xERVJTIElOQ0xVREVEIElOIFRISVMgTk9USUNFIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICogT1IgQU5ZIFNQRUNJQUwgSU5ESVJFQ1QgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTLCBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSCisgKiBSRVNVTFRJ
TkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBB
UklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisgKiBVU0UgT1IgUEVSRk9S
TUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqCisgKiBFeGNlcHQgYXMgY29udGFpbmVkIGluIHRo
aXMgbm90aWNlLCB0aGUgbmFtZSBvZiBhIGNvcHlyaWdodCBob2xkZXIgc2hhbGwgbm90IGJlCisg
KiB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCB1
c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4KKyAqIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3
cml0dGVuIGF1dGhvcml6YXRpb24gb2YgdGhlIGNvcHlyaWdodCBob2xkZXIuCisgKi8KKworI2lm
bmRlZiBXVEZfVVNjcmlwdENvZGVfaAorI2RlZmluZSBXVEZfVVNjcmlwdENvZGVfaAorCituYW1l
c3BhY2UgV1RGIHsKKworZW51bSBVU2NyaXB0Q29kZSB7CisgICAgICBVU0NSSVBUX0lOVkFMSURf
Q09ERSA9IC0xLAorICAgICAgVVNDUklQVF9DT01NT04gICAgICAgPSAgMCwgIC8qIFp5eXkgKi8K
KyAgICAgIFVTQ1JJUFRfSU5IRVJJVEVEICAgID0gIDEsICAvKiBaaW5oICovIC8qICJDb2RlIGZv
ciBpbmhlcml0ZWQgc2NyaXB0IiwgZm9yIG5vbi1zcGFjaW5nIGNvbWJpbmluZyBtYXJrczsgYWxz
byBRYWFpICovCisgICAgICBVU0NSSVBUX0FSQUJJQyAgICAgICA9ICAyLCAgLyogQXJhYiAqLwor
ICAgICAgVVNDUklQVF9BUk1FTklBTiAgICAgPSAgMywgIC8qIEFybW4gKi8KKyAgICAgIFVTQ1JJ
UFRfQkVOR0FMSSAgICAgID0gIDQsICAvKiBCZW5nICovCisgICAgICBVU0NSSVBUX0JPUE9NT0ZP
ICAgICA9ICA1LCAgLyogQm9wbyAqLworICAgICAgVVNDUklQVF9DSEVST0tFRSAgICAgPSAgNiwg
IC8qIENoZXIgKi8KKyAgICAgIFVTQ1JJUFRfQ09QVElDICAgICAgID0gIDcsICAvKiBDb3B0ICov
CisgICAgICBVU0NSSVBUX0NZUklMTElDICAgICA9ICA4LCAgLyogQ3lybCAqLworICAgICAgVVND
UklQVF9ERVNFUkVUICAgICAgPSAgOSwgIC8qIERzcnQgKi8KKyAgICAgIFVTQ1JJUFRfREVWQU5B
R0FSSSAgID0gMTAsICAvKiBEZXZhICovCisgICAgICBVU0NSSVBUX0VUSElPUElDICAgICA9IDEx
LCAgLyogRXRoaSAqLworICAgICAgVVNDUklQVF9HRU9SR0lBTiAgICAgPSAxMiwgIC8qIEdlb3Ig
Ki8KKyAgICAgIFVTQ1JJUFRfR09USElDICAgICAgID0gMTMsICAvKiBHb3RoICovCisgICAgICBV
U0NSSVBUX0dSRUVLICAgICAgICA9IDE0LCAgLyogR3JlayAqLworICAgICAgVVNDUklQVF9HVUpB
UkFUSSAgICAgPSAxNSwgIC8qIEd1anIgKi8KKyAgICAgIFVTQ1JJUFRfR1VSTVVLSEkgICAgID0g
MTYsICAvKiBHdXJ1ICovCisgICAgICBVU0NSSVBUX0hBTiAgICAgICAgICA9IDE3LCAgLyogSGFu
aSAqLworICAgICAgVVNDUklQVF9IQU5HVUwgICAgICAgPSAxOCwgIC8qIEhhbmcgKi8KKyAgICAg
IFVTQ1JJUFRfSEVCUkVXICAgICAgID0gMTksICAvKiBIZWJyICovCisgICAgICBVU0NSSVBUX0hJ
UkFHQU5BICAgICA9IDIwLCAgLyogSGlyYSAqLworICAgICAgVVNDUklQVF9LQU5OQURBICAgICAg
PSAyMSwgIC8qIEtuZGEgKi8KKyAgICAgIFVTQ1JJUFRfS0FUQUtBTkEgICAgID0gMjIsICAvKiBL
YW5hICovCisgICAgICBVU0NSSVBUX0tITUVSICAgICAgICA9IDIzLCAgLyogS2htciAqLworICAg
ICAgVVNDUklQVF9MQU8gICAgICAgICAgPSAyNCwgIC8qIExhb28gKi8KKyAgICAgIFVTQ1JJUFRf
TEFUSU4gICAgICAgID0gMjUsICAvKiBMYXRuICovCisgICAgICBVU0NSSVBUX01BTEFZQUxBTSAg
ICA9IDI2LCAgLyogTWx5bSAqLworICAgICAgVVNDUklQVF9NT05HT0xJQU4gICAgPSAyNywgIC8q
IE1vbmcgKi8KKyAgICAgIFVTQ1JJUFRfTVlBTk1BUiAgICAgID0gMjgsICAvKiBNeW1yICovCisg
ICAgICBVU0NSSVBUX09HSEFNICAgICAgICA9IDI5LCAgLyogT2dhbSAqLworICAgICAgVVNDUklQ
VF9PTERfSVRBTElDICAgPSAzMCwgIC8qIEl0YWwgKi8KKyAgICAgIFVTQ1JJUFRfT1JJWUEgICAg
ICAgID0gMzEsICAvKiBPcnlhICovCisgICAgICBVU0NSSVBUX1JVTklDICAgICAgICA9IDMyLCAg
LyogUnVuciAqLworICAgICAgVVNDUklQVF9TSU5IQUxBICAgICAgPSAzMywgIC8qIFNpbmggKi8K
KyAgICAgIFVTQ1JJUFRfU1lSSUFDICAgICAgID0gMzQsICAvKiBTeXJjICovCisgICAgICBVU0NS
SVBUX1RBTUlMICAgICAgICA9IDM1LCAgLyogVGFtbCAqLworICAgICAgVVNDUklQVF9URUxVR1Ug
ICAgICAgPSAzNiwgIC8qIFRlbHUgKi8KKyAgICAgIFVTQ1JJUFRfVEhBQU5BICAgICAgID0gMzcs
ICAvKiBUaGFhICovCisgICAgICBVU0NSSVBUX1RIQUkgICAgICAgICA9IDM4LCAgLyogVGhhaSAq
LworICAgICAgVVNDUklQVF9USUJFVEFOICAgICAgPSAzOSwgIC8qIFRpYnQgKi8KKyAgICAgIC8q
KiBDYW5hZGlhbl9BYm9yaWdpbmFsIHNjcmlwdC4gQHN0YWJsZSBJQ1UgMi42ICovCisgICAgICBV
U0NSSVBUX0NBTkFESUFOX0FCT1JJR0lOQUwgPSA0MCwgIC8qIENhbnMgKi8KKyAgICAgIC8qKiBD
YW5hZGlhbl9BYm9yaWdpbmFsIHNjcmlwdCAoYWxpYXMpLiBAc3RhYmxlIElDVSAyLjIgKi8KKyAg
ICAgIFVTQ1JJUFRfVUNBUyAgICAgICAgID0gVVNDUklQVF9DQU5BRElBTl9BQk9SSUdJTkFMLAor
ICAgICAgVVNDUklQVF9ZSSAgICAgICAgICAgPSA0MSwgIC8qIFlpaWkgKi8KKyAgICAgIFVTQ1JJ
UFRfVEFHQUxPRyAgICAgID0gNDIsICAvKiBUZ2xnICovCisgICAgICBVU0NSSVBUX0hBTlVOT08g
ICAgICA9IDQzLCAgLyogSGFubyAqLworICAgICAgVVNDUklQVF9CVUhJRCAgICAgICAgPSA0NCwg
IC8qIEJ1aGQgKi8KKyAgICAgIFVTQ1JJUFRfVEFHQkFOV0EgICAgID0gNDUsICAvKiBUYWdiICov
CisKKyAgICAgIC8qIE5ldyBzY3JpcHRzIGluIFVuaWNvZGUgNCBAc3RhYmxlIElDVSAyLjYgKi8K
KyAgICAgIFVTQ1JJUFRfQlJBSUxMRSAgICAgID0gNDYsICAvKiBCcmFpICovCisgICAgICBVU0NS
SVBUX0NZUFJJT1QgICAgICA9IDQ3LCAgLyogQ3BydCAqLworICAgICAgVVNDUklQVF9MSU1CVSAg
ICAgICAgPSA0OCwgIC8qIExpbWIgKi8KKyAgICAgIFVTQ1JJUFRfTElORUFSX0IgICAgID0gNDks
ICAvKiBMaW5iICovCisgICAgICBVU0NSSVBUX09TTUFOWUEgICAgICA9IDUwLCAgLyogT3NtYSAq
LworICAgICAgVVNDUklQVF9TSEFWSUFOICAgICAgPSA1MSwgIC8qIFNoYXcgKi8KKyAgICAgIFVT
Q1JJUFRfVEFJX0xFICAgICAgID0gNTIsICAvKiBUYWxlICovCisgICAgICBVU0NSSVBUX1VHQVJJ
VElDICAgICA9IDUzLCAgLyogVWdhciAqLworCisgICAgICAvKiogTmV3IHNjcmlwdCBjb2RlIGlu
IFVuaWNvZGUgNC4wLjEgQHN0YWJsZSBJQ1UgMy4wICovCisgICAgICBVU0NSSVBUX0tBVEFLQU5B
X09SX0hJUkFHQU5BID0gNTQsLypIcmt0ICovCisKKyAgICAgIC8qIE5ldyBzY3JpcHRzIGluIFVu
aWNvZGUgNC4xIEBzdGFibGUgSUNVIDMuNCAqLworICAgICAgVVNDUklQVF9CVUdJTkVTRSAgICAg
ID0gNTUsIC8qIEJ1Z2kgKi8KKyAgICAgIFVTQ1JJUFRfR0xBR09MSVRJQyAgICA9IDU2LCAvKiBH
bGFnICovCisgICAgICBVU0NSSVBUX0tIQVJPU0hUSEkgICAgPSA1NywgLyogS2hhciAqLworICAg
ICAgVVNDUklQVF9TWUxPVElfTkFHUkkgID0gNTgsIC8qIFN5bG8gKi8KKyAgICAgIFVTQ1JJUFRf
TkVXX1RBSV9MVUUgICA9IDU5LCAvKiBUYWx1ICovCisgICAgICBVU0NSSVBUX1RJRklOQUdIICAg
ICAgPSA2MCwgLyogVGZuZyAqLworICAgICAgVVNDUklQVF9PTERfUEVSU0lBTiAgID0gNjEsIC8q
IFhwZW8gKi8KKworICAgICAgLyogTmV3IHNjcmlwdCBjb2RlcyBmcm9tIElTTyAxNTkyNCBAc3Rh
YmxlIElDVSAzLjYgKi8KKyAgICAgIFVTQ1JJUFRfQkFMSU5FU0UgICAgICAgICAgICAgICAgICAg
ICAgPSA2MiwgLyogQmFsaSAqLworICAgICAgVVNDUklQVF9CQVRBSyAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDYzLCAvKiBCYXRrICovCisgICAgICBVU0NSSVBUX0JMSVNTWU1CT0xTICAgICAg
ICAgICAgICAgICAgID0gNjQsIC8qIEJsaXMgKi8KKyAgICAgIFVTQ1JJUFRfQlJBSE1JICAgICAg
ICAgICAgICAgICAgICAgICAgPSA2NSwgLyogQnJhaCAqLworICAgICAgVVNDUklQVF9DSEFNICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDY2LCAvKiBDaGFtICovCisgICAgICBVU0NSSVBUX0NJ
UlRIICAgICAgICAgICAgICAgICAgICAgICAgID0gNjcsIC8qIENpcnQgKi8KKyAgICAgIFVTQ1JJ
UFRfT0xEX0NIVVJDSF9TTEFWT05JQ19DWVJJTExJQyAgPSA2OCwgLyogQ3lycyAqLworICAgICAg
VVNDUklQVF9ERU1PVElDX0VHWVBUSUFOICAgICAgICAgICAgICA9IDY5LCAvKiBFZ3lkICovCisg
ICAgICBVU0NSSVBUX0hJRVJBVElDX0VHWVBUSUFOICAgICAgICAgICAgID0gNzAsIC8qIEVneWgg
Ki8KKyAgICAgIFVTQ1JJUFRfRUdZUFRJQU5fSElFUk9HTFlQSFMgICAgICAgICAgPSA3MSwgLyog
RWd5cCAqLworICAgICAgVVNDUklQVF9LSFVUU1VSSSAgICAgICAgICAgICAgICAgICAgICA9IDcy
LCAvKiBHZW9rICovCisgICAgICBVU0NSSVBUX1NJTVBMSUZJRURfSEFOICAgICAgICAgICAgICAg
ID0gNzMsIC8qIEhhbnMgKi8KKyAgICAgIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOICAgICAgICAg
ICAgICAgPSA3NCwgLyogSGFudCAqLworICAgICAgVVNDUklQVF9QQUhBV0hfSE1PTkcgICAgICAg
ICAgICAgICAgICA9IDc1LCAvKiBIbW5nICovCisgICAgICBVU0NSSVBUX09MRF9IVU5HQVJJQU4g
ICAgICAgICAgICAgICAgID0gNzYsIC8qIEh1bmcgKi8KKyAgICAgIFVTQ1JJUFRfSEFSQVBQQU5f
SU5EVVMgICAgICAgICAgICAgICAgPSA3NywgLyogSW5kcyAqLworICAgICAgVVNDUklQVF9KQVZB
TkVTRSAgICAgICAgICAgICAgICAgICAgICA9IDc4LCAvKiBKYXZhICovCisgICAgICBVU0NSSVBU
X0tBWUFIX0xJICAgICAgICAgICAgICAgICAgICAgID0gNzksIC8qIEthbGkgKi8KKyAgICAgIFVT
Q1JJUFRfTEFUSU5fRlJBS1RVUiAgICAgICAgICAgICAgICAgPSA4MCwgLyogTGF0ZiAqLworICAg
ICAgVVNDUklQVF9MQVRJTl9HQUVMSUMgICAgICAgICAgICAgICAgICA9IDgxLCAvKiBMYXRnICov
CisgICAgICBVU0NSSVBUX0xFUENIQSAgICAgICAgICAgICAgICAgICAgICAgID0gODIsIC8qIExl
cGMgKi8KKyAgICAgIFVTQ1JJUFRfTElORUFSX0EgICAgICAgICAgICAgICAgICAgICAgPSA4Mywg
LyogTGluYSAqLworICAgICAgLyoqIEBzdGFibGUgSUNVIDQuNiAqLworICAgICAgVVNDUklQVF9N
QU5EQUlDICAgICAgICAgICAgICAgICAgICAgICA9IDg0LCAvKiBNYW5kICovCisgICAgICAvKiog
QHN0YWJsZSBJQ1UgMy42ICovCisgICAgICBVU0NSSVBUX01BTkRBRUFOICAgICAgICAgICAgICAg
ICAgICAgID0gVVNDUklQVF9NQU5EQUlDLAorICAgICAgVVNDUklQVF9NQVlBTl9ISUVST0dMWVBI
UyAgICAgICAgICAgICA9IDg1LCAvKiBNYXlhICovCisgICAgICAvKiogQHN0YWJsZSBJQ1UgNC42
ICovCisgICAgICBVU0NSSVBUX01FUk9JVElDX0hJRVJPR0xZUEhTICAgICAgICAgID0gODYsIC8q
IE1lcm8gKi8KKyAgICAgIC8qKiBAc3RhYmxlIElDVSAzLjYgKi8KKyAgICAgIFVTQ1JJUFRfTUVS
T0lUSUMgICAgICAgICAgICAgICAgICAgICAgPSBVU0NSSVBUX01FUk9JVElDX0hJRVJPR0xZUEhT
LAorICAgICAgVVNDUklQVF9OS08gICAgICAgICAgICAgICAgICAgICAgICAgICA9IDg3LCAvKiBO
a29vICovCisgICAgICBVU0NSSVBUX09SS0hPTiAgICAgICAgICAgICAgICAgICAgICAgID0gODgs
IC8qIE9ya2ggKi8KKyAgICAgIFVTQ1JJUFRfT0xEX1BFUk1JQyAgICAgICAgICAgICAgICAgICAg
PSA4OSwgLyogUGVybSAqLworICAgICAgVVNDUklQVF9QSEFHU19QQSAgICAgICAgICAgICAgICAg
ICAgICA9IDkwLCAvKiBQaGFnICovCisgICAgICBVU0NSSVBUX1BIT0VOSUNJQU4gICAgICAgICAg
ICAgICAgICAgID0gOTEsIC8qIFBobnggKi8KKyAgICAgIFVTQ1JJUFRfUEhPTkVUSUNfUE9MTEFS
RCAgICAgICAgICAgICAgPSA5MiwgLyogUGxyZCAqLworICAgICAgVVNDUklQVF9ST05HT1JPTkdP
ICAgICAgICAgICAgICAgICAgICA9IDkzLCAvKiBSb3JvICovCisgICAgICBVU0NSSVBUX1NBUkFU
SSAgICAgICAgICAgICAgICAgICAgICAgID0gOTQsIC8qIFNhcmEgKi8KKyAgICAgIFVTQ1JJUFRf
RVNUUkFOR0VMT19TWVJJQUMgICAgICAgICAgICAgPSA5NSwgLyogU3lyZSAqLworICAgICAgVVND
UklQVF9XRVNURVJOX1NZUklBQyAgICAgICAgICAgICAgICA9IDk2LCAvKiBTeXJqICovCisgICAg
ICBVU0NSSVBUX0VBU1RFUk5fU1lSSUFDICAgICAgICAgICAgICAgID0gOTcsIC8qIFN5cm4gKi8K
KyAgICAgIFVTQ1JJUFRfVEVOR1dBUiAgICAgICAgICAgICAgICAgICAgICAgPSA5OCwgLyogVGVu
ZyAqLworICAgICAgVVNDUklQVF9WQUkgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDk5LCAv
KiBWYWlpICovCisgICAgICBVU0NSSVBUX1ZJU0lCTEVfU1BFRUNIICAgICAgICAgICAgICAgID0g
MTAwLC8qIFZpc3AgKi8KKyAgICAgIFVTQ1JJUFRfQ1VORUlGT1JNICAgICAgICAgICAgICAgICAg
ICAgPSAxMDEsLyogWHN1eCAqLworICAgICAgVVNDUklQVF9VTldSSVRURU5fTEFOR1VBR0VTICAg
ICAgICAgICA9IDEwMiwvKiBaeHh4ICovCisgICAgICBVU0NSSVBUX1VOS05PV04gICAgICAgICAg
ICAgICAgICAgICAgID0gMTAzLC8qIFp6enogKi8gLyogVW5rbm93bj0iQ29kZSBmb3IgdW5jb2Rl
ZCBzY3JpcHQiLCBmb3IgdW5hc3NpZ25lZCBjb2RlIHBvaW50cyAqLworCisgICAgICAvKiBOZXcg
c2NyaXB0IGNvZGVzIGZyb20gSVNPIDE1OTI0IEBzdGFibGUgSUNVIDMuOCAqLworICAgICAgVVND
UklQVF9DQVJJQU4gICAgICAgICAgICAgICAgICAgICAgICA9IDEwNCwvKiBDYXJpICovCisgICAg
ICBVU0NSSVBUX0pBUEFORVNFICAgICAgICAgICAgICAgICAgICAgID0gMTA1LC8qIEpwYW4gKi8K
KyAgICAgIFVTQ1JJUFRfTEFOTkEgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMDYsLyogTGFu
YSAqLworICAgICAgVVNDUklQVF9MWUNJQU4gICAgICAgICAgICAgICAgICAgICAgICA9IDEwNywv
KiBMeWNpICovCisgICAgICBVU0NSSVBUX0xZRElBTiAgICAgICAgICAgICAgICAgICAgICAgID0g
MTA4LC8qIEx5ZGkgKi8KKyAgICAgIFVTQ1JJUFRfT0xfQ0hJS0kgICAgICAgICAgICAgICAgICAg
ICAgPSAxMDksLyogT2xjayAqLworICAgICAgVVNDUklQVF9SRUpBTkcgICAgICAgICAgICAgICAg
ICAgICAgICA9IDExMCwvKiBSam5nICovCisgICAgICBVU0NSSVBUX1NBVVJBU0hUUkEgICAgICAg
ICAgICAgICAgICAgID0gMTExLC8qIFNhdXIgKi8KKyAgICAgIFVTQ1JJUFRfU0lHTl9XUklUSU5H
ICAgICAgICAgICAgICAgICAgPSAxMTIsLyogU2dudyAqLworICAgICAgVVNDUklQVF9TVU5EQU5F
U0UgICAgICAgICAgICAgICAgICAgICA9IDExMywvKiBTdW5kICovCisgICAgICBVU0NSSVBUX01P
T04gICAgICAgICAgICAgICAgICAgICAgICAgID0gMTE0LC8qIE1vb24gKi8KKyAgICAgIFVTQ1JJ
UFRfTUVJVEVJX01BWUVLICAgICAgICAgICAgICAgICAgPSAxMTUsLyogTXRlaSAqLworCisgICAg
ICAvKiBOZXcgc2NyaXB0IGNvZGVzIGZyb20gSVNPIDE1OTI0IEBzdGFibGUgSUNVIDQuMCAqLwor
ICAgICAgVVNDUklQVF9JTVBFUklBTF9BUkFNQUlDICAgICAgICAgICAgICA9IDExNiwvKiBBcm1p
ICovCisgICAgICBVU0NSSVBUX0FWRVNUQU4gICAgICAgICAgICAgICAgICAgICAgID0gMTE3LC8q
IEF2c3QgKi8KKyAgICAgIFVTQ1JJUFRfQ0hBS01BICAgICAgICAgICAgICAgICAgICAgICAgPSAx
MTgsLyogQ2FrbSAqLworICAgICAgVVNDUklQVF9LT1JFQU4gICAgICAgICAgICAgICAgICAgICAg
ICA9IDExOSwvKiBLb3JlICovCisgICAgICBVU0NSSVBUX0tBSVRISSAgICAgICAgICAgICAgICAg
ICAgICAgID0gMTIwLC8qIEt0aGkgKi8KKyAgICAgIFVTQ1JJUFRfTUFOSUNIQUVBTiAgICAgICAg
ICAgICAgICAgICAgPSAxMjEsLyogTWFuaSAqLworICAgICAgVVNDUklQVF9JTlNDUklQVElPTkFM
X1BBSExBVkkgICAgICAgICA9IDEyMiwvKiBQaGxpICovCisgICAgICBVU0NSSVBUX1BTQUxURVJf
UEFITEFWSSAgICAgICAgICAgICAgID0gMTIzLC8qIFBobHAgKi8KKyAgICAgIFVTQ1JJUFRfQk9P
S19QQUhMQVZJICAgICAgICAgICAgICAgICAgPSAxMjQsLyogUGhsdiAqLworICAgICAgVVNDUklQ
VF9JTlNDUklQVElPTkFMX1BBUlRISUFOICAgICAgICA9IDEyNSwvKiBQcnRpICovCisgICAgICBV
U0NSSVBUX1NBTUFSSVRBTiAgICAgICAgICAgICAgICAgICAgID0gMTI2LC8qIFNhbXIgKi8KKyAg
ICAgIFVTQ1JJUFRfVEFJX1ZJRVQgICAgICAgICAgICAgICAgICAgICAgPSAxMjcsLyogVGF2dCAq
LworICAgICAgVVNDUklQVF9NQVRIRU1BVElDQUxfTk9UQVRJT04gICAgICAgICA9IDEyOCwvKiBa
bXRoICovCisgICAgICBVU0NSSVBUX1NZTUJPTFMgICAgICAgICAgICAgICAgICAgICAgID0gMTI5
LC8qIFpzeW0gKi8KKworICAgICAgLyogTmV3IHNjcmlwdCBjb2RlcyBmcm9tIElTTyAxNTkyNCBA
c3RhYmxlIElDVSA0LjQgKi8KKyAgICAgIFVTQ1JJUFRfQkFNVU0gICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxMzAsLyogQmFtdSAqLworICAgICAgVVNDUklQVF9MSVNVICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEzMSwvKiBMaXN1ICovCisgICAgICBVU0NSSVBUX05BS0hJX0dFQkEgICAg
ICAgICAgICAgICAgICAgID0gMTMyLC8qIE5rZ2IgKi8KKyAgICAgIFVTQ1JJUFRfT0xEX1NPVVRI
X0FSQUJJQU4gICAgICAgICAgICAgPSAxMzMsLyogU2FyYiAqLworCisgICAgICAvKiBOZXcgc2Ny
aXB0IGNvZGVzIGZyb20gSVNPIDE1OTI0IEBzdGFibGUgSUNVIDQuNiAqLworICAgICAgVVNDUklQ
VF9CQVNTQV9WQUggICAgICAgICAgICAgICAgICAgICA9IDEzNCwvKiBCYXNzICovCisgICAgICBV
U0NSSVBUX0RVUExPWUFOX1NIT1JUQU5EICAgICAgICAgICAgID0gMTM1LC8qIER1cGwgKi8KKyAg
ICAgIFVTQ1JJUFRfRUxCQVNBTiAgICAgICAgICAgICAgICAgICAgICAgPSAxMzYsLyogRWxiYSAq
LworICAgICAgVVNDUklQVF9HUkFOVEhBICAgICAgICAgICAgICAgICAgICAgICA9IDEzNywvKiBH
cmFuICovCisgICAgICBVU0NSSVBUX0tQRUxMRSAgICAgICAgICAgICAgICAgICAgICAgID0gMTM4
LC8qIEtwZWwgKi8KKyAgICAgIFVTQ1JJUFRfTE9NQSAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxMzksLyogTG9tYSAqLworICAgICAgVVNDUklQVF9NRU5ERSAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDE0MCwvKiBNZW5kICovCisgICAgICBVU0NSSVBUX01FUk9JVElDX0NVUlNJVkUgICAg
ICAgICAgICAgID0gMTQxLC8qIE1lcmMgKi8KKyAgICAgIFVTQ1JJUFRfT0xEX05PUlRIX0FSQUJJ
QU4gICAgICAgICAgICAgPSAxNDIsLyogTmFyYiAqLworICAgICAgVVNDUklQVF9OQUJBVEFFQU4g
ICAgICAgICAgICAgICAgICAgICA9IDE0MywvKiBOYmF0ICovCisgICAgICBVU0NSSVBUX1BBTE1Z
UkVORSAgICAgICAgICAgICAgICAgICAgID0gMTQ0LC8qIFBhbG0gKi8KKyAgICAgIFVTQ1JJUFRf
U0lOREhJICAgICAgICAgICAgICAgICAgICAgICAgPSAxNDUsLyogU2luZCAqLworICAgICAgVVND
UklQVF9XQVJBTkdfQ0lUSSAgICAgICAgICAgICAgICAgICA9IDE0NiwvKiBXYXJhICovCisKKyAg
ICAgIC8qIFByaXZhdGUgdXNlIGNvZGVzIGZyb20gUWFhYSAtIFFhYnggYXJlIG5vdCBzdXBwb3J0
ZWQgKi8KKyAgICAgIFVTQ1JJUFRfQ09ERV9MSU1JVCAgICA9IDE0NworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA3YzhmNjFjZjEzMjQwNmY1NDg0MzNiNWZjYmMyYjYyNTU3MDM3OTZm
Li40OTc4ZDU2YzAyZTFjYjA5MmZhYTNmNDRkMzU0NDkwODZlZmY1NGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTEtMDYtMTAgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGxhbmcsIHhtbDpsYW5nLCBjb250ZW50LWxhbmd1YWdlIGlnbm9yZWQgd2hlbiBjaG9vc2lu
ZyBmb250cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA4NzQKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIEZvcndh
cmRpbmdIZWFkZXJzL3d0Zi91bmljb2RlL1VTY3JpcHRDb2RlLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9udERhdGFGb3JHZW5lcmljRmFtaWx5KToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Omxh
bmd1YWdlVGFnVG9TY3JpcHRDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okxhbmd1YWdlU2NyaXB0
OjppZik6CisgICAgICAgIChXZWJDb3JlOjpMYW5ndWFnZVNjcmlwdDo6d2hpbGUpOgorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzZXRHZW5lcmljRm9udEZhbWlseU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6c3RhbmRhcmRGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OmZpeGVkRm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0Rml4ZWRG
b250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXJpZkZvbnRGYW1pbHkp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFNlcmlmRm9udEZhbWlseSk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2Fuc1NlcmlmRm9udEZhbWlseSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6c2V0U2Fuc1NlcmlmRm9udEZhbWlseSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6Y3Vyc2l2ZUZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6OnNldEN1cnNpdmVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
OjpmYW50YXN5Rm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RmFu
dGFzeUZvbnRGYW1pbHkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnREZXNjcmlwdGlvbjo6Rm9udERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRE
ZXNjcmlwdGlvbjo6c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6
c2V0U2NyaXB0KToKKwogMjAxMS0wNi0wOSAgSHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi91bmljb2RlL1VTY3JpcHRDb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdW5pY29kZS9VU2NyaXB0
Q29kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBkODQ4YzQyYjg1MWVjNjA3Yzk4MmE3YWJkZjdjZWM0ZGVlOTc5
NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93
dGYvdW5pY29kZS9VU2NyaXB0Q29kZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3Jl
X0ZXRF9VU2NyaXB0Q29kZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1VTY3JpcHRDb2RlX2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VU2NyaXB0Q29kZS5oPgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDk0ZTU3ZDlmZWZkYjA5OGE2MjZlZDc5Mzg0MmFmNjdiY2NlMDQxNjUuLmY0
NThlZmRmOTFlMjQwZjQzMGY4Mzc1YmIyODQ1ZjY4YmNlODk1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC04NDcsMjIgKzg0NywyMiBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQ
YWdlQ2FjaGVFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldERPTVBhc3RlQWxsb3dlZEViCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MxOHNldERlZmF1bHRGb250U2l6ZUVpCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNl
dEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCitfX1pON1dlYkNvcmU4U2V0
dGluZ3MxOHNldEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFTlMxXzExVVNj
cmlwdENvZGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldE1pbmltdW1Gb250U2l6ZUVpCi1f
X1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFTlMxXzExVVNjcmlwdENvZGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3Mx
OHNldFdlYkF1ZGlvRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOW1pbkRPTVRpbWVy
SW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTlzZXRTaG93RGVidWdCb3JkZXJzRWIK
LV9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dURjEyQXRv
bWljU3RyaW5nRQotX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRGYW50YXN5Rm9udEZhbWlseUVS
S04zV1RGMTJBdG9taWNTdHJpbmdFCitfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVG
b250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0VOUzFfMTFVU2NyaXB0Q29kZUUKK19fWk43
V2ViQ29yZThTZXR0aW5nczIwc2V0RmFudGFzeUZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3Ry
aW5nRU5TMV8xMVVTY3JpcHRDb2RlRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRKYXZhU2Ny
aXB0RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldFhTU0F1ZGl0b3JFbmFibGVk
RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIxc2V0U2hvd1JlcGFpbnRDb3VudGVyRWIKLV9fWk43
V2ViQ29yZThTZXR0aW5nczIxc2V0U3RhbmRhcmRGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0
cmluZ0UKK19fWk43V2ViQ29yZThTZXR0aW5nczIxc2V0U3RhbmRhcmRGb250RmFtaWx5RVJLTjNX
VEYxMkF0b21pY1N0cmluZ0VOUzFfMTFVU2NyaXB0Q29kZUUKIF9fWk43V2ViQ29yZThTZXR0aW5n
czIxc2V0V2ViU2VjdXJpdHlFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIyc2V0TG9j
YWxTdG9yYWdlRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMnNldE1pbkRPTVRpbWVy
SW50ZXJ2YWxFZAotX19aTjdXZWJDb3JlOFNldHRpbmdzMjJzZXRTYW5zU2VyaWZGb250RmFtaWx5
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKK19fWk43V2ViQ29yZThTZXR0aW5nczIyc2V0U2Fuc1Nl
cmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFTlMxXzExVVNjcmlwdENvZGVFCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyMnNldFNlc3Npb25TdG9yYWdlUXVvdGFFagogX19aTjdXZWJD
b3JlOFNldHRpbmdzMjJzZXRTaG93c1VSTHNJblRvb2xUaXBzRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczIzc2V0RGVmYXVsdEZpeGVkRm9udFNpemVFaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAppbmRleCAxYmY0ZmNhMzUzNjM2NmY2NDY2OTZiMGZiMjVlMmY1ODZkODE3YjIx
Li4wYTU0MDY1YmJkYzU0MDAxZDgyNjAxYzFlNmZiMDk2YWI4NTJlNWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMzg3LDIwICszODcsMjEgQEAgc3RhdGljIEZv
bnREYXRhKiBmb250RGF0YUZvckdlbmVyaWNGYW1pbHkoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBGb250RGVzY3JpcHQKICAgICBjb25zdCBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudC0+
ZnJhbWUoKS0+c2V0dGluZ3MoKTsKICAgICBpZiAoIXNldHRpbmdzKQogICAgICAgICByZXR1cm4g
MDsKLSAgICAKKwogICAgIEF0b21pY1N0cmluZyBnZW5lcmljRmFtaWx5OworICAgIFdURjo6VVNj
cmlwdENvZGUgc2NyaXB0ID0gZm9udERlc2NyaXB0aW9uLnNjcmlwdCgpOwogICAgIGlmIChmYW1p
bHlOYW1lID09ICItd2Via2l0LXNlcmlmIikKLSAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRp
bmdzLT5zZXJpZkZvbnRGYW1pbHkoKTsKKyAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdz
LT5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICIt
d2Via2l0LXNhbnMtc2VyaWYiKQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNh
bnNTZXJpZkZvbnRGYW1pbHkoKTsKKyAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5z
YW5zU2VyaWZGb250RmFtaWx5KHNjcmlwdCk7CiAgICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSAi
LXdlYmtpdC1jdXJzaXZlIikKLSAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5jdXJz
aXZlRm9udEZhbWlseSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmN1cnNp
dmVGb250RmFtaWx5KHNjcmlwdCk7CiAgICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSAiLXdlYmtp
dC1mYW50YXN5IikKLSAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5mYW50YXN5Rm9u
dEZhbWlseSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZhbnRhc3lGb250
RmFtaWx5KHNjcmlwdCk7CiAgICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSAiLXdlYmtpdC1tb25v
c3BhY2UiKQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZpeGVkRm9udEZhbWls
eSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZpeGVkRm9udEZhbWlseShz
Y3JpcHQpOwogICAgIGVsc2UgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtc3RhbmRhcmQiKQot
ICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseSgpOwor
ICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseShzY3Jp
cHQpOwogCiAgICAgaWYgKCFnZW5lcmljRmFtaWx5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGdlbmVyaWNG
YW1pbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDZhZTM0
NDlmYzFmN2Q2ODRmMWU3NDZhOGRmYzFhNzcxZWM2NGI0NDQuLjYyNTY5ZDJlYmQ5ZGE0MTk5Zjdi
YWQ3NDYzZjk2MjEwOWJmNzMyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQAogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdW5pY29kZS9VU2NyaXB0Q29kZS5oPgogCiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCkBAIC00MjU2LDYgKzQyNTcsOSBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAq
dmFsdWUpCiAgICAgICAgIGJvb2wgb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUgPSBmb250
RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpOwogICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5KTsKIAorICAgICAg
ICBBdG9taWNTdHJpbmcgbGFuZyA9IG1fZWxlbWVudC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdl
KCk7CisgICAgICAgIFdURjo6VVNjcmlwdENvZGUgc2NyaXB0ID0gQ1NTU3R5bGVTZWxlY3Rvcjo6
bGFuZ3VhZ2VUYWdUb1NjcmlwdENvZGUobGFuZyk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykg
ewogICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKGkpOwogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCkBAIC00
MjY5LDcgKzQyNzMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50
IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYgc2V0
dGluZ3MpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRlbnQo
KSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Qm9keToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZhY2UgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZh
bWlseShzY3JpcHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGZh
Y2UgPSAiLXdlYmtpdC1zZXJpZiI7CkBAIC02ODM3LDQgKzY4NDEsNDcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjpsb2FkUGVuZGluZ0ltYWdlcygpCiAgICAgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0
aWVzLmNsZWFyKCk7CiB9CiAKK1dURjo6VVNjcmlwdENvZGUgQ1NTU3R5bGVTZWxlY3Rvcjo6bGFu
Z3VhZ2VUYWdUb1NjcmlwdENvZGUoY29uc3QgU3RyaW5nJiBsYW5ndWFnZVRhZykKK3sKKyAgICBz
dHJ1Y3QgTGFuZ3VhZ2VTY3JpcHQgeworICAgICAgICBjb25zdCBjaGFyKiBsYW5ndWFnZVRhZzsK
KyAgICAgICAgV1RGOjpVU2NyaXB0Q29kZSBzY3JpcHQ7CisgICAgfTsKKworICAgIC8vIFRPRE86
IE5lZWQgdG8gYWRkIGFsbCB0aGUgc2NyaXB0cy4KKyAgICBjb25zdCBMYW5ndWFnZVNjcmlwdCBs
YW5ndWFnZVNjcmlwdExpc3RbXSA9IHsKKyAgICAgICAgeyAiZGUiLCBXVEY6OlVTQ1JJUFRfTEFU
SU4gfSwKKyAgICAgICAgeyAiZW4iLCBXVEY6OlVTQ1JJUFRfTEFUSU4gfSwKKyAgICAgICAgeyAi
ZXMiLCBXVEY6OlVTQ1JJUFRfTEFUSU4gfSwKKyAgICAgICAgeyAiZnIiLCBXVEY6OlVTQ1JJUFRf
TEFUSU4gfSwKKyAgICAgICAgeyAiamEiLCBXVEY6OlVTQ1JJUFRfSkFQQU5FU0UgfSwKKyAgICAg
ICAgeyAia28iLCBXVEY6OlVTQ1JJUFRfS09SRUFOIH0sCisgICAgICAgIHsgInJ1IiwgV1RGOjpV
U0NSSVBUX0NZUklMTElDIH0sCisgICAgICAgIHsgInpoLWNuIiwgV1RGOjpVU0NSSVBUX1NJTVBM
SUZJRURfSEFOIH0sCisgICAgICAgIHsgInpoLWhhbnMiLCBXVEY6OlVTQ1JJUFRfU0lNUExJRklF
RF9IQU4gfSwKKyAgICAgICAgeyAiemgtaGFudCIsIFdURjo6VVNDUklQVF9UUkFESVRJT05BTF9I
QU4gfSwKKyAgICAgICAgeyAiemgtdHciLCBXVEY6OlVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOIH0K
KyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgV1RGOjpVU2NyaXB0Q29kZT4g
TGFuZ3VhZ2VTY3JpcHRNYXA7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMYW5ndWFnZVNjcmlw
dE1hcCwgbGFuZ3VhZ2VTY3JpcHRNYXAsICgpKTsKKyAgICBpZiAobGFuZ3VhZ2VTY3JpcHRNYXAu
aXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGxhbmd1
YWdlU2NyaXB0TGlzdCkgLyBzaXplb2YobGFuZ3VhZ2VTY3JpcHRMaXN0WzBdKTsgKytpKQorICAg
ICAgICAgICAgbGFuZ3VhZ2VTY3JpcHRNYXAuc2V0KGxhbmd1YWdlU2NyaXB0TGlzdFtpXS5sYW5n
dWFnZVRhZywgbGFuZ3VhZ2VTY3JpcHRMaXN0W2ldLnNjcmlwdCk7CisgICAgfQorCisgICAgU3Ry
aW5nIGxhbmd1YWdlID0gbGFuZ3VhZ2VUYWcubG93ZXIoKTsKKyAgICB3aGlsZSAoIWxhbmd1YWdl
LmlzRW1wdHkoKSkgeworICAgICAgICBIYXNoTWFwPFN0cmluZywgV1RGOjpVU2NyaXB0Q29kZT46
Oml0ZXJhdG9yIGl0ID0gbGFuZ3VhZ2VTY3JpcHRNYXAuZmluZChsYW5ndWFnZSk7CisgICAgICAg
IGlmIChpdCAhPSBsYW5ndWFnZVNjcmlwdE1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBp
dC0+c2Vjb25kOworICAgICAgICBzaXplX3QgcG9zID0gbGFuZ3VhZ2UucmV2ZXJzZUZpbmQoJy0n
KTsKKyAgICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBsYW5ndWFnZSA9IGxhbmd1YWdlLnN1YnN0cmluZygwLCBwb3MpOworICAgIH0KKyAgICBy
ZXR1cm4gV1RGOjpVU0NSSVBUX0NPTU1PTjsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCAzMmViNmY2OWNmOTBmZmVi
MjgyYzk0Zjg0MDIwODMyYWZjMDU1ZTRjLi44NmFiZDJiMzdjNGRmODE0MGIwMGJhMDA2OTVlMjMy
Njk4Yjg5YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTExNCw3
ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b24oKSB7IHJldHVybiBzdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsgfQogICAgICAgICBGb250
RGVzY3JpcHRpb24gcGFyZW50Rm9udERlc2NyaXB0aW9uKCkge3JldHVybiBwYXJlbnRTdHlsZSgp
LT5mb250RGVzY3JpcHRpb24oKTsgfQogICAgICAgICB2b2lkIHNldEZvbnREZXNjcmlwdGlvbihG
b250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uKSB7IG1fZm9udERpcnR5IHw9IHN0eWxlKCkt
PnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOyB9Ci0KKyAgICAgICAgc3RhdGlj
IFdURjo6VVNjcmlwdENvZGUgbGFuZ3VhZ2VUYWdUb1NjcmlwdENvZGUoY29uc3QgU3RyaW5nJiBs
YW5ndWFnZVRhZyk7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNv
bHZlKEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5P
UFNFVURPKTsKICAgICAgICAgdm9pZCBpbml0RWxlbWVudChFbGVtZW50Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCmluZGV4IDg3OGE5YjgyZjZhOGRiNjRlNDlkODMxMjQ0Nzk1MDQ4MzUzZmQ3
MWQuLmZhZmNjNTJhN2I3ZGMxMzVjODAyZWQ3NmQyMjc1OTQ3Y2EyMjhjZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCkBAIC01Miw2ICs1MiwyNCBAQCBzdGF0aWMgdm9pZCBzZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhQYWdlKiBwYWdlKQogICAgICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMocGFn
ZS0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOwogfQogCitzdGF0aWMg
aW5saW5lIHZvaWQgc2V0R2VuZXJpY0ZvbnRGYW1pbHlNYXAoU2NyaXB0Rm9udEZhbWlseU1hcCYg
Zm9udE1hcCwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFdURjo6VVNjcmlwdENvZGUgc2Ny
aXB0LCBQYWdlKiBwYWdlKQoreworICAgIC8vIFVTQ1JJUFRfSU5WQUxJRF9DT0RFIGlzIC0xIGFu
ZCBVU0NSSVBUX0NPTU1PTiBpcyAwLCB3aGljaCBhcmUgc3BlY2lhbCAoZGVsZXRlZCBhbmQgZW1w
dHkpIGluIEhhc2hNYXAgd2l0aCBpbnQga2V5cy4KKyAgICAvLyBUbyBhdm9pZCB1c2luZyAtMSBh
bmQgMCBhcyBhIGtleSwgd2UgYWRkIDIuCisgICAgZm9udE1hcC5zZXQoc3RhdGljX2Nhc3Q8aW50
PihzY3JpcHQpICsgMiwgZmFtaWx5KTsKKyAgICBwYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5B
bGxGcmFtZXMoKTsKK30KKworc3RhdGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIGdldEdl
bmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZvbnRN
YXAsIFdURjo6VVNjcmlwdENvZGUgc2NyaXB0KQoreworICAgIFNjcmlwdEZvbnRGYW1pbHlNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZm9udE1hcC5maW5kKHN0YXRpY19jYXN0PGludD4oc2NyaXB0
KSArIDIpOworICAgIGlmIChpdCAhPSBmb250TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQt
PnNlY29uZDsKKyAgICBpZiAoc2NyaXB0ID09IFdURjo6VVNDUklQVF9DT01NT04pCisgICAgICAg
IHJldHVybiBlbXB0eUF0b207CisgICAgcmV0dXJuIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2Ny
aXB0KGZvbnRNYXAsIFdURjo6VVNDUklQVF9DT01NT04pOworfQorCiAjaWYgVVNFKFNBRkFSSV9U
SEVNRSkKIGJvb2wgU2V0dGluZ3M6OmdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzID0gdHJ1ZTsK
ICNlbmRpZgpAQCAtMTg4LDU4ICsyMDYsNjQgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBh
Z2UpCiAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldFN0
YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseSkK
K2NvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3M6OnN0YW5kYXJkRm9udEZhbWlseShXVEY6OlVT
Y3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICBpZiAoc3RhbmRhcmRGb250RmFtaWx5ID09
IG1fc3RhbmRhcmRGb250RmFtaWx5KQotICAgICAgICByZXR1cm47CisgICAgcmV0dXJuIGdldEdl
bmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBzY3JpcHQp
OworfQogCi0gICAgbV9zdGFuZGFyZEZvbnRGYW1pbHkgPSBzdGFuZGFyZEZvbnRGYW1pbHk7Ci0g
ICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKK3ZvaWQgU2V0dGlu
Z3M6OnNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgV1RG
OjpVU2NyaXB0Q29kZSBzY3JpcHQpCit7CisgICAgc2V0R2VuZXJpY0ZvbnRGYW1pbHlNYXAobV9z
dGFuZGFyZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0LCBtX3BhZ2UpOwogfQogCi12b2lk
IFNldHRpbmdzOjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmaXhlZEZv
bnRGYW1pbHkpCitjb25zdCBBdG9taWNTdHJpbmcmIFNldHRpbmdzOjpmaXhlZEZvbnRGYW1pbHko
V1RGOjpVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZml4ZWRGb250RmFt
aWx5ID09IGZpeGVkRm9udEZhbWlseSkKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBt
X2ZpeGVkRm9udEZhbWlseSA9IGZpeGVkRm9udEZhbWlseTsKLSAgICBtX3BhZ2UtPnNldE5lZWRz
UmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOworICAgIHJldHVybiBnZXRHZW5lcmljRm9udEZhbWls
eUZvclNjcmlwdChtX2ZpeGVkRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAotdm9pZCBTZXR0
aW5nczo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgc2VyaWZGb250RmFt
aWx5KQordm9pZCBTZXR0aW5nczo6c2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5LCBXVEY6OlVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKLSAgICBpZiAobV9zZXJpZkZv
bnRGYW1pbHkgPT0gc2VyaWZGb250RmFtaWx5KQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAot
ICAgIG1fc2VyaWZGb250RmFtaWx5ID0gc2VyaWZGb250RmFtaWx5OwotICAgIG1fcGFnZS0+c2V0
TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CisgICAgc2V0R2VuZXJpY0ZvbnRGYW1pbHlN
YXAobV9maXhlZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0LCBtX3BhZ2UpOwogfQogCi12
b2lkIFNldHRpbmdzOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYg
c2Fuc1NlcmlmRm9udEZhbWlseSkKK2NvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3M6OnNlcmlm
Rm9udEZhbWlseShXVEY6OlVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICBpZiAobV9z
YW5zU2VyaWZGb250RmFtaWx5ID09IHNhbnNTZXJpZkZvbnRGYW1pbHkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAgICAgCi0gICAgbV9zYW5zU2VyaWZGb250RmFtaWx5ID0gc2Fuc1NlcmlmRm9udEZh
bWlseTsgCi0gICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKKyAg
ICByZXR1cm4gZ2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zZXJpZkZvbnRGYW1pbHlN
YXAsIHNjcmlwdCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldEN1cnNpdmVGb250RmFtaWx5KGNv
bnN0IEF0b21pY1N0cmluZyYgY3Vyc2l2ZUZvbnRGYW1pbHkpCit2b2lkIFNldHRpbmdzOjpzZXRT
ZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIFdURjo6VVNjcmlwdENv
ZGUgc2NyaXB0KQogewotICAgIGlmIChtX2N1cnNpdmVGb250RmFtaWx5ID09IGN1cnNpdmVGb250
RmFtaWx5KQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIG1fY3Vyc2l2ZUZvbnRGYW1p
bHkgPSBjdXJzaXZlRm9udEZhbWlseTsKLSAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJ
bkFsbEZyYW1lcygpOworICAgIHNldEdlbmVyaWNGb250RmFtaWx5TWFwKG1fc2VyaWZGb250RmFt
aWx5TWFwLCBmYW1pbHksIHNjcmlwdCwgbV9wYWdlKTsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0
RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW50YXN5Rm9udEZhbWlseSkK
K2NvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3M6OnNhbnNTZXJpZkZvbnRGYW1pbHkoV1RGOjpV
U2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZmFudGFzeUZvbnRGYW1pbHkg
PT0gZmFudGFzeUZvbnRGYW1pbHkpCi0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgbV9m
YW50YXN5Rm9udEZhbWlseSA9IGZhbnRhc3lGb250RmFtaWx5OwotICAgIG1fcGFnZS0+c2V0TmVl
ZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CisgICAgcmV0dXJuIGdldEdlbmVyaWNGb250RmFt
aWx5Rm9yU2NyaXB0KG1fc2Fuc1NlcmlmRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKK30KKwordm9p
ZCBTZXR0aW5nczo6c2V0U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseSwgV1RGOjpVU2NyaXB0Q29kZSBzY3JpcHQpCit7CisgICAgc2V0R2VuZXJpY0ZvbnRGYW1p
bHlNYXAobV9zYW5zU2VyaWZGb250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCwgbV9wYWdlKTsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBTZXR0aW5nczo6Y3Vyc2l2ZUZvbnRGYW1pbHkoV1RG
OjpVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEdlbmVyaWNGb250
RmFtaWx5Rm9yU2NyaXB0KG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7Cit9CisKK3Zv
aWQgU2V0dGluZ3M6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5LCBXVEY6OlVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICBzZXRHZW5lcmljRm9udEZhbWls
eU1hcChtX2N1cnNpdmVGb250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCwgbV9wYWdlKTsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBTZXR0aW5nczo6ZmFudGFzeUZvbnRGYW1pbHkoV1RGOjpV
U2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEdlbmVyaWNGb250RmFt
aWx5Rm9yU2NyaXB0KG1fZmFudGFzeUZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7Cit9CisKK3ZvaWQg
U2V0dGluZ3M6OnNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5
LCBXVEY6OlVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICBzZXRHZW5lcmljRm9udEZhbWlseU1h
cChtX2ZhbnRhc3lGb250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCwgbV9wYWdlKTsKIH0KIAog
dm9pZCBTZXR0aW5nczo6c2V0TWluaW11bUZvbnRTaXplKGludCBtaW5pbXVtRm9udFNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggODk5Yzk3YzRlN2Q4NTlmYzU1YTNmYzQ1MTFiNzFiYWUz
ZGE5MWM0NC4uZjAwYTA0YWFmZjI5NzcxZTAzNTkzNGYwZmEzM2UzYWFlYzMzZTgzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaApAQCAtMzEsNyArMzEsMTAgQEAKICNpbmNsdWRlICJGb250UmVuZGVy
aW5nTW9kZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL1VTY3JpcHRDb2RlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsMjggKzU0
LDMxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGV4dERpcmVjdGlvblN1Ym1lbnVB
bHdheXNJbmNsdWRlZAogICAgIH07CiAKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBBdG9taWNT
dHJpbmc+IFNjcmlwdEZvbnRGYW1pbHlNYXA7CisKICAgICBjbGFzcyBTZXR0aW5ncyB7CiAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldHRpbmdzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBTZXR0aW5ncyhQYWdlKik7CiAKLSAgICAgICAgdm9p
ZCBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFuZGFyZEZvbnRGYW1pbHk7IH0KIAotICAgICAgICB2b2lkIHNldEZpeGVkRm9udEZhbWlseShj
b25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmaXhlZEZv
bnRGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkRm9udEZhbWlseTsgfQorICAgICAgICB2
b2lkIHNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBXVEY6OlVTY3Jp
cHRDb2RlID0gV1RGOjpVU0NSSVBUX0NPTU1PTik7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RhbmRhcmRGb250RmFtaWx5KFdURjo6VVNjcmlwdENvZGUgPSBXVEY6OlVTQ1JJUFRfQ09N
TU9OKSBjb25zdDsKKworICAgICAgICB2b2lkIHNldEZpeGVkRm9udEZhbWlseShjb25zdCBBdG9t
aWNTdHJpbmcmLCBXVEY6OlVTY3JpcHRDb2RlID0gV1RGOjpVU0NSSVBUX0NPTU1PTik7CisgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZml4ZWRGb250RmFtaWx5KFdURjo6VVNjcmlwdENvZGUg
PSBXVEY6OlVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldFNlcmlmRm9u
dEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBzZXJpZkZvbnRGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX3NlcmlmRm9udEZhbWlseTsgfQor
ICAgICAgICB2b2lkIHNldFNlcmlmRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBXVEY6
OlVTY3JpcHRDb2RlID0gV1RGOjpVU0NSSVBUX0NPTU1PTik7CisgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2VyaWZGb250RmFtaWx5KFdURjo6VVNjcmlwdENvZGUgPSBXVEY6OlVTQ1JJUFRf
Q09NTU9OKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2Fuc1Nlcmlm
Rm9udEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Fuc1NlcmlmRm9udEZhbWlseTsgfQorICAg
ICAgICB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgV1RG
OjpVU2NyaXB0Q29kZSA9IFdURjo6VVNDUklQVF9DT01NT04pOworICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHkoV1RGOjpVU2NyaXB0Q29kZSA9IFdURjo6VVND
UklQVF9DT01NT04pIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHko
Y29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY3Vyc2l2
ZUZvbnRGYW1pbHkoKSBjb25zdCB7IHJldHVybiBtX2N1cnNpdmVGb250RmFtaWx5OyB9CisgICAg
ICAgIHZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgV1RGOjpV
U2NyaXB0Q29kZSA9IFdURjo6VVNDUklQVF9DT01NT04pOworICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KFdURjo6VVNjcmlwdENvZGUgPSBXVEY6OlVTQ1JJUFRf
Q09NTU9OKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0
IEF0b21pY1N0cmluZyYpOwotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbnRhc3lGb250
RmFtaWx5KCkgY29uc3QgeyByZXR1cm4gbV9mYW50YXN5Rm9udEZhbWlseTsgfQorICAgICAgICB2
b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFdURjo6VVNjcmlw
dENvZGUgPSBXVEY6OlVTQ1JJUFRfQ09NTU9OKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW50YXN5Rm9udEZhbWlseShXVEY6OlVTY3JpcHRDb2RlID0gV1RGOjpVU0NSSVBUX0NPTU1P
TikgY29uc3Q7CiAKICAgICAgICAgdm9pZCBzZXRNaW5pbXVtRm9udFNpemUoaW50KTsKICAgICAg
ICAgaW50IG1pbmltdW1Gb250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUZvbnRTaXpl
OyB9CkBAIC00MTIsMTIgKzQxOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0
cmluZyBtX2Z0cERpcmVjdG9yeVRlbXBsYXRlUGF0aDsKICAgICAgICAgU3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoOwogICAgICAgICBLVVJMIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlv
bjsKLSAgICAgICAgQXRvbWljU3RyaW5nIG1fc3RhbmRhcmRGb250RmFtaWx5OwotICAgICAgICBB
dG9taWNTdHJpbmcgbV9maXhlZEZvbnRGYW1pbHk7Ci0gICAgICAgIEF0b21pY1N0cmluZyBtX3Nl
cmlmRm9udEZhbWlseTsKLSAgICAgICAgQXRvbWljU3RyaW5nIG1fc2Fuc1NlcmlmRm9udEZhbWls
eTsKLSAgICAgICAgQXRvbWljU3RyaW5nIG1fY3Vyc2l2ZUZvbnRGYW1pbHk7Ci0gICAgICAgIEF0
b21pY1N0cmluZyBtX2ZhbnRhc3lGb250RmFtaWx5OworICAgICAgICBTY3JpcHRGb250RmFtaWx5
TWFwIG1fc3RhbmRhcmRGb250RmFtaWx5TWFwOworICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFw
IG1fc2VyaWZGb250RmFtaWx5TWFwOworICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fZml4
ZWRGb250RmFtaWx5TWFwOworICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fc2Fuc1Nlcmlm
Rm9udEZhbWlseU1hcDsKKyAgICAgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX2N1cnNpdmVGb250
RmFtaWx5TWFwOworICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fZmFudGFzeUZvbnRGYW1p
bHlNYXA7CiAgICAgICAgIEVkaXRhYmxlTGlua0JlaGF2aW9yIG1fZWRpdGFibGVMaW5rQmVoYXZp
b3I7CiAgICAgICAgIFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgbV90ZXh0
RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yOwogICAgICAgICBpbnQgbV9taW5pbXVt
Rm9udFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRE
ZXNjcmlwdGlvbi5oCmluZGV4IDQyMWI4MmUwNTE2MzZmZmIwMGFmOTEyMTM1N2ZmODY1Y2E4MmU3
MmIuLmNiYmYzMzhkN2Q1MTBkYWM4Mjk3Y2M3ODkyYzE1MWM5ZjEyNzYwZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiRm9udFdpZHRoVmFyaWFudC5oIgogI2luY2x1ZGUgIlRl
eHRPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIlRleHRSZW5kZXJpbmdNb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVVNjcmlwdENvZGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04Miw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2ZvbnRTbW9vdGhpbmcoQXV0b1Nt
b290aGluZykKICAgICAgICAgLCBtX3RleHRSZW5kZXJpbmcoQXV0b1RleHRSZW5kZXJpbmcpCiAg
ICAgICAgICwgbV9pc1NwZWNpZmllZEZvbnQoZmFsc2UpCisgICAgICAgICwgbV9zY3JpcHQoV1RG
OjpVU0NSSVBUX0lOVkFMSURfQ09ERSkKICAgICB7CiAgICAgfQogCkBAIC0xMDcsNiArMTA5LDcg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIGtleXdvcmRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9r
ZXl3b3JkU2l6ZTsgfQogICAgIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxGb250U21vb3RoaW5nTW9kZT4obV9mb250U21vb3RoaW5n
KTsgfQogICAgIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmluZyk7IH0K
KyAgICBXVEY6OlVTY3JpcHRDb2RlIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9
CiAKICAgICBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Nw
ZWNpZmllZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3BlY2lmaWVkRm9udDsgfQpAQCAtMTM3
LDYgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEZvbnRPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICAgICB2
b2lkIHNldFRleHRPcmllbnRhdGlvbihUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKSB7
IG1fdGV4dE9yaWVudGF0aW9uID0gdGV4dE9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBzZXRXaWR0
aFZhcmlhbnQoRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQpIHsgbV93aWR0aFZhcmlhbnQg
PSB3aWR0aFZhcmlhbnQ7IH0KKyAgICB2b2lkIHNldFNjcmlwdChXVEY6OlVTY3JpcHRDb2RlIHMp
IHsgbV9zY3JpcHQgPSBzOyB9CiAKIHByaXZhdGU6CiAgICAgRm9udEZhbWlseSBtX2ZhbWlseUxp
c3Q7IC8vIFRoZSBsaXN0IG9mIGZvbnQgZmFtaWxpZXMgdG8gYmUgdXNlZC4KQEAgLTE2Nyw2ICsx
NzEsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZm9udFNtb290aGluZyA6IDI7IC8vIEZv
bnRTbW9vdGhpbmdNb2RlCiAgICAgdW5zaWduZWQgbV90ZXh0UmVuZGVyaW5nIDogMjsgLy8gVGV4
dFJlbmRlcmluZ01vZGUKICAgICBib29sIG1faXNTcGVjaWZpZWRGb250IDogMTsgLy8gVHJ1ZSBp
ZiBhIHdlYiBwYWdlIHNwZWNpZmllcyBhIG5vbi1nZW5lcmljIGZvbnQgZmFtaWx5IGFzIHRoZSBm
aXJzdCBmb250IGZhbWlseS4KKyAgICBXVEY6OlVTY3JpcHRDb2RlIG1fc2NyaXB0OyAvLyBUaGUg
c2NyaXB0IG9mIHRoZSB0ZXh0LCB1c2VkIHRvIGNob29zZSBhbiBhcHByb3ByaWF0ZSBmb250IGZv
ciB0aGUgZ2VuZXJpYyBmb250IGZhbWlseS4KIH07CiAKIGlubGluZSBib29sIEZvbnREZXNjcmlw
dGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDQwYjgzYTA4N2JmOWI3NDdmOGNhYTRiZDM0MzFhNzczNTNmZTZkNzIu
LmJmNmJkNzU1YzFiNjVjNGY3MTA1Zjk5YTIyMTY1ZGMxNjIxYzIwZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNi0xMCAgTWF0dCBGYWxrZW5oYWdlbiAgPGZhbGtl
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgbGFuZywgeG1sOmxhbmcsIGNvbnRlbnQtbGFuZ3VhZ2UgaWdub3JlZCB3aGVuIGNo
b29zaW5nIGZvbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDg3NAorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTEtMDYtMDYgIE1pY2hhZWwgU2Fi
b2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZGExNTJkNzBlYjU4
ZWVmMDZmYTRhMWFjOGUyNjYxN2Q1Nzk2ZjVhZS4uOWFlMGE2YzNhZjI1YWE1MWYwNTMwNGRmNjll
MTMyMjY3ZTFiZmRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTgw
LDYgKzE4MCw3IEBACiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvVVNjcmlwdENvZGUuaD4KIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICNpbXBv
cnQgPFdlYktpdC9XZWJEYXNoYm9hcmRSZWdpb24uaD4KQEAgLTE1MDksNiArMTUxMCwxMyBAQCBz
dGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAgICAgc2V0dGlu
Z3MtPnNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBleHBl
cmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSk7CiAg
ICAgc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHNhbnNTZXJp
ZkZvbnRGYW1pbHldKTsKKyAgICAvLyBUT0RPIG1vdmUgdGhlc2UgdG8gV2ViUHJlZmVyZW5jZXMu
bW0KKyAgICBzZXR0aW5ncy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShAIlNUSGVpdGkiLCBXVEY6
OlVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldHRpbmdzLT5zZXRTZXJpZkZvbnRGYW1p
bHkoQCJTVFNvbmciLCBXVEY6OlVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldHRpbmdz
LT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KEAiQXBwbGUgTGlHb3RoaWMiLCBXVEY6OlVTQ1JJUFRf
VFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXR0aW5ncy0+c2V0U2VyaWZGb250RmFtaWx5KEAiQXBw
bGUgTGlTdW5nIiwgV1RGOjpVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0dGluZ3Mt
PnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoQCJIaXJhZ2lubyBLYWt1IEdvdGhpYyBQcm8iLCBXVEY6
OlVTQ1JJUFRfSkFQQU5FU0UpOworICAgIHNldHRpbmdzLT5zZXRTZXJpZkZvbnRGYW1pbHkoQCJI
aXJhZ2lubyBNaW5jaG8gUHJvIiwgV1RGOjpVU0NSSVBUX0pBUEFORVNFKTsKICAgICBzZXR0aW5n
cy0+c2V0U2VyaWZGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzZXJpZkZvbnRGYW1pbHldKTsKICAg
ICBzZXR0aW5ncy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZv
bnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KFtw
cmVmZXJlbmNlcyBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHldKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98483</attachid>
            <date>2011-06-24 05:10:39 -0700</date>
            <delta_ts>2011-07-07 02:14:15 -0700</delta_ts>
            <desc>improved patch</desc>
            <filename>bug-10874-20110624211037.patch</filename>
            <type>text/plain</type>
            <size>23130</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk2NTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Y2Q4NTZiYjBhZmRhYzc5
ZDVmODljZWVjOWY2MDY4YjUyZDJkZWU3Li42MDdjYzgxZDRiMTA2MzM5ZWVhNjUyMjVkOTk4OGZj
MTYzOWY2MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDYtMjQgIE1hdHQg
RmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGxhbmcsIHhtbDpsYW5nLCBjb250ZW50LWxhbmd1
YWdlIGlnbm9yZWQgd2hlbiBjaG9vc2luZyBmb250cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQKKworICAgICAgICBObyBuZXcgdGVzdHMuIChP
T1BTISkKKworICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Zm9udERhdGFGb3JHZW5lcmljRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Omxhbmd1YWdlVGFnVG9TY3JpcHRD
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okxhbmd1YWdlU2NyaXB0OjppZik6CisgICAgICAgIChX
ZWJDb3JlOjpMYW5ndWFnZVNjcmlwdDo6d2hpbGUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNl
bGVjdG9yLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9taW5h
bnRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuY29kaW5nVG9TY3JpcHRD
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVuY29kaW5nU2NyaXB0OjppZik6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb246OkZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb246OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OnNldFNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246Om9wZXJhdG9yPT0pOgor
ICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhaW50VGV4dFdpdGhTaGFkb3dzKToKKwogMjAxMS0wNi0yMyAgWmhlbnlhbyBNbyAgPHptb0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggMWJmNGZjYTM1MzYzNjZmNjQ2Njk2
YjBmYjI1ZTJmNTg2ZDgxN2IyMS4uYzFlNDljMTUzMjZlMDljZmU5MzFlNTU2OTAzOTY3YzYzZjQ5
MDNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTM4OSwxOCAr
Mzg5LDE5IEBAIHN0YXRpYyBGb250RGF0YSogZm9udERhdGFGb3JHZW5lcmljRmFtaWx5KERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgRm9udERlc2NyaXB0CiAgICAgICAgIHJldHVybiAwOwogICAg
IAogICAgIEF0b21pY1N0cmluZyBnZW5lcmljRmFtaWx5OworICAgIFVTY3JpcHRDb2RlIHNjcmlw
dCA9IGZvbnREZXNjcmlwdGlvbi5zY3JpcHQoKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSAiLXdl
YmtpdC1zZXJpZiIpCi0gICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+c2VyaWZGb250
RmFtaWx5KCk7CisgICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+c2VyaWZGb250RmFt
aWx5KHNjcmlwdCk7CiAgICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSAiLXdlYmtpdC1zYW5zLXNl
cmlmIikKLSAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5zYW5zU2VyaWZGb250RmFt
aWx5KCk7CisgICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+c2Fuc1NlcmlmRm9udEZh
bWlseShzY3JpcHQpOwogICAgIGVsc2UgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtY3Vyc2l2
ZSIpCi0gICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+Y3Vyc2l2ZUZvbnRGYW1pbHko
KTsKKyAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5jdXJzaXZlRm9udEZhbWlseShz
Y3JpcHQpOwogICAgIGVsc2UgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtZmFudGFzeSIpCi0g
ICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+ZmFudGFzeUZvbnRGYW1pbHkoKTsKKyAg
ICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5mYW50YXN5Rm9udEZhbWlseShzY3JpcHQp
OwogICAgIGVsc2UgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtbW9ub3NwYWNlIikKLSAgICAg
ICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5maXhlZEZvbnRGYW1pbHkoKTsKKyAgICAgICAg
Z2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5maXhlZEZvbnRGYW1pbHkoc2NyaXB0KTsKICAgICBl
bHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LXN0YW5kYXJkIikKLSAgICAgICAgZ2VuZXJp
Y0ZhbWlseSA9IHNldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKKyAgICAgICAgZ2VuZXJp
Y0ZhbWlseSA9IHNldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKIAogICAgIGlm
ICghZ2VuZXJpY0ZhbWlseS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmb250Q2FjaGUoKS0+
Z2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBnZW5lcmljRmFtaWx5KTsKQEAgLTQ5
NSw2ICs0OTYsOSBAQCBGb250RGF0YSogQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0YShjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYwogICAgIGlmIChtX2ZvbnRGYWNl
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGZhbWlseU5hbWUuc3RhcnRzV2l0aCgiLXdlYmtp
dC0iKSkKICAgICAgICAgICAgIHJldHVybiBmb250RGF0YUZvckdlbmVyaWNGYW1pbHkobV9kb2N1
bWVudCwgZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKKyAgICAgICAgLy8gVVNDUklQVF9D
T01NT04gd291bGQgcmVzb2x2ZSB0byAiVGltZXMiIGJ1dCBmb3Igc29tZSByZWFzb24gIkx1Y2lk
YSBHcmFuZGUiIGlzIGV4cGVjdGVkLgorICAgICAgICBpZiAoIWZvbnREZXNjcmlwdGlvbi5pc1Nw
ZWNpZmllZEZvbnQoKSAmJiBmb250RGVzY3JpcHRpb24uc2NyaXB0KCkgIT0gVVNDUklQVF9DT01N
T04pCisgICAgICAgICAgICByZXR1cm4gZm9udERhdGFGb3JHZW5lcmljRmFtaWx5KG1fZG9jdW1l
bnQsIGZvbnREZXNjcmlwdGlvbiwgIi13ZWJraXQtc3RhbmRhcmQiKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXgg
OGFhYzdkZTgwYTQwOGU4NDdkZmY2MTEyMzk3NDY4YzE5MWNhNjNlNi4uYjdlYjQxZGM3YzdiY2Mz
MGY5ZmYyYmE5ZjM2OTQxODJlMzU2ODI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcApAQCAtMTUwMCw2ICsxNTAwLDE5IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlLCBSZW5kZXJTdHls
CiAgICAgfQogICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KHRydWUsIGZpcnN0VUFSdWxlLCBs
YXN0VUFSdWxlKTsKICAgICAKKyAgICAvLyBVcGRhdGUgZm9udCBkZXNjcmlwdGlvbiB3aXRoIGxh
bmd1YWdlLgorICAgIEZvbnREZXNjcmlwdGlvbiBtb2RGb250RGVzYyhtX3N0eWxlLT5mb250RGVz
Y3JpcHRpb24oKSk7CisgICAgQXRvbWljU3RyaW5nIGxhbmcgPSBtX2VsZW1lbnQtPmNvbXB1dGVJ
bmhlcml0ZWRMYW5ndWFnZSgpOworICAgIFVTY3JpcHRDb2RlIHNjcmlwdDsKKyAgICBpZiAobGFu
Zy5pc051bGwoKSkKKyAgICAgICAgc2NyaXB0ID0gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5kb21p
bmFudFNjcmlwdCgpOworICAgIGVsc2UKKyAgICAgICAgc2NyaXB0ID0gQ1NTU3R5bGVTZWxlY3Rv
cjo6bGFuZ3VhZ2VUYWdUb1NjcmlwdENvZGUobGFuZyk7CisgICAgaWYgKHNjcmlwdCAhPSBVU0NS
SVBUX0lOVkFMSURfQ09ERSAmJiBzY3JpcHQgIT0gVVNDUklQVF9DT01NT04pCisgICAgICAgIG1v
ZEZvbnREZXNjLnNldFNjcmlwdChzY3JpcHQpOworICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVz
Y3JpcHRpb24obW9kRm9udERlc2MpKQorICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7CisKICAg
ICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBub3cu
CiAgICAgaWYgKG1fZm9udERpcnR5KQogICAgICAgICB1cGRhdGVGb250KCk7CkBAIC00MjkwLDYg
KzQzMDMsMTEgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwg
Q1NTVmFsdWUgKnZhbHVlKQogICAgICAgICBib29sIG9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRT
aXplID0gZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKTsKICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7
CiAKKyAgICAgICAgQXRvbWljU3RyaW5nIGxhbmcgPSBtX2VsZW1lbnQtPmNvbXB1dGVJbmhlcml0
ZWRMYW5ndWFnZSgpOworICAgICAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSBDU1NTdHlsZVNlbGVj
dG9yOjpsYW5ndWFnZVRhZ1RvU2NyaXB0Q29kZShsYW5nKTsKKyAgICAgICAgaWYgKHNjcmlwdCAh
PSBVU0NSSVBUX0lOVkFMSURfQ09ERSAmJiBzY3JpcHQgIT0gVVNDUklQVF9DT01NT04pCisgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U2NyaXB0KHNjcmlwdCk7CisKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0g
PSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICAgICAgaWYgKCFpdGVt
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCkBAIC00MzAzLDcgKzQzMjEsNyBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYgc2V0dGluZ3MpIHsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlV2Via2l0Qm9keToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBzZXR0
aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWNl
ID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseShzY3JpcHQpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1zZXJpZiI7CkBAIC02Nzkz
LDQgKzY4MTEsNDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpsb2FkUGVuZGluZ0ltYWdlcygp
CiAgICAgbV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzLmNsZWFyKCk7CiB9CiAKK1VTY3JpcHRDb2Rl
IENTU1N0eWxlU2VsZWN0b3I6Omxhbmd1YWdlVGFnVG9TY3JpcHRDb2RlKGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2VUYWcpCit7CisgICAgc3RydWN0IExhbmd1YWdlU2NyaXB0IHsKKyAgICAgICAgY29u
c3QgY2hhciogbGFuZ3VhZ2VUYWc7CisgICAgICAgIFVTY3JpcHRDb2RlIHNjcmlwdDsKKyAgICB9
OworCisgICAgLy8gVE9ETzogTmVlZCB0byBhZGQgYWxsIHRoZSBzY3JpcHRzLgorICAgIGNvbnN0
IExhbmd1YWdlU2NyaXB0IGxhbmd1YWdlU2NyaXB0TGlzdFtdID0geworICAgICAgICB7ICJkZSIs
IFVTQ1JJUFRfTEFUSU4gfSwKKyAgICAgICAgeyAiZW4iLCBVU0NSSVBUX0xBVElOIH0sCisgICAg
ICAgIHsgImVzIiwgVVNDUklQVF9MQVRJTiB9LAorICAgICAgICB7ICJmciIsIFVTQ1JJUFRfTEFU
SU4gfSwKKyAgICAgICAgeyAiamEiLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BIH0sCisg
ICAgICAgIHsgImtvIiwgVVNDUklQVF9IQU5HVUwgfSwKKyAgICAgICAgeyAicnUiLCBVU0NSSVBU
X0NZUklMTElDIH0sCisgICAgICAgIHsgInpoIiwgVVNDUklQVF9IQU4gfSwKKyAgICAgICAgeyAi
emgtY24iLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOIH0sCisgICAgICAgIHsgInpoLWhhbnMiLCBV
U0NSSVBUX1NJTVBMSUZJRURfSEFOIH0sCisgICAgICAgIHsgInpoLWhhbnQiLCBVU0NSSVBUX1RS
QURJVElPTkFMX0hBTiB9LAorICAgICAgICB7ICJ6aC10dyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxf
SEFOIH0KKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVVNjcmlwdENvZGU+
IExhbmd1YWdlU2NyaXB0TWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTGFuZ3VhZ2VTY3Jp
cHRNYXAsIGxhbmd1YWdlU2NyaXB0TWFwLCAoKSk7CisgICAgaWYgKGxhbmd1YWdlU2NyaXB0TWFw
LmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihsYW5n
dWFnZVNjcmlwdExpc3QpIC8gc2l6ZW9mKGxhbmd1YWdlU2NyaXB0TGlzdFswXSk7ICsraSkKKyAg
ICAgICAgICAgIGxhbmd1YWdlU2NyaXB0TWFwLnNldChsYW5ndWFnZVNjcmlwdExpc3RbaV0ubGFu
Z3VhZ2VUYWcsIGxhbmd1YWdlU2NyaXB0TGlzdFtpXS5zY3JpcHQpOworICAgIH0KKworICAgIFN0
cmluZyBsYW5ndWFnZSA9IGxhbmd1YWdlVGFnLmxvd2VyKCk7CisgICAgd2hpbGUgKCFsYW5ndWFn
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFVTY3JpcHRDb2RlPjo6aXRl
cmF0b3IgaXQgPSBsYW5ndWFnZVNjcmlwdE1hcC5maW5kKGxhbmd1YWdlKTsKKyAgICAgICAgaWYg
KGl0ICE9IGxhbmd1YWdlU2NyaXB0TWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CisgICAgICAgIHNpemVfdCBwb3MgPSBsYW5ndWFnZS5yZXZlcnNlRmluZCgnLScpOwor
ICAgICAgICBpZiAocG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGxhbmd1YWdlID0gbGFuZ3VhZ2Uuc3Vic3RyaW5nKDAsIHBvcyk7CisgICAgfQorICAgIHJldHVy
biBVU0NSSVBUX0NPTU1PTjsKK30KKworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IDcxYzdjNWE2MTE5MmE3NDE3ZTljMmYy
YTBlYzY5YTI5ZTMwODNiNjYuLmI0MWQxMzYwZjA2MDk3MTJmNGYyNzRhY2NiOGY2MGFlMzQzZjdl
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMTE1LDYgKzExNSw3
IEBAIHB1YmxpYzoKICAgICAgICAgRm9udERlc2NyaXB0aW9uIHBhcmVudEZvbnREZXNjcmlwdGlv
bigpIHtyZXR1cm4gcGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7IH0KICAgICAgICAg
dm9pZCBzZXRGb250RGVzY3JpcHRpb24oRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbikg
eyBtX2ZvbnREaXJ0eSB8PSBzdHlsZSgpLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsgfQogCisgICAgICAgIHN0YXRpYyBVU2NyaXB0Q29kZSBsYW5ndWFnZVRhZ1RvU2NyaXB0
Q29kZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlVGFnKTsKICAgICBwcml2YXRlOgogICAgICAgICB2
b2lkIGluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSA9IDAsIFBzZXVkb0lkID0gTk9QU0VVRE8pOwogICAgICAgICB2b2lkIGluaXRFbGVtZW50KEVs
ZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ5ZTUyZTIzNmQ2YTE5YmFkMTU3
ZDVmZWY4NTA4ZDk2MTkyYWQ0MTkuLjFlMGQ3OGQ0OTQ4ZDA5M2MyMWFkZGIyMGZmNGVmYWY0NmE2
N2M3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTUzLDYgKzE1Myw3IEBACiAjaW5j
bHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTM5Myw2ICszOTQsNyBAQCBEb2N1bWVudDo6
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9v
bCBpc0hUTUwpCiAgICAgLCBtX3NjcmlwdFJ1bm5lcihTY3JpcHRSdW5uZXI6OmNyZWF0ZSh0aGlz
KSkKICAgICAsIG1feG1sVmVyc2lvbigiMS4wIikKICAgICAsIG1feG1sU3RhbmRhbG9uZShmYWxz
ZSkKKyAgICAsIG1fZG9taW5hbnRTY3JpcHQoVVNDUklQVF9JTlZBTElEX0NPREUpCiAgICAgLCBt
X3NhdmVkUmVuZGVyZXIoMCkKICAgICAsIG1fZGVzaWduTW9kZShpbmhlcml0KQogI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkKQEAgLTEwNDUsNiArMTA0Nyw4MyBAQCB2b2lkIERvY3VtZW50
OjpzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNldCkKICAgICBkZWNvZGVyKCktPnNldEVu
Y29kaW5nKGNoYXJzZXQsIFRleHRSZXNvdXJjZURlY29kZXI6OlVzZXJDaG9zZW5FbmNvZGluZyk7
CiB9CiAKK1VTY3JpcHRDb2RlIERvY3VtZW50Ojpkb21pbmFudFNjcmlwdCgpCit7CisgICAgaWYg
KG1fZG9taW5hbnRTY3JpcHQgIT0gVVNDUklQVF9JTlZBTElEX0NPREUpCisgICAgICAgIHJldHVy
biBtX2RvbWluYW50U2NyaXB0OworICAgIFN0cmluZyBlbmNvZGluZyA9IGlucHV0RW5jb2Rpbmco
KTsKKyAgICBpZiAoZW5jb2RpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9kb21pbmFu
dFNjcmlwdDsKKyAgICBtX2RvbWluYW50U2NyaXB0ID0gZW5jb2RpbmdUb1NjcmlwdENvZGUoZW5j
b2RpbmcpOworICAgIHJldHVybiBtX2RvbWluYW50U2NyaXB0OworfQorCitVU2NyaXB0Q29kZSBE
b2N1bWVudDo6ZW5jb2RpbmdUb1NjcmlwdENvZGUoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKK3sK
KyAgICBzdHJ1Y3QgRW5jb2RpbmdTY3JpcHQgeworICAgICAgICBjb25zdCBjaGFyKiBlbmNvZGlu
ZzsKKyAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0OworICAgIH07CisKKyAgICAvLyBpbnB1dEVu
Y29kaW5nKCkgYWx3YXlzIHJldHVybnMgYSBjYW5vbmljYWwgbmFtZS4gV2UgdXNlCisgICAgLy8g
TUlNRSBuYW1lcyBhbmQgSUFOQSBuYW1lcyAoaWYgdGhlIGZvcm1lciBpcyBub3QgYXZhaWxhYmxl
KS4KKyAgICBzdGF0aWMgY29uc3QgRW5jb2RpbmdTY3JpcHQgZW5jb2RpbmdTY3JpcHRMaXN0W10g
PSB7CisgICAgICAgIHsgIkdCMjMxMiIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4gfSwKKyAgICAg
ICAgeyAiR0JLIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTiB9LAorICAgICAgICB7ICJHQjE4MDMw
IiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTiB9LAorICAgICAgICB7ICJCaWc1IiwgVVNDUklQVF9U
UkFESVRJT05BTF9IQU4gfSwKKyAgICAgICAgeyAiQmlnNS1IS1NDUyIsIFVTQ1JJUFRfVFJBRElU
SU9OQUxfSEFOIH0sCisgICAgICAgIHsgIlNoaWZ0X0pJUyIsIFVTQ1JJUFRfS0FUQUtBTkFfT1Jf
SElSQUdBTkEgfSwKKyAgICAgICAgeyAiRVVDLUpQIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJB
R0FOQSB9LAorICAgICAgICB7ICJJU08tMjAyMi1KUCIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElS
QUdBTkEgfSwKKyAgICAgICAgeyAiSVNPLTIwMjItS1IiLCBVU0NSSVBUX0hBTkdVTCB9LAorICAg
ICAgICB7ICJFVUMtS1IiLCBVU0NSSVBUX0hBTkdVTCB9LAorICAgICAgICB7ICJUSVMtNjIwIiwg
VVNDUklQVF9USEFJIH0sCisgICAgICAgIHsgIklTTy04ODU5LTEiLCBVU0NSSVBUX0xBVElOIH0s
CisgICAgICAgIHsgIklTTy04ODU5LTE1IiwgVVNDUklQVF9MQVRJTiB9LAorICAgICAgICB7ICJ3
aW5kb3dzLTEyNTIiLCBVU0NSSVBUX0xBVElOIH0sCisgICAgICAgIHsgIklTTy04ODU5LTIiLCBV
U0NSSVBUX0xBVElOIH0sCisgICAgICAgIHsgIndpbmRvd3MtMTI1MCIsIFVTQ1JJUFRfTEFUSU4g
fSwKKyAgICAgICAgeyAiSVNPLTg4NTktMyIsIFVTQ1JJUFRfTEFUSU4gfSwKKyAgICAgICAgeyAi
SVNPLTg4NTktNCIsIFVTQ1JJUFRfTEFUSU4gfSwKKyAgICAgICAgeyAiSVNPLTg4NTktMTMiLCBV
U0NSSVBUX0xBVElOIH0sCisgICAgICAgIHsgIndpbmRvd3MtMTI1NyIsIFVTQ1JJUFRfTEFUSU4g
fSwKKyAgICAgICAgeyAiSVNPLTg4NTktNSIsIFVTQ1JJUFRfQ1lSSUxMSUMgfSwKKyAgICAgICAg
eyAid2luZG93cy0xMjUxIiwgVVNDUklQVF9DWVJJTExJQyB9LAorICAgICAgICB7ICJLT0k4LVIi
LCBVU0NSSVBUX0NZUklMTElDIH0sCisgICAgICAgIHsgIktPSTgtVSIsIFVTQ1JJUFRfQ1lSSUxM
SUMgfSwKKyAgICAgICAgeyAiSVNPLTg4NTktNiIsIFVTQ1JJUFRfQVJBQklDIH0sCisgICAgICAg
IHsgIndpbmRvd3MtMTI1NiIsIFVTQ1JJUFRfQVJBQklDIH0sCisgICAgICAgIHsgIklTTy04ODU5
LTciLCBVU0NSSVBUX0dSRUVLIH0sCisgICAgICAgIHsgIndpbmRvd3MtMTI1MyIsIFVTQ1JJUFRf
R1JFRUsgfSwKKyAgICAgICAgeyAiSVNPLTg4NTktOCIsIFVTQ1JJUFRfSEVCUkVXIH0sCisgICAg
ICAgIHsgIndpbmRvd3MtMTI1NSIsIFVTQ1JJUFRfSEVCUkVXIH0sCisgICAgICAgIHsgIklTTy04
ODU5LTkiLCBVU0NSSVBUX0xBVElOIH0sIC8vIFR1cmtpc2gKKyAgICAgICAgeyAid2luZG93cy0x
MjU0IiwgVVNDUklQVF9MQVRJTiB9LAorICAgICAgICB7ICJJU08tODg1OS0xMCIsIFVTQ1JJUFRf
TEFUSU4gfSwgLy8gTm9yZGljCisgICAgICAgIHsgIklTTy04ODU5LTE0IiwgVVNDUklQVF9MQVRJ
TiB9LCAvLyBDZWx0aWMKKyAgICAgICAgeyAiSVNPLTg4NTktMTYiLCBVU0NSSVBUX0xBVElOIH0s
IC8vIFJvbWFuaWFuCisgICAgICAgIHsgIndpbmRvd3MtMTI1OCIsIFVTQ1JJUFRfTEFUSU4gfSwg
Ly8gVmlldG5hbWVzZQorICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBVU2Ny
aXB0Q29kZT4gRW5jb2RpbmdTY3JpcHRNYXA7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChFbmNv
ZGluZ1NjcmlwdE1hcCwgZW5jb2RpbmdTY3JpcHRNYXAsICgpKTsKKworICAgIGlmIChlbmNvZGlu
Z1NjcmlwdE1hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemVvZihlbmNvZGluZ1NjcmlwdExpc3QpIC8gc2l6ZW9mKGVuY29kaW5nU2NyaXB0TGlzdFsw
XSk7ICsraSkKKyAgICAgICAgICAgIGVuY29kaW5nU2NyaXB0TWFwLnNldChlbmNvZGluZ1Njcmlw
dExpc3RbaV0uZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5j
b2RpbmdTY3JpcHRMaXN0W2ldLnNjcmlwdCk7CisgICAgfQorICAgIEhhc2hNYXA8U3RyaW5nLCBV
U2NyaXB0Q29kZT46Oml0ZXJhdG9yIGl0ID0gZW5jb2RpbmdTY3JpcHRNYXAuZmluZChlbmNvZGlu
Zyk7CisgICAgVVNjcmlwdENvZGUgZG9taW5hbnRTY3JpcHQ7CisgICAgaWYgKGl0ICE9IGVuY29k
aW5nU2NyaXB0TWFwLmVuZCgpKQorICAgICAgICBkb21pbmFudFNjcmlwdCA9IGl0LT5zZWNvbmQ7
CisgICAgZWxzZQorICAgICAgICAvLyBUT0RPKGp1bmdzaGlrKSA6IHNob3VsZCByZXR1cm4gYSBz
Y3JpcHQgY29ycmVzcG9uZGluZyB0byB0aGUgbG9jYWxlLgorICAgICAgICBkb21pbmFudFNjcmlw
dCA9IFVTQ1JJUFRfQ09NTU9OOworICAgIHJldHVybiBkb21pbmFudFNjcmlwdDsKK30KKwogdm9p
ZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGlmICghaW1wbGVtZW50YXRpb24oKS0+aGFzRmVhdHVyZSgiWE1M
IiwgU3RyaW5nKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDMyNmZmMzk2MWQwZWU1Zjlk
MTVjYWQwNWU0ZjQ1OTI1Y2M5YzViZTcuLjQ2YjVjNThjMTYwOTJkZjQ3MGQzNzA1M2FmODg5ZTI0
Zjk4MGQ2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNzQsNiArMzc0LDkgQEAgcHVibGlj
OgogICAgIFN0cmluZyBjb250ZW50TGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRM
YW5ndWFnZTsgfQogICAgIHZvaWQgc2V0Q29udGVudExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFu
ZykgeyBtX2NvbnRlbnRMYW5ndWFnZSA9IGxhbmc7IH0KIAorICAgIFVTY3JpcHRDb2RlIGRvbWlu
YW50U2NyaXB0KCk7CisgICAgc3RhdGljIFVTY3JpcHRDb2RlIGVuY29kaW5nVG9TY3JpcHRDb2Rl
KGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpOworCiAgICAgU3RyaW5nIHhtbEVuY29kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV94bWxFbmNvZGluZzsgfQogICAgIFN0cmluZyB4bWxWZXJzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV94bWxWZXJzaW9uOyB9CiAgICAgYm9vbCB4bWxTdGFuZGFsb25lKCkgY29u
c3QgeyByZXR1cm4gbV94bWxTdGFuZGFsb25lOyB9CkBAIC0xMzA1LDYgKzEzMDgsOCBAQCBwcml2
YXRlOgogCiAgICAgU3RyaW5nIG1fY29udGVudExhbmd1YWdlOwogCisgICAgVVNjcmlwdENvZGUg
bV9kb21pbmFudFNjcmlwdDsKKwogI2lmIEVOQUJMRShYSFRNTE1QKQogICAgIGJvb2wgbV9zaG91
bGRQcm9jZXNzTm9TY3JpcHRFbGVtZW50OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CmluZGV4IDRkNjVlNmM5NGI3NjE4MGNlMTIyYWExZjRlMzU3ZjVkMDlmM2E0MGEuLmQxYzQ4ZTA5
YTU4ZjcwZTBiNDFmMjQ3NWE4NTk5NjNhYTc1MjQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCkBAIC02Myw3ICs2Myw5IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBn
ZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChjb25zdCBTY3JpcHRGb250CiAgICAgU2NyaXB0
Rm9udEZhbWlseU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmb250TWFwLmZpbmQoc3RhdGljX2Nh
c3Q8aW50PihzY3JpcHQpKTsKICAgICBpZiAoaXQgIT0gZm9udE1hcC5lbmQoKSkKICAgICAgICAg
cmV0dXJuIGl0LT5zZWNvbmQ7Ci0gICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICBpZiAoc2NyaXB0
ID09IFVTQ1JJUFRfQ09NTU9OKQorICAgICAgICByZXR1cm4gZW1wdHlBdG9tOworICAgIHJldHVy
biBnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChmb250TWFwLCBVU0NSSVBUX0NPTU1PTik7
CiB9CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAppbmRleCA0MjFiODJlMDUxNjM2ZmZiMDBh
ZjkxMjEzNTdmZjg2NWNhODJlNzJiLi5jZTllNDcxYjZhNjMzOGNiZjM1NjUyZDM0MmJmODQ1ODlh
ZDc2NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RGVzY3JpcHRpb24uaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9mb250
U21vb3RoaW5nKEF1dG9TbW9vdGhpbmcpCiAgICAgICAgICwgbV90ZXh0UmVuZGVyaW5nKEF1dG9U
ZXh0UmVuZGVyaW5nKQogICAgICAgICAsIG1faXNTcGVjaWZpZWRGb250KGZhbHNlKQorICAgICAg
ICAsIG1fc2NyaXB0KFVTQ1JJUFRfQ09NTU9OKQogICAgIHsKICAgICB9CiAKQEAgLTEwNyw2ICsx
MDgsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQga2V5d29yZFNpemUoKSBjb25zdCB7IHJldHVy
biBtX2tleXdvcmRTaXplOyB9CiAgICAgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRTbW9vdGhpbmdNb2RlPihtX2ZvbnRTbW9v
dGhpbmcpOyB9CiAgICAgVGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRlcmluZ01vZGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0UmVuZGVyaW5nTW9kZT4obV90ZXh0UmVuZGVyaW5n
KTsgfQorICAgIFVTY3JpcHRDb2RlIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9
CiAKICAgICBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Nw
ZWNpZmllZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3BlY2lmaWVkRm9udDsgfQpAQCAtMTM3
LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEZvbnRPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICAgICB2
b2lkIHNldFRleHRPcmllbnRhdGlvbihUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKSB7
IG1fdGV4dE9yaWVudGF0aW9uID0gdGV4dE9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBzZXRXaWR0
aFZhcmlhbnQoRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQpIHsgbV93aWR0aFZhcmlhbnQg
PSB3aWR0aFZhcmlhbnQ7IH0KKyAgICB2b2lkIHNldFNjcmlwdChVU2NyaXB0Q29kZSBzKSB7IG1f
c2NyaXB0ID0gczsgfQogCiBwcml2YXRlOgogICAgIEZvbnRGYW1pbHkgbV9mYW1pbHlMaXN0OyAv
LyBUaGUgbGlzdCBvZiBmb250IGZhbWlsaWVzIHRvIGJlIHVzZWQuCkBAIC0xNjcsNiArMTcwLDcg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZvbnRTbW9vdGhpbmcgOiAyOyAvLyBGb250U21v
b3RoaW5nTW9kZQogICAgIHVuc2lnbmVkIG1fdGV4dFJlbmRlcmluZyA6IDI7IC8vIFRleHRSZW5k
ZXJpbmdNb2RlCiAgICAgYm9vbCBtX2lzU3BlY2lmaWVkRm9udCA6IDE7IC8vIFRydWUgaWYgYSB3
ZWIgcGFnZSBzcGVjaWZpZXMgYSBub24tZ2VuZXJpYyBmb250IGZhbWlseSBhcyB0aGUgZmlyc3Qg
Zm9udCBmYW1pbHkuCisgICAgVVNjcmlwdENvZGUgbV9zY3JpcHQ7IC8vIFRoZSBzY3JpcHQgb2Yg
dGhlIHRleHQsIHVzZWQgdG8gY2hvb3NlIGFuIGFwcHJvcHJpYXRlIGZvbnQgZm9yIHRoZSBnZW5l
cmljIGZvbnQgZmFtaWx5LgogfTsKIAogaW5saW5lIGJvb2wgRm9udERlc2NyaXB0aW9uOjpvcGVy
YXRvcj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0xODcsNyArMTkx
LDggQEAgaW5saW5lIGJvb2wgRm9udERlc2NyaXB0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1faXNTcGVjaWZpZWRGb250ID09
IG90aGVyLm1faXNTcGVjaWZpZWRGb250CiAgICAgICAgICYmIG1fb3JpZW50YXRpb24gPT0gb3Ro
ZXIubV9vcmllbnRhdGlvbgogICAgICAgICAmJiBtX3RleHRPcmllbnRhdGlvbiA9PSBvdGhlci5t
X3RleHRPcmllbnRhdGlvbgotICAgICAgICAmJiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5tX3dp
ZHRoVmFyaWFudDsKKyAgICAgICAgJiYgbV93aWR0aFZhcmlhbnQgPT0gb3RoZXIubV93aWR0aFZh
cmlhbnQKKyAgICAgICAgJiYgbV9zY3JpcHQgPT0gb3RoZXIubV9zY3JpcHQ7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA1NGYwNDgxYjUx
MTk4YTVjNDc1ODc3Y2RhY2Q0ZjUyNmRjMmUxYzM5Li41ZDBjOWU4YzgwMmM0YzAwMThlNjNhZjI5
ZmM3NmM2ODg4ODU1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCkBAIC0zOTcsNiArMzk3LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRv
d3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb24KICAgICBp
ZiAoIW9wYXF1ZSkKICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywg
ZmlsbENvbG9yU3BhY2UpOwogCisgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hl
UHVyZ2VQcmV2ZW50ZXI7CiAgICAgZG8gewogICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0Owog
ICAgICAgICBpZiAoc2hhZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlNjgzMzEz
MzU1Yjc5ODUxMTM0YjM4ZDg1YWMyNjU5NTUzMjczMmMyLi5iZjlhYWZkMGQ5NzQ0NGM3ZDhlNDlk
M2RiMTA1Mjk2MGRlOGRhNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDExLTA2LTI0ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsYW5n
LCB4bWw6bGFuZywgY29udGVudC1sYW5ndWFnZSBpZ25vcmVkIHdoZW4gY2hvb3NpbmcgZm9udHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc0CisK
KyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2V0dGluZ3NJbXBsOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZXR0aW5nc0ltcGw6OnNldEZpeGVkRm9udEZhbWlseSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNldHRpbmdzSW1wbDo6c2V0U2VyaWZGb250RmFtaWx5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2V0dGluZ3NJbXBsOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KToKKwogMjAxMS0wNi0yMyAgSm9o
biBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVz
IFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAKaW5kZXggZDg4OTZjZTBhMWE5ZmEzNzcwOTgxY2E1MTIwZjM4YzBiZDY1MmNmZC4uZjYx
OTY2NTU2ZmJhMTlhYWFhNDNkZTVhNDhlYzAwMmVmNzRhMTQzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01NywyMSArNTcsMzcgQEAg
V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogdm9p
ZCBXZWJTZXR0aW5nc0ltcGw6OnNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBXZWJTdHJpbmcm
IGZvbnQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KGZvbnQpOwor
ICAgIG1fc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseSgiV2VuUXVhbllpIE1pY3JvIEhl
aSIsIFVTQ1JJUFRfSEFOKTsKKyAgICBtX3NldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHko
IldlblF1YW5ZaSBNaWNybyBIZWkiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBtX3Nl
dHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBNaW5nTGl1IiwgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIG1fc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseSgiSVBBUEdv
dGhpYyIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwogfQogCiB2b2lkIFdlYlNldHRp
bmdzSW1wbDo6c2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IFdlYlN0cmluZyYgZm9udCkKIHsKICAg
ICBtX3NldHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1pbHkoKFN0cmluZylmb250KTsKKyAgICBtX3Nl
dHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1pbHkoIldlblF1YW5ZaSBNaWNybyBIZWkgTW9ubyIsIFVT
Q1JJUFRfSEFOKTsKKyAgICBtX3NldHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1pbHkoIldlblF1YW5Z
aSBNaWNybyBIZWkgTW9ubyIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIG1fc2V0dGlu
Z3MtPnNldEZpeGVkRm9udEZhbWlseSgiTWluZ0xpdSIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFO
KTsKKyAgICBtX3NldHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1pbHkoIklQQUdvdGhpYyIsIFVTQ1JJ
UFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwogfQogCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0
U2VyaWZGb250RmFtaWx5KGNvbnN0IFdlYlN0cmluZyYgZm9udCkKIHsKICAgICBtX3NldHRpbmdz
LT5zZXRTZXJpZkZvbnRGYW1pbHkoKFN0cmluZylmb250KTsKKyAgICBtX3NldHRpbmdzLT5zZXRT
ZXJpZkZvbnRGYW1pbHkoIldlblF1YW5ZaSBNaWNybyBIZWkiLCBVU0NSSVBUX0hBTik7CisgICAg
bV9zZXR0aW5ncy0+c2V0U2VyaWZGb250RmFtaWx5KCJXZW5RdWFuWWkgTWljcm8gSGVpIiwgVVND
UklQVF9TSU1QTElGSUVEX0hBTik7CisgICAgbV9zZXR0aW5ncy0+c2V0U2VyaWZGb250RmFtaWx5
KCJQTWluZ0xpdSIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBtX3NldHRpbmdzLT5z
ZXRTZXJpZkZvbnRGYW1pbHkoIklQQVBNaW5jaG8iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFH
QU5BKTsKIH0KIAogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHko
Y29uc3QgV2ViU3RyaW5nJiBmb250KQogewogICAgIG1fc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoKFN0cmluZylmb250KTsKKyAgICBtX3NldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJXZW5RdWFuWWkgTWljcm8gSGVpIiwgVVNDUklQVF9IQU4pOworICAgIG1fc2V0dGlu
Z3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIldlblF1YW5ZaSBNaWNybyBIZWkiLCBVU0NSSVBU
X1NJTVBMSUZJRURfSEFOKTsKKyAgICBtX3NldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5
KCJQTWluZ0xpdSIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBtX3NldHRpbmdzLT5z
ZXRTYW5zU2VyaWZGb250RmFtaWx5KCJJUEFQR290aGljIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9I
SVJBR0FOQSk7CiB9CiAKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRDdXJzaXZlRm9udEZhbWls
eShjb25zdCBXZWJTdHJpbmcmIGZvbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMjM1ZWZiZGRlZGYx
NzlhY2ZhMWY2MzJhMzUzMjgzOWNiY2IzOTI0ZC4uY2ZlNWQwNzZjMmVkODI5MDMyNTUwM2E3Mzk2
ZmVkZmMyYjcwYTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA2
LTI0ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsYW5nLCB4bWw6bGFuZywgY29u
dGVudC1sYW5ndWFnZSBpZ25vcmVkIHdoZW4gY2hvb3NpbmcgZm9udHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc0CisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpd
KToKKwogMjAxMS0wNi0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJvbGwgb3V0IHI4OTQ2OSAoQWRkIHByZWZlcmVuY2UgZm9yIHNldHRpbmcgdGhlIGh0bWwgcGFy
c2VyIGRlcHRoIGxpbWl0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGU5
MDVjYjIxNzY5MjQ5MTk4MmQ5YzdlOGEyZGY0NjIwN2Y0MDhhYjYuLjBlN2U0MzE0NTZkMzFmMTg5
OWNkN2YyMTQ5YzM5Mzg2ZTE4YzE0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTE1MDksNiArMTUwOSwyMiBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGls
ZUxvYWRpbmdRdWlyaygpCiAgICAgc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoW3By
ZWZlcmVuY2VzIHNhbnNTZXJpZkZvbnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy0+c2V0U2VyaWZG
b250RmFtaWx5KFtwcmVmZXJlbmNlcyBzZXJpZkZvbnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy0+
c2V0U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHldKTsK
KyAgICAvLyBUT0RPIG1vdmUgdGhlc2UgdG8gV2ViUHJlZmVyZW5jZXMubW0KKyAgICBzZXR0aW5n
cy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KEAiU1RIZWl0aSIsIFVTQ1JJUFRfSEFOKTsKKyAgICBz
ZXR0aW5ncy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShAIlNUSGVpdGkiLCBVU0NSSVBUX0hBTik7
CisgICAgc2V0dGluZ3MtPnNldFNlcmlmRm9udEZhbWlseShAIlNUU29uZyIsIFVTQ1JJUFRfSEFO
KTsKKyAgICBzZXR0aW5ncy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KEAiU1RIZWl0aSIsIFVTQ1JJ
UFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5
KEAiU1RIZWl0aSIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldHRpbmdzLT5zZXRT
ZXJpZkZvbnRGYW1pbHkoQCJTVFNvbmciLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBz
ZXR0aW5ncy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KEAiQXBwbGUgTGlHb3RoaWMiLCBVU0NSSVBU
X1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHko
QCJBcHBsZSBMaUdvdGhpYyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXR0aW5n
cy0+c2V0U2VyaWZGb250RmFtaWx5KEAiQXBwbGUgTGlTdW5nIiwgVVNDUklQVF9UUkFESVRJT05B
TF9IQU4pOworICAgIHNldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoQCJBcHBsZUdvdGhp
YyIsIFVTQ1JJUFRfSEFOR1VMKTsKKyAgICBzZXR0aW5ncy0+c2V0U2Fuc1NlcmlmRm9udEZhbWls
eShAIkFwcGxlR290aGljIiwgVVNDUklQVF9IQU5HVUwpOworICAgIHNldHRpbmdzLT5zZXRTZXJp
ZkZvbnRGYW1pbHkoQCJBcHBsZU15dW5nam8iLCBVU0NSSVBUX0hBTkdVTCk7CisgICAgc2V0dGlu
Z3MtPnNldFN0YW5kYXJkRm9udEZhbWlseShAIkhpcmFnaW5vIEtha3UgR290aGljIFBybyIsIFVT
Q1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldHRpbmdzLT5zZXRTYW5zU2VyaWZG
b250RmFtaWx5KEAiSGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvIiwgVVNDUklQVF9LQVRBS0FOQV9P
Ul9ISVJBR0FOQSk7CisgICAgc2V0dGluZ3MtPnNldFNlcmlmRm9udEZhbWlseShAIkhpcmFnaW5v
IE1pbmNobyBQcm8iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKICAgICBzZXR0aW5n
cy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KFtwcmVmZXJlbmNlcyBsb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHldKTsKICAgICBzZXR0aW5ncy0+c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1NldHRpbmcoW3ByZWZlcmVuY2VzIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFn
ZUxvYWRpbmdQcmVmZXJlbmNlXSk7CiAgICAgc2V0dGluZ3MtPnNldFNob3VsZFByaW50QmFja2dy
b3VuZHMoW3ByZWZlcmVuY2VzIHNob3VsZFByaW50QmFja2dyb3VuZHNdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99959</attachid>
            <date>2011-07-07 02:14:23 -0700</date>
            <delta_ts>2011-07-21 18:09:03 -0700</delta_ts>
            <desc>use -webkit-locale for font selection</desc>
            <filename>bug-10874-20110707181421.patch</filename>
            <type>text/plain</type>
            <size>27208</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA1MzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjZmNzNm
M2QxMTc0ODNmMzgwMTRlODNlZGM1MDg2MGYxNzdiNDYxNC4uOGRhZWViN2ZjMTRmYzJlMzA2Y2Zm
Y2M0NDJlNjU3NzkzZDE5MjI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ3MSw2ICs0NzEs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU1ZhbHVlTGlzdC5jcHAKICAgICBj
c3MvRm9udEZhbWlseVZhbHVlLmNwcAogICAgIGNzcy9Gb250VmFsdWUuY3BwCisgICAgY3NzL0xv
Y2FsZVV0aWxzLmNwcAogICAgIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKICAgICBjc3MvTWVk
aWFMaXN0LmNwcAogICAgIGNzcy9NZWRpYVF1ZXJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFjYTc2NTY2
MWU0NjUwNDk1YTk5NzU4ZGVjYTJjMTM3NWM0NTU5NTkuLmIwMmE4MDk4Y2MyMGIyOWJkMWY5YjRj
NmZmNzYyYWFiOWJjNDZiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMS0wNy0w
NyAgTWF0dCBGYWxrZW5oYWdlbiAgPGZhbGtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNl
IC13ZWJraXQtbG9jYWxlIGZvciBmb250IHNlbGVjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5mZXIgYSBzY3JpcHQgZnJvbSAtd2Via2l0LWxv
Y2FsZSB0byB1c2UgdG8gY2hvb3NlIGEgZm9udCBmb3IgZ2VuZXJpYworICAgICAgICBmb250IGZh
bWlsaWVzIGFuZCB0aGUgZGVmYXVsdCB1bnN0eWxlZCBmb250LiAgVGhlIGZvbnQgaXMgcmV0cmll
dmVkCisgICAgICAgIGZyb20gcGVyLXNjcmlwdCBmb250IHNldHRpbmdzIChzZWUgYnVnIDIwNzk3
KS4gIFNpbmNlIHRoZXNlIHNldHRpbmdzCisgICAgICAgIGhhdmUgbm90IGNoYW5nZWQgdGhlcmUg
c2hvdWxkIGJlIG5vIHZpc2libGUgZWZmZWN0IHlldC4KKworICAgICAgICBUaGVyZSBzaG91bGQg
YmUgbm8gdmlzaWJsZSBjaGFuZ2Ugc28gbm8gdGVzdHMgYXJlIGFkZGVkLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOiBVc2Ugc2NyaXB0IHdoZW4gZ2V0dGluZyBmb250
IGZyb20gU2V0dGluZ3MKKyAgICAgICAgKFdlYkNvcmU6OmZvbnREYXRhRm9yR2VuZXJpY0ZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmdldEZvbnREYXRhKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjogSW5jcmVhc2UgcHJpb3JpdHkgb2YgLXdl
YmtpdC1sb2NhbGUgc2luY2UgaXQgYWZmZWN0cyBmb250CisgICAgICAgICogY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVG
b3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseURl
Y2xhcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KTogU2V0IHNjcmlwdCBpbiBmb250IGJhc2VkIG9uIC13ZWJraXQtbG9jYWxlCisgICAg
ICAgICogY3NzL0xvY2FsZVV0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpsb2Nh
bGVUb1NjcmlwdENvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlU2NyaXB0OjppZik6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGVTY3JpcHQ6OndoaWxlKToKKyAgICAgICAgKiBjc3MvTG9j
YWxlVXRpbHMuaDogQWRkZWQuCisgICAgICAgICogY3NzL0xvY2FsZVV0aWxzSUNVLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5vbmljYWxpemVTY3JpcHRDb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmxvY2FsZVRvU2NyaXB0Q29kZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdCk6IEZh
bGxiYWNrIHRvIFVTQ1JJUFRfQ09NTU9OCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dERlc2NyaXB0aW9uLmg6IEFkZCBtX3NjcmlwdAorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uOjpGb250RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uOjpzY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uOjpzZXRTY3Jp
cHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uOjpvcGVyYXRvcj09KToKKwog
MjAxMS0wNy0wNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbU2hhZG93Q29udGVudEVsZW1lbnRdIFJlZHVuZGFudCBSZW5kZXJUZXh0IG9iamVjdHMgYXJl
IGNyZWF0ZWQgb24gdGhlIGNvbnRlbnQgYm91bmRhcmllcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDBhYzVhNWE3YzBhZjAwMTA2MWRmM2E4NmFhMWY1ZWFkNTZmN2IyNzQuLjQ3
ZTRjYTE0MTEzMGJkNWQ0ZTZjNDRkNGU1OTNkNzUwNDk3Y2M3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMTAxMyw2ICsxMDEzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhbWlseVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250VmFsdWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmggXAor
CVNvdXJjZS9XZWJDb3JlL2Nzcy9Mb2NhbGVVdGlscy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nz
cy9Mb2NhbGVVdGlscy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuaCBcCiAJU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cAppbmRleCBkNTQ0NDc4MGMzMDI2NzQ5MDc3ZjVlMWYwNWQ1OWNjNjMxZjZjYmVkLi42
MWFhMDc0YzA3MzExM2VlMjEwYTNkZTdhZTEyMjAwMjRjZGRlNWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMTYzNiw2ICsxNjM2LDcgQEAKIAogICAgICAgICBb
J2V4Y2x1ZGUnLCAnQWxsSW5PbmVcXC5jcHAkJ10sCiAKKyAgICAgICAgWydleGNsdWRlJywgJ2Nz
cy9Mb2NhbGVVdGlsc1xcLmNwcCQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ2RvbS9TdGF0aWNT
dHJpbmdMaXN0XFwuY3BwJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnZG9tL2RlZmF1bHQvUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWxcXC4oY3BwfGgpJCddLAogICAgICAgICBbJ2V4Y2x1ZGUn
LCAnZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW1cXC5jcHAkJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
OWRhODE1MWEzNDc5ODU0ZDkxNTYxNGIxMTJiODBhOGQzNDgwZjY0MC4uYmM1NDU4ZWI0ZDViNTNk
ODk1YWZhY2RjYzMwMzcyYTEzNWJhNWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjM2OCw2ICsy
MzY4LDkgQEAKICAgICAgICAgICAgICdjc3MvRm9udEZhbWlseVZhbHVlLmgnLAogICAgICAgICAg
ICAgJ2Nzcy9Gb250VmFsdWUuY3BwJywKICAgICAgICAgICAgICdjc3MvRm9udFZhbHVlLmgnLAor
ICAgICAgICAgICAgJ2Nzcy9Mb2NhbGVVdGlscy5oJywKKyAgICAgICAgICAgICdjc3MvTG9jYWxl
VXRpbHMuY3BwJywKKyAgICAgICAgICAgICdjc3MvTG9jYWxlVXRpbHNJQ1UuY3BwJywKICAgICAg
ICAgICAgICdjc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwJywKICAgICAgICAgICAgICdjc3MvTWVk
aWFGZWF0dXJlTmFtZXMuaCcsCiAgICAgICAgICAgICAnY3NzL01lZGlhTGlzdC5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCA0NTUwNGIxM2Q3Yzc5NGZmNjExM2ZiOWQ0ZGEzYmM0NTE5YWMwNWNmLi45
ZjQwNjM4MzNiYjhjMjg4MTU1MzcyNDBiYzUyMmI1MGQwNmU2YmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtNDI4LDYgKzQyOCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3Bw
IFwKICAgICBjc3MvRm9udEZhbWlseVZhbHVlLmNwcCBcCiAgICAgY3NzL0ZvbnRWYWx1ZS5jcHAg
XAorICAgIGNzcy9Mb2NhbGVVdGlscy5jcHAgXAogICAgIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5j
cHAgXAogICAgIGNzcy9NZWRpYUxpc3QuY3BwIFwKICAgICBjc3MvTWVkaWFRdWVyeS5jcHAgXApA
QCAtMTQxNSw2ICsxNDE2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1ZhbHVlTGlzdC5o
IFwKICAgICBjc3MvRm9udEZhbWlseVZhbHVlLmggXAogICAgIGNzcy9Gb250VmFsdWUuaCBcCisg
ICAgY3NzL0xvY2FsZVV0aWxzLmggXAogICAgIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5oIFwKICAg
ICBjc3MvTWVkaWFMaXN0LmggXAogICAgIGNzcy9NZWRpYVF1ZXJ5LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxM2IwNzU5ZjMwOGI5ZmI4
ZThmOTM5ZDAzYmQ3ODc4ZTc4MmNjMmUwLi41NTBkMGE3Y2ZjYjMzZGVhODI5NTc2ZTkzNGU4YzE0
NzdmZTJjYWY3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMzI4MDYsNiArMzI4MDYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXExvY2FsZVV0aWxzLmNwcCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXExvY2FsZVV0aWxzLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xN
ZWRpYUZlYXR1cmVOYW1lcy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiYzVjMWM1ZTc5
Zjk4MDhhNGU4NzY5N2ExNmFhNjRkNzIzMDllNjQuLjU0NmNhYTM0YmEwNTU0MGI5YzIwNzkxM2Qx
ODUxNzBlNzgwMTYwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE2ODIsNiArMTY4Miw4IEBACiAJCTc2Q0REMkY1MTEwM0RB
NjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZDREQyRUYxMTAzREE2NjAwNjgwNTIx
IC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmggKi87IH07CiAJCTc2Q0REMkY2MTEwM0RB
NjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZDREQyRjAxMTAzREE2NjAwNjgw
NTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAgKi87IH07CiAJCTc2Q0REMkY3
MTEwM0RBNjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2Q0REMkYxMTEwM0RBNjYw
MDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uaCAqLzsgfTsKKwkJNzZGNjRG
NkYxM0MyQzRGRTAwODNFQjYwIC8qIExvY2FsZVV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RjY0RjZFMTNDMkM0RkUwMDgzRUI2MCAvKiBM
b2NhbGVVdGlscy5jcHAgKi87IH07CisJCTc2RjY0RjcxMTNDMkM1MUEwMDgzRUI2MCAvKiBMb2Nh
bGVVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzZGNjRGNzAxM0MyQzUxQTAwODNFQjYwIC8qIExvY2FsZVV0aWxzLmggKi87IH07CiAJCTc2RkMy
QjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZGQzJCMDgxMjM3MERBMDAwNkE5OTFBIC8q
IERPTVRva2VuTGlzdC5jcHAgKi87IH07CiAJCTc2RkMyQjBDMTIzNzBEQTAwMDZBOTkxQSAvKiBE
T01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc2RkMyQjA5MTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuaCAqLzsgfTsKIAkJ
NzZGRjE3RTMxMTIzNTY3MzAwMUQ2MUI1IC8qIFBsdWdpblZpZXdOb25lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RkYxN0UyMTEyMzU2NzMwMDFE
NjFCNSAvKiBQbHVnaW5WaWV3Tm9uZS5jcHAgKi87IH07CkBAIC04MjM4LDYgKzgyNDAsOCBAQAog
CQk3NkNERDJFRjExMDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1lbnVMaXN0
UG9wdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZDREQyRjAxMTAzREE2NjAw
NjgwNTIxIC8qIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkNERDJGMTExMDNEQTY2MDA2ODA1MjEgLyog
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3NkY2NEY2RTEzQzJDNEZFMDA4M0VCNjAgLyogTG9jYWxlVXRpbHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxlVXRpbHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NkY2NEY3MDEzQzJDNTFBMDA4M0VCNjAgLyogTG9j
YWxlVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxlVXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZGQzJCMDgxMjM3MERBMDAwNkE5OTFB
IC8qIERPTVRva2VuTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01Ub2tlbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkZDMkIw
OTEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTVRva2VuTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NkZDMkIwQTEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBET01Ub2tlbkxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTkyMTEsNiArMTkyMTUsOCBAQAogCQkJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAv
KiBmdWxsc2NyZWVuLmNzcyAqLywKIAkJCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcwRTMgLyogZnVs
bHNjcmVlblF1aWNrVGltZS5jc3MgKi8sCiAJCQkJOTNDQTRDOTkwOURGOTNGQTAwREY4Njc3IC8q
IGh0bWwuY3NzICovLAorCQkJCTc2RjY0RjZFMTNDMkM0RkUwMDgzRUI2MCAvKiBMb2NhbGVVdGls
cy5jcHAgKi8sCisJCQkJNzZGNjRGNzAxM0MyQzUxQTAwODNFQjYwIC8qIExvY2FsZVV0aWxzLmgg
Ki8sCiAJCQkJOTNDQTRDOUEwOURGOTNGQTAwREY4Njc3IC8qIG1ha2UtY3NzLWZpbGUtYXJyYXlz
LnBsICovLAogCQkJCTkzQ0E0QzlCMDlERjkzRkEwMERGODY3NyAvKiBtYWtlcHJvcC5wbCAqLywK
IAkJCQk5M0NBNEM5RDA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXZhbHVlcy5wbCAqLywKQEAgLTIz
MDg4LDYgKzIzMDk0LDcgQEAKIAkJCQkwODYzOTUxNjEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5p
bWF0ZWRQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzFBMkY5QzEzQjZGMkIwMDA3NzkxRTQg
LyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzZGNjRGNzExM0MyQzUxQTAwODNFQjYwIC8qIExvY2FsZVV0aWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODU1LDYgKzI1ODYyLDcgQEAKIAkJCQk0MzFBMzAyMTEz
Qjg5RENDMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQzMUEzMDg4MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJv
b2xlYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNGNkZEOTYxM0JDRDBCMTAwMjI0MDUyIC8q
IFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NkY2NEY2RjEzQzJD
NEZFMDA4M0VCNjAgLyogTG9jYWxlVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDFiZjRmY2EzNTM2MzY2ZjY0NjY5NmIwZmIy
NWUyZjU4NmQ4MTdiMjEuLjI2ODg5NTEwYTVhMmJjMGY0N2E0NjM4MzhkZDM0ODFlMTRkNGVmZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC0zODksMTggKzM4OSwx
OSBAQCBzdGF0aWMgRm9udERhdGEqIGZvbnREYXRhRm9yR2VuZXJpY0ZhbWlseShEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEZvbnREZXNjcmlwdAogICAgICAgICByZXR1cm4gMDsKICAgICAKICAg
ICBBdG9taWNTdHJpbmcgZ2VuZXJpY0ZhbWlseTsKKyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSBm
b250RGVzY3JpcHRpb24uc2NyaXB0KCk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQt
c2VyaWYiKQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNlcmlmRm9udEZhbWls
eSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNlcmlmRm9udEZhbWlseShz
Y3JpcHQpOwogICAgIGVsc2UgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtc2Fucy1zZXJpZiIp
Ci0gICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+c2Fuc1NlcmlmRm9udEZhbWlseSgp
OworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNhbnNTZXJpZkZvbnRGYW1pbHko
c2NyaXB0KTsKICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LWN1cnNpdmUiKQot
ICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmN1cnNpdmVGb250RmFtaWx5KCk7Cisg
ICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+Y3Vyc2l2ZUZvbnRGYW1pbHkoc2NyaXB0
KTsKICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LWZhbnRhc3kiKQotICAgICAg
ICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZhbnRhc3lGb250RmFtaWx5KCk7CisgICAgICAg
IGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+ZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KTsKICAg
ICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LW1vbm9zcGFjZSIpCi0gICAgICAgIGdl
bmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCk7CisgICAgICAgIGdlbmVy
aWNGYW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KHNjcmlwdCk7CiAgICAgZWxzZSBp
ZiAoZmFtaWx5TmFtZSA9PSAiLXdlYmtpdC1zdGFuZGFyZCIpCi0gICAgICAgIGdlbmVyaWNGYW1p
bHkgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CisgICAgICAgIGdlbmVyaWNGYW1p
bHkgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KHNjcmlwdCk7CiAKICAgICBpZiAoIWdl
bmVyaWNGYW1pbHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZm9udENhY2hlKCktPmdldENh
Y2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgZ2VuZXJpY0ZhbWlseSk7CkBAIC00OTUsNiAr
NDk2LDggQEAgRm9udERhdGEqIENTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGMKICAgICBpZiAobV9mb250RmFjZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGlmIChmYW1pbHlOYW1lLnN0YXJ0c1dpdGgoIi13ZWJraXQtIikp
CiAgICAgICAgICAgICByZXR1cm4gZm9udERhdGFGb3JHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQs
IGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CisgICAgICAgIGlmIChmb250RGVzY3JpcHRp
b24uZ2VuZXJpY0ZhbWlseSgpID09IEZvbnREZXNjcmlwdGlvbjo6U3RhbmRhcmRGYW1pbHkgJiYg
IWZvbnREZXNjcmlwdGlvbi5pc1NwZWNpZmllZEZvbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBm
b250RGF0YUZvckdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCAiLXdl
YmtpdC1zdGFuZGFyZCIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggNzc0N2Q0OWFmZWQxNTQ2YTBkZTU2OWY5ZWIw
OTUyNWMyOTZlNDFkOC4uZGE2Nzk2MzVjZDY4ZjQ0ZGI0NGY0YTI2OGMwODljNzQ0ZGQyYzIwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTIxLDYgKzIxLDcgQEAg
Zm9udC12YXJpYW50CiBmb250LXdlaWdodAogdGV4dC1yZW5kZXJpbmcKIC13ZWJraXQtZm9udC1z
bW9vdGhpbmcKKy13ZWJraXQtbG9jYWxlCiAtd2Via2l0LXRleHQtb3JpZW50YXRpb24KIC1lcHVi
LXRleHQtb3JpZW50YXRpb24gPSAtd2Via2l0LXRleHQtb3JpZW50YXRpb24KIC13ZWJraXQtdGV4
dC1zaXplLWFkanVzdApAQCAtMjUwLDcgKzI1MSw2IEBAIHotaW5kZXgKIC13ZWJraXQtbGluZS1i
b3gtY29udGFpbgogLXdlYmtpdC1saW5lLWJyZWFrCiAtd2Via2l0LWxpbmUtY2xhbXAKLS13ZWJr
aXQtbG9jYWxlCiAtd2Via2l0LWxvZ2ljYWwtd2lkdGgKIC13ZWJraXQtbG9naWNhbC1oZWlnaHQK
IC13ZWJraXQtbWFyZ2luLWFmdGVyLWNvbGxhcHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKaW5kZXggMWMxZTkzMTBlOGY2MDQxODJiMmU4ZWM1YzM4NjVkM2JjZTI2N2Y2
YS4uMzNlNjcxYzljNzBiOWQ0NDE2NDJhNDZiMWJjNjA4YWQ2ZmIwNGUwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUg
IkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJLZXlmcmFtZUxpc3QuaCIKICNpbmNs
dWRlICJMaW5rSGFzaC5oIgorI2luY2x1ZGUgIkxvY2FsZVV0aWxzLmgiCiAjaW5jbHVkZSAiTWF0
cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJNYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb24uaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKQEAgLTEyNzYsNiArMTI3Nyw3IEBAIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0Rm9yY2VC
YWNrZ3JvdW5kc1RvV2hpdGUodHJ1ZSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3Rk
Zm9udCA9IHNldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKICAgICAgICAgaWYgKCFzdGRm
b250LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNG
YW1pbHkoRm9udERlc2NyaXB0aW9uOjpTdGFuZGFyZEZhbWlseSk7CiAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoc3RkZm9udCk7CiAgICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5hcHBlbmRGYW1pbHkoMCk7CiAgICAgICAg
IH0KQEAgLTM0MzksNyArMzQ0MSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNs
YXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlCiAKICAgICAg
ICAgICAgICAgICBpZiAoYXBwbHlGaXJzdCkgewogICAgICAgICAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChmaXJzdENTU1Byb3BlcnR5ID09IENTU1Byb3BlcnR5Q29sb3IsIENTU19jb2xvcl9p
c19maXJzdF9wcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKENT
U1Byb3BlcnR5Wm9vbSA9PSBDU1NQcm9wZXJ0eUNvbG9yICsgMTQsIENTU196b29tX2lzX2VuZF9v
Zl9maXJzdF9wcm9wX3JhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
Q1NTUHJvcGVydHlab29tID09IENTU1Byb3BlcnR5Q29sb3IgKyAxNSwgQ1NTX3pvb21faXNfZW5k
X29mX2ZpcnN0X3Byb3BfcmFuZ2UpOwogICAgICAgICAgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQgPT0gQ1NTUHJvcGVydHlab29tICsgMSwgQ1NTX2xpbmVf
aGVpZ2h0X2lzX2FmdGVyX3pvb20pOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIGdpdmUgc3Bl
Y2lhbCBwcmlvcml0eSB0byBmb250LXh4eCwgY29sb3IgcHJvcGVydGllcywgZXRjCkBAIC00OTQz
LDYgKzQ5NDUsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBp
ZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICAgICAgbV9zdHlsZS0+c2V0TG9jYWxlKG51bGxB
dG9tKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9zdHlsZS0+c2V0TG9jYWxlKHByaW1p
dGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0U2NyaXB0KGxvY2FsZVRvU2NyaXB0Q29kZShtX3N0eWxlLT5sb2NhbGUo
KSkpOworICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbikpCisgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0xvY2FsZVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Mb2NhbGVVdGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFhMDRmY2NhMDRjMWJkMzc4MzFhN2FjZTkz
NTk0MGE3ZmI0YjNmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Mb2Nh
bGVVdGlscy5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMb2NhbGVVdGlscy5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitVU2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGUoY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbGUpCit7CisgICAgc3RydWN0IExvY2FsZVNjcmlwdCB7CisgICAgICAg
IGNvbnN0IGNoYXIqIGxvY2FsZTsKKyAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0OworICAgIH07
CisKKyAgICAvLyBUT0RPOiBOZWVkIHRvIGFkZCBhbGwgdGhlIGxhbmd1YWdlcy4KKyAgICBjb25z
dCBMb2NhbGVTY3JpcHQgbG9jYWxlU2NyaXB0TGlzdFtdID0geworICAgICAgICB7ICJkZSIsIFVT
Q1JJUFRfTEFUSU4gfSwKKyAgICAgICAgeyAiZW4iLCBVU0NSSVBUX0xBVElOIH0sCisgICAgICAg
IHsgImVzIiwgVVNDUklQVF9MQVRJTiB9LAorICAgICAgICB7ICJmciIsIFVTQ1JJUFRfTEFUSU4g
fSwKKyAgICAgICAgeyAiamEiLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BIH0sCisgICAg
ICAgIHsgImtvIiwgVVNDUklQVF9IQU5HVUwgfSwKKyAgICAgICAgeyAicnUiLCBVU0NSSVBUX0NZ
UklMTElDIH0sCisgICAgICAgIHsgInpoIiwgVVNDUklQVF9IQU4gfSwKKyAgICAgICAgeyAiemhf
Y24iLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOIH0sCisgICAgICAgIHsgInpoX2hhbnMiLCBVU0NS
SVBUX1NJTVBMSUZJRURfSEFOIH0sCisgICAgICAgIHsgInpoX2hhbnQiLCBVU0NSSVBUX1RSQURJ
VElPTkFMX0hBTiB9LAorICAgICAgICB7ICJ6aF9oayIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFO
IH0sCisgICAgICAgIHsgInpoX3R3IiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4gfQorICAgIH07
CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBVU2NyaXB0Q29kZT4gTG9jYWxlU2NyaXB0
TWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTG9jYWxlU2NyaXB0TWFwLCBsb2NhbGVTY3Jp
cHRNYXAsICgpKTsKKyAgICBpZiAobG9jYWxlU2NyaXB0TWFwLmlzRW1wdHkoKSkgeworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihsb2NhbGVTY3JpcHRMaXN0KSAvIHNpemVv
Zihsb2NhbGVTY3JpcHRMaXN0WzBdKTsgKytpKQorICAgICAgICAgICAgbG9jYWxlU2NyaXB0TWFw
LnNldChsb2NhbGVTY3JpcHRMaXN0W2ldLmxvY2FsZSwgbG9jYWxlU2NyaXB0TGlzdFtpXS5zY3Jp
cHQpOworICAgIH0KKworICAgIFN0cmluZyBjYW5vbmljYWxMb2NhbGUgPSBsb2NhbGUuc3RyaW5n
KCkubG93ZXIoKS5yZXBsYWNlKCctJywgJ18nKTsKKyAgICB3aGlsZSAoIWNhbm9uaWNhbExvY2Fs
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFVTY3JpcHRDb2RlPjo6aXRl
cmF0b3IgaXQgPSBsb2NhbGVTY3JpcHRNYXAuZmluZChjYW5vbmljYWxMb2NhbGUpOworICAgICAg
ICBpZiAoaXQgIT0gbG9jYWxlU2NyaXB0TWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7CisgICAgICAgIHNpemVfdCBwb3MgPSBjYW5vbmljYWxMb2NhbGUucmV2ZXJzZUZp
bmQoJ18nKTsKKyAgICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYW5vbmljYWxMb2NhbGUgPSBjYW5vbmljYWxMb2NhbGUuc3Vic3RyaW5nKDAs
IHBvcyk7CisgICAgfQorICAgIHJldHVybiBVU0NSSVBUX0NPTU1PTjsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xvY2FsZVV0aWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTG9jYWxlVXRpbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTI3Y2Y2
YjIyZTJkMDE4YWFiOTAyODhiYWJiYzE4MGY0YjViMDg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0xvY2FsZVV0aWxzLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
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
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9j
YWxlVXRpbHNfaAorI2RlZmluZSBMb2NhbGVVdGlsc19oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworVVNjcmlwdENvZGUgbG9jYWxlVG9TY3JpcHRDb2RlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlKTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Mb2NhbGVVdGlsc0lDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTG9jYWxl
VXRpbHNJQ1UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNmZlMzRjZmE2ODBkMjhlZDUyODZiOTIwZDY3OGQx
ZmNlNWI1YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTG9jYWxlVXRp
bHNJQ1UuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TG9jYWxlVXRpbHMuaCIKKworI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitVU2NyaXB0Q29kZSBjYW5vbmljYWxpemVTY3JpcHRDb2Rl
KFVTY3JpcHRDb2RlIHNjcmlwdENvZGUpCit7CisgICAgc3dpdGNoIChzY3JpcHRDb2RlKSB7Cisg
ICAgY2FzZSBVU0NSSVBUX0hJUkFHQU5BOgorICAgIGNhc2UgVVNDUklQVF9LQVRBS0FOQToKKyAg
ICBjYXNlIFVTQ1JJUFRfSkFQQU5FU0U6CisgICAgICAgIHJldHVybiBVU0NSSVBUX0tBVEFLQU5B
X09SX0hJUkFHQU5BOworICAgIGNhc2UgVVNDUklQVF9LT1JFQU46CisgICAgICAgIHJldHVybiBV
U0NSSVBUX0hBTkdVTDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc2NyaXB0Q29kZTsK
KyAgICB9Cit9CisKK1VTY3JpcHRDb2RlIGxvY2FsZVRvU2NyaXB0Q29kZShjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSkKK3sKKyAgICBpZiAobG9jYWxlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIFVTQ1JJUFRfQ09NTU9OOworCisgICAgY2hhciBtYXhpbWl6ZWRMb2NhbGVbVUxPQ19GVUxM
TkFNRV9DQVBBQ0lUWV07CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgdWxvY19hZGRMaWtlbHlTdWJ0YWdzKGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBt
YXhpbWl6ZWRMb2NhbGUsIHNpemVvZihtYXhpbWl6ZWRMb2NhbGUpLCAmc3RhdHVzKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiBVU0NSSVBUX0NPTU1PTjsKKwor
ICAgIGNoYXIgc2NyaXB0W1VMT0NfU0NSSVBUX0NBUEFDSVRZXTsKKyAgICB1bG9jX2dldFNjcmlw
dChtYXhpbWl6ZWRMb2NhbGUsIHNjcmlwdCwgc2l6ZW9mKHNjcmlwdCksICZzdGF0dXMpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIFVTQ1JJUFRfQ09NTU9OOwor
CisgICAgVVNjcmlwdENvZGUgc2NyaXB0Q29kZTsKKyAgICB1c2NyaXB0X2dldENvZGUoc2NyaXB0
LCAmc2NyaXB0Q29kZSwgMSwgJnN0YXR1cyk7CisgICAgLy8gSWdub3JlIGVycm9yIHRoYXQgbXVs
dGlwbGUgc2NyaXB0cyBjb3VsZCBiZSByZXR1cm5lZCwgc2luY2Ugd2Ugb25seSB3YW50CisgICAg
Ly8gb25lIHNjcmlwdC4KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykgJiYgc3RhdHVzICE9IFVf
QlVGRkVSX09WRVJGTE9XX0VSUk9SKQorICAgICAgICByZXR1cm4gVVNDUklQVF9DT01NT047CisK
KyAgICByZXR1cm4gY2Fub25pY2FsaXplU2NyaXB0Q29kZShzY3JpcHRDb2RlKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBhYzAwMTU2
OTliMjNhMmJiMWM3ZDBkZWEyNzBmNTUzYWQxZmRiNDRjLi5lYWM1NjMwM2EwODA1OWVmMzEyMTUw
ZWIxMTQxOTljMjU5YTFmMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtNjYsNyAr
NjYsOSBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0R2VuZXJpY0ZvbnRG
YW1pbHlGb3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9udAogICAgIFNjcmlwdEZvbnRGYW1pbHlNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZm9udE1hcC5maW5kKHN0YXRpY19jYXN0PGludD4oc2NyaXB0
KSk7CiAgICAgaWYgKGl0ICE9IGZvbnRNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOwotICAgIHJldHVybiBlbXB0eUF0b207CisgICAgaWYgKHNjcmlwdCA9PSBVU0NSSVBUX0NP
TU1PTikKKyAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICByZXR1cm4gZ2V0R2VuZXJpY0Zv
bnRGYW1pbHlGb3JTY3JpcHQoZm9udE1hcCwgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgVVNF
KFNBRkFSSV9USEVNRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udERlc2NyaXB0aW9uLmgKaW5kZXggOTA4ZWJhMjBjOTQyNzE0OWVjZTBlZDI4ZTFkNjUwN2Qx
MTAzNGFiMC4uNDQ2YjRhNTJkNTc4OTE2NTQzYWJmNGExNWM3NDMwMjE3MTRhODAyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgK
QEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZm9udFNtb290aGluZyhBdXRv
U21vb3RoaW5nKQogICAgICAgICAsIG1fdGV4dFJlbmRlcmluZyhBdXRvVGV4dFJlbmRlcmluZykK
ICAgICAgICAgLCBtX2lzU3BlY2lmaWVkRm9udChmYWxzZSkKKyAgICAgICAgLCBtX3NjcmlwdChV
U0NSSVBUX0NPTU1PTikKICAgICB7CiAgICAgfQogCkBAIC0xMDgsNiArMTA5LDcgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGtleXdvcmRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9rZXl3b3JkU2l6
ZTsgfQogICAgIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxGb250U21vb3RoaW5nTW9kZT4obV9mb250U21vb3RoaW5nKTsgfQogICAg
IFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmluZyk7IH0KKyAgICBVU2Ny
aXB0Q29kZSBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQogCiAgICAgRm9udFRy
YWl0c01hc2sgdHJhaXRzTWFzaygpIGNvbnN0OwogICAgIGJvb2wgaXNTcGVjaWZpZWRGb250KCkg
Y29uc3QgeyByZXR1cm4gbV9pc1NwZWNpZmllZEZvbnQ7IH0KQEAgLTEzOCw2ICsxNDAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihGb250T3JpZW50YXRpb24gb3JpZW50YXRp
b24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBzZXRUZXh0T3Jp
ZW50YXRpb24oVGV4dE9yaWVudGF0aW9uIHRleHRPcmllbnRhdGlvbikgeyBtX3RleHRPcmllbnRh
dGlvbiA9IHRleHRPcmllbnRhdGlvbjsgfQogICAgIHZvaWQgc2V0V2lkdGhWYXJpYW50KEZvbnRX
aWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50KSB7IG1fd2lkdGhWYXJpYW50ID0gd2lkdGhWYXJpYW50
OyB9CisgICAgdm9pZCBzZXRTY3JpcHQoVVNjcmlwdENvZGUgcykgeyBtX3NjcmlwdCA9IHM7IH0K
IAogcHJpdmF0ZToKICAgICBGb250RmFtaWx5IG1fZmFtaWx5TGlzdDsgLy8gVGhlIGxpc3Qgb2Yg
Zm9udCBmYW1pbGllcyB0byBiZSB1c2VkLgpAQCAtMTY4LDYgKzE3MSw3IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9mb250U21vb3RoaW5nIDogMjsgLy8gRm9udFNtb290aGluZ01vZGUKICAg
ICB1bnNpZ25lZCBtX3RleHRSZW5kZXJpbmcgOiAyOyAvLyBUZXh0UmVuZGVyaW5nTW9kZQogICAg
IGJvb2wgbV9pc1NwZWNpZmllZEZvbnQgOiAxOyAvLyBUcnVlIGlmIGEgd2ViIHBhZ2Ugc3BlY2lm
aWVzIGEgbm9uLWdlbmVyaWMgZm9udCBmYW1pbHkgYXMgdGhlIGZpcnN0IGZvbnQgZmFtaWx5Lgor
ICAgIFVTY3JpcHRDb2RlIG1fc2NyaXB0OyAvLyBVc2VkIHRvIGhlbHAgY2hvb3NlIGFuIGFwcHJv
cHJpYXRlIGZvbnQgZm9yIGdlbmVyaWMgZm9udCBmYW1pbGllcy4KIH07CiAKIGlubGluZSBib29s
IEZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVy
KSBjb25zdApAQCAtMTg4LDcgKzE5Miw4IEBAIGlubGluZSBib29sIEZvbnREZXNjcmlwdGlvbjo6
b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdAogICAgICAgICAm
JiBtX2lzU3BlY2lmaWVkRm9udCA9PSBvdGhlci5tX2lzU3BlY2lmaWVkRm9udAogICAgICAgICAm
JiBtX29yaWVudGF0aW9uID09IG90aGVyLm1fb3JpZW50YXRpb24KICAgICAgICAgJiYgbV90ZXh0
T3JpZW50YXRpb24gPT0gb3RoZXIubV90ZXh0T3JpZW50YXRpb24KLSAgICAgICAgJiYgbV93aWR0
aFZhcmlhbnQgPT0gb3RoZXIubV93aWR0aFZhcmlhbnQ7CisgICAgICAgICYmIG1fd2lkdGhWYXJp
YW50ID09IG90aGVyLm1fd2lkdGhWYXJpYW50CisgICAgICAgICYmIG1fc2NyaXB0ID09IG90aGVy
Lm1fc2NyaXB0OwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101680</attachid>
            <date>2011-07-21 18:00:51 -0700</date>
            <delta_ts>2011-07-25 15:52:51 -0700</delta_ts>
            <desc>update patch after ap&apos;s review</desc>
            <filename>bug-10874-20110721180049.patch</filename>
            <type>text/plain</type>
            <size>29025</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE1MjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggN2M3ODYw
Mzk5YTRhZmM3YWJhNjE2YzgzNTk1MTVmMDBjMGExYWZlYS4uYTg4ZDhjNTUxOTU0ODgwNWNhNjJj
OGZhY2VmNmEwNzJiYmQ1OTJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNTYsNiArMTE1
Niw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0
LmNwcAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4
dC9MaW5lRW5kaW5nLmNwcAorICAgIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5n
RGVmYXVsdC5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAg
IHBsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0
L1F1b3RlZFByaW50YWJsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZDQzZmJmNzI2ZjFmYWE1ZTNiODQ0
NzM1NTg4NGViZGY0ZWMyNDc4Li5hMTc4ZTFhNmI4YTdmMGU0MzVlODllODY4YmQzZjUyNDU4MWJh
OGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDctMjEgIE1hdHQgRmFsa2Vu
aGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSAtd2Via2l0LWxvY2Fs
ZSBmb3IgZm9udCBzZWxlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDg3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluZmVyIGEgc2NyaXB0IGZyb20gLXdlYmtpdC1sb2NhbGUgdG8gdXNlIHRv
IGNob29zZSBhIGZvbnQgZm9yIGdlbmVyaWMKKyAgICAgICAgZm9udCBmYW1pbGllcyBhbmQgdGhl
IGRlZmF1bHQgdW5zdHlsZWQgZm9udC4gIFRoZSBmb250IGlzIHJldHJpZXZlZAorICAgICAgICBm
cm9tIHBlci1zY3JpcHQgZm9udCBzZXR0aW5ncyAoc2VlIGJ1ZyAyMDc5NykuICBTaW5jZSB0aGVz
ZSBzZXR0aW5ncworICAgICAgICBoYXZlIG5vdCBjaGFuZ2VkIHRoZXJlIHNob3VsZCBiZSBubyB2
aXNpYmxlIGVmZmVjdCB5ZXQuICAgICAgICAKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcDogVXNlIHNjcmlwdCB3aGVuIGdldHRpbmcgZm9udCBmcm9tIFNldHRpbmdzCisg
ICAgICAgIChXZWJDb3JlOjpmb250RGF0YUZvckdlbmVyaWNGYW1pbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0YSk6CisgICAgICAgICogY3NzL0NTU1By
b3BlcnR5TmFtZXMuaW46IEluY3JlYXNlIHByaW9yaXR5IG9mIC13ZWJraXQtbG9jYWxlIHNpbmNl
IGl0IGFmZmVjdHMgZm9udAorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6IFNldCBzY3Jp
cHQgaW4gZm9udCBiYXNlZCBvbiAtd2Via2l0LWxvY2FsZQorICAgICAgICAqIHBhZ2UvU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQp
OiBGYWxsYmFjayB0byBVU0NSSVBUX0NPTU1PTgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnREZXNjcmlwdGlvbi5oOiBBZGQgbV9zY3JpcHQKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRE
ZXNjcmlwdGlvbjo6Rm9udERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbjo6c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6c2V0
U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpsb2NhbGVUb1NjcmlwdENvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxlU2NyaXB0OjppZik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVT
Y3JpcHQ6OndoaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFw
cGluZ0lDVS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2Fub25pY2FsaXplU2NyaXB0
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGVUb1NjcmlwdENvZGUpOgorCiAyMDExLTA3
LTIxICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVcGRhdGUg
d2ViZ2xjb250ZXh0bG9zdCAvIHdlYmdsY29udGV4dHJlc3RvcmVkIGRlbGl2ZXJ5IHRvIG1hdGNo
IHNwZWMgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNmQ0YzY0ZmY2
ZTMxZDhhNDIyMGRiMzdlZGI5NWVkMjk2MGJiYmQ0ZC4uODEzMGYxOGEzZDQzZWMzMjM3YTkzYTBk
YzE3OWJjM2Y1ZmM2NTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNzkx
LDYgKzI3OTEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTGluZUVuZGluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRv
U2NyaXB0TWFwcGluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRv
U2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsaXplZERhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6
ZWREYXRlTm9uZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCAxZjJk
NjcyNmNmZDVlY2ZjN2Q0Y2NkNDAxNGEwMmY3MDM4MzEwNjJiLi40MDNjMDI3OGFmMjI1ZWRiNWU1
MGI3YzBmYjc3MTgwMGMxNDhmOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cApAQCAtMTM1NSw2ICsxMzU1LDcgQEAKICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3Jt
L2ltYWdlLWVuY29kZXJzL1BOR0ltYWdlRW5jb2RlclxcLihjcHB8aCkkJ10sCiAgICAgICAgIFsn
ZXhjbHVkZScsICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlXFwuY3BwJCddLAogICAg
ICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW1cXC5jcHAkJ10s
CisgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGlu
Z0RlZmF1bHRcXC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS90ZXh0L0xv
Y2FsaXplZE51bWJlck5vbmVcXC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9y
bS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9yTm9uZVxcLmNwcCQnXSwKICAgICAgIF0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggNWE4MzAzNTY4NjQ3YjgxNzBjYmE4Yzk1N2NjYWUxODcxMzVhYTY2OS4u
NDBlYmRjMGNhYjQ2OGNjYmQ3NDIwNjkwZjhmYjdmNDkxOTg2ZWM2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNDk4Myw2ICs0OTgzLDkgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0h5cGhl
bmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0lDVS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
dGV4dC9Mb2NhbGl6ZWROdW1iZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGQ1YzczNWRiYzQyMGYz
ZTQzY2Q5NmMxM2Q5ZTMxMDA4Y2YwMGY2MzIuLmE0MDIzNjNiNWJjODcyNGNiMjY4YTdjMGE4ZDI3
MGM3MmM2YmViYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC05NTksNiArOTU5LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0Jp
ZGlDb250ZXh0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAgXAorICAg
IHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmNwcCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVk
TnVtYmVyTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCBc
CkBAIC0yMDI0LDYgKzIwMjUsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJXcml0ZUJhdGNoLmggXAogICAgIHBsYXRmb3JtL3RleHQvQmlkaVJ1bkxpc3QuaCBc
CiAgICAgcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmggXAorICAgIHBsYXRmb3JtL3RleHQvTG9j
YWxlVG9TY3JpcHRNYXBwaW5nLmggXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGll
bnQuaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9Vbmljb2RlQmlkaS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggYTQ4ZTBmNDEyM2JlMjhkNTNiMmFjZTA3YmQ1Yjc2NzU0MWJiNWEw
OS4uNzE4ZjIyZWQ5YzRhZDU4Y2NhNGNiMzlkN2NkODUyZDdkMTJjYjNjOCAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMxNDQ1LDYgKzMxNDQ1
LDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVx0ZXh0XExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwIgorCQkJ
CQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cdGV4dFxMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcTG9jYWxpemVkRGF0
ZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM5MWUzYjc0MDcxM2IzNWNjMTZhMWQ0NTk4
NDRjNmExMDVkOWNkYWMuLmY0Yzg2MjJlNjM3YTljMTk4ZWQ1YWQ0ZDg1ODlkYWQ5MjczMTdkOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE3MDUsNiArMTcwNSw4IEBACiAJCTc1NzkzRUQ0MEQwQ0U4NUIwMDdGQzBBQyAvKiBE
T01NZXNzYWdlRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTc5M0VEMTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tICov
OyB9OwogCQk3NTc5M0VENTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1Nzkz
RUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovOyB9Owog
CQk3NTg5NzhFQzEyNzA5MEQ2MDA3NkQ1QTkgLyogU3BlZWNoSW5wdXRSZXN1bHQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU4OTc4RUExMjcwOTBE
NjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmNwcCAqLzsgfTsKKwkJNzYzM0E3MjYxM0Q4
QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYzM0E3MjQxM0Q4QjMzQTAwODUwMUI2IC8q
IExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovOyB9OworCQk3NjMzQTcyNzEzRDhCMzNBMDA4NTAx
QjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjMzQTcyNTEzRDhCMzNBMDA4NTAxQjYgLyog
TG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgKi87IH07CiAJCTc2MzdDNTQxMTEyRTdC
NzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQwMTEyRTdCNzQwMDNENkNE
QyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNzYzN0M1NDMxMTJF
N0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQyMTEyRTdCN0UwMDNENkNE
QyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87IH07CiAJCTc2N0Y5OUJFMTFBMTE5
NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRDExQTExOTRBMDA4MEM1
MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovOyB9OwpAQCAtODMwOSw2ICs4
MzExLDggQEAKIAkJNzU3OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudElu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01NZXNzYWdlRXZl
bnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTg5NzhFQTEyNzA5
MEQ2MDA3NkQ1QTkgLyogU3BlZWNoSW5wdXRSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoSW5wdXRSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3NTg5NzhFQjEyNzA5MEQ2MDA3NkQ1QTkgLyogU3BlZWNoSW5wdXRSZXN1
bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoSW5wdXRSZXN1bHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzYzM0E3MjQxM0Q4QjMzQTAwODUwMUI2
IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzYzM0E3MjUxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1
bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxlVG9TY3Jp
cHRNYXBwaW5nRGVmYXVsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MzdD
NTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjM3QzU0MjExMkU3QjdFMDAz
RDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODIzMCw2ICsxODIzNCw4IEBACiAJCQkJQTVBQkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8q
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovLAogCQkJCTg5QjVFQTlGMTFFODAwM0QwMEYy
MzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLywKIAkJCQk4OUI1RUFBMDExRTgwMDNEMDBGMjM2N0Ug
LyogTGluZUVuZGluZy5oICovLAorCQkJCTc2MzNBNzI0MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2Nh
bGVUb1NjcmlwdE1hcHBpbmcuaCAqLywKKwkJCQk3NjMzQTcyNTEzRDhCMzNBMDA4NTAxQjYgLyog
TG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgKi8sCiAJCQkJQTU3MzJCMEMxMzZBMTZD
NDAwNUM4RDdDIC8qIExvY2FsaXplZERhdGUuaCAqLywKIAkJCQlBNTczMkIwRTEzNkExNzE1MDA1
QzhEN0MgLyogTG9jYWxpemVkRGF0ZU5vbmUuY3BwICovLAogCQkJCUY1MTQyQzY4MTIzRjEyQjAw
MEY1QkQ0QyAvKiBMb2NhbGl6ZWROdW1iZXIuaCAqLywKQEAgLTIyMjExLDYgKzIyMjE3LDcgQEAK
IAkJCQk3RUU2ODQ2OTEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwNkU4MUVENzBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTg3ODU2ODEyMkNBMDY0MDAzQUFC
REEgLyogTG9jYWxGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk3NjMzQTcyNjEzRDhC
MzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzVDRkNBOTExRjc5MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1NzMyQjBEMTM2QTE2QzQwMDVDOEQ3QyAvKiBMb2NhbGl6ZWREYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTE0MkM2OTEyM0YxMkIwMDBGNUJENEMgLyogTG9jYWxp
emVkTnVtYmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MjEwLDYgKzI1MjE3LDcgQEAKIAkJCQk3
RUU2ODQ2ODEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA2RTgxRUVDMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4OTg3ODU2NzEyMkNBMDY0MDAzQUFCREEg
LyogTG9jYWxGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc2MzNBNzI3MTNEOEIz
M0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1NzMyQjBGMTM2QTE3MTUwMDVDOEQ3QyAvKiBMb2NhbGl6ZWREYXRlTm9uZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGNUNDNDJEQzEyRjgwMUNBMDBENUY3RTMgLyogTG9jYWxp
emVkTnVtYmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzA0NkUxQUMxMjA4QTlGRTAwQkEy
Q0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDFiZjRmY2EzNTM2MzY2ZjY0NjY5NmIwZmIyNWUy
ZjU4NmQ4MTdiMjEuLjI2ODg5NTEwYTVhMmJjMGY0N2E0NjM4MzhkZDM0ODFlMTRkNGVmZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC0zODksMTggKzM4OSwxOSBA
QCBzdGF0aWMgRm9udERhdGEqIGZvbnREYXRhRm9yR2VuZXJpY0ZhbWlseShEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IEZvbnREZXNjcmlwdAogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBB
dG9taWNTdHJpbmcgZ2VuZXJpY0ZhbWlseTsKKyAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSBmb250
RGVzY3JpcHRpb24uc2NyaXB0KCk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtc2Vy
aWYiKQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNlcmlmRm9udEZhbWlseSgp
OworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNlcmlmRm9udEZhbWlseShzY3Jp
cHQpOwogICAgIGVsc2UgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtc2Fucy1zZXJpZiIpCi0g
ICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+c2Fuc1NlcmlmRm9udEZhbWlseSgpOwor
ICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNhbnNTZXJpZkZvbnRGYW1pbHkoc2Ny
aXB0KTsKICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LWN1cnNpdmUiKQotICAg
ICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmN1cnNpdmVGb250RmFtaWx5KCk7CisgICAg
ICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+Y3Vyc2l2ZUZvbnRGYW1pbHkoc2NyaXB0KTsK
ICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LWZhbnRhc3kiKQotICAgICAgICBn
ZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZhbnRhc3lGb250RmFtaWx5KCk7CisgICAgICAgIGdl
bmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+ZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KTsKICAgICBl
bHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LW1vbm9zcGFjZSIpCi0gICAgICAgIGdlbmVy
aWNGYW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCk7CisgICAgICAgIGdlbmVyaWNG
YW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KHNjcmlwdCk7CiAgICAgZWxzZSBpZiAo
ZmFtaWx5TmFtZSA9PSAiLXdlYmtpdC1zdGFuZGFyZCIpCi0gICAgICAgIGdlbmVyaWNGYW1pbHkg
PSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CisgICAgICAgIGdlbmVyaWNGYW1pbHkg
PSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KHNjcmlwdCk7CiAKICAgICBpZiAoIWdlbmVy
aWNGYW1pbHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZm9udENhY2hlKCktPmdldENhY2hl
ZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgZ2VuZXJpY0ZhbWlseSk7CkBAIC00OTUsNiArNDk2
LDggQEAgRm9udERhdGEqIENTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGMKICAgICBpZiAobV9mb250RmFjZXMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIGlmIChmYW1pbHlOYW1lLnN0YXJ0c1dpdGgoIi13ZWJraXQtIikpCiAg
ICAgICAgICAgICByZXR1cm4gZm9udERhdGFGb3JHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZv
bnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CisgICAgICAgIGlmIChmb250RGVzY3JpcHRpb24u
Z2VuZXJpY0ZhbWlseSgpID09IEZvbnREZXNjcmlwdGlvbjo6U3RhbmRhcmRGYW1pbHkgJiYgIWZv
bnREZXNjcmlwdGlvbi5pc1NwZWNpZmllZEZvbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBmb250
RGF0YUZvckdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCAiLXdlYmtp
dC1zdGFuZGFyZCIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggOWMyMGY3ZmNmMjUxYzEyZDhiMDc1ZDBiMWU1MWU1
ODM5NjhlNzdkMS4uZDJkMWUwMDhkN2YwMjA4ZGVkZGQ4ZTE3NTk5MGFhNTk2YzVlODRmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTIxLDYgKzIxLDcgQEAgZm9u
dC12YXJpYW50CiBmb250LXdlaWdodAogdGV4dC1yZW5kZXJpbmcKIC13ZWJraXQtZm9udC1zbW9v
dGhpbmcKKy13ZWJraXQtbG9jYWxlCiAtd2Via2l0LXRleHQtb3JpZW50YXRpb24KIC1lcHViLXRl
eHQtb3JpZW50YXRpb24gPSAtd2Via2l0LXRleHQtb3JpZW50YXRpb24KIC13ZWJraXQtdGV4dC1z
aXplLWFkanVzdApAQCAtMjUwLDcgKzI1MSw2IEBAIHotaW5kZXgKIC13ZWJraXQtbGluZS1ib3gt
Y29udGFpbgogLXdlYmtpdC1saW5lLWJyZWFrCiAtd2Via2l0LWxpbmUtY2xhbXAKLS13ZWJraXQt
bG9jYWxlCiAtd2Via2l0LWxvZ2ljYWwtd2lkdGgKIC13ZWJraXQtbG9naWNhbC1oZWlnaHQKIC13
ZWJraXQtbWFyZ2luLWFmdGVyLWNvbGxhcHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKaW5kZXggYzA4ODQ0YTc4ZDYyNmE0ODVhMTU4YzQ1NWU2MWJhOWNjOGQ2YWMwNC4u
NDkxNDIzNzVmNjdmMmE2NWUwMjIzNjFmN2U0ZTRlOTc0MmE0NTExMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkhU
TUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJLZXlmcmFtZUxpc3QuaCIKICNpbmNsdWRl
ICJMaW5rSGFzaC5oIgorI2luY2x1ZGUgIkxvY2FsZVRvU2NyaXB0TWFwcGluZy5oIgogI2luY2x1
ZGUgIk1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiTWF0cml4VHJhbnNm
b3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCkBAIC0xMjc2LDYgKzEyNzcs
NyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRv
Y3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNl
dEZvcmNlQmFja2dyb3VuZHNUb1doaXRlKHRydWUpOwogICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHN0ZGZvbnQgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CiAgICAgICAgIGlm
ICghc3RkZm9udC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRH
ZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U3RhbmRhcmRGYW1pbHkpOwogICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuc2V0RmFtaWx5KHN0ZGZvbnQpOwogICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuYXBwZW5kRmFtaWx5KDApOwog
ICAgICAgICB9CkBAIC0zNDcyLDcgKzM0NzQsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5RGVjbGFyYXRpb25zKGJvb2wgaXNJbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZQog
CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Rmlyc3QpIHsKICAgICAgICAgICAgICAgICAgICAg
Q09NUElMRV9BU1NFUlQoZmlyc3RDU1NQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUNvbG9yLCBDU1Nf
Y29sb3JfaXNfZmlyc3RfcHJvcGVydHkpOwotICAgICAgICAgICAgICAgICAgICBDT01QSUxFX0FT
U0VSVChDU1NQcm9wZXJ0eVpvb20gPT0gQ1NTUHJvcGVydHlDb2xvciArIDE0LCBDU1Nfem9vbV9p
c19lbmRfb2ZfZmlyc3RfcHJvcF9yYW5nZSk7CisgICAgICAgICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKENTU1Byb3BlcnR5Wm9vbSA9PSBDU1NQcm9wZXJ0eUNvbG9yICsgMTUsIENTU196b29t
X2lzX2VuZF9vZl9maXJzdF9wcm9wX3JhbmdlKTsKICAgICAgICAgICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0ID09IENTU1Byb3BlcnR5Wm9vbSArIDEsIENT
U19saW5lX2hlaWdodF9pc19hZnRlcl96b29tKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBn
aXZlIHNwZWNpYWwgcHJpb3JpdHkgdG8gZm9udC14eHgsIGNvbG9yIHByb3BlcnRpZXMsIGV0YwpA
QCAtNDg1OSw2ICs0ODYxLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgICAgIG1fc3R5bGUtPnNldExvY2Fs
ZShudWxsQXRvbSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fc3R5bGUtPnNldExvY2Fs
ZShwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAgIEZvbnREZXNjcmlw
dGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFNjcmlwdChsb2NhbGVUb1NjcmlwdENvZGUobV9zdHlsZS0+
bG9jYWxlKCkpKTsKKyAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pKQorICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQ6IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYjBlMWM5NzA0MWNmMjg0OWFlMjg0MzlkYWIzOGQ0
YmY2MDk4MGE0NC4uYjY0ZTE5ZjgyZjM0NmJkYTdlNmQ5MDQwMGNlMTQ1YWIyYjY4MTYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTY2LDcgKzY2LDkgQEAgc3RhdGljIGlubGluZSBj
b25zdCBBdG9taWNTdHJpbmcmIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNj
cmlwdEZvbnQKICAgICBTY3JpcHRGb250RmFtaWx5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGZv
bnRNYXAuZmluZChzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCkpOwogICAgIGlmIChpdCAhPSBmb250
TWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKLSAgICByZXR1cm4gZW1wdHlB
dG9tOworICAgIGlmIChzY3JpcHQgPT0gVVNDUklQVF9DT01NT04pCisgICAgICAgIHJldHVybiBl
bXB0eUF0b207CisgICAgcmV0dXJuIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KGZvbnRN
YXAsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIFVTRShTQUZBUklfVEhFTUUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4
IDkwOGViYTIwYzk0MjcxNDllY2UwZWQyOGUxZDY1MDdkMTEwMzRhYjAuLjQ0NmI0YTUyZDU3ODkx
NjU0M2FiZjRhMTVjNzQzMDIxNzE0YTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCkBAIC04Myw2ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX2ZvbnRTbW9vdGhpbmcoQXV0b1Ntb290aGluZykKICAgICAgICAgLCBt
X3RleHRSZW5kZXJpbmcoQXV0b1RleHRSZW5kZXJpbmcpCiAgICAgICAgICwgbV9pc1NwZWNpZmll
ZEZvbnQoZmFsc2UpCisgICAgICAgICwgbV9zY3JpcHQoVVNDUklQVF9DT01NT04pCiAgICAgewog
ICAgIH0KIApAQCAtMTA4LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBrZXl3b3Jk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5d29yZFNpemU7IH0KICAgICBGb250U21vb3RoaW5n
TW9kZSBmb250U21vb3RoaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFNtb290
aGluZ01vZGU+KG1fZm9udFNtb290aGluZyk7IH0KICAgICBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0
UmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRSZW5kZXJpbmdN
b2RlPihtX3RleHRSZW5kZXJpbmcpOyB9CisgICAgVVNjcmlwdENvZGUgc2NyaXB0KCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JpcHQ7IH0KIAogICAgIEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2soKSBj
b25zdDsKICAgICBib29sIGlzU3BlY2lmaWVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcGVj
aWZpZWRGb250OyB9CkBAIC0xMzgsNiArMTQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3Jp
ZW50YXRpb24oRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfQogICAgIHZvaWQgc2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmllbnRhdGlv
biB0ZXh0T3JpZW50YXRpb24pIHsgbV90ZXh0T3JpZW50YXRpb24gPSB0ZXh0T3JpZW50YXRpb247
IH0KICAgICB2b2lkIHNldFdpZHRoVmFyaWFudChGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFu
dCkgeyBtX3dpZHRoVmFyaWFudCA9IHdpZHRoVmFyaWFudDsgfQorICAgIHZvaWQgc2V0U2NyaXB0
KFVTY3JpcHRDb2RlIHMpIHsgbV9zY3JpcHQgPSBzOyB9CiAKIHByaXZhdGU6CiAgICAgRm9udEZh
bWlseSBtX2ZhbWlseUxpc3Q7IC8vIFRoZSBsaXN0IG9mIGZvbnQgZmFtaWxpZXMgdG8gYmUgdXNl
ZC4KQEAgLTE2OCw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZm9udFNtb290
aGluZyA6IDI7IC8vIEZvbnRTbW9vdGhpbmdNb2RlCiAgICAgdW5zaWduZWQgbV90ZXh0UmVuZGVy
aW5nIDogMjsgLy8gVGV4dFJlbmRlcmluZ01vZGUKICAgICBib29sIG1faXNTcGVjaWZpZWRGb250
IDogMTsgLy8gVHJ1ZSBpZiBhIHdlYiBwYWdlIHNwZWNpZmllcyBhIG5vbi1nZW5lcmljIGZvbnQg
ZmFtaWx5IGFzIHRoZSBmaXJzdCBmb250IGZhbWlseS4KKyAgICBVU2NyaXB0Q29kZSBtX3Njcmlw
dDsgLy8gVXNlZCB0byBoZWxwIGNob29zZSBhbiBhcHByb3ByaWF0ZSBmb250IGZvciBnZW5lcmlj
IGZvbnQgZmFtaWxpZXMuCiB9OwogCiBpbmxpbmUgYm9vbCBGb250RGVzY3JpcHRpb246Om9wZXJh
dG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QKQEAgLTE4OCw3ICsxOTIs
OCBAQCBpbmxpbmUgYm9vbCBGb250RGVzY3JpcHRpb246Om9wZXJhdG9yPT0oY29uc3QgRm9udERl
c2NyaXB0aW9uJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV9pc1NwZWNpZmllZEZvbnQgPT0g
b3RoZXIubV9pc1NwZWNpZmllZEZvbnQKICAgICAgICAgJiYgbV9vcmllbnRhdGlvbiA9PSBvdGhl
ci5tX29yaWVudGF0aW9uCiAgICAgICAgICYmIG1fdGV4dE9yaWVudGF0aW9uID09IG90aGVyLm1f
dGV4dE9yaWVudGF0aW9uCi0gICAgICAgICYmIG1fd2lkdGhWYXJpYW50ID09IG90aGVyLm1fd2lk
dGhWYXJpYW50OworICAgICAgICAmJiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5tX3dpZHRoVmFy
aWFudAorICAgICAgICAmJiBtX3NjcmlwdCA9PSBvdGhlci5tX3NjcmlwdDsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5n
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWM0NGY3N2QzNDMwMThhMzdhYzE1NmFmM2UzMmM4NWU5MmM2YTNiNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9T
Y3JpcHRNYXBwaW5nLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9jYWxlVG9TY3JpcHRNYXBw
aW5nX2gKKyNkZWZpbmUgTG9jYWxlVG9TY3JpcHRNYXBwaW5nX2gKKworI2luY2x1ZGUgPHd0Zi91
bmljb2RlL1VuaWNvZGUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0cmluZzsKKwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VTY3JpcHRDb2RlIGxvY2FsZVRvU2NyaXB0Q29k
ZShjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxlKTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVs
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGlu
Z0RlZmF1bHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlN2NhMjRlZWExYmMzMTNiYjQ4ZTIxMTE4NzEzOTU3
MDNjYTVhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgiCisKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VTY3JpcHRD
b2RlIGxvY2FsZVRvU2NyaXB0Q29kZShjb25zdCBTdHJpbmcmIGxvY2FsZSkKK3sKKyAgICBzdHJ1
Y3QgTG9jYWxlU2NyaXB0IHsKKyAgICAgICAgY29uc3QgY2hhciogbG9jYWxlOworICAgICAgICBV
U2NyaXB0Q29kZSBzY3JpcHQ7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBBZGQgYWxsIGxhbmd1
YWdlcyBmcm9tIElDVS4KKyAgICBzdGF0aWMgY29uc3QgTG9jYWxlU2NyaXB0IGxvY2FsZVNjcmlw
dExpc3RbXSA9IHsKKyAgICAgICAgeyAiamEiLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5B
IH0sCisgICAgICAgIHsgImtvIiwgVVNDUklQVF9IQU5HVUwgfSwKKyAgICAgICAgeyAicnUiLCBV
U0NSSVBUX0NZUklMTElDIH0sCisgICAgICAgIHsgInpoIiwgVVNDUklQVF9IQU4gfSwKKyAgICAg
ICAgeyAiemhfY24iLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOIH0sCisgICAgICAgIHsgInpoX2hh
bnMiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOIH0sCisgICAgICAgIHsgInpoX2hhbnQiLCBVU0NS
SVBUX1RSQURJVElPTkFMX0hBTiB9LAorICAgICAgICB7ICJ6aF9oayIsIFVTQ1JJUFRfVFJBRElU
SU9OQUxfSEFOIH0sCisgICAgICAgIHsgInpoX3R3IiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4g
fQorICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBVU2NyaXB0Q29kZT4gTG9j
YWxlU2NyaXB0TWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTG9jYWxlU2NyaXB0TWFwLCBs
b2NhbGVTY3JpcHRNYXAsICgpKTsKKyAgICBpZiAobG9jYWxlU2NyaXB0TWFwLmlzRW1wdHkoKSkg
eworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihsb2NhbGVTY3JpcHRMaXN0
KSAvIHNpemVvZihsb2NhbGVTY3JpcHRMaXN0WzBdKTsgKytpKQorICAgICAgICAgICAgbG9jYWxl
U2NyaXB0TWFwLnNldChsb2NhbGVTY3JpcHRMaXN0W2ldLmxvY2FsZSwgbG9jYWxlU2NyaXB0TGlz
dFtpXS5zY3JpcHQpOworICAgIH0KKworICAgIFN0cmluZyBjYW5vbmljYWxMb2NhbGUgPSBsb2Nh
bGUubG93ZXIoKS5yZXBsYWNlKCctJywgJ18nKTsKKyAgICB3aGlsZSAoIWNhbm9uaWNhbExvY2Fs
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFVTY3JpcHRDb2RlPjo6aXRl
cmF0b3IgaXQgPSBsb2NhbGVTY3JpcHRNYXAuZmluZChjYW5vbmljYWxMb2NhbGUpOworICAgICAg
ICBpZiAoaXQgIT0gbG9jYWxlU2NyaXB0TWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7CisgICAgICAgIHNpemVfdCBwb3MgPSBjYW5vbmljYWxMb2NhbGUucmV2ZXJzZUZp
bmQoJ18nKTsKKyAgICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYW5vbmljYWxMb2NhbGUgPSBjYW5vbmljYWxMb2NhbGUuc3Vic3RyaW5nKDAs
IHBvcyk7CisgICAgfQorICAgIHJldHVybiBVU0NSSVBUX0NPTU1PTjsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVUb1NjcmlwdE1hcHBpbmdJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdJQ1UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiY2M3YTM0Y2VlODlh
YzA5MjYwODcyMzFhMjk0NGMzYmI0MDIzNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0lDVS5jcHAKQEAgLTAsMCAr
MSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbGVUb1NjcmlwdE1hcHBp
bmcuaCIKKworI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBUaGVyZSBhcmUgY2VydGFpbiBmYW1pbGllcyBvZiBzY3JpcHQgY29kZXMg
dGhhdCB3ZSB3YW50IHRvIHRyZWF0IGFzIGEgc2luZ2xlCisvLyBzY3JpcHQgZm9yIHRoZSBwdXJw
b3NlIG9mIGFzc2lnbmluZyBhIHBlci1zY3JpcHQgZm9udCBpbiBTZXR0aW5ncy4gRm9yCisvLyBl
eGFtcGxlLCBVU0NSSVBUX0hJUkFHQU5BLCBVU0NSSVBUX0tBVEFLQU5BLCBVU0NSSVBUX0pBUEFO
RVNFLCBhbmQKKy8vIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEgYXJlIGFsbCAiSmFwYW5l
c2UiIGFuZCB0aGVyZSBpcyBubyB2YWx1ZSBpbgorLy8gZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiB0
aGVtLiBTbyB3ZSBqdXN0IHBpY2sgb25lIHNjcmlwdCBjb2RlIHRvIGJlIHRoZQorLy8gY2Fub25p
Y2FsIG9uZSB3aXRoIHRoaXMgZnVuY3Rpb24sIGFuZCBpbiBTZXR0aW5ncyBhc3NpZ24gYSBmb250
IGZvciB0aGF0CisvLyBzY3JpcHQuCitzdGF0aWMgVVNjcmlwdENvZGUgY2Fub25pY2FsaXplU2Ny
aXB0Q29kZShVU2NyaXB0Q29kZSBzY3JpcHRDb2RlKQoreworICAgIHN3aXRjaCAoc2NyaXB0Q29k
ZSkgeworICAgIGNhc2UgVVNDUklQVF9ISVJBR0FOQToKKyAgICBjYXNlIFVTQ1JJUFRfS0FUQUtB
TkE6CisgICAgY2FzZSBVU0NSSVBUX0pBUEFORVNFOgorICAgICAgICByZXR1cm4gVVNDUklQVF9L
QVRBS0FOQV9PUl9ISVJBR0FOQTsKKyAgICBjYXNlIFVTQ1JJUFRfS09SRUFOOgorICAgICAgICBy
ZXR1cm4gVVNDUklQVF9IQU5HVUw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHNjcmlw
dENvZGU7CisgICAgfQorfQorCitVU2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGUoY29uc3Qg
U3RyaW5nJiBsb2NhbGUpCit7CisgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBVU0NSSVBUX0NPTU1PTjsKKworICAgIGNoYXIgbWF4aW1pemVkTG9jYWxlW1VMT0NfRlVM
TE5BTUVfQ0FQQUNJVFldOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwor
ICAgIHVsb2NfYWRkTGlrZWx5U3VidGFncyhsb2NhbGUudXRmOCgpLmRhdGEoKSwgbWF4aW1pemVk
TG9jYWxlLCBzaXplb2YobWF4aW1pemVkTG9jYWxlKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gVVNDUklQVF9DT01NT047CisKKyAgICBjaGFy
IHNjcmlwdFtVTE9DX1NDUklQVF9DQVBBQ0lUWV07CisgICAgdWxvY19nZXRTY3JpcHQobWF4aW1p
emVkTG9jYWxlLCBzY3JpcHQsIHNpemVvZihzY3JpcHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiBVU0NSSVBUX0NPTU1PTjsKKworICAgIFVT
Y3JpcHRDb2RlIHNjcmlwdENvZGU7CisgICAgdXNjcmlwdF9nZXRDb2RlKHNjcmlwdCwgJnNjcmlw
dENvZGUsIDEsICZzdGF0dXMpOworICAgIC8vIElnbm9yZSBlcnJvciB0aGF0IG11bHRpcGxlIHNj
cmlwdHMgY291bGQgYmUgcmV0dXJuZWQsIHNpbmNlIHdlIG9ubHkgd2FudAorICAgIC8vIG9uZSBz
Y3JpcHQuCisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9P
VkVSRkxPV19FUlJPUikKKyAgICAgICAgcmV0dXJuIFVTQ1JJUFRfQ09NTU9OOworCisgICAgcmV0
dXJuIGNhbm9uaWNhbGl6ZVNjcmlwdENvZGUoc2NyaXB0Q29kZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101929</attachid>
            <date>2011-07-25 15:42:58 -0700</date>
            <delta_ts>2011-08-04 01:25:24 -0700</delta_ts>
            <desc>revised after second review</desc>
            <filename>bug-10874-20110725154257.patch</filename>
            <type>text/plain</type>
            <size>28687</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE2NzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWNkMmMy
ODg5YTJlZmQ3ZWM1NDgwNzIzYzJlYjAzMDU1NmFmN2UzZS4uOTI4Y2EwNTY0MjkyMGFhYjUwY2Q2
ODU3NGFhZDA5ZmE3OTEwMDU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNTYsNiArMTE1
Niw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0
LmNwcAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4
dC9MaW5lRW5kaW5nLmNwcAorICAgIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5n
RGVmYXVsdC5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAg
IHBsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0
L1F1b3RlZFByaW50YWJsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlODY3ODdhZjQxMjI2YWRkODBiNzIx
YzU5MGJjNDA2MjkxNWFjOGJiLi5hOTI1NTQzYmI3ZjU4MWM0ZTQyZDNiYmUxZGE5ZGRiNGUyOWIz
NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDctMjUgIE1hdHQgRmFsa2Vu
aGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSAtd2Via2l0LWxvY2Fs
ZSBmb3IgZm9udCBzZWxlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDg3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluZmVyIGEgc2NyaXB0IGZyb20gLXdlYmtpdC1sb2NhbGUgdG8gdXNlIHRv
IGNob29zZSBhIGZvbnQgZm9yIGdlbmVyaWMKKyAgICAgICAgZm9udCBmYW1pbGllcyBhbmQgdGhl
IGRlZmF1bHQgdW5zdHlsZWQgZm9udC4gIFRoZSBmb250IGlzIHJldHJpZXZlZAorICAgICAgICBm
cm9tIHBlci1zY3JpcHQgZm9udCBzZXR0aW5ncyAoc2VlIGJ1ZyAyMDc5NykuICBTaW5jZSB0aGVz
ZSBzZXR0aW5ncworICAgICAgICBoYXZlIG5vdCBjaGFuZ2VkIHRoZXJlIHNob3VsZCBiZSBubyB2
aXNpYmxlIGVmZmVjdCB5ZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHA6IFVzZSBzY3JpcHQgd2hlbiBnZXR0aW5nIGZvbnQgZnJvbSBTZXR0aW5ncworICAgICAgICAo
V2ViQ29yZTo6Zm9udERhdGFGb3JHZW5lcmljRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluOiBJbmNyZWFzZSBwcmlvcml0eSBvZiAtd2Via2l0LWxvY2FsZSBzaW5jZSBpdCBhZmZl
Y3RzIGZvbnQKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOiBTZXQgc2NyaXB0IGluIGZv
bnQgYmFzZWQgb24gLXdlYmtpdC1sb2NhbGUKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KTogRmFsbGJh
Y2sgdG8gVVNDUklQVF9DT01NT04KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVz
Y3JpcHRpb24uaDogQWRkIG1fc2NyaXB0CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRp
b246OkZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246
OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OnNldFNjcmlwdCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246Om9wZXJhdG9yPT0pOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVTY3JpcHQ6OmlmKToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsZVNjcmlwdDo6d2hpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9T
Y3JpcHRNYXBwaW5nSUNVLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzY3JpcHRDb2Rl
Rm9yRm9udFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGVUb1NjcmlwdENvZGVG
b3JGb250U2VsZWN0aW9uKToKKwogMjAxMS0wNy0yNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdXNlIGRlZGljYXRlZCB0eXBl
IGZvciBvYmplY3QgaWQgaW4gdGhlIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggZDU0YjlkM2NhNmMzZmQ2NzRkYTU0ZGJkYTRlZWM5NWZkNDkyYzEyMy4uNzliMWNl
ODU5OWVlMzM4MWY5ZTRiZWI5Yzc2ZTU3Mjg0M2I1MzI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0yNzkxLDYgKzI3OTEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxpemVkTnVtYmVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cAppbmRleCAxZjJkNjcyNmNmZDVlY2ZjN2Q0Y2NkNDAxNGEwMmY3MDM4MzEwNjJiLi40
MDNjMDI3OGFmMjI1ZWRiNWU1MGI3YzBmYjc3MTgwMGMxNDhmOWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMTM1NSw2ICsxMzU1LDcgQEAKICAgICAgICAgWydl
eGNsdWRlJywgJ3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL1BOR0ltYWdlRW5jb2RlclxcLihjcHB8
aCkkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlXFwuY3BwJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxhdGZvcm0vc3FsL1NRTGl0ZUZp
bGVTeXN0ZW1cXC5jcHAkJ10sCisgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS90ZXh0L0xv
Y2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHRcXC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVkZScs
ICdwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJlck5vbmVcXC5jcHAkJ10sCiAgICAgICAgIFsn
ZXhjbHVkZScsICdwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9yTm9uZVxcLmNwcCQn
XSwKICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzk5YmRlNmQwMjRjYjhhYzQzNGJlZjcz
ODYzM2E4MDdiMzM3NzM3NS4uZjU4YTMxODI0OTA5YWMxODVjNmMxOWU3OGU0MjllYWNmNTAwNWI3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDk4Myw2ICs0OTgzLDkgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4
dC9IeXBoZW5hdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5o
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1
bHQuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGlu
Z0lDVS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXIuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDBhYTMzMDQ3OGU3MTU2MmViOTI0ZTc3NjY5NjY4NzA4ZDQ0M2FhMzcuLjkwNTA5NmVlM2Nj
MGY4ZDE1MDhhNDYxZTJiYjk5ZTQzOTNhMGY0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC05NTksNiAr
OTU5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9IeXBo
ZW5hdGlvbi5jcHAgXAorICAgIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVm
YXVsdC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZU5vbmUuY3BwIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJlck5vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS90
ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAgXApAQCAtMjAyNSw2ICsyMDI2LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5oIFwKICAgICBwbGF0
Zm9ybS90ZXh0L0JpZGlSdW5MaXN0LmggXAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5o
IFwKKyAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5oIFwKICAgICBwbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENo
ZWNraW5nLmggXAogICAgIHBsYXRmb3JtL3RleHQvVW5pY29kZUJpZGkuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDEzMmM3YTY2MDUwNzQ0
N2UyNDVlNjdhZGJkOGUyMWJjZWJhMmMxODYuLjMwNTM2N2M5YzM2YjEyMDE4MmRhNGU5NTU3NTVi
MmYxZGYxN2Y0Y2IgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0zMTQ0NSw2ICszMTQ0NSwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxMb2NhbGVUb1Njcmlw
dE1hcHBpbmdEZWZhdWx0LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVx0ZXh0XExvY2FsaXplZERhdGUuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
YWE3OGMyN2JiOWY3OTJlMWFiYjdkNGZmYmIwM2UwNjUzN2MyMDg1Li5mNGFmNGEyY2EzYWU4OGU1
Y2YzMTBhMzVkNzAwMzE3ZmE1MjBiOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzA5LDYgKzE3MDksOCBAQAogCQk3NTc5
M0VENDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDEwRDBDRTg1QjAwN0ZDMEFD
IC8qIERPTU1lc3NhZ2VFdmVudC5tbSAqLzsgfTsKIAkJNzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFD
IC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2Fn
ZUV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJNzU4OTc4RUMxMjcwOTBENjAwNzZENUE5IC8qIFNw
ZWVjaElucHV0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1ODk3OEVBMTI3MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5j
cHAgKi87IH07CisJCTc2MzNBNzI2MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1h
cHBpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
MzNBNzI0MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCAqLzsgfTsK
KwkJNzYzM0E3MjcxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1
bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYz
M0E3MjUxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3Bw
ICovOyB9OwogCQk3NjM3QzU0MTExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5j
cHAgKi87IH07CiAJCTc2MzdDNTQzMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5o
ICovOyB9OwogCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
LmNwcCAqLzsgfTsKQEAgLTgzMTcsNiArODMxOSw4IEBACiAJCTc1NzkzRUQyMEQwQ0U4NUIwMDdG
QzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzU4OTc4RUExMjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVjaElucHV0UmVz
dWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU4OTc4RUIxMjcwOTBENjAw
NzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwZWVjaElucHV0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTc2MzNBNzI0MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc2MzNBNzI1MTNEOEIzM0EwMDg1MDFCNiAvKiBM
b2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzYzN0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjdGOTlCRDExQTExOTRB
MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyNDAsNiArMTgyNDQsOCBAQAogCQkJCUE1
QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLywK
IAkJCQk4OUI1RUE5RjExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJ
ODlCNUVBQTAxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuaCAqLywKKwkJCQk3NjMzQTcy
NDEzRDhCMzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggKi8sCisJCQkJNzYz
M0E3MjUxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3Bw
ICovLAogCQkJCUE1NzMyQjBDMTM2QTE2QzQwMDVDOEQ3QyAvKiBMb2NhbGl6ZWREYXRlLmggKi8s
CiAJCQkJQTU3MzJCMEUxMzZBMTcxNTAwNUM4RDdDIC8qIExvY2FsaXplZERhdGVOb25lLmNwcCAq
LywKIAkJCQlGNTE0MkM2ODEyM0YxMkIwMDBGNUJENEMgLyogTG9jYWxpemVkTnVtYmVyLmggKi8s
CkBAIC0yMjIyMyw2ICsyMjIyOSw3IEBACiAJCQkJN0VFNjg0NjkxMkQyNkUzODAwRTc5NDE1IC8q
IExvYWRlclJ1bkxvb3BDRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDZFODFFRDcwQUI1RDVFOTAw
Qzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODk4Nzg1NjgxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzYzM0E3MjYxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFw
cGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1Q0ZDQTkxMUY3OTMzMjAwOTlFRDA5IC8qIExv
Y2FsaXphdGlvblN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTczMkIwRDEzNkExNkM0
MDA1QzhEN0MgLyogTG9jYWxpemVkRGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjUxNDJDNjkx
MjNGMTJCMDAwRjVCRDRDIC8qIExvY2FsaXplZE51bWJlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NTIyNSw2ICsyNTIzMiw3IEBACiAJCQkJN0VFNjg0NjgxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRl
clJ1bkxvb3BDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNkU4MUVFQzBBQjVEQTk3MDBDODc4
MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODk4Nzg1NjcxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3NjMzQTcyNzEzRDhCMzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBw
aW5nRGVmYXVsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTczMkIwRjEzNkExNzE1MDA1QzhE
N0MgLyogTG9jYWxpemVkRGF0ZU5vbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVDQzQyREMx
MkY4MDFDQTAwRDVGN0UzIC8qIExvY2FsaXplZE51bWJlck1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUMwNDZFMUFDMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCAxYmY0
ZmNhMzUzNjM2NmY2NDY2OTZiMGZiMjVlMmY1ODZkODE3YjIxLi4yNjg4OTUxMGE1YTJiYzBmNDdh
NDYzODM4ZGQzNDgxZTE0ZDRlZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcApAQCAtMzg5LDE4ICszODksMTkgQEAgc3RhdGljIEZvbnREYXRhKiBmb250RGF0YUZvckdl
bmVyaWNGYW1pbHkoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBGb250RGVzY3JpcHQKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCiAgICAgQXRvbWljU3RyaW5nIGdlbmVyaWNGYW1pbHk7CisgICAg
VVNjcmlwdENvZGUgc2NyaXB0ID0gZm9udERlc2NyaXB0aW9uLnNjcmlwdCgpOwogICAgIGlmIChm
YW1pbHlOYW1lID09ICItd2Via2l0LXNlcmlmIikKLSAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNl
dHRpbmdzLT5zZXJpZkZvbnRGYW1pbHkoKTsKKyAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRp
bmdzLT5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09
ICItd2Via2l0LXNhbnMtc2VyaWYiKQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3Mt
PnNhbnNTZXJpZkZvbnRGYW1pbHkoKTsKKyAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdz
LT5zYW5zU2VyaWZGb250RmFtaWx5KHNjcmlwdCk7CiAgICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9
PSAiLXdlYmtpdC1jdXJzaXZlIikKLSAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5j
dXJzaXZlRm9udEZhbWlseSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmN1
cnNpdmVGb250RmFtaWx5KHNjcmlwdCk7CiAgICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSAiLXdl
YmtpdC1mYW50YXN5IikKLSAgICAgICAgZ2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5mYW50YXN5
Rm9udEZhbWlseSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZhbnRhc3lG
b250RmFtaWx5KHNjcmlwdCk7CiAgICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSAiLXdlYmtpdC1t
b25vc3BhY2UiKQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZpeGVkRm9udEZh
bWlseSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZpeGVkRm9udEZhbWls
eShzY3JpcHQpOwogICAgIGVsc2UgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtc3RhbmRhcmQi
KQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseSgp
OworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseShz
Y3JpcHQpOwogCiAgICAgaWYgKCFnZW5lcmljRmFtaWx5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGdlbmVy
aWNGYW1pbHkpOwpAQCAtNDk1LDYgKzQ5Niw4IEBAIEZvbnREYXRhKiBDU1NGb250U2VsZWN0b3I6
OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjCiAg
ICAgaWYgKG1fZm9udEZhY2VzLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoZmFtaWx5TmFtZS5z
dGFydHNXaXRoKCItd2Via2l0LSIpKQogICAgICAgICAgICAgcmV0dXJuIGZvbnREYXRhRm9yR2Vu
ZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOworICAg
ICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHkoKSA9PSBGb250RGVzY3JpcHRp
b246OlN0YW5kYXJkRmFtaWx5ICYmICFmb250RGVzY3JpcHRpb24uaXNTcGVjaWZpZWRGb250KCkp
CisgICAgICAgICAgICByZXR1cm4gZm9udERhdGFGb3JHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQs
IGZvbnREZXNjcmlwdGlvbiwgIi13ZWJraXQtc3RhbmRhcmQiKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1l
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDljMjBm
N2ZjZjI1MWMxMmQ4YjA3NWQwYjFlNTFlNTgzOTY4ZTc3ZDEuLmQyZDFlMDA4ZDdmMDIwOGRlZGRk
OGUxNzU5OTBhYTU5NmM1ZTg0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluCkBAIC0yMSw2ICsyMSw3IEBAIGZvbnQtdmFyaWFudAogZm9udC13ZWlnaHQKIHRleHQtcmVu
ZGVyaW5nCiAtd2Via2l0LWZvbnQtc21vb3RoaW5nCistd2Via2l0LWxvY2FsZQogLXdlYmtpdC10
ZXh0LW9yaWVudGF0aW9uCiAtZXB1Yi10ZXh0LW9yaWVudGF0aW9uID0gLXdlYmtpdC10ZXh0LW9y
aWVudGF0aW9uCiAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3QKQEAgLTI1MCw3ICsyNTEsNiBAQCB6
LWluZGV4CiAtd2Via2l0LWxpbmUtYm94LWNvbnRhaW4KIC13ZWJraXQtbGluZS1icmVhawogLXdl
YmtpdC1saW5lLWNsYW1wCi0td2Via2l0LWxvY2FsZQogLXdlYmtpdC1sb2dpY2FsLXdpZHRoCiAt
d2Via2l0LWxvZ2ljYWwtaGVpZ2h0CiAtd2Via2l0LW1hcmdpbi1hZnRlci1jb2xsYXBzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGNkZTA5NzE4NDcwYWViZmUz
NDE0OWY0MTExNDgxNWIwMWUxNWM4M2QuLmIwZTMxNjZmYTA3MmExMmMwOTgwNzBlYjEzMTBhZWI2
NTY5OWNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTY5
LDYgKzY5LDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAi
S2V5ZnJhbWVMaXN0LmgiCiAjaW5jbHVkZSAiTGlua0hhc2guaCIKKyNpbmNsdWRlICJMb2NhbGVU
b1NjcmlwdE1hcHBpbmcuaCIKICNpbmNsdWRlICJNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIk1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlh
TGlzdC5oIgpAQCAtMTI3Niw2ICsxMjc3LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NT
U3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
ICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZSh0cnVlKTsK
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGRmb250ID0gc2V0dGluZ3MtPnN0YW5kYXJk
Rm9udEZhbWlseSgpOwogICAgICAgICBpZiAoIXN0ZGZvbnQuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlN0
YW5kYXJkRmFtaWx5KTsKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgp
LnNldEZhbWlseShzdGRmb250KTsKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZh
bWlseSgpLmFwcGVuZEZhbWlseSgwKTsKICAgICAgICAgfQpAQCAtMzQ2OCw3ICszNDcwLDcgQEAg
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyhib29sIGlzSW1wb3J0YW50
LCBpbnQgc3RhcnRJbmRleCwgaW50IGUKIAogICAgICAgICAgICAgICAgIGlmIChhcHBseUZpcnN0
KSB7CiAgICAgICAgICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKGZpcnN0Q1NTUHJvcGVydHkg
PT0gQ1NTUHJvcGVydHlDb2xvciwgQ1NTX2NvbG9yX2lzX2ZpcnN0X3Byb3BlcnR5KTsKLSAgICAg
ICAgICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoQ1NTUHJvcGVydHlab29tID09IENTU1Byb3Bl
cnR5Q29sb3IgKyAxNCwgQ1NTX3pvb21faXNfZW5kX29mX2ZpcnN0X3Byb3BfcmFuZ2UpOworICAg
ICAgICAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChDU1NQcm9wZXJ0eVpvb20gPT0gQ1NTUHJv
cGVydHlDb2xvciArIDE1LCBDU1Nfem9vbV9pc19lbmRfb2ZfZmlyc3RfcHJvcF9yYW5nZSk7CiAg
ICAgICAgICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKENTU1Byb3BlcnR5TGluZUhlaWdodCA9
PSBDU1NQcm9wZXJ0eVpvb20gKyAxLCBDU1NfbGluZV9oZWlnaHRfaXNfYWZ0ZXJfem9vbSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgLy8gZ2l2ZSBzcGVjaWFsIHByaW9yaXR5IHRvIGZvbnQteHh4
LCBjb2xvciBwcm9wZXJ0aWVzLCBldGMKQEAgLTQ4NDQsNiArNDg0NiwxMCBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRMb2NhbGUobnVsbEF0b20pOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRMb2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVl
KCkpOworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTY3JpcHQobG9j
YWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihtX3N0eWxlLT5sb2NhbGUoKSkpOworICAg
ICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisg
ICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAppbmRleCA0Y2ViYzM2MzQ1NzA0NWQwYjBkNmU3YzA5NDg5NDM2YzIyMmEyZDM2Li5jNGUy
NWJmMTE3MGY0ZTVhYmJmMTc1ODY5YTM3Y2NmNDExYjdjZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcApAQCAtNjYsNiArNjYsOCBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZ2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9udAogICAgIFNj
cmlwdEZvbnRGYW1pbHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZm9udE1hcC5maW5kKHN0YXRp
Y19jYXN0PGludD4oc2NyaXB0KSk7CiAgICAgaWYgKGl0ICE9IGZvbnRNYXAuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBpdC0+c2Vjb25kOworICAgIGlmIChzY3JpcHQgIT0gVVNDUklQVF9DT01NT04p
CisgICAgICAgIHJldHVybiBnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChmb250TWFwLCBV
U0NSSVBUX0NPTU1PTik7CiAgICAgcmV0dXJuIGVtcHR5QXRvbTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAppbmRleCA5MDhl
YmEyMGM5NDI3MTQ5ZWNlMGVkMjhlMWQ2NTA3ZDExMDM0YWIwLi40NDZiNGE1MmQ1Nzg5MTY1NDNh
YmY0YTE1Yzc0MzAyMTcxNGE4MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaApAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICwgbV9mb250U21vb3RoaW5nKEF1dG9TbW9vdGhpbmcpCiAgICAgICAgICwgbV90ZXh0
UmVuZGVyaW5nKEF1dG9UZXh0UmVuZGVyaW5nKQogICAgICAgICAsIG1faXNTcGVjaWZpZWRGb250
KGZhbHNlKQorICAgICAgICAsIG1fc2NyaXB0KFVTQ1JJUFRfQ09NTU9OKQogICAgIHsKICAgICB9
CiAKQEAgLTEwOCw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQga2V5d29yZFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2tleXdvcmRTaXplOyB9CiAgICAgRm9udFNtb290aGluZ01vZGUg
Zm9udFNtb290aGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRTbW9vdGhpbmdN
b2RlPihtX2ZvbnRTbW9vdGhpbmcpOyB9CiAgICAgVGV4dFJlbmRlcmluZ01vZGUgdGV4dFJlbmRl
cmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0UmVuZGVyaW5nTW9kZT4o
bV90ZXh0UmVuZGVyaW5nKTsgfQorICAgIFVTY3JpcHRDb2RlIHNjcmlwdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyaXB0OyB9CiAKICAgICBGb250VHJhaXRzTWFzayB0cmFpdHNNYXNrKCkgY29uc3Q7
CiAgICAgYm9vbCBpc1NwZWNpZmllZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3BlY2lmaWVk
Rm9udDsgfQpAQCAtMTM4LDYgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWVudGF0
aW9uKEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247IH0KICAgICB2b2lkIHNldFRleHRPcmllbnRhdGlvbihUZXh0T3JpZW50YXRpb24gdGV4
dE9yaWVudGF0aW9uKSB7IG1fdGV4dE9yaWVudGF0aW9uID0gdGV4dE9yaWVudGF0aW9uOyB9CiAg
ICAgdm9pZCBzZXRXaWR0aFZhcmlhbnQoRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQpIHsg
bV93aWR0aFZhcmlhbnQgPSB3aWR0aFZhcmlhbnQ7IH0KKyAgICB2b2lkIHNldFNjcmlwdChVU2Ny
aXB0Q29kZSBzKSB7IG1fc2NyaXB0ID0gczsgfQogCiBwcml2YXRlOgogICAgIEZvbnRGYW1pbHkg
bV9mYW1pbHlMaXN0OyAvLyBUaGUgbGlzdCBvZiBmb250IGZhbWlsaWVzIHRvIGJlIHVzZWQuCkBA
IC0xNjgsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2ZvbnRTbW9vdGhpbmcg
OiAyOyAvLyBGb250U21vb3RoaW5nTW9kZQogICAgIHVuc2lnbmVkIG1fdGV4dFJlbmRlcmluZyA6
IDI7IC8vIFRleHRSZW5kZXJpbmdNb2RlCiAgICAgYm9vbCBtX2lzU3BlY2lmaWVkRm9udCA6IDE7
IC8vIFRydWUgaWYgYSB3ZWIgcGFnZSBzcGVjaWZpZXMgYSBub24tZ2VuZXJpYyBmb250IGZhbWls
eSBhcyB0aGUgZmlyc3QgZm9udCBmYW1pbHkuCisgICAgVVNjcmlwdENvZGUgbV9zY3JpcHQ7IC8v
IFVzZWQgdG8gaGVscCBjaG9vc2UgYW4gYXBwcm9wcmlhdGUgZm9udCBmb3IgZ2VuZXJpYyBmb250
IGZhbWlsaWVzLgogfTsKIAogaW5saW5lIGJvb2wgRm9udERlc2NyaXB0aW9uOjpvcGVyYXRvcj09
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0CkBAIC0xODgsNyArMTkyLDggQEAg
aW5saW5lIGJvb2wgRm9udERlc2NyaXB0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1faXNTcGVjaWZpZWRGb250ID09IG90aGVy
Lm1faXNTcGVjaWZpZWRGb250CiAgICAgICAgICYmIG1fb3JpZW50YXRpb24gPT0gb3RoZXIubV9v
cmllbnRhdGlvbgogICAgICAgICAmJiBtX3RleHRPcmllbnRhdGlvbiA9PSBvdGhlci5tX3RleHRP
cmllbnRhdGlvbgotICAgICAgICAmJiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5tX3dpZHRoVmFy
aWFudDsKKyAgICAgICAgJiYgbV93aWR0aFZhcmlhbnQgPT0gb3RoZXIubV93aWR0aFZhcmlhbnQK
KyAgICAgICAgJiYgbV9zY3JpcHQgPT0gb3RoZXIubV9zY3JpcHQ7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBjZWRiNTlmYjlmOWNjZTdiOTFkN2YwYTI3YWJjZWYyYTE1NzhhYzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0
TWFwcGluZy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExvY2FsZVRvU2NyaXB0TWFwcGluZ19o
CisjZGVmaW5lIExvY2FsZVRvU2NyaXB0TWFwcGluZ19oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitVU2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKGNv
bnN0IFN0cmluZyYgbG9jYWxlKTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY2YzExMjVhOWJmYjQwNGQ4M2FlN2E0N2ZjMGM3MTE4ZDdiMzNkZWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRv
U2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VTY3JpcHRDb2RlIGxvY2Fs
ZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rpb24oY29uc3QgU3RyaW5nJiBsb2NhbGUpCit7Cisg
ICAgc3RydWN0IExvY2FsZVNjcmlwdCB7CisgICAgICAgIGNvbnN0IGNoYXIqIGxvY2FsZTsKKyAg
ICAgICAgVVNjcmlwdENvZGUgc2NyaXB0OworICAgIH07CisKKyAgICAvLyBGSVhNRTogQWRkIGFs
bCBsYW5ndWFnZXMgZnJvbSBJQ1UuCisgICAgc3RhdGljIGNvbnN0IExvY2FsZVNjcmlwdCBsb2Nh
bGVTY3JpcHRMaXN0W10gPSB7CisgICAgICAgIHsgImphIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9I
SVJBR0FOQSB9LAorICAgICAgICB7ICJrbyIsIFVTQ1JJUFRfSEFOR1VMIH0sCisgICAgICAgIHsg
InJ1IiwgVVNDUklQVF9DWVJJTExJQyB9LAorICAgICAgICB7ICJ6aCIsIFVTQ1JJUFRfSEFOIH0s
CisgICAgICAgIHsgInpoX2NuIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTiB9LAorICAgICAgICB7
ICJ6aF9oYW5zIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTiB9LAorICAgICAgICB7ICJ6aF9oYW50
IiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4gfSwKKyAgICAgICAgeyAiemhfaGsiLCBVU0NSSVBU
X1RSQURJVElPTkFMX0hBTiB9LAorICAgICAgICB7ICJ6aF90dyIsIFVTQ1JJUFRfVFJBRElUSU9O
QUxfSEFOIH0KKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVVNjcmlwdENv
ZGU+IExvY2FsZVNjcmlwdE1hcDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExvY2FsZVNjcmlw
dE1hcCwgbG9jYWxlU2NyaXB0TWFwLCAoKSk7CisgICAgaWYgKGxvY2FsZVNjcmlwdE1hcC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YobG9jYWxlU2Ny
aXB0TGlzdCkgLyBzaXplb2YobG9jYWxlU2NyaXB0TGlzdFswXSk7ICsraSkKKyAgICAgICAgICAg
IGxvY2FsZVNjcmlwdE1hcC5zZXQobG9jYWxlU2NyaXB0TGlzdFtpXS5sb2NhbGUsIGxvY2FsZVNj
cmlwdExpc3RbaV0uc2NyaXB0KTsKKyAgICB9CisKKyAgICBTdHJpbmcgY2Fub25pY2FsTG9jYWxl
ID0gbG9jYWxlLmxvd2VyKCkucmVwbGFjZSgnLScsICdfJyk7CisgICAgd2hpbGUgKCFjYW5vbmlj
YWxMb2NhbGUuaXNFbXB0eSgpKSB7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBVU2NyaXB0Q29k
ZT46Oml0ZXJhdG9yIGl0ID0gbG9jYWxlU2NyaXB0TWFwLmZpbmQoY2Fub25pY2FsTG9jYWxlKTsK
KyAgICAgICAgaWYgKGl0ICE9IGxvY2FsZVNjcmlwdE1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBpdC0+c2Vjb25kOworICAgICAgICBzaXplX3QgcG9zID0gY2Fub25pY2FsTG9jYWxlLnJl
dmVyc2VGaW5kKCdfJyk7CisgICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2Fub25pY2FsTG9jYWxlID0gY2Fub25pY2FsTG9jYWxlLnN1YnN0
cmluZygwLCBwb3MpOworICAgIH0KKyAgICByZXR1cm4gVVNDUklQVF9DT01NT047Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nSUNVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nSUNVLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTc3MDc1
MTE3NzEwNDZlMmE5Nzk1Mzc4ZmJjZmVhM2JmZWE2MjgzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdJQ1UuY3BwCkBA
IC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9jYWxlVG9TY3Jp
cHRNYXBwaW5nLmgiCisKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gVHJlYXQgY2VydGFpbiBmYW1pbGllcyBvZiBzY3JpcHQgY29k
ZXMgYXMgYSBzaW5nbGUgc2NyaXB0IGZvciBhc3NpZ25pbmcgYSBwZXItc2NyaXB0IGZvbnQgaW4g
U2V0dGluZ3MuCitzdGF0aWMgVVNjcmlwdENvZGUgc2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rpb24o
VVNjcmlwdENvZGUgc2NyaXB0Q29kZSkKK3sKKyAgICBzd2l0Y2ggKHNjcmlwdENvZGUpIHsKKyAg
ICBjYXNlIFVTQ1JJUFRfSElSQUdBTkE6CisgICAgY2FzZSBVU0NSSVBUX0tBVEFLQU5BOgorICAg
IGNhc2UgVVNDUklQVF9KQVBBTkVTRToKKyAgICAgICAgcmV0dXJuIFVTQ1JJUFRfS0FUQUtBTkFf
T1JfSElSQUdBTkE7CisgICAgY2FzZSBVU0NSSVBUX0tPUkVBTjoKKyAgICAgICAgcmV0dXJuIFVT
Q1JJUFRfSEFOR1VMOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzY3JpcHRDb2RlOwor
ICAgIH0KK30KKworVVNjcmlwdENvZGUgbG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlv
bihjb25zdCBTdHJpbmcmIGxvY2FsZSkKK3sKKyAgICBpZiAobG9jYWxlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIFVTQ1JJUFRfQ09NTU9OOworCisgICAgY2hhciBtYXhpbWl6ZWRMb2NhbGVb
VUxPQ19GVUxMTkFNRV9DQVBBQ0lUWV07CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CisgICAgdWxvY19hZGRMaWtlbHlTdWJ0YWdzKGxvY2FsZS51dGY4KCkuZGF0YSgpLCBt
YXhpbWl6ZWRMb2NhbGUsIHNpemVvZihtYXhpbWl6ZWRMb2NhbGUpLCAmc3RhdHVzKTsKKyAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiBVU0NSSVBUX0NPTU1PTjsKKwor
ICAgIGNoYXIgc2NyaXB0W1VMT0NfU0NSSVBUX0NBUEFDSVRZXTsKKyAgICB1bG9jX2dldFNjcmlw
dChtYXhpbWl6ZWRMb2NhbGUsIHNjcmlwdCwgc2l6ZW9mKHNjcmlwdCksICZzdGF0dXMpOworICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIFVTQ1JJUFRfQ09NTU9OOwor
CisgICAgVVNjcmlwdENvZGUgc2NyaXB0Q29kZTsKKyAgICB1c2NyaXB0X2dldENvZGUoc2NyaXB0
LCAmc2NyaXB0Q29kZSwgMSwgJnN0YXR1cyk7CisgICAgLy8gSWdub3JlIGVycm9yIHRoYXQgbXVs
dGlwbGUgc2NyaXB0cyBjb3VsZCBiZSByZXR1cm5lZCwgc2luY2Ugd2Ugb25seSB3YW50IG9uZSBz
Y3JpcHQuCisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9P
VkVSRkxPV19FUlJPUikKKyAgICAgICAgcmV0dXJuIFVTQ1JJUFRfQ09NTU9OOworCisgICAgcmV0
dXJuIHNjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKHNjcmlwdENvZGUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102883</attachid>
            <date>2011-08-04 01:25:33 -0700</date>
            <delta_ts>2012-02-07 21:37:42 -0800</delta_ts>
            <desc>revise after mitz&apos;s review</desc>
            <filename>bug-10874-20110804172530.patch</filename>
            <type>text/plain</type>
            <size>29459</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIzNTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggY2VhZjIz
MDUwOWI4MDg5NjJmZmVhZDNkMmNiOTRkZTdkN2NiYTU2MC4uYzkzMWYzZmU3YzczNTk0MDE4ZTc3
YzRhY2VhYjQ0ODUzYTNkOGM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNTQsNiArMTE1
NCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0
LmNwcAogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4
dC9MaW5lRW5kaW5nLmNwcAorICAgIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5n
RGVmYXVsdC5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplZERhdGVOb25lLmNwcAogICAg
IHBsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0
L1F1b3RlZFByaW50YWJsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYjE2Y2ZjYjViNDkyNjgyZGUzNmM1
ZWNmNTJjMDZhNDM0N2E0Yzk2Li4yZDVhMzlhZDcwZGRlNjViMDE0MDFmOGU5ZTExNjNkYWUxOGUy
NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDgtMDMgIE1hdHQgRmFsa2Vu
aGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSAtd2Via2l0LWxvY2Fs
ZSBmb3IgZm9udCBzZWxlY3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDg3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluZmVyIGEgc2NyaXB0IGZyb20gLXdlYmtpdC1sb2NhbGUgdG8gdXNlIHRv
IGNob29zZSBhIGZvbnQgZm9yIGdlbmVyaWMKKyAgICAgICAgZm9udCBmYW1pbGllcyBhbmQgdGhl
IGRlZmF1bHQgdW5zdHlsZWQgZm9udC4gIFRoZSBmb250IGlzIHJldHJpZXZlZAorICAgICAgICBm
cm9tIHBlci1zY3JpcHQgZm9udCBzZXR0aW5ncyAoc2VlIGJ1ZyAyMDc5NykuICBTaW5jZSB0aGVz
ZSBzZXR0aW5ncworICAgICAgICBoYXZlIG5vdCBjaGFuZ2VkIHRoZXJlIHNob3VsZCBiZSBubyB2
aXNpYmxlIGVmZmVjdCB5ZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHA6IFVzZSBzY3JpcHQgd2hlbiBnZXR0aW5nIGZvbnQgZnJvbSBTZXR0aW5ncworICAgICAgICAo
V2ViQ29yZTo6Zm9udERhdGFGb3JHZW5lcmljRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluOiBJbmNyZWFzZSBwcmlvcml0eSBvZiAtd2Via2l0LWxvY2FsZSBzaW5jZSBpdCBhZmZl
Y3RzIGZvbnQKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOiBTZXQgc2NyaXB0IGluIGZv
bnQgYmFzZWQgb24gLXdlYmtpdC1sb2NhbGUKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KTogRmFsbGJh
Y2sgdG8gVVNDUklQVF9DT01NT04KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVz
Y3JpcHRpb24uaDogQWRkIG1fc2NyaXB0CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRp
b246OkZvbnREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246
OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OnNldFNjcmlwdCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246Om9wZXJhdG9yPT0pOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVTY3JpcHQ6OmlmKToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsZVNjcmlwdDo6d2hpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9T
Y3JpcHRNYXBwaW5nSUNVLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzY3JpcHRDb2Rl
Rm9yRm9udFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGVUb1NjcmlwdENvZGVG
b3JGb250U2VsZWN0aW9uKToKKwogMjAxMS0wOC0wMyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3Bo
ZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsZWFuIHVwIHZhbHVlIGNsYW1waW5nIGlu
IENTU1N0eWxlU2VsZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2Nzdm
OGYwNWNjNmNiNjcwZmRkMTY2MzFmY2YxMGNiMzZjMWE0MTFkLi4xMjIwNGMyOGExNGRmZGQ5M2Jm
ZGM0YmNmYzBkNDExNzdkNjY3ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTI3OTksNiArMjc5OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9MaW5lRW5kaW5nLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9j
YWxlVG9TY3JpcHRNYXBwaW5nLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9j
YWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTG9jYWxpemVkRGF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xv
Y2FsaXplZERhdGVOb25lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGl6ZWROdW1iZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4
IDRlZTg0ZDE2MmRjZDMzMGNlZTFiZTI4Y2NjNTBjYzQyNjAwMThmZDYuLmVlZjQxYTlkMTJiN2Ni
OTk0YmU2MDY4NDNmOTc5MGRhYzA3ZDg5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCkBAIC0xMzQwLDYgKzEzNDAsNyBAQAogICAgICAgICBbJ2V4Y2x1ZGUnLCAncGxh
dGZvcm0vaW1hZ2UtZW5jb2RlcnMvUE5HSW1hZ2VFbmNvZGVyXFwuKGNwcHxoKSQnXSwKICAgICAg
ICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVcXC5jcHAkJ10s
CiAgICAgICAgIFsnZXhjbHVkZScsICdwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbVxcLmNw
cCQnXSwKKyAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRN
YXBwaW5nRGVmYXVsdFxcLmNwcCQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL3Rl
eHQvTG9jYWxpemVkTnVtYmVyTm9uZVxcLmNwcCQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ3Bs
YXRmb3JtL3RleHQvVGV4dEVuY29kaW5nRGV0ZWN0b3JOb25lXFwuY3BwJCddLAogICAgICAgXSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCAwODM2MWI2NGU0NmNjNjJkMTMzZDFkYzliODgyZmFiZmQ4Mjg4
OWRkLi5iNjAzMGU0NTkzYTQ5OTdlMDJlYjU2ODY2YWMyNjM0YWM3OWFjYTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC00MzYxLDYgKzQzNjEsOSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQv
SHlwaGVuYXRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9u
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nSUNVLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL3RleHQvTG9jYWxpemVkRGF0ZU5vbmUuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYThlM2IyYjk2
OGM0NTQyNTIzMWU2MWRjMTQ2ODllNTlkNmQwNzdlZS4uOTgwMGYyY2MyODVkZTI5MTM1YzRmMzVh
NWQ5YTY4MDM1ODljMzliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk2MCw2ICs5NjAsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAgXAogICAgIHBsYXRmb3JtL3Rl
eHQvQmlkaUNvbnRleHQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCBc
CisgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcCBcCiAg
ICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWREYXRlTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3Rl
eHQvTG9jYWxpemVkTnVtYmVyTm9uZS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJp
bnRhYmxlLmNwcCBcCkBAIC0yMDMxLDYgKzIwMzIsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0
Zm9ybS9sZXZlbGRiL0xldmVsREJXcml0ZUJhdGNoLmggXAogICAgIHBsYXRmb3JtL3RleHQvQmlk
aVJ1bkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmggXAorICAgIHBsYXRm
b3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggXAogICAgIHBsYXRmb3JtL3RleHQvVGV4
dENoZWNrZXJDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaCBcCiAg
ICAgcGxhdGZvcm0vdGV4dC9Vbmljb2RlQmlkaS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZDljMDM4Yzk4MTBkZTExNzBlMjUyY2FmMjUx
MmM1OTgzMzVkYjc1Yy4uOWMyOWU3ZTVmNzlkZGEzYTIyN2NiZjVhMTExYzk5MGUwNjdlZWFhZCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMx
NTU3LDYgKzMxNTU3LDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1
bHQuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cdGV4dFxMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRc
TG9jYWxpemVkRGF0ZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdmYWI4NmFiZjVjZTg4
MzQ5ZDEwNGM4OGRjMjliNTEyZWY1NGQ0ZjUuLmNjZTJiMmFjMmFlNjc5NDhkMDEzMmVjYjAzZjUz
ZjE0NjgxZGM0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE3MjAsNiArMTcyMCw4IEBACiAJCTc1NzkzRUQ0MEQwQ0U4NUIw
MDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VEMTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2Fn
ZUV2ZW50Lm1tICovOyB9OwogCQk3NTc5M0VENTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2Fn
ZUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5h
bC5oICovOyB9OwogCQk3NTg5NzhFQzEyNzA5MEQ2MDA3NkQ1QTkgLyogU3BlZWNoSW5wdXRSZXN1
bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU4
OTc4RUExMjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmNwcCAqLzsgfTsKKwkJ
NzYzM0E3MjYxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYzM0E3MjQxM0Q4QjMz
QTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovOyB9OworCQk3NjMzQTcyNzEz
RDhCMzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjMzQTcyNTEzRDhCMzNB
MDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgKi87IH07CiAJCTc2
MzdDNTQxMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQwMTEy
RTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJ
NzYzN0M1NDMxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQyMTEy
RTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87IH07CiAJCTc2
N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRDEx
QTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovOyB9OwpA
QCAtODM0Nyw2ICs4MzQ5LDggQEAKIAkJNzU3OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1l
c3NhZ2VFdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
NTg5NzhFQTEyNzA5MEQ2MDA3NkQ1QTkgLyogU3BlZWNoSW5wdXRSZXN1bHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoSW5wdXRSZXN1bHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTg5NzhFQjEyNzA5MEQ2MDA3NkQ1QTkgLyogU3Bl
ZWNoSW5wdXRSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNo
SW5wdXRSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzYzM0E3MjQxM0Q4
QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzYzM0E3MjUxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0
TWFwcGluZ0RlZmF1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjM3QzU0
MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODI5Nyw2ICsxODMwMSw4IEBACiAJCQkJQTVBQkI3ODYxM0I5MDRC
QzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovLAogCQkJCTg5QjVFQTlG
MTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLywKIAkJCQk4OUI1RUFBMDExRTgw
MDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oICovLAorCQkJCTc2MzNBNzI0MTNEOEIzM0EwMDg1
MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCAqLywKKwkJCQk3NjMzQTcyNTEzRDhCMzNB
MDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgKi8sCiAJCQkJQTU3
MzJCMEMxMzZBMTZDNDAwNUM4RDdDIC8qIExvY2FsaXplZERhdGUuaCAqLywKIAkJCQlBNTczMkIw
RTEzNkExNzE1MDA1QzhEN0MgLyogTG9jYWxpemVkRGF0ZU5vbmUuY3BwICovLAogCQkJCUY1MTQy
QzY4MTIzRjEyQjAwMEY1QkQ0QyAvKiBMb2NhbGl6ZWROdW1iZXIuaCAqLywKQEAgLTIyMjg3LDYg
KzIyMjkzLDcgQEAKIAkJCQk3RUU2ODQ2OTEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9v
cENGLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNkU4MUVENzBBQjVENUU5MDBDODc4MzcgLyogTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTg3ODU2ODEy
MkNBMDY0MDAzQUFCREEgLyogTG9jYWxGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
NjMzQTcyNjEzRDhCMzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzVDRkNBOTExRjc5MzMyMDA5OUVEMDkgLyogTG9jYWxpemF0aW9uU3Ry
YXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NzMyQjBEMTM2QTE2QzQwMDVDOEQ3QyAvKiBM
b2NhbGl6ZWREYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTE0MkM2OTEyM0YxMkIwMDBGNUJE
NEMgLyogTG9jYWxpemVkTnVtYmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1Mjk5LDYgKzI1MzA2
LDcgQEAKIAkJCQk3RUU2ODQ2ODEyRDI2RTM4MDBFNzk0MTUgLyogTG9hZGVyUnVuTG9vcENGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA2RTgxRUVDMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4OTg3ODU2NzEyMkNB
MDY0MDAzQUFCREEgLyogTG9jYWxGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc2
MzNBNzI3MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1NzMyQjBGMTM2QTE3MTUwMDVDOEQ3QyAvKiBMb2NhbGl6
ZWREYXRlTm9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNUNDNDJEQzEyRjgwMUNBMDBENUY3
RTMgLyogTG9jYWxpemVkTnVtYmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzA0NkUxQUMx
MjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IGYyYTQxMjU0ZjUwNjIzMjRk
ZTEzOTQ3YjdiMmIyNGI2NjlkYmMxNDEuLjAyNzVjMGNlZmFhZjA5YWM2OTRhMDA2ZjE1ZGJmYWY3
NTE1ODc2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC0zOTIs
MjAgKzM5MiwyMSBAQCBzdGF0aWMgRm9udERhdGEqIGZvbnREYXRhRm9yR2VuZXJpY0ZhbWlseShE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEZvbnREZXNjcmlwdAogICAgICAgICByZXR1cm4gMDsK
ICAgICAKICAgICBBdG9taWNTdHJpbmcgZ2VuZXJpY0ZhbWlseTsKKyAgICBVU2NyaXB0Q29kZSBz
Y3JpcHQgPSBmb250RGVzY3JpcHRpb24uc2NyaXB0KCk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0g
Ii13ZWJraXQtc2VyaWYiKQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNlcmlm
Rm9udEZhbWlseSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNlcmlmRm9u
dEZhbWlseShzY3JpcHQpOwogICAgIGVsc2UgaWYgKGZhbWlseU5hbWUgPT0gIi13ZWJraXQtc2Fu
cy1zZXJpZiIpCi0gICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+c2Fuc1NlcmlmRm9u
dEZhbWlseSgpOworICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnNhbnNTZXJpZkZv
bnRGYW1pbHkoc2NyaXB0KTsKICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LWN1
cnNpdmUiKQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmN1cnNpdmVGb250RmFt
aWx5KCk7CisgICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+Y3Vyc2l2ZUZvbnRGYW1p
bHkoc2NyaXB0KTsKICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LWZhbnRhc3ki
KQotICAgICAgICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZhbnRhc3lGb250RmFtaWx5KCk7
CisgICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+ZmFudGFzeUZvbnRGYW1pbHkoc2Ny
aXB0KTsKICAgICBlbHNlIGlmIChmYW1pbHlOYW1lID09ICItd2Via2l0LW1vbm9zcGFjZSIpCi0g
ICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCk7CisgICAg
ICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KHNjcmlwdCk7CiAg
ICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSAiLXdlYmtpdC1waWN0b2dyYXBoIikKLSAgICAgICAg
Z2VuZXJpY0ZhbWlseSA9IHNldHRpbmdzLT5waWN0b2dyYXBoRm9udEZhbWlseSgpOworICAgICAg
ICBnZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPnBpY3RvZ3JhcGhGb250RmFtaWx5KHNjcmlwdCk7
CiAgICAgZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSAiLXdlYmtpdC1zdGFuZGFyZCIpCi0gICAgICAg
IGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CisgICAgICAg
IGdlbmVyaWNGYW1pbHkgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KHNjcmlwdCk7CiAK
ICAgICBpZiAoIWdlbmVyaWNGYW1pbHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZm9udENh
Y2hlKCktPmdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgZ2VuZXJpY0ZhbWlseSk7
CkBAIC01MDAsNiArNTAxLDggQEAgRm9udERhdGEqIENTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udERh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGMKICAgICBpZiAobV9m
b250RmFjZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChmYW1pbHlOYW1lLnN0YXJ0c1dpdGgo
Ii13ZWJraXQtIikpCiAgICAgICAgICAgICByZXR1cm4gZm9udERhdGFGb3JHZW5lcmljRmFtaWx5
KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CisgICAgICAgIGlmIChm
b250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpID09IEZvbnREZXNjcmlwdGlvbjo6U3RhbmRh
cmRGYW1pbHkgJiYgIWZvbnREZXNjcmlwdGlvbi5pc1NwZWNpZmllZEZvbnQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmb250RGF0YUZvckdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2Ny
aXB0aW9uLCAiLXdlYmtpdC1zdGFuZGFyZCIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
QEAgLTUxMCw2ICs1MTMsOCBAQCBGb250RGF0YSogQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgYwogICAgIGlmICghZmFt
aWx5Rm9udEZhY2VzIHx8IGZhbWlseUZvbnRGYWNlcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIC8v
IElmIHdlIHdlcmUgaGFuZGVkIGEgZ2VuZXJpYyBmYW1pbHksIGJ1dCB0aGVyZSB3YXMgbm8gbWF0
Y2gsIGdvIGFoZWFkIGFuZCByZXR1cm4gdGhlIGNvcnJlY3QgZm9udCBiYXNlZCBvZmYgb3VyCiAg
ICAgICAgIC8vIHNldHRpbmdzLgorICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmdlbmVyaWNG
YW1pbHkoKSA9PSBGb250RGVzY3JpcHRpb246OlN0YW5kYXJkRmFtaWx5ICYmICFmb250RGVzY3Jp
cHRpb24uaXNTcGVjaWZpZWRGb250KCkpCisgICAgICAgICAgICByZXR1cm4gZm9udERhdGFGb3JH
ZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwgIi13ZWJraXQtc3RhbmRh
cmQiKTsKICAgICAgICAgcmV0dXJuIGZvbnREYXRhRm9yR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50
LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlOYW1lcy5pbgppbmRleCA5YzIwZjdmY2YyNTFjMTJkOGIwNzVkMGIxZTUxZTU4
Mzk2OGU3N2QxLi5kMmQxZTAwOGQ3ZjAyMDhkZWRkZDhlMTc1OTkwYWE1OTZjNWU4NGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtMjEsNiArMjEsNyBAQCBmb250
LXZhcmlhbnQKIGZvbnQtd2VpZ2h0CiB0ZXh0LXJlbmRlcmluZwogLXdlYmtpdC1mb250LXNtb290
aGluZworLXdlYmtpdC1sb2NhbGUKIC13ZWJraXQtdGV4dC1vcmllbnRhdGlvbgogLWVwdWItdGV4
dC1vcmllbnRhdGlvbiA9IC13ZWJraXQtdGV4dC1vcmllbnRhdGlvbgogLXdlYmtpdC10ZXh0LXNp
emUtYWRqdXN0CkBAIC0yNTAsNyArMjUxLDYgQEAgei1pbmRleAogLXdlYmtpdC1saW5lLWJveC1j
b250YWluCiAtd2Via2l0LWxpbmUtYnJlYWsKIC13ZWJraXQtbGluZS1jbGFtcAotLXdlYmtpdC1s
b2NhbGUKIC13ZWJraXQtbG9naWNhbC13aWR0aAogLXdlYmtpdC1sb2dpY2FsLWhlaWdodAogLXdl
YmtpdC1tYXJnaW4tYWZ0ZXItY29sbGFwc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAppbmRleCBkYTA2NmY5MzA3OTA1MzZhNjVjYWJiNjU4OWY1ZGIyZDgzYWM2NGY0Li40
YmRiNDI2NzAwODBlMTAwYzM3ODZiODAxZjE0Y2VhOTg4MGU1MWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiSFRN
TFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIktleWZyYW1lTGlzdC5oIgogI2luY2x1ZGUg
IkxpbmtIYXNoLmgiCisjaW5jbHVkZSAiTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgiCiAjaW5jbHVk
ZSAiTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJNYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKQEAgLTEyODMsNiArMTI4NCw3
IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9j
dW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS0+c2V0
Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUodHJ1ZSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RkZm9udCA9IHNldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKICAgICAgICAgaWYg
KCFzdGRmb250LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdl
bmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpTdGFuZGFyZEZhbWlseSk7CiAgICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoc3RkZm9udCk7CiAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5hcHBlbmRGYW1pbHkoMCk7CiAg
ICAgICAgIH0KQEAgLTM0NzksNyArMzQ4MSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlEZWNsYXJhdGlvbnMoYm9vbCBpc0ltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlCiAK
ICAgICAgICAgICAgICAgICBpZiAoYXBwbHlGaXJzdCkgewogICAgICAgICAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChmaXJzdENTU1Byb3BlcnR5ID09IENTU1Byb3BlcnR5Q29sb3IsIENTU19j
b2xvcl9pc19maXJzdF9wcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgICAgIENPTVBJTEVfQVNT
RVJUKENTU1Byb3BlcnR5Wm9vbSA9PSBDU1NQcm9wZXJ0eUNvbG9yICsgMTQsIENTU196b29tX2lz
X2VuZF9vZl9maXJzdF9wcm9wX3JhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoQ1NTUHJvcGVydHlab29tID09IENTU1Byb3BlcnR5Q29sb3IgKyAxNSwgQ1NTX3pvb21f
aXNfZW5kX29mX2ZpcnN0X3Byb3BfcmFuZ2UpOwogICAgICAgICAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQgPT0gQ1NTUHJvcGVydHlab29tICsgMSwgQ1NT
X2xpbmVfaGVpZ2h0X2lzX2FmdGVyX3pvb20pOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIGdp
dmUgc3BlY2lhbCBwcmlvcml0eSB0byBmb250LXh4eCwgY29sb3IgcHJvcGVydGllcywgZXRjCkBA
IC00Nzc5LDYgKzQ3ODEsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5
KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICAgICAgbV9zdHlsZS0+c2V0TG9jYWxl
KG51bGxBdG9tKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9zdHlsZS0+c2V0TG9jYWxl
KHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgRm9udERlc2NyaXB0
aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0U2NyaXB0KGxvY2FsZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxl
Y3Rpb24obV9zdHlsZS0+bG9jYWxlKCkpKTsKKyAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICAgICAgbV9mb250RGlydHkgPSB0
cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJGaXQ6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYzQwYjdhZGE4MWJlNjEy
ZThiM2FiZjc4MmFmMTM5M2U4MjlmMGFlOC4uZTNmMDM1OWYzNzg3NTkxOTJhOTFhOTQ0NDg3ZGIy
NDc4ZWI1MDdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTY2LDYgKzY2LDggQEAg
c3RhdGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIGdldEdlbmVyaWNGb250RmFtaWx5Rm9y
U2NyaXB0KGNvbnN0IFNjcmlwdEZvbnQKICAgICBTY3JpcHRGb250RmFtaWx5TWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGZvbnRNYXAuZmluZChzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCkpOwogICAg
IGlmIChpdCAhPSBmb250TWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAg
ICBpZiAoc2NyaXB0ICE9IFVTQ1JJUFRfQ09NTU9OKQorICAgICAgICByZXR1cm4gZ2V0R2VuZXJp
Y0ZvbnRGYW1pbHlGb3JTY3JpcHQoZm9udE1hcCwgVVNDUklQVF9DT01NT04pOwogICAgIHJldHVy
biBlbXB0eUF0b207CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggNWQ1MzM4OGRkY2IyNTgzZTFmZTk2NDIwODZlNTBl
OGRhMjQyYWM5Yi4uZGQzY2YzYTliMDhhMGMyODI3NzBlODE1OTRkYzM4ZjUwOTVkOWQ0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
LmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZm9udFNtb290aGluZyhB
dXRvU21vb3RoaW5nKQogICAgICAgICAsIG1fdGV4dFJlbmRlcmluZyhBdXRvVGV4dFJlbmRlcmlu
ZykKICAgICAgICAgLCBtX2lzU3BlY2lmaWVkRm9udChmYWxzZSkKKyAgICAgICAgLCBtX3Njcmlw
dChVU0NSSVBUX0NPTU1PTikKICAgICB7CiAgICAgfQogCkBAIC0xMDgsNiArMTA5LDcgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGtleXdvcmRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9rZXl3b3Jk
U2l6ZTsgfQogICAgIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmcoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxGb250U21vb3RoaW5nTW9kZT4obV9mb250U21vb3RoaW5nKTsgfQog
ICAgIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmluZyk7IH0KKyAgICBV
U2NyaXB0Q29kZSBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQogCiAgICAgRm9u
dFRyYWl0c01hc2sgdHJhaXRzTWFzaygpIGNvbnN0OwogICAgIGJvb2wgaXNTcGVjaWZpZWRGb250
KCkgY29uc3QgeyByZXR1cm4gbV9pc1NwZWNpZmllZEZvbnQ7IH0KQEAgLTEzOCw2ICsxNDAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihGb250T3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBzZXRUZXh0
T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uIHRleHRPcmllbnRhdGlvbikgeyBtX3RleHRPcmll
bnRhdGlvbiA9IHRleHRPcmllbnRhdGlvbjsgfQogICAgIHZvaWQgc2V0V2lkdGhWYXJpYW50KEZv
bnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50KSB7IG1fd2lkdGhWYXJpYW50ID0gd2lkdGhWYXJp
YW50OyB9CisgICAgdm9pZCBzZXRTY3JpcHQoVVNjcmlwdENvZGUgcykgeyBtX3NjcmlwdCA9IHM7
IH0KIAogcHJpdmF0ZToKICAgICBGb250RmFtaWx5IG1fZmFtaWx5TGlzdDsgLy8gVGhlIGxpc3Qg
b2YgZm9udCBmYW1pbGllcyB0byBiZSB1c2VkLgpAQCAtMTY4LDYgKzE3MSw3IEBAIHByaXZhdGU6
CiAgICAgdW5zaWduZWQgbV9mb250U21vb3RoaW5nIDogMjsgLy8gRm9udFNtb290aGluZ01vZGUK
ICAgICB1bnNpZ25lZCBtX3RleHRSZW5kZXJpbmcgOiAyOyAvLyBUZXh0UmVuZGVyaW5nTW9kZQog
ICAgIGJvb2wgbV9pc1NwZWNpZmllZEZvbnQgOiAxOyAvLyBUcnVlIGlmIGEgd2ViIHBhZ2Ugc3Bl
Y2lmaWVzIGEgbm9uLWdlbmVyaWMgZm9udCBmYW1pbHkgYXMgdGhlIGZpcnN0IGZvbnQgZmFtaWx5
LgorICAgIFVTY3JpcHRDb2RlIG1fc2NyaXB0OyAvLyBVc2VkIHRvIGhlbHAgY2hvb3NlIGFuIGFw
cHJvcHJpYXRlIGZvbnQgZm9yIGdlbmVyaWMgZm9udCBmYW1pbGllcy4KIH07CiAKIGlubGluZSBi
b29sIEZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mIG90
aGVyKSBjb25zdApAQCAtMTg4LDcgKzE5Miw4IEBAIGlubGluZSBib29sIEZvbnREZXNjcmlwdGlv
bjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdAogICAgICAg
ICAmJiBtX2lzU3BlY2lmaWVkRm9udCA9PSBvdGhlci5tX2lzU3BlY2lmaWVkRm9udAogICAgICAg
ICAmJiBtX29yaWVudGF0aW9uID09IG90aGVyLm1fb3JpZW50YXRpb24KICAgICAgICAgJiYgbV90
ZXh0T3JpZW50YXRpb24gPT0gb3RoZXIubV90ZXh0T3JpZW50YXRpb24KLSAgICAgICAgJiYgbV93
aWR0aFZhcmlhbnQgPT0gb3RoZXIubV93aWR0aFZhcmlhbnQ7CisgICAgICAgICYmIG1fd2lkdGhW
YXJpYW50ID09IG90aGVyLm1fd2lkdGhWYXJpYW50CisgICAgICAgICYmIG1fc2NyaXB0ID09IG90
aGVyLm1fc2NyaXB0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2VkYjU5ZmI5ZjljY2U3
YjkxZDdmMGEyN2FiY2VmMmExNTc4YWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuaApAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBMb2NhbGVUb1NjcmlwdE1hcHBpbmdfaAorI2RlZmluZSBMb2NhbGVUb1NjcmlwdE1h
cHBpbmdfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9Vbmljb2RlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVVNjcmlwdENvZGUgbG9jYWxl
VG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihjb25zdCBTdHJpbmcmIGxvY2FsZSk7CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmMxMTI1YTli
ZmI0MDRkODNhZTdhNDdmYzBjNzExOGQ3YjMzZGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcApA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvY2FsZVRvU2Ny
aXB0TWFwcGluZy5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitVU2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0
aW9uKGNvbnN0IFN0cmluZyYgbG9jYWxlKQoreworICAgIHN0cnVjdCBMb2NhbGVTY3JpcHQgewor
ICAgICAgICBjb25zdCBjaGFyKiBsb2NhbGU7CisgICAgICAgIFVTY3JpcHRDb2RlIHNjcmlwdDsK
KyAgICB9OworCisgICAgLy8gRklYTUU6IEFkZCBhbGwgbGFuZ3VhZ2VzIGZyb20gSUNVLgorICAg
IHN0YXRpYyBjb25zdCBMb2NhbGVTY3JpcHQgbG9jYWxlU2NyaXB0TGlzdFtdID0geworICAgICAg
ICB7ICJqYSIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEgfSwKKyAgICAgICAgeyAia28i
LCBVU0NSSVBUX0hBTkdVTCB9LAorICAgICAgICB7ICJydSIsIFVTQ1JJUFRfQ1lSSUxMSUMgfSwK
KyAgICAgICAgeyAiemgiLCBVU0NSSVBUX0hBTiB9LAorICAgICAgICB7ICJ6aF9jbiIsIFVTQ1JJ
UFRfU0lNUExJRklFRF9IQU4gfSwKKyAgICAgICAgeyAiemhfaGFucyIsIFVTQ1JJUFRfU0lNUExJ
RklFRF9IQU4gfSwKKyAgICAgICAgeyAiemhfaGFudCIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFO
IH0sCisgICAgICAgIHsgInpoX2hrIiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4gfSwKKyAgICAg
ICAgeyAiemhfdHciLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTiB9CisgICAgfTsKKworICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFVTY3JpcHRDb2RlPiBMb2NhbGVTY3JpcHRNYXA7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChMb2NhbGVTY3JpcHRNYXAsIGxvY2FsZVNjcmlwdE1hcCwgKCkp
OworICAgIGlmIChsb2NhbGVTY3JpcHRNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGxvY2FsZVNjcmlwdExpc3QpIC8gc2l6ZW9mKGxvY2FsZVNj
cmlwdExpc3RbMF0pOyArK2kpCisgICAgICAgICAgICBsb2NhbGVTY3JpcHRNYXAuc2V0KGxvY2Fs
ZVNjcmlwdExpc3RbaV0ubG9jYWxlLCBsb2NhbGVTY3JpcHRMaXN0W2ldLnNjcmlwdCk7CisgICAg
fQorCisgICAgU3RyaW5nIGNhbm9uaWNhbExvY2FsZSA9IGxvY2FsZS5sb3dlcigpLnJlcGxhY2Uo
Jy0nLCAnXycpOworICAgIHdoaWxlICghY2Fub25pY2FsTG9jYWxlLmlzRW1wdHkoKSkgeworICAg
ICAgICBIYXNoTWFwPFN0cmluZywgVVNjcmlwdENvZGU+OjppdGVyYXRvciBpdCA9IGxvY2FsZVNj
cmlwdE1hcC5maW5kKGNhbm9uaWNhbExvY2FsZSk7CisgICAgICAgIGlmIChpdCAhPSBsb2NhbGVT
Y3JpcHRNYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICAgICAg
c2l6ZV90IHBvcyA9IGNhbm9uaWNhbExvY2FsZS5yZXZlcnNlRmluZCgnXycpOworICAgICAgICBp
ZiAocG9zID09IG5vdEZvdW5kKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhbm9uaWNh
bExvY2FsZSA9IGNhbm9uaWNhbExvY2FsZS5zdWJzdHJpbmcoMCwgcG9zKTsKKyAgICB9CisgICAg
cmV0dXJuIFVTQ1JJUFRfQ09NTU9OOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGlu
Z0lDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFw
cGluZ0lDVS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk3NzA3NTExNzcxMDQ2ZTJhOTc5NTM3OGZiY2ZlYTNi
ZmVhNjI4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TG9jYWxlVG9TY3JpcHRNYXBwaW5nSUNVLmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkxvY2FsZVRvU2NyaXB0TWFwcGluZy5oIgorCisjaW5jbHVkZSA8
dW5pY29kZS91bG9jLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRyZWF0
IGNlcnRhaW4gZmFtaWxpZXMgb2Ygc2NyaXB0IGNvZGVzIGFzIGEgc2luZ2xlIHNjcmlwdCBmb3Ig
YXNzaWduaW5nIGEgcGVyLXNjcmlwdCBmb250IGluIFNldHRpbmdzLgorc3RhdGljIFVTY3JpcHRD
b2RlIHNjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKFVTY3JpcHRDb2RlIHNjcmlwdENvZGUpCit7
CisgICAgc3dpdGNoIChzY3JpcHRDb2RlKSB7CisgICAgY2FzZSBVU0NSSVBUX0hJUkFHQU5BOgor
ICAgIGNhc2UgVVNDUklQVF9LQVRBS0FOQToKKyAgICBjYXNlIFVTQ1JJUFRfSkFQQU5FU0U6Cisg
ICAgICAgIHJldHVybiBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BOworICAgIGNhc2UgVVND
UklQVF9LT1JFQU46CisgICAgICAgIHJldHVybiBVU0NSSVBUX0hBTkdVTDsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gc2NyaXB0Q29kZTsKKyAgICB9Cit9CisKK1VTY3JpcHRDb2RlIGxv
Y2FsZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rpb24oY29uc3QgU3RyaW5nJiBsb2NhbGUpCit7
CisgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBVU0NSSVBUX0NPTU1P
TjsKKworICAgIGNoYXIgbWF4aW1pemVkTG9jYWxlW1VMT0NfRlVMTE5BTUVfQ0FQQUNJVFldOwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVsb2NfYWRkTGlrZWx5
U3VidGFncyhsb2NhbGUudXRmOCgpLmRhdGEoKSwgbWF4aW1pemVkTG9jYWxlLCBzaXplb2YobWF4
aW1pemVkTG9jYWxlKSwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAg
ICAgICByZXR1cm4gVVNDUklQVF9DT01NT047CisKKyAgICBjaGFyIHNjcmlwdFtVTE9DX1NDUklQ
VF9DQVBBQ0lUWV07CisgICAgdWxvY19nZXRTY3JpcHQobWF4aW1pemVkTG9jYWxlLCBzY3JpcHQs
IHNpemVvZihzY3JpcHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiBVU0NSSVBUX0NPTU1PTjsKKworICAgIFVTY3JpcHRDb2RlIHNjcmlwdENv
ZGU7CisgICAgdXNjcmlwdF9nZXRDb2RlKHNjcmlwdCwgJnNjcmlwdENvZGUsIDEsICZzdGF0dXMp
OworICAgIC8vIElnbm9yZSBlcnJvciB0aGF0IG11bHRpcGxlIHNjcmlwdHMgY291bGQgYmUgcmV0
dXJuZWQsIHNpbmNlIHdlIG9ubHkgd2FudCBvbmUgc2NyaXB0LgorICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSAmJiBzdGF0dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCisgICAgICAgIHJl
dHVybiBVU0NSSVBUX0NPTU1PTjsKKworICAgIHJldHVybiBzY3JpcHRDb2RlRm9yRm9udFNlbGVj
dGlvbihzY3JpcHRDb2RlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125996</attachid>
            <date>2012-02-07 21:37:47 -0800</date>
            <delta_ts>2012-03-14 20:45:11 -0700</delta_ts>
            <desc>add tests for language-based font selection</desc>
            <filename>bug-10874-20120208143746.patch</filename>
            <type>text/plain</type>
            <size>16101</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTA5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDQzYTZmMWQzN2ZmOTk1NDJiOGU2
YmY4ZmQwMTQxOTQ3NDJhYmYxNy4uYTYyZDFiM2E2M2NkMzY2YTdiNjJiYWFiM2QwNmNiZTg5YjY5
MzZlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTA3ICBNYXR0IEZhbGtlbmhhZ2Vu
ICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBsYW5nLCB4bWw6bGFuZywgY29udGVu
dC1sYW5ndWFnZSBpZ25vcmVkIHdoZW4gY2hvb3NpbmcgZm9udHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBmb250IHNlbGVjdGlv
biBiYXNlZCBvbiBsYW5nL3htbDpsYW5nLgorCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvbGFuZy1zZW5zaXRpdmUtZm9udHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFuZy1zZW5zaXRpdmUtZm9udHMteG1sLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xhbmct
c2Vuc2l0aXZlLWZvbnRzLXhtbC54aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvbGFuZy1zZW5zaXRpdmUtZm9udHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy1leHBlY3RlZC5o
dG1sOiBBZGRlZCwgdG8gY2hhbmdlIHRoaXMgdG8gYmUgYSByZWZ0ZXN0IGluc3RlYWQgb2YgYSBw
aXhlbCB0ZXN0LgorICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5z
aXRpdmUtZm9udHMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy1leHBlY3RlZC5wbmc6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNp
dGl2ZS1mb250cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZs
L1NraXBwZWQ6IFNraXAgcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0IG92ZXJyaWRlUHJlZmVyZW5j
ZSgiV2ViS2l0KkZvbnRNYXAiLi4uKQorICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvU2tpcHBl
ZDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9T
a2lwcGVkOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vd2syL1NraXBwZWQ6IERpdHRvLgorCiAyMDEyLTAyLTA2ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2Nvb2tpZS1pbmplY3Rpb24uaHRtbCBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFuZy1zZW5zaXRpdmUtZm9udHMtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xhbmctc2Vuc2l0aXZlLWZv
bnRzLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA2MGQyMzg4YWM2MzdkNmJhODhhNWVhNGIz
YTI0YmFlZDkxMTQ4MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2xhbmctc2Vuc2l0aXZlLWZvbnRzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwxMSBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMjBweCI+Cis8
ZGl2IHN0eWxlPSJmb250LWZhbWlseTogJ0FoZW0nIj50aGlzIGlzIGFoZW0gZm9udDwvZGl2Pgor
PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6ICdBaGVtJyI+dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4K
KzxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiAnQWhlbSciPnRoaXMgaXMgYWhlbSBmb250PC9kaXY+
Cis8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogJ0FoZW0nIj50aGlzIGlzIGFoZW0gZm9udDwvZGl2
PgorPGRpdj50aGlzIGlzIG5vdCBhaGVtIGZvbnQ8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFu
Zy1zZW5zaXRpdmUtZm9udHMteG1sLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2ZS1mb250cy14bWwtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NjE1OWI0OGY4OTZjOTIxY2NhMGU2ZWE5NjUwMDMyYTcxMjM0NGRkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFuZy1z
ZW5zaXRpdmUtZm9udHMteG1sLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+
Cis8Ym9keT4KKzxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiAnQWhlbSc7IGZvbnQtc2l6ZTogMjBw
eCI+Cis8ZGl2PnRoaXMgaXMgYWhlbSBmb250PC9kaXY+Cis8ZGl2PnRoaXMgaXMgYWhlbSBmb250
PC9kaXY+Cis8ZGl2PnRoaXMgaXMgYWhlbSBmb250PC9kaXY+Cis8ZGl2PnRoaXMgaXMgYWhlbSBm
b250PC9kaXY+Cis8ZGl2PnRoaXMgaXMgYWhlbSBmb250PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L2xhbmctc2Vuc2l0aXZlLWZvbnRzLXhtbC54aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2xhbmctc2Vuc2l0aXZlLWZvbnRzLXhtbC54aHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MWE0OTQ4NmM4ZWVhMDAyMzk5YTRmMmNkNGE1OWJlMTJlNTcxY2YwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFuZy1zZW5zaXRpdmUtZm9u
dHMteG1sLnhodG1sCkBAIC0wLDAgKzEsMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEu
MCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRt
bDEtdHJhbnNpdGlvbmFsLmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRTdGFuZGFyZEZvbnRNYXAiLCBbICJIYW5zIiwgIkFoZW0iIF0pOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RmFudGFzeUZvbnRNYXAiLCBbICJI
YW5zIiwgIkFoZW0iIF0pOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwhLS0gVGVz
dCBmb3IgbGFuZ3VhZ2Utc2Vuc2l0aXZlIGZvbnQgc2VsZWN0aW9uIChidWcgMTA4NzQpLiBTb21l
IGZvbnRzIGZvcgorU2ltcGxpZmllZCBIYW4gc2NyaXB0IGlzIHNldCB0byBBaGVtIGFuZCB0aGUg
ZGl2cyBhcmUgc2V0IHRvIGxhbmd1YWdlIHpoX0NOCit3aGljaCBjb3JyZXNwb25kcyB0byB0aGF0
IHNjcmlwdC4gVGhlIHRlc3QgcGFzc2VzIGlmIGFsbCBkaXZzIGFyZSBpbiBBaGVtCitmb250Lgor
LS0+Cis8ZGl2IHN0eWxlPSJmb250LXNpemU6IDIwcHgiPgorPGRpdiBzdHlsZT0iZm9udC1mYW1p
bHk6ICdBaGVtJyI+dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KKzxkaXYgbGFuZz0iemhfQ04iPnRo
aXMgaXMgYWhlbSBmb250PC9kaXY+Cis8ZGl2IGlkPSJ0YXJnZXQxIiBsYW5nPSJhciI+dGhpcyBp
cyBhaGVtIGZvbnQ8L2Rpdj4KKzxkaXYgaWQ9InRhcmdldDIiIGxhbmc9ImFyIiBzdHlsZT0iZm9u
dC1mYW1pbHk6IHNhbnMtc2VyaWYiPnRoaXMgaXMgYWhlbSBmb250PC9kaXY+Cis8ZGl2IHhtbDps
YW5nPSJ6aF9DTiI+dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIikubGFuZyA9ICJ6aF9DTiI7CisKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIikubGFuZyA9ICJ6aF9DTiI7Citkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0MiIpLnN0eWxlLmZvbnRGYW1pbHkgPSAiZmFudGFzeSI7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2xhbmctc2Vuc2l0aXZlLWZvbnRzLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2ZS1mb250cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNhY2RhMjAwOTRjZTMyMDU3MzRhMTdlNWZmZTEyZjhkNmUzZDAyNGYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNp
dGl2ZS1mb250cy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRTdGFuZGFy
ZEZvbnRNYXAiLCBbICJIYW5zIiwgIkFoZW0iIF0pOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RmFudGFzeUZvbnRNYXAiLCBbICJIYW5zIiwgIkFo
ZW0iIF0pOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwhLS0gVGVzdCBmb3IgbGFu
Z3VhZ2Utc2Vuc2l0aXZlIGZvbnQgc2VsZWN0aW9uIChidWcgMTA4NzQpLiBTb21lIGZvbnRzIGZv
cgorU2ltcGxpZmllZCBIYW4gc2NyaXB0IGlzIHNldCB0byBBaGVtIGFuZCB0aGUgZGl2cyBhcmUg
c2V0IHRvIGxhbmd1YWdlIHpoX0NOCit3aGljaCBjb3JyZXNwb25kcyB0byB0aGF0IHNjcmlwdC4g
VGhlIHRlc3QgcGFzc2VzIGlmIGFsbCBkaXZzIGFyZSBpbiBBaGVtCitmb250LCBleGNlcHQgZm9y
IHRoZSBmaW5hbCBkaXYgYXMgeG1sOmxhbmcgc2hvdWxkIGJlIGlnbm9yZWQgaW4gSFRNTC4KKy0t
PgorPGRpdiBzdHlsZT0iZm9udC1zaXplOiAyMHB4Ij4KKzxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5
OiAnQWhlbSciPnRoaXMgaXMgYWhlbSBmb250PC9kaXY+Cis8ZGl2IGxhbmc9InpoX0NOIj50aGlz
IGlzIGFoZW0gZm9udDwvZGl2PgorPGRpdiBpZD0idGFyZ2V0MSIgbGFuZz0iYXIiPnRoaXMgaXMg
YWhlbSBmb250PC9kaXY+Cis8ZGl2IGlkPSJ0YXJnZXQyIiBsYW5nPSJhciIgc3R5bGU9ImZvbnQt
ZmFtaWx5OiBzYW5zLXNlcmlmIj50aGlzIGlzIGFoZW0gZm9udDwvZGl2PgorPGRpdiB4bWw6bGFu
Zz0iemhfQ04iPnRoaXMgaXMgbm90IGFoZW0gZm9udDwvZGl2PgorPC9kaXY+Cis8c2NyaXB0Pgor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKS5sYW5nID0gInpoX0NOIjsKKworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDIiKS5sYW5nID0gInpoX0NOIjsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIikuc3R5bGUuZm9udEZhbWlseSA9ICJmYW50YXN5IjsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1m
b250cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNTk3M2UxM2M5MDA1NjAxZmMwYzQwYzI3
ZmM5YzlmMTE0M2I4YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0aXZlLWZvbnRzLWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSw5IEBACis8aHRtbD4KKzxib2R5PgorPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6ICdBaGVt
JzsgZm9udC1zaXplOiAyMHB4Ij4KKzxkaXY+dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KKzxkaXY+
dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KKzxkaXY+dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KKzwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1sCmluZGV4
IDNiMjYyMTBlMzFlMzY0YzI3NjI2OTUyZjkzZDNjYzU2NWRjZWRjZjMuLmJjMTgzYzYzYTYyMDE5
ODBlZDZhNjJjMmYxZjVkMGE5NGYxNGYwYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0aXZlLWZvbnRzLmh0
bWwKQEAgLTksOCArOSw5IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08IS0tIFRoaXMgdGVzdHMgbG9jYWxlLXNlbnNpdGl2
ZSBmb250IHNlbGVjdGlvbi4gIFVzaW5nIG92ZXJyaWRlUHJlZmVyZW5jZSwgIHRoZQotZm9udHMg
Zm9yIFNpbXBsaWZpZWQgSGFuIGFyZSB0byBBaGVtIGZvbnQuICBTbyBhbGwgZGl2cyBzaG91bGQg
bWF0Y2guIC0tPgorPCEtLSBUaGlzIHRlc3RzIGxvY2FsZS1zZW5zaXRpdmUgZm9udCBzZWxlY3Rp
b24gKGJ1ZyAxMDg3NCkuICBVc2luZworb3ZlcnJpZGVQcmVmZXJlbmNlLCAgdGhlIGZvbnRzIGZv
ciBTaW1wbGlmaWVkIEhhbiBhcmUgdG8gQWhlbSBmb250LiAgU28gYWxsIGRpdnMKK3Nob3VsZCBt
YXRjaC4gLS0+CiA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDIwcHgiPgogPGRpdiBzdHlsZT0iZm9u
dC1mYW1pbHk6ICdBaGVtJyI+dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KIDxkaXYgc3R5bGU9Ii13
ZWJraXQtbG9jYWxlOiAnemhfQ04nIj50aGlzIGlzIGFoZW0gZm9udDwvZGl2PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0td2luL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRp
dmUtZm9udHMtZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmI1
MzViNmEyNzU3ODg4NTkwNjJkMGU5YjE2ZTM5ODA5YWQxM2UyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpsaXRlcmFsIDI4NzQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpa
KT1oXmhsQSVAV3MkbEhgb2s8bX0/b1Qhc3tiCnpXTWZNK15GJWBuJU09UihsZj18U2dKZV5LPFck
MlgoPS0jYSlLcCNqRFRmI3N4WHlVR0lFR1pyZDMob15pXi05UAp6IU97S0N8TEtwcFNyVm4yeXww
JClESzF4UXc+MTlEel84JSs5WFNTdTJZRD1GMz1UZENqMHtJRzhGQk9GJlJPb0MKemxZRHBUe3sh
Mn56VjtqRVooUk5VciFAWnFEeyZvJGg4WUsjNyY8c2RJT0UzNW5RdFctODFqeT9heCpCWFpEMyRY
CnpWajUrUDJFdTRjN3xqS3Z4bk1MR2pPSyNUVHJpcG8kaiR9ZCpsYShHdHlicFF2SXAyMFg3Rl9O
YjZNdzwmOyRURgpDMkx4TEgKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0aXZlLWZvbnRzLWV4cGVj
dGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMtZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxYWQwY2I0ODUzNzM3OTE2OTNjM2ZkOGU5ZTI4MDZkMmRjMzFmYjA1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDMzMjQKemNtZUFTQE4/KG9sSHlgdVZC
cSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1RnhlT0A9CnokO09zdT04
MStEbU1Jbm5DVyl6dTJGYSFkJCpHMShyZkRXLXNqMGc1UXd9ak9AYnIxUUlFR1pyZDMpRThAMzRY
Wgp6ISRFPGN8S3M9QkRFNGwzT0l4PGchZSM1QzlqMztnODV0TmpZVWF4VT9YWU5QMENKMyZTUXI+
aWEwb0NrQ0A0RUgKekZme1phMVlgZDV0PVphVDhUYX5+c3JLJnUkMX1nKm8le1ZwX2Z+SSkya2J5
UzlHdXduVV5RcXw1RVFhIVgzZWF1Cno7JFVFU3oqQzE3KDQqbHE4WCkreTslRXZQTyhDTngxWG8y
aG5tYX53JDd0PnQlXmpGYyp3Szw8cGh8ezY0OH1fKApWUiZHNEBYQnE8I2MpSSR6dGFEMGUwc3p8
VCYrN21ICgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2Nh
bGUtc2Vuc2l0aXZlLWZvbnRzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYWZhNGU4MWI3N2NjNDJjOTRhYmZkZWZkMDQ3OGZlNzY1NzEwYzk5Ni4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0aXZlLWZvbnRz
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLWxheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NzYKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDc2Ci0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NjAKLSAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDYwCi0gICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDIwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMzQweDIwCi0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAzNDA6ICJ0aGlzIGlzIGFoZW0gZm9udCIKLSAgICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMjApIHNpemUgNzg0eDIwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMzQweDIwCi0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAz
NDA6ICJ0aGlzIGlzIGFoZW0gZm9udCIKLSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
NDApIHNpemUgNzg0eDIwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMzQweDIwCi0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNDA6ICJ0aGlz
IGlzIGFoZW0gZm9udCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggNDAwNGEwOWZkNzUz
OGRhYTAxZGJlODZkMTIxYTgwMmM2MGE5ZWVjOC4uZjM3YjkwNmQyNmYxNDk2MWFhZDgzNGQ1ZmU3
MmE0Njk0ZmJmMzNiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBw
ZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTcyMCw2ICs3MjAs
OCBAQCBmYXN0L3JlcGFpbnQvbm8tY2FyZXQtcmVwYWludC1pbi1ub24tY29udGVudC1lZGl0YWJs
ZS1lbGVtZW50Lmh0bWwKIGZhc3Qvc3BhdGlhbC1uYXZpZ2F0aW9uCiBmYXN0L3RleHQvaW50ZXJu
YXRpb25hbC9jb250ZW50LWxhbmd1YWdlLWZvbnQtc2VsZWN0aW9uLmh0bWwKIGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2NvbnRlbnQtbGFuZ3VhZ2Utd2l0aC1zdWJ0YWdzLmh0bWwKK2Zhc3QvdGV4
dC9pbnRlcm5hdGlvbmFsL2xhbmctc2Vuc2l0aXZlLWZvbnRzLmh0bWwKK2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2xhbmctc2Vuc2l0aXZlLWZvbnRzLXhtbC54aHRtbAogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1sCiBmYXN0L3RleHQvemVyby1mb250
LXNpemUuaHRtbAogZmFzdC92aWV3cG9ydC92aWV3cG9ydC0xMjguaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrLXdrMi9Ta2lwcGVkCmluZGV4IGI1MWU2OWVjOWNjZWFkYTM4YzI5MTI3Zjc0M2VhNjhi
ZGViMjJiNTYuLjk3YmIwMjIwZDE2ZTJjZmIxN2FlMmY5ODA5N2FiNDg0ZTIzMDZkYzAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvU2tpcHBlZAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGstd2syL1NraXBwZWQKQEAgLTIxMCw2ICsyMTAsOCBAQCBmYXN0L2V2
ZW50cy93aGVlbGV2ZW50LWRpcmVjdGlvbi1pbnZlcnRlZC1mcm9tLWRldmljZS5odG1sCiAjIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjE5NwogZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvY29udGVudC1sYW5ndWFnZS1mb250LXNlbGVjdGlvbi5odG1sCiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9jb250ZW50LWxhbmd1YWdlLXdpdGgtc3VidGFncy5odG1sCitmYXN0
L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2ZS1mb250cy5odG1sCitmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2ZS1mb250cy14bWwueGh0bWwKIGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAogZmFzdC9yZXBhaW50L25v
LWNhcmV0LXJlcGFpbnQtaW4tbm9uLWNvbnRlbnQtZWRpdGFibGUtZWxlbWVudC5odG1sCiBlZGl0
aW5nL3NlbGVjdGlvbi9jYXJldC1tb2RlLXBhcmFncmFwaC1rZXlzLW5hdmlnYXRpb24uaHRtbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA1MTYwNDU3ODZkZjk2MDU1Zjc3MDM3YzVmZDI4
YzNkYTczNDdhNGMxLi4wOWYzZDhlMzVhNDI4ZDNhNTgyNTNmZTViN2Q1NDljMmVlZTNkZGM3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtMzczLDYgKzM3Myw4IEBAIGZhc3QvbXV0YXRp
b24KICMgc3VwcG9ydGVkLgogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvY29udGVudC1sYW5ndWFn
ZS1mb250LXNlbGVjdGlvbi5odG1sCiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9jb250ZW50LWxh
bmd1YWdlLXdpdGgtc3VidGFncy5odG1sCitmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNl
bnNpdGl2ZS1mb250cy5odG1sCitmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2
ZS1mb250cy14bWwueGh0bWwKIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRp
dmUtZm9udHMuaHRtbAogCiAjIE5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmVuYWJsZUF1dG9S
ZXNpemVNb2RlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVk
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggOTg2NTczMGM0MWEwZTQ0
MjFmMDFmNjVlNDY5NTlhYjk2MzYzMDgwZC4uZDQ0OTA5YTM0NjY2Njk2ZjY5Zjc5YWJiOWE1N2Y0
ZmUzZTQwZjdkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQ5NSw2ICs0OTUsOCBA
QCBmYXN0L3JlcGFpbnQvdGFibGUtZXh0cmEtYm90dG9tLWdyb3cuaHRtbAogIyBEUlQgZG9lc24n
dCBzdXBwb3J0IG92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0KkZvbnRNYXAiLi4uKQogZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvY29udGVudC1sYW5ndWFnZS1mb250LXNlbGVjdGlvbi5odG1sCiBm
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9jb250ZW50LWxhbmd1YWdlLXdpdGgtc3VidGFncy5odG1s
CitmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2ZS1mb250cy5odG1sCitmYXN0
L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2ZS1mb250cy14bWwueGh0bWwKIGZhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAogCiAjIFdlYiBJ
bnRlbnRzIGlzIG5vdCB5ZXQgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGJi
NTM1OTI1NTE2MTg4MTExYTI4MWY4NDY5NTAzNDNmNzQzYWJiNDIuLjkxZjg1MzczOGZiODAwYmY0
YmE1YzVjMzc1NWVjZTY1OGI2NTQ5MjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtOTk2
LDYgKzk5Niw4IEBAIGphdmEKIGZhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdh
dGlvbi1iYWNrLmh0bWwKIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2NvbnRlbnQtbGFuZ3VhZ2Ut
Zm9udC1zZWxlY3Rpb24uaHRtbAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvY29udGVudC1sYW5n
dWFnZS13aXRoLXN1YnRhZ3MuaHRtbAorZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFuZy1zZW5z
aXRpdmUtZm9udHMuaHRtbAorZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFuZy1zZW5zaXRpdmUt
Zm9udHMteG1sLnhodG1sCiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0aXZl
LWZvbnRzLmh0bWwKIGxvYWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13aW5kb3ctc2l6ZS5odG1s
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggZmQxMDAwYTYwODljNzMxMDIwODQxNWQ5
NTI2OGY5NTVhZTI3N2E2Ni4uYzY4NDA2MjkzZTFjOWU1ZDk4NjdiYTI4ZGVkY2NhODQzN2FhZGJk
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE1MDQsNiArMTUwNCw4IEBAIGZhc3Qv
ZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5nLXktaW4tc2Nyb2xsaW5nLXBhZ2UuaHRt
bAogIyBEUlQgZG9lc24ndCBzdXBwb3J0IG92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0KkZvbnRN
YXAiLi4uKQogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvY29udGVudC1sYW5ndWFnZS1mb250LXNl
bGVjdGlvbi5odG1sCiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9jb250ZW50LWxhbmd1YWdlLXdp
dGgtc3VidGFncy5odG1sCitmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2ZS1m
b250cy5odG1sCitmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sYW5nLXNlbnNpdGl2ZS1mb250cy14
bWwueGh0bWwKIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMu
aHRtbAogCiAjIFdlYiBJbnRlbnRzIGlzIG5vdCB5ZXQgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW5jYWlyby9Ta2lwcGVkCmluZGV4IDVmZjc5YjU0YjQ5MTdmZjkyYTM4YjM2NmQ1OWFhNmY2
ZmUwZTUyMWIuLjM0MTg2YzhlOGNhOGYwODQwNThhYjgzODQ5N2UxZGU5NGE4NzAzNzQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApAQCAtMjAyOCw2ICsyMDI4LDggQEAgZmFz
dC9ldmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteS1pbi1zY3JvbGxpbmctcGFnZS5o
dG1sCiAjIERSVCBkb2Vzbid0IHN1cHBvcnQgb3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQqRm9u
dE1hcCIuLi4pCiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9jb250ZW50LWxhbmd1YWdlLWZvbnQt
c2VsZWN0aW9uLmh0bWwKIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2NvbnRlbnQtbGFuZ3VhZ2Ut
d2l0aC1zdWJ0YWdzLmh0bWwKK2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xhbmctc2Vuc2l0aXZl
LWZvbnRzLmh0bWwKK2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xhbmctc2Vuc2l0aXZlLWZvbnRz
LXhtbC54aHRtbAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250
cy5odG1sCiAKICMgV2ViIEludGVudHMgaXMgbm90IHlldCBlbmFibGVkLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAppbmRleCA2OTM2OTIxNWZlNjZlZDZhZGViODFiMTIyNDMzZGEwNmZkMmIzMzkz
Li4wMzViNzc1ZTRhYWFhODFlMGY2NTdlZGFiYzY4YTRjODlmM2JhMDgwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvU2tpcHBlZApAQCAtMjkyLDYgKzI5Miw4IEBAIGZhc3QvcmVwYWludC9uby1jYXJldC1y
ZXBhaW50LWluLW5vbi1jb250ZW50LWVkaXRhYmxlLWVsZW1lbnQuaHRtbAogZmFzdC90ZXh0L3pl
cm8tZm9udC1zaXplLmh0bWwKIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2NvbnRlbnQtbGFuZ3Vh
Z2UtZm9udC1zZWxlY3Rpb24uaHRtbAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvY29udGVudC1s
YW5ndWFnZS13aXRoLXN1YnRhZ3MuaHRtbAorZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFuZy1z
ZW5zaXRpdmUtZm9udHMuaHRtbAorZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbGFuZy1zZW5zaXRp
dmUtZm9udHMteG1sLnhodG1sCiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0
aXZlLWZvbnRzLmh0bWwKIGNzczMvZmlsdGVycy9lZmZlY3QtY29tYmluZWQuaHRtbAogY3NzMy9m
aWx0ZXJzL2ZpbHRlci1yZXBhaW50Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136522</attachid>
            <date>2012-04-10 13:16:32 -0700</date>
            <delta_ts>2012-04-10 14:18:30 -0700</delta_ts>
            <desc>Mac fix</desc>
            <filename>MacDefaultFonts.txt</filename>
            <type>text/plain</type>
            <size>18283</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzc1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTEwICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIGxhbmcsIHhtbDps
YW5nLCBjb250ZW50LWxhbmd1YWdlIGlnbm9yZWQgd2hlbiBjaG9vc2luZyBmb250cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMyMjAyMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgZGVmYXVsdCBmb250IHRhYmxlIGZvciBNYWMgcG9y
dC4gQ2xpZW50cyBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhlc2UgaWYgdGhleSB3YW50IHRvLAorICAg
ICAgICBidXQga25vd2luZyB3aGljaCBmb250cyB0byB1c2UgaXMgbW9yZSBhYm91dCB0aGUgcGxh
dGZvcm0gdGhhbiBhYm91dCB0aGUgY2xpZW50LgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9t
YWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLmh0bWwKKworICAgICAgICAqIFJlc291cmNlcy9E
ZWZhdWx0Rm9udHMucGxpc3Q6IEFkZGVkLiBBdCB0aGlzIHBvaW50LCB0aGlzIGp1c3QgZGlzLXVu
aWZpZXMgSGFuIGFuZCBwcm92aWRlcworICAgICAgICBkZWZhdWx0cyBmb3IgY29tbW9uIHNjcmlw
dC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQg
U2V0dGluZ3NNYWMubW0uCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldEdlbmVyaWNGb250RmFtaWx5TWFwKTogRG9uJ3Qgbm90aWZ5IHRoZSBwYWdl
IGlmIHdlIGRvbid0IGhhdmUgb25lIHlldC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpT
ZXR0aW5ncyk6IEFzc2lnbiB0byBtX3BhZ2UgYWZ0ZXIgY2FsbGluZyBpbml0aWFsaXplRGVmYXVs
dEZvbnRGYW1pbGllcywKKyAgICAgICAgc28gdGhhdCB3ZSB3b24ndCB0cnkgdG8gY2FsbCBwYWdl
LT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKSBpbiBhIGhhbGYtaW5pdGlhbGl6ZWQK
KyAgICAgICAgUGFnZSB0aGF0J3MgY3JlYXRpbmcgc2V0dGluZ3MuCisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMpOiBEdW1teSBpbWxwbGVt
ZW50YXRpb24gZm9yIHBvcnRzIHRoYXQKKyAgICAgICAgcmVseSBvbiBjbGllbnQgdG8gc2V0IGRl
ZmF1bHRzLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOiBBZGRlZCBpbml0aWFsaXplRGVm
YXVsdEZvbnRGYW1pbGllcygpLgorCisgICAgICAgICogcGFnZS9tYWMvU2V0dGluZ3NNYWMubW06
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEZvbnRGYW1pbHlEaWN0aW9uYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGll
cyk6CisgICAgICAgIExvYWQgZGVmYXVsdHMgZnJvbSBhIHBsaXN0IGZpbGUgaW5zaWRlIFdlYkNv
cmUgZnJhbWV3b3JrLgorCiAyMDEyLTA0LTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzYxMS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9EZWZhdWx0Rm9udHMucGxpc3QKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL0RlZmF1bHRGb250cy5wbGlzdAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9EZWZhdWx0Rm9udHMucGxpc3QJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Cis8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEu
MC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4K
KzxwbGlzdCB2ZXJzaW9uPSIxLjAiPgorPGRpY3Q+CisJPGtleT5oYW50PC9rZXk+CisJPGRpY3Q+
CisJCTxrZXk+bW9ub3NwYWNlPC9rZXk+CisJCTxzdHJpbmc+QXBwbGUgTGlHb3RoaWM8L3N0cmlu
Zz4KKwkJPGtleT5zdGFuZGFyZDwva2V5PgorCQk8c3RyaW5nPkFwcGxlIExpR290aGljPC9zdHJp
bmc+CisJCTxrZXk+c2Fucy1zZXJpZjwva2V5PgorCQk8c3RyaW5nPkFwcGxlIExpR290aGljPC9z
dHJpbmc+CisJCTxrZXk+c2VyaWY8L2tleT4KKwkJPHN0cmluZz5BcHBsZSBMaVN1bmc8L3N0cmlu
Zz4KKwk8L2RpY3Q+CisJPGtleT5oYW5zPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+bW9ub3NwYWNl
PC9rZXk+CisJCTxzdHJpbmc+U1RIZWl0aTwvc3RyaW5nPgorCQk8a2V5PnN0YW5kYXJkPC9rZXk+
CisJCTxzdHJpbmc+U1RIZWl0aTwvc3RyaW5nPgorCQk8a2V5PnNhbnMtc2VyaWY8L2tleT4KKwkJ
PHN0cmluZz5TVEhlaXRpPC9zdHJpbmc+CisJCTxrZXk+c2VyaWY8L2tleT4KKwkJPHN0cmluZz5T
VFNvbmc8L3N0cmluZz4KKwk8L2RpY3Q+CisJPGtleT5ocmt0PC9rZXk+CisJPGRpY3Q+CisJCTxr
ZXk+bW9ub3NwYWNlPC9rZXk+CisJCTxzdHJpbmc+T3Nha2EtTW9ubzwvc3RyaW5nPgorCQk8a2V5
PnN0YW5kYXJkPC9rZXk+CisJCTxzdHJpbmc+SGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvPC9zdHJp
bmc+CisJCTxrZXk+c2Fucy1zZXJpZjwva2V5PgorCQk8c3RyaW5nPkhpcmFnaW5vIEtha3UgR290
aGljIFBybzwvc3RyaW5nPgorCQk8a2V5PnNlcmlmPC9rZXk+CisJCTxzdHJpbmc+SGlyYWdpbm8g
TWluY2hvIFBybzwvc3RyaW5nPgorCTwvZGljdD4KKwk8a2V5Pmhhbmc8L2tleT4KKwk8ZGljdD4K
KwkJPGtleT5tb25vc3BhY2U8L2tleT4KKwkJPHN0cmluZz5BcHBsZUdvdGhpYzwvc3RyaW5nPgor
CQk8a2V5PnN0YW5kYXJkPC9rZXk+CisJCTxzdHJpbmc+QXBwbGVHb3RoaWM8L3N0cmluZz4KKwkJ
PGtleT5zYW5zLXNlcmlmPC9rZXk+CisJCTxzdHJpbmc+QXBwbGVHb3RoaWM8L3N0cmluZz4KKwkJ
PGtleT5zZXJpZjwva2V5PgorCQk8c3RyaW5nPkFwcGxlTXl1bmdqbzwvc3RyaW5nPgorCTwvZGlj
dD4KKwk8a2V5Pnp5eXk8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5tb25vc3BhY2U8L2tleT4KKwkJ
PHN0cmluZz5Db3VyaWVyPC9zdHJpbmc+CisJCTxrZXk+c3RhbmRhcmQ8L2tleT4KKwkJPHN0cmlu
Zz5UaW1lczwvc3RyaW5nPgorCQk8a2V5PnNhbnMtc2VyaWY8L2tleT4KKwkJPHN0cmluZz5IZWx2
ZXRpY2E8L3N0cmluZz4KKwkJPGtleT5zZXJpZjwva2V5PgorCQk8c3RyaW5nPlRpbWVzPC9zdHJp
bmc+CisJPC9kaWN0PgorPC9kaWN0PgorPC9wbGlzdD4KClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9EZWZhdWx0Rm9udHMucGxpc3QKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTEzNzQxKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01OTAwLDYgKzU5MDAsOCBAQAogCQlFMUI0Q0QyNTEwQjMyMkUyMDBCRkZEN0UgLyog
Q3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUI0Q0QyNDEwQjMyMkUyMDBCRkZEN0UgLyogQ3JlZGVudGlhbFN0b3Jh
Z2VNYWMubW0gKi87IH07CiAJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFCRTUxMkIwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgKi87IH07CiAJ
CUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQkU1MTJDMENGNkM1MTIwMDJF
QTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCAqLzsgfTsKKwkJRTFDMkYyNDUxNTMzOThDRTAwODNG
OTc0IC8qIERlZmF1bHRGb250cy5wbGlzdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFDMkYyNDQxNTMzOThDRTAwODNGOTc0IC8qIERlZmF1bHRGb250
cy5wbGlzdCAqLzsgfTsKKwkJRTFDMkYyNEExNTMzQTIxMjAwODNGOTc0IC8qIFNldHRpbmdzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMkYy
NDgxNTMzQTIxMjAwODNGOTc0IC8qIFNldHRpbmdzTWFjLm1tICovOyB9OwogCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMzYyRUQwRUFGMkFBOTAwNzQxMEJDIC8qIEpT
V29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJRTFDMzYyRjAwRUFGMkFBOTAwNzQxMEJDIC8qIEpT
V29ya2VyTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFDMzYyRUUwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uY3Bw
ICovOyB9OwogCQlFMUMzNkMwMzBFQjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzM2QzAy
MEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzA0Myw2ICsxMzA0NSw4IEBACiAJ
CUUxQjRDRDI0MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENyZWRlbnRpYWxTdG9yYWdlTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUJFNTEyQjBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFhTTFRVbmljb2RlU29ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQkU1MTJDMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFNMVFVuaWNvZGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxQzJGMjQ0MTUzMzk4Q0UwMDgzRjk3NCAvKiBEZWZhdWx0Rm9udHMu
cGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IERlZmF1bHRGb250cy5wbGlz
dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0
IC8qIFNldHRpbmdzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2V0dGluZ3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzM2MkVE
MEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTV29ya2VyTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFDMzYyRUUwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJMb2NhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzM2QzAyMEVCMDc2RDYwMDc0MTBC
QyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RPTUdsb2JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5
MDksNiArMTM5MTMsNyBAQAogCQkJCTg1MTM2Qzk4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVz
aXplQ3Vyc29yLnBuZyAqLywKIAkJCQkxQUIxQUU3ODBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUlu
Q3Vyc29yLnBuZyAqLywKIAkJCQkxQUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1
cnNvci5wbmcgKi8sCisJCQkJRTFDMkYyNDQxNTMzOThDRTAwODNGOTc0IC8qIERlZmF1bHRGb250
cy5wbGlzdCAqLywKIAkJCSk7CiAJCQlwYXRoID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTE2Nzc3LDYgKzE2NzgyLDcgQEAKIAkJCQk5M0MwOUE3RTBCMDY0RUVG
MDA1QUJENEQgLyogRXZlbnRIYW5kbGVyTWFjLm1tICovLAogCQkJCTY1QkYwMjNDMDk3NDgxOTAw
MEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLywKIAkJCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIg
LyogUGFnZU1hYy5jcHAgKi8sCisJCQkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0IC8qIFNldHRp
bmdzTWFjLm1tICovLAogCQkJCUY1ODc4NTRDMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJh
bWVWaWV3LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKQEAgLTI0ODkyLDYgKzI0ODk4LDcg
QEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcg
aW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5D
dXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYg
Lyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUUxQzJGMjQ1MTUzMzk4
Q0UwMDgzRjk3NCAvKiBEZWZhdWx0Rm9udHMucGxpc3QgaW4gUmVzb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc3
NDAsNiArMjc3NDcsNyBAQAogCQkJCUEwN0QzMzU1MTUyQjYzMEUwMDFCNjM5MyAvKiBKU1dlYkdM
U2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEwOENGMTU0MTUy
Qjc3QjMwMDlDNTc3NSAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDNUExRUE3QzE1MkJDRjA0MDA0RDAwQjYgLyogU2ltcGxpZnlNYXJrdXBDb21t
YW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxQzJGMjRBMTUzM0EyMTIwMDgzRjk3NCAvKiBT
ZXR0aW5nc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3NDBFODNDMTUzMkRFMTcwMDc2MDYy
OCAvKiBUcmVlU2NvcGVBZGp1c3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiAxMTM3NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsOSBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0R2VuZXJpY0ZvbnRGYW1pbHlNCiAgICAgICAgIHJldHVybjsKICAgICBlbHNlCiAgICAg
ICAgIGZvbnRNYXAuc2V0KHN0YXRpY19jYXN0PGludD4oc2NyaXB0KSwgZmFtaWx5KTsKLSAgICBw
YWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKKworICAgIGlmIChwYWdlKQor
ICAgICAgICBwYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAogc3Rh
dGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2Ny
aXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZvbnRNYXAsIFVTY3JpcHRDb2RlIHNjcmlw
dCkKQEAgLTExMyw3ICsxMTUsNyBAQCBzdGF0aWMgRWRpdGluZ0JlaGF2aW9yVHlwZSBlZGl0aW5n
QmVoYXZpCiB9CiAKIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQotICAgIDogbV9wYWdl
KHBhZ2UpCisgICAgOiBtX3BhZ2UoMCkKICAgICAsIG1fZWRpdGFibGVMaW5rQmVoYXZpb3IoRWRp
dGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yKQogICAgICwgbV90ZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yKFRleHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVk
KQogICAgICwgbV9wYXNzd29yZEVjaG9EdXJhdGlvbkluU2Vjb25kcygxKQpAQCAtMjYwLDYgKzI2
Miw4IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgIC8vIEEgRnJhbWUgbWF5
IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0
cmluZyAKICAgICAvLyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0LgogICAgIEF0b21pY1N0
cmluZzo6aW5pdCgpOworICAgIGluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCk7CisgICAg
bV9wYWdlID0gcGFnZTsgLy8gUGFnZSBpcyBub3QgeWV0IGZ1bGx5IGluaXRpYWxpemVkIHdlbiBj
b25zdHJ1Y3RpbmcgU2V0dGluZ3MsIHNvIGtlZXBpbmcgbV9wYWdlIG51bGwgb3ZlciBpbml0aWFs
aXplRGVmYXVsdEZvbnRGYW1pbGllcygpIGNhbGwuCiB9CiAKIFBhc3NPd25QdHI8U2V0dGluZ3M+
IFNldHRpbmdzOjpjcmVhdGUoUGFnZSogcGFnZSkKQEAgLTI2Nyw2ICsyNzEsMTMgQEAgUGFzc093
blB0cjxTZXR0aW5ncz4gU2V0dGluZ3M6OmNyZWF0ZShQYQogICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU2V0dGluZ3MocGFnZSkpOwogfSAKIAorI2lmICFQTEFURk9STShNQUMpCit2b2lkIFNldHRp
bmdzOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCit7CisgICAgLy8gT3RoZXIgcGxh
dGZvcm1zIGNhbiBzZXQgdXAgZm9udHMgZnJvbSBhIGNsaWVudCwgYnV0IG9uIE1hYywgd2Ugd2Fu
dCBpdCBpbiBXZWJDb3JlIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBXZWJLaXQxIGFuZCBXZWJLaXQy
LgorfQorI2VuZGlmCisKIGNvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3M6OnN0YW5kYXJkRm9u
dEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEdlbmVy
aWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBzY3JpcHQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gMTEzNzQxKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNiArNTU1LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIFNldHRpbmdzKFBhZ2Uq
KTsKIAorICAgICAgICB2b2lkIGluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCk7CisKICAg
ICAgICAgUGFnZSogbV9wYWdlOwogCiAgICAgICAgIFN0cmluZyBtX2RlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5nc01hYy5tbQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIkxvY2FsZVRvU2NyaXB0TWFwcGlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgTlNEaWN0aW9uYXJ5ICpkZWZhdWx0Rm9udEZhbWlseURpY3Rpb25hcnkoKQor
eworICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmZvbnRGYW1pbHlEaWN0aW9uYXJ5OworICAgIGlm
IChmb250RmFtaWx5RGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlEaWN0aW9u
YXJ5OworCisgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRp
ZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl07CisgICAgTlNEYXRhICpmaWxlRGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mVVJMOltidW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJEZWZhdWx0
Rm9udHMiIHdpdGhFeHRlbnNpb246QCJwbGlzdCJdXTsKKyAgICBOU0Vycm9yICplcnJvcjsKKyAg
ICBpZCBwcm9wZXJ0eUxpc3QgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5
TGlzdFdpdGhEYXRhOmZpbGVEYXRhIG9wdGlvbnM6TlNQcm9wZXJ0eUxpc3RJbW11dGFibGUgZm9y
bWF0OjAgZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoIXByb3BlcnR5TGlzdCkKKyAgICAgICAgRkFU
QUwoIkNvdWxkIG5vdCByZWFkIGZvbnQgZmFsbGJhY2sgZmlsZTogJXMiLCBbW2Vycm9yIGRlc2Ny
aXB0aW9uXSBVVEY4U3RyaW5nXSk7CisgICAgaWYgKCFbcHJvcGVydHlMaXN0IGlzS2luZE9mQ2xh
c3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICBGQVRBTCgiRm9udCBmYWxsYmFjayBm
aWxlIGhhcyBpbmNvcnJlY3QgZm9ybWF0IC0gcm9vdCBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFy
eSIpOworCisgICAgZm9udEZhbWlseURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxOU0RpY3Rpb25h
cnkgKj4ocHJvcGVydHlMaXN0KTsKKyAgICBDRlJldGFpbihmb250RmFtaWx5RGljdGlvbmFyeSk7
CisgICAgcmV0dXJuIGZvbnRGYW1pbHlEaWN0aW9uYXJ5OworfQorCit2b2lkIFNldHRpbmdzOjpp
bml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHN0YW5kYXJkRmFtaWx5LCAoInN0YW5kYXJkIikpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtb25vc3BhY2VGYW1pbHksICgibW9ub3NwYWNl
IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZXJpZkZhbWlseSwg
KCJzZXJpZiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2Fuc1Nl
cmlmRmFtaWx5LCAoInNhbnMtc2VyaWYiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGN1cnNpdmVGYW1pbHksICgiY3Vyc2l2ZSIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgZmFudGFzeUZhbWlseSwgKCJmYW50YXN5IikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwaWN0b2dyYXBoRmFtaWx5LCAoInBpY3Rv
Z3JhcGgiKSk7CisKKyAgICBbZGVmYXVsdEZvbnRGYW1pbHlEaWN0aW9uYXJ5KCkgZW51bWVyYXRl
S2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOiBeKGlkIGtleSwgaWQgb2JqLCBCT09MICopIHsKKyAg
ICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAg
ICAgICBGQVRBTCgiRm9udCBmYWxsYmFjayBmaWxlIGhhcyBpbmNvcnJlY3QgZm9ybWF0IC0gc2Ny
aXB0IG5hbWUgaXMgbm90IGEgc3RyaW5nIik7CisgICAgICAgIGlmICghW29iaiBpc0tpbmRPZkNs
YXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKKyAgICAgICAgICAgIEZBVEFMKCJGb250IGZhbGxi
YWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSBwZXItc2NyaXB0IHZhbHVlIGlzIG5vdCBh
IGRpY3Rpb25hcnkiKTsKKworICAgICAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSBzY3JpcHROYW1l
VG9Db2RlKHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KGtleSkpOworICAgICAgICBpZiAoc2NyaXB0
ID09IFVTQ1JJUFRfVU5LTk9XTikKKyAgICAgICAgICAgIEZBVEFMKCJGb250IGZhbGxiYWNrIGZp
bGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSB1bmtub3duIGxhbmd1YWdlIGNvZGUgJXMiLCBba2V5
IFVURjhTdHJpbmddKTsKKworICAgICAgICBbb2JqIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNp
bmdCbG9jazpeKGlkIGtleSwgaWQgb2JqLCBCT09MICopIHsKKyAgICAgICAgICAgIGlmICghW2tl
eSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgICAgIEZBVEFM
KCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSBnZW5lcmljIGZhbWls
eSBuYW1lIGlzIG5vdCBhIHN0cmluZyIpOworICAgICAgICAgICAgaWYgKCFbb2JqIGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICAgICAgRkFUQUwoIkZvbnQgZmFs
bGJhY2sgZmlsZSBoYXMgaW5jb3JyZWN0IGZvcm1hdCAtIGZvbnQgZmFtaWx5IG5hbWUgaXMgbm90
IGEgc3RyaW5nIik7CisKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBnZW5lcmljRmFtaWx5ID0g
c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oa2V5KTsKKyAgICAgICAgICAgIFN0cmluZyBmYW1pbHlO
YW1lID0gc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4ob2JqKTsKKworICAgICAgICAgICAgaWYgKGdl
bmVyaWNGYW1pbHkgPT0gc3RhbmRhcmRGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlIGlmIChn
ZW5lcmljRmFtaWx5ID09IG1vbm9zcGFjZUZhbWlseSkKKyAgICAgICAgICAgICAgICBzZXRGaXhl
ZEZvbnRGYW1pbHkoZmFtaWx5TmFtZSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdl
bmVyaWNGYW1pbHkgPT0gc2VyaWZGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0U2VyaWZGb250
RmFtaWx5KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlIGlmIChnZW5lcmlj
RmFtaWx5ID09IHNhbnNTZXJpZkZhbWlseSkKKyAgICAgICAgICAgICAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlIGlmIChnZW5l
cmljRmFtaWx5ID09IGN1cnNpdmVGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0Q3Vyc2l2ZUZv
bnRGYW1pbHkoZmFtaWx5TmFtZSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdlbmVy
aWNGYW1pbHkgPT0gZmFudGFzeUZhbWlseSkKKyAgICAgICAgICAgICAgICBzZXRGYW50YXN5Rm9u
dEZhbWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2VuZXJp
Y0ZhbWlseSA9PSBwaWN0b2dyYXBoRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldFBpY3RvZ3Jh
cGhGb250RmFtaWx5KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgRkFUQUwoIkZvbnQgZmFsbGJhY2sgZmlsZSBoYXMgaW5jb3JyZWN0IGZvcm1h
dCAtIHVua25vd24gZm9udCBmYW1pbHkgbmFtZSAlcyIsIGZhbWlseU5hbWUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIH1dOworICAgIH1dOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRpbmdzTWFj
Lm1tCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMzc1NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDEyLTA0LTEwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgorCisgICAgICAgIFtNYWNdIGxhbmcsIHhtbDpsYW5nLCBjb250ZW50LWxhbmd1YWdl
IGlnbm9yZWQgd2hlbiBjaG9vc2luZyBmb250cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMjAy
MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLWV4cGVjdGVkLW1pc21hdGNoLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRp
b24uaHRtbDogQWRkZWQuCisKIDIwMTItMDQtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTEzNjExLgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbnRzL2hhbi1kaXN1bmlmaWNhdGlvbi1l
eHBlY3RlZC1taXNtYXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRpb24tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmlj
YXRpb24tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBA
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8cD5KYXBhbmVzZSBhbmQgQ2hpbmVzZSByZW5kZXJp
bmdzIG9mIHRoaXMgY2hhcmFjdGVyIHNob3VsZCBiZSBkaWZmZXJlbnQ6PC9wPgorPGJvZHk+Cis8
cCBzdHlsZT0iZm9udC1zaXplOjYwcHgiPkphcGFuZXNlOiA8c3BhbiBsYW5nPSJ6aCI+5LiOPC9z
cGFuPjwvcD4KKzxwIHN0eWxlPSJmb250LXNpemU6NjBweCI+Q2hpbmVzZTogPHNwYW4gbGFuZz0i
amEiPuS4jjwvc3Bhbj48L3A+Cis8L2JvZHk+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLWV4cGVjdGVkLW1pc21h
dGNoLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZm9udHMvaGFuLWRp
c3VuaWZpY2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NiBAQAorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHA+SmFwYW5lc2UgYW5kIENoaW5lc2UgcmVu
ZGVyaW5ncyBvZiB0aGlzIGNoYXJhY3RlciBzaG91bGQgYmUgZGlmZmVyZW50OjwvcD4KKzxib2R5
PgorPHAgc3R5bGU9ImZvbnQtc2l6ZTo2MHB4Ij5KYXBhbmVzZTogPHNwYW4gbGFuZz0iamEiPuS4
jjwvc3Bhbj48L3A+Cis8cCBzdHlsZT0iZm9udC1zaXplOjYwcHgiPkNoaW5lc2U6IDxzcGFuIGxh
bmc9InpoIj7kuI48L3NwYW4+PC9wPgorPC9ib2R5PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbnRzL2hhbi1kaXN1bmlmaWNhdGlvbi5odG1sCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCg==
</data>
<flag name="commit-queue"
          id="141355"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136541</attachid>
            <date>2012-04-10 14:18:30 -0700</date>
            <delta_ts>2012-04-11 11:58:33 -0700</delta_ts>
            <desc>Mac fix</desc>
            <filename>MacDefaultFonts.txt</filename>
            <type>text/plain</type>
            <size>18442</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzc1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTEwICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIGxhbmcsIHhtbDps
YW5nLCBjb250ZW50LWxhbmd1YWdlIGlnbm9yZWQgd2hlbiBjaG9vc2luZyBmb250cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMyMjAyMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgZGVmYXVsdCBmb250IHRhYmxlIGZvciBNYWMgcG9y
dC4gQ2xpZW50cyBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhlc2UgaWYgdGhleSB3YW50IHRvLAorICAg
ICAgICBidXQga25vd2luZyB3aGljaCBmb250cyB0byB1c2UgaXMgbW9yZSBhYm91dCB0aGUgcGxh
dGZvcm0gdGhhbiBhYm91dCB0aGUgY2xpZW50LgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9t
YWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLmh0bWwKKworICAgICAgICAqIFJlc291cmNlcy9E
ZWZhdWx0Rm9udHMucGxpc3Q6IEFkZGVkLiBBdCB0aGlzIHBvaW50LCB0aGlzIGp1c3QgZGlzLXVu
aWZpZXMgSGFuIGFuZCBwcm92aWRlcworICAgICAgICBkZWZhdWx0cyBmb3IgY29tbW9uIHNjcmlw
dC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQg
U2V0dGluZ3NNYWMubW0uCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldEdlbmVyaWNGb250RmFtaWx5TWFwKTogRG9uJ3Qgbm90aWZ5IHRoZSBwYWdl
IGlmIHdlIGRvbid0IGhhdmUgb25lIHlldC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpT
ZXR0aW5ncyk6IEFzc2lnbiB0byBtX3BhZ2UgYWZ0ZXIgY2FsbGluZyBpbml0aWFsaXplRGVmYXVs
dEZvbnRGYW1pbGllcywKKyAgICAgICAgc28gdGhhdCB3ZSB3b24ndCB0cnkgdG8gY2FsbCBwYWdl
LT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKSBpbiBhIGhhbGYtaW5pdGlhbGl6ZWQK
KyAgICAgICAgUGFnZSB0aGF0J3MgY3JlYXRpbmcgc2V0dGluZ3MuCisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMpOiBEdW1teSBpbWxwbGVt
ZW50YXRpb24gZm9yIHBvcnRzIHRoYXQKKyAgICAgICAgcmVseSBvbiBjbGllbnQgdG8gc2V0IGRl
ZmF1bHRzLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOiBBZGRlZCBpbml0aWFsaXplRGVm
YXVsdEZvbnRGYW1pbGllcygpLgorCisgICAgICAgICogcGFnZS9tYWMvU2V0dGluZ3NNYWMubW06
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEZvbnRGYW1pbHlEaWN0aW9uYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGll
cyk6CisgICAgICAgIExvYWQgZGVmYXVsdHMgZnJvbSBhIHBsaXN0IGZpbGUgaW5zaWRlIFdlYkNv
cmUgZnJhbWV3b3JrLgorCiAyMDEyLTA0LTEwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzYxMS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9EZWZhdWx0Rm9udHMucGxpc3QKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL0RlZmF1bHRGb250cy5wbGlzdAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9EZWZhdWx0Rm9udHMucGxpc3QJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Cis8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEu
MC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4K
KzxwbGlzdCB2ZXJzaW9uPSIxLjAiPgorPGRpY3Q+CisJPGtleT5oYW50PC9rZXk+CisJPGRpY3Q+
CisJCTxrZXk+bW9ub3NwYWNlPC9rZXk+CisJCTxzdHJpbmc+QXBwbGUgTGlHb3RoaWM8L3N0cmlu
Zz4KKwkJPGtleT5zdGFuZGFyZDwva2V5PgorCQk8c3RyaW5nPkFwcGxlIExpR290aGljPC9zdHJp
bmc+CisJCTxrZXk+c2Fucy1zZXJpZjwva2V5PgorCQk8c3RyaW5nPkFwcGxlIExpR290aGljPC9z
dHJpbmc+CisJCTxrZXk+c2VyaWY8L2tleT4KKwkJPHN0cmluZz5BcHBsZSBMaVN1bmc8L3N0cmlu
Zz4KKwk8L2RpY3Q+CisJPGtleT5oYW5zPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+bW9ub3NwYWNl
PC9rZXk+CisJCTxzdHJpbmc+U1RIZWl0aTwvc3RyaW5nPgorCQk8a2V5PnN0YW5kYXJkPC9rZXk+
CisJCTxzdHJpbmc+U1RIZWl0aTwvc3RyaW5nPgorCQk8a2V5PnNhbnMtc2VyaWY8L2tleT4KKwkJ
PHN0cmluZz5TVEhlaXRpPC9zdHJpbmc+CisJCTxrZXk+c2VyaWY8L2tleT4KKwkJPHN0cmluZz5T
VFNvbmc8L3N0cmluZz4KKwk8L2RpY3Q+CisJPGtleT5ocmt0PC9rZXk+CisJPGRpY3Q+CisJCTxr
ZXk+bW9ub3NwYWNlPC9rZXk+CisJCTxzdHJpbmc+T3Nha2EtTW9ubzwvc3RyaW5nPgorCQk8a2V5
PnN0YW5kYXJkPC9rZXk+CisJCTxzdHJpbmc+SGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvPC9zdHJp
bmc+CisJCTxrZXk+c2Fucy1zZXJpZjwva2V5PgorCQk8c3RyaW5nPkhpcmFnaW5vIEtha3UgR290
aGljIFBybzwvc3RyaW5nPgorCQk8a2V5PnNlcmlmPC9rZXk+CisJCTxzdHJpbmc+SGlyYWdpbm8g
TWluY2hvIFBybzwvc3RyaW5nPgorCTwvZGljdD4KKwk8a2V5Pmhhbmc8L2tleT4KKwk8ZGljdD4K
KwkJPGtleT5tb25vc3BhY2U8L2tleT4KKwkJPHN0cmluZz5BcHBsZUdvdGhpYzwvc3RyaW5nPgor
CQk8a2V5PnN0YW5kYXJkPC9rZXk+CisJCTxzdHJpbmc+QXBwbGVHb3RoaWM8L3N0cmluZz4KKwkJ
PGtleT5zYW5zLXNlcmlmPC9rZXk+CisJCTxzdHJpbmc+QXBwbGVHb3RoaWM8L3N0cmluZz4KKwkJ
PGtleT5zZXJpZjwva2V5PgorCQk8c3RyaW5nPkFwcGxlTXl1bmdqbzwvc3RyaW5nPgorCTwvZGlj
dD4KKwk8a2V5Pnp5eXk8L2tleT4KKwk8ZGljdD4KKwkJPGtleT5tb25vc3BhY2U8L2tleT4KKwkJ
PHN0cmluZz5Db3VyaWVyPC9zdHJpbmc+CisJCTxrZXk+c3RhbmRhcmQ8L2tleT4KKwkJPHN0cmlu
Zz5UaW1lczwvc3RyaW5nPgorCQk8a2V5PnNhbnMtc2VyaWY8L2tleT4KKwkJPHN0cmluZz5IZWx2
ZXRpY2E8L3N0cmluZz4KKwkJPGtleT5zZXJpZjwva2V5PgorCQk8c3RyaW5nPlRpbWVzPC9zdHJp
bmc+CisJPC9kaWN0PgorPC9kaWN0PgorPC9wbGlzdD4KClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9EZWZhdWx0Rm9udHMucGxpc3QKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTEzNzQxKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01OTAwLDYgKzU5MDAsOCBAQAogCQlFMUI0Q0QyNTEwQjMyMkUyMDBCRkZEN0UgLyog
Q3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUI0Q0QyNDEwQjMyMkUyMDBCRkZEN0UgLyogQ3JlZGVudGlhbFN0b3Jh
Z2VNYWMubW0gKi87IH07CiAJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFCRTUxMkIwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgKi87IH07CiAJ
CUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQkU1MTJDMENGNkM1MTIwMDJF
QTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCAqLzsgfTsKKwkJRTFDMkYyNDUxNTMzOThDRTAwODNG
OTc0IC8qIERlZmF1bHRGb250cy5wbGlzdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFDMkYyNDQxNTMzOThDRTAwODNGOTc0IC8qIERlZmF1bHRGb250
cy5wbGlzdCAqLzsgfTsKKwkJRTFDMkYyNEExNTMzQTIxMjAwODNGOTc0IC8qIFNldHRpbmdzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMkYy
NDgxNTMzQTIxMjAwODNGOTc0IC8qIFNldHRpbmdzTWFjLm1tICovOyB9OwogCQlFMUMzNjJFRjBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMzYyRUQwRUFGMkFBOTAwNzQxMEJDIC8qIEpT
V29ya2VyTG9jYXRpb24uaCAqLzsgfTsKIAkJRTFDMzYyRjAwRUFGMkFBOTAwNzQxMEJDIC8qIEpT
V29ya2VyTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFDMzYyRUUwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uY3Bw
ICovOyB9OwogCQlFMUMzNkMwMzBFQjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzM2QzAy
MEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzA0Myw2ICsxMzA0NSw4IEBACiAJ
CUUxQjRDRDI0MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENyZWRlbnRpYWxTdG9yYWdlTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUJFNTEyQjBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFhTTFRVbmljb2RlU29ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQkU1MTJDMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFNMVFVuaWNvZGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxQzJGMjQ0MTUzMzk4Q0UwMDgzRjk3NCAvKiBEZWZhdWx0Rm9udHMu
cGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IERlZmF1bHRGb250cy5wbGlz
dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0
IC8qIFNldHRpbmdzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2V0dGluZ3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzM2MkVE
MEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTV29ya2VyTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFDMzYyRUUwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJMb2NhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzM2QzAyMEVCMDc2RDYwMDc0MTBC
QyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RPTUdsb2JhbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5
MDksNiArMTM5MTMsNyBAQAogCQkJCTg1MTM2Qzk4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVz
aXplQ3Vyc29yLnBuZyAqLywKIAkJCQkxQUIxQUU3ODBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUlu
Q3Vyc29yLnBuZyAqLywKIAkJCQkxQUIxQUU3OTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1
cnNvci5wbmcgKi8sCisJCQkJRTFDMkYyNDQxNTMzOThDRTAwODNGOTc0IC8qIERlZmF1bHRGb250
cy5wbGlzdCAqLywKIAkJCSk7CiAJCQlwYXRoID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTE2Nzc3LDYgKzE2NzgyLDcgQEAKIAkJCQk5M0MwOUE3RTBCMDY0RUVG
MDA1QUJENEQgLyogRXZlbnRIYW5kbGVyTWFjLm1tICovLAogCQkJCTY1QkYwMjNDMDk3NDgxOTAw
MEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLywKIAkJCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIg
LyogUGFnZU1hYy5jcHAgKi8sCisJCQkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0IC8qIFNldHRp
bmdzTWFjLm1tICovLAogCQkJCUY1ODc4NTRDMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJh
bWVWaWV3LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKQEAgLTI0ODkyLDYgKzI0ODk4LDcg
QEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcg
aW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5D
dXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYg
Lyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUUxQzJGMjQ1MTUzMzk4
Q0UwMDgzRjk3NCAvKiBEZWZhdWx0Rm9udHMucGxpc3QgaW4gUmVzb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc3
NDAsNiArMjc3NDcsNyBAQAogCQkJCUEwN0QzMzU1MTUyQjYzMEUwMDFCNjM5MyAvKiBKU1dlYkdM
U2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEwOENGMTU0MTUy
Qjc3QjMwMDlDNTc3NSAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDNUExRUE3QzE1MkJDRjA0MDA0RDAwQjYgLyogU2ltcGxpZnlNYXJrdXBDb21t
YW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxQzJGMjRBMTUzM0EyMTIwMDgzRjk3NCAvKiBT
ZXR0aW5nc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3NDBFODNDMTUzMkRFMTcwMDc2MDYy
OCAvKiBUcmVlU2NvcGVBZGp1c3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiAxMTM3NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsOSBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0R2VuZXJpY0ZvbnRGYW1pbHlNCiAgICAgICAgIHJldHVybjsKICAgICBlbHNlCiAgICAg
ICAgIGZvbnRNYXAuc2V0KHN0YXRpY19jYXN0PGludD4oc2NyaXB0KSwgZmFtaWx5KTsKLSAgICBw
YWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKKworICAgIGlmIChwYWdlKQor
ICAgICAgICBwYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAogc3Rh
dGljIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2Ny
aXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZvbnRNYXAsIFVTY3JpcHRDb2RlIHNjcmlw
dCkKQEAgLTExMyw3ICsxMTUsNyBAQCBzdGF0aWMgRWRpdGluZ0JlaGF2aW9yVHlwZSBlZGl0aW5n
QmVoYXZpCiB9CiAKIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQotICAgIDogbV9wYWdl
KHBhZ2UpCisgICAgOiBtX3BhZ2UoMCkKICAgICAsIG1fZWRpdGFibGVMaW5rQmVoYXZpb3IoRWRp
dGFibGVMaW5rRGVmYXVsdEJlaGF2aW9yKQogICAgICwgbV90ZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yKFRleHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVk
KQogICAgICwgbV9wYXNzd29yZEVjaG9EdXJhdGlvbkluU2Vjb25kcygxKQpAQCAtMjYwLDYgKzI2
Miw4IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgIC8vIEEgRnJhbWUgbWF5
IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0
cmluZyAKICAgICAvLyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0LgogICAgIEF0b21pY1N0
cmluZzo6aW5pdCgpOworICAgIGluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCk7CisgICAg
bV9wYWdlID0gcGFnZTsgLy8gUGFnZSBpcyBub3QgeWV0IGZ1bGx5IGluaXRpYWxpemVkIHdlbiBj
b25zdHJ1Y3RpbmcgU2V0dGluZ3MsIHNvIGtlZXBpbmcgbV9wYWdlIG51bGwgb3ZlciBpbml0aWFs
aXplRGVmYXVsdEZvbnRGYW1pbGllcygpIGNhbGwuCiB9CiAKIFBhc3NPd25QdHI8U2V0dGluZ3M+
IFNldHRpbmdzOjpjcmVhdGUoUGFnZSogcGFnZSkKQEAgLTI2Nyw2ICsyNzEsMTMgQEAgUGFzc093
blB0cjxTZXR0aW5ncz4gU2V0dGluZ3M6OmNyZWF0ZShQYQogICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU2V0dGluZ3MocGFnZSkpOwogfSAKIAorI2lmICFQTEFURk9STShNQUMpCit2b2lkIFNldHRp
bmdzOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCit7CisgICAgLy8gT3RoZXIgcGxh
dGZvcm1zIGNhbiBzZXQgdXAgZm9udHMgZnJvbSBhIGNsaWVudCwgYnV0IG9uIE1hYywgd2Ugd2Fu
dCBpdCBpbiBXZWJDb3JlIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBXZWJLaXQxIGFuZCBXZWJLaXQy
LgorfQorI2VuZGlmCisKIGNvbnN0IEF0b21pY1N0cmluZyYgU2V0dGluZ3M6OnN0YW5kYXJkRm9u
dEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEdlbmVy
aWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBzY3JpcHQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gMTEzNzQxKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNiArNTU1LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIFNldHRpbmdzKFBhZ2Uq
KTsKIAorICAgICAgICB2b2lkIGluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCk7CisKICAg
ICAgICAgUGFnZSogbV9wYWdlOwogCiAgICAgICAgIFN0cmluZyBtX2RlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5nc01hYy5tbQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworI2luY2x1ZGUgIkxvY2FsZVRvU2NyaXB0TWFwcGlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgTlNEaWN0aW9uYXJ5ICpkZWZhdWx0Rm9udEZhbWlseURpY3Rpb25hcnkoKQor
eworICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmZvbnRGYW1pbHlEaWN0aW9uYXJ5OworICAgIGlm
IChmb250RmFtaWx5RGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlEaWN0aW9u
YXJ5OworCisgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRp
ZmllcjpAImNvbS5hcHBsZS5XZWJDb3JlIl07CisgICAgTlNEYXRhICpmaWxlRGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mVVJMOltidW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJEZWZhdWx0
Rm9udHMiIHdpdGhFeHRlbnNpb246QCJwbGlzdCJdXTsKKyAgICBOU0Vycm9yICplcnJvcjsKKyAg
ICBpZCBwcm9wZXJ0eUxpc3QgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5
TGlzdFdpdGhEYXRhOmZpbGVEYXRhIG9wdGlvbnM6TlNQcm9wZXJ0eUxpc3RJbW11dGFibGUgZm9y
bWF0OjAgZXJyb3I6JmVycm9yXTsKKyAgICBpZiAoIXByb3BlcnR5TGlzdCkKKyAgICAgICAgRkFU
QUwoIkNvdWxkIG5vdCByZWFkIGZvbnQgZmFsbGJhY2sgZmlsZTogJXMiLCBbW2Vycm9yIGRlc2Ny
aXB0aW9uXSBVVEY4U3RyaW5nXSk7CisgICAgaWYgKCFbcHJvcGVydHlMaXN0IGlzS2luZE9mQ2xh
c3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAgICBGQVRBTCgiRm9udCBmYWxsYmFjayBm
aWxlIGhhcyBpbmNvcnJlY3QgZm9ybWF0IC0gcm9vdCBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFy
eSIpOworCisgICAgZm9udEZhbWlseURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxOU0RpY3Rpb25h
cnkgKj4ocHJvcGVydHlMaXN0KTsKKyAgICBDRlJldGFpbihmb250RmFtaWx5RGljdGlvbmFyeSk7
CisgICAgcmV0dXJuIGZvbnRGYW1pbHlEaWN0aW9uYXJ5OworfQorCit2b2lkIFNldHRpbmdzOjpp
bml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHN0YW5kYXJkRmFtaWx5LCAoInN0YW5kYXJkIikpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtb25vc3BhY2VGYW1pbHksICgibW9ub3NwYWNl
IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZXJpZkZhbWlseSwg
KCJzZXJpZiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2Fuc1Nl
cmlmRmFtaWx5LCAoInNhbnMtc2VyaWYiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGN1cnNpdmVGYW1pbHksICgiY3Vyc2l2ZSIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgZmFudGFzeUZhbWlseSwgKCJmYW50YXN5IikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwaWN0b2dyYXBoRmFtaWx5LCAoInBpY3Rv
Z3JhcGgiKSk7CisKKyAgICBOU0RpY3Rpb25hcnkgKnJvb3REaWN0aW9uYXJ5ID0gZGVmYXVsdEZv
bnRGYW1pbHlEaWN0aW9uYXJ5KCk7CisgICAgZm9yIChOU1N0cmluZyAqc2NyaXB0TmFtZSBpbiBy
b290RGljdGlvbmFyeSkgeworICAgICAgICBOU0RpY3Rpb25hcnkgKnNjcmlwdERpY3Rpb25hcnkg
PSBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4oW3Jvb3REaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTpzY3JpcHROYW1lXSk7CisgICAgICAgIGlmICghW3NjcmlwdE5hbWUgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIEZBVEFMKCJGb250IGZhbGxiYWNrIGZpbGUg
aGFzIGluY29ycmVjdCBmb3JtYXQgLSBzY3JpcHQgbmFtZSBpcyBub3QgYSBzdHJpbmciKTsKKyAg
ICAgICAgaWYgKCFbc2NyaXB0RGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkg
Y2xhc3NdXSkKKyAgICAgICAgICAgIEZBVEFMKCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29y
cmVjdCBmb3JtYXQgLSBwZXItc2NyaXB0IHZhbHVlIGlzIG5vdCBhIGRpY3Rpb25hcnkiKTsKKwor
ICAgICAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSBzY3JpcHROYW1lVG9Db2RlKHNjcmlwdE5hbWUp
OworICAgICAgICBpZiAoc2NyaXB0ID09IFVTQ1JJUFRfVU5LTk9XTikKKyAgICAgICAgICAgIEZB
VEFMKCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSB1bmtub3duIGxh
bmd1YWdlIGNvZGUgJXMiLCBbc2NyaXB0TmFtZSBVVEY4U3RyaW5nXSk7CisKKyAgICAgICAgZm9y
IChOU1N0cmluZyAqZ2VuZXJpY0ZhbWlseU5hbWUgaW4gc2NyaXB0RGljdGlvbmFyeSkgeworICAg
ICAgICAgICAgTlNTdHJpbmcgKmZhbWlseU5hbWUgPSBbc2NyaXB0RGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6Z2VuZXJpY0ZhbWlseU5hbWVdOworICAgICAgICAgICAgaWYgKCFbZ2VuZXJpY0ZhbWls
eU5hbWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICBG
QVRBTCgiRm9udCBmYWxsYmFjayBmaWxlIGhhcyBpbmNvcnJlY3QgZm9ybWF0IC0gZ2VuZXJpYyBm
YW1pbHkgbmFtZSBpcyBub3QgYSBzdHJpbmciKTsKKyAgICAgICAgICAgIGlmICghW2ZhbWlseU5h
bWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICBGQVRB
TCgiRm9udCBmYWxsYmFjayBmaWxlIGhhcyBpbmNvcnJlY3QgZm9ybWF0IC0gZm9udCBmYW1pbHkg
bmFtZSBpcyBub3QgYSBzdHJpbmciKTsKKworICAgICAgICAgICAgQXRvbWljU3RyaW5nIGdlbmVy
aWNGYW1pbHkoZ2VuZXJpY0ZhbWlseU5hbWUpOworCisgICAgICAgICAgICBpZiAoZ2VuZXJpY0Zh
bWlseSA9PSBzdGFuZGFyZEZhbWlseSkKKyAgICAgICAgICAgICAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoZmFtaWx5TmFtZSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdlbmVyaWNG
YW1pbHkgPT0gbW9ub3NwYWNlRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldEZpeGVkRm9udEZh
bWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2VuZXJpY0Zh
bWlseSA9PSBzZXJpZkZhbWlseSkKKyAgICAgICAgICAgICAgICBzZXRTZXJpZkZvbnRGYW1pbHko
ZmFtaWx5TmFtZSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdlbmVyaWNGYW1pbHkg
PT0gc2Fuc1NlcmlmRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldFNhbnNTZXJpZkZvbnRGYW1p
bHkoZmFtaWx5TmFtZSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdlbmVyaWNGYW1p
bHkgPT0gY3Vyc2l2ZUZhbWlseSkKKyAgICAgICAgICAgICAgICBzZXRDdXJzaXZlRm9udEZhbWls
eShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2VuZXJpY0ZhbWls
eSA9PSBmYW50YXN5RmFtaWx5KQorICAgICAgICAgICAgICAgIHNldEZhbnRhc3lGb250RmFtaWx5
KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlIGlmIChnZW5lcmljRmFtaWx5
ID09IHBpY3RvZ3JhcGhGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0UGljdG9ncmFwaEZvbnRG
YW1pbHkoZmFtaWx5TmFtZSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBGQVRBTCgiRm9udCBmYWxsYmFjayBmaWxlIGhhcyBpbmNvcnJlY3QgZm9ybWF0IC0gdW5r
bm93biBmb250IGZhbWlseSBuYW1lICVzIiwgW2ZhbWlseU5hbWUgVVRGOFN0cmluZ10pOworICAg
ICAgICB9CisgICAgfQorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRpbmdzTWFjLm1tCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzc1
NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTA0LTEwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisg
ICAgICAgIFtNYWNdIGxhbmcsIHhtbDpsYW5nLCBjb250ZW50LWxhbmd1YWdlIGlnbm9yZWQgd2hl
biBjaG9vc2luZyBmb250cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA4NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMjAyMDI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
Zm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLWV4cGVjdGVkLW1pc21hdGNoLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRpb24uaHRtbDogQWRk
ZWQuCisKIDIwMTItMDQtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTEzNjExLgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbnRzL2hhbi1kaXN1bmlmaWNhdGlvbi1leHBlY3RlZC1taXNt
YXRjaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb250cy9o
YW4tZGlzdW5pZmljYXRpb24tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRpb24tZXhwZWN0
ZWQtbWlzbWF0Y2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8cD5KYXBhbmVzZSBhbmQgQ2hpbmVzZSByZW5kZXJpbmdzIG9mIHRoaXMg
Y2hhcmFjdGVyIHNob3VsZCBiZSBkaWZmZXJlbnQ6PC9wPgorPGJvZHk+Cis8cCBzdHlsZT0iZm9u
dC1zaXplOjYwcHgiPkphcGFuZXNlOiA8c3BhbiBsYW5nPSJ6aCI+5LiOPC9zcGFuPjwvcD4KKzxw
IHN0eWxlPSJmb250LXNpemU6NjBweCI+Q2hpbmVzZTogPHNwYW4gbGFuZz0iamEiPuS4jjwvc3Bh
bj48L3A+Cis8L2JvZHk+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRpb24uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9u
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZm9udHMvaGFu
LWRpc3VuaWZpY2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHA+SmFwYW5lc2UgYW5kIENoaW5lc2UgcmVuZGVyaW5ncyBvZiB0
aGlzIGNoYXJhY3RlciBzaG91bGQgYmUgZGlmZmVyZW50OjwvcD4KKzxib2R5PgorPHAgc3R5bGU9
ImZvbnQtc2l6ZTo2MHB4Ij5KYXBhbmVzZTogPHNwYW4gbGFuZz0iamEiPuS4jjwvc3Bhbj48L3A+
Cis8cCBzdHlsZT0iZm9udC1zaXplOjYwcHgiPkNoaW5lc2U6IDxzcGFuIGxhbmc9InpoIj7kuI48
L3NwYW4+PC9wPgorPC9ib2R5PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2ZvbnRzL2hhbi1kaXN1bmlmaWNhdGlvbi5odG1sCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136717</attachid>
            <date>2012-04-11 11:58:33 -0700</date>
            <delta_ts>2012-04-11 12:49:44 -0700</delta_ts>
            <desc>Mac fix</desc>
            <filename>MacDefaultFonts.txt</filename>
            <type>text/plain</type>
            <size>20672</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIGxhbmcsIHhtbDps
YW5nLCBjb250ZW50LWxhbmd1YWdlIGlnbm9yZWQgd2hlbiBjaG9vc2luZyBmb250cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMyMjAyMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgZGVmYXVsdCBmb250IHRhYmxlIGZvciBNYWMgcG9y
dC4gQ2xpZW50cyBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhlc2UgaWYgdGhleSB3YW50IHRvLAorICAg
ICAgICBidXQga25vd2luZyB3aGljaCBmb250cyB0byB1c2UgaXMgbW9yZSBhYm91dCB0aGUgcGxh
dGZvcm0gdGhhbiBhYm91dCB0aGUgY2xpZW50LgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9t
YWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFJlc291cmNlcy9EZWZhdWx0Rm9udHMucGxpc3QuaW46IEFkZGVkLgorICAgICAg
ICBBZGRlZCBTZXR0aW5nc01hYy5tbS4gQWRkZWQgcHJlcHJvY2Vzc2VkIHByb3BlcnR5IGxpc3Qg
d2l0aCBkZWZhdWx0IGZvbnRzLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRHZW5lcmljRm9udEZhbWlseU1hcCk6IERvbid0IG5vdGlmeSB0aGUg
cGFnZSBpZiB3ZSBkb24ndCBoYXZlIG9uZSB5ZXQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6U2V0dGluZ3MpOiBBc3NpZ24gdG8gbV9wYWdlIGFmdGVyIGNhbGxpbmcgaW5pdGlhbGl6ZURl
ZmF1bHRGb250RmFtaWxpZXMsCisgICAgICAgIHNvIHRoYXQgd2Ugd29uJ3QgdHJ5IHRvIGNhbGwg
cGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCkgaW4gYSBoYWxmLWluaXRpYWxp
emVkCisgICAgICAgIFBhZ2UgdGhhdCdzIGNyZWF0aW5nIHNldHRpbmdzLgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKTogRHVtbXkgaW1s
cGxlbWVudGF0aW9uIGZvciBwb3J0cyB0aGF0CisgICAgICAgIHJlbHkgb24gY2xpZW50IHRvIHNl
dCBkZWZhdWx0cy4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDogQWRkZWQgaW5pdGlhbGl6
ZURlZmF1bHRGb250RmFtaWxpZXMoKS4KKworICAgICAgICAqIHBhZ2UvbWFjL1NldHRpbmdzTWFj
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRGb250RmFtaWx5RGljdGlvbmFy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFt
aWxpZXMpOgorICAgICAgICBMb2FkIGRlZmF1bHRzIGZyb20gYSBwbGlzdCBmaWxlIGluc2lkZSBX
ZWJDb3JlIGZyYW1ld29yay4KKwogMjAxMi0wNC0xMSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNjE0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDExMzc0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1
ZGlvIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZGF0YWJhc2UgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJzb2NrZXRzIFwKKyAgICAkKFdlYkNvcmUpL1Jlc291cmNlcyBcCiAgICAg
JChXZWJDb3JlKS9iaW5kaW5ncy9nZW5lcmljIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pz
IFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL29iamMgXApAQCAtNjU4LDYgKzY1OSwxMiBAQCBl
bHNlCiAgICAgRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyA9IDAKIGVuZGlmCiAKK2FsbDogRGVm
YXVsdEZvbnRzLnBsaXN0CisKK0RlZmF1bHRGb250cy5wbGlzdCA6IERlZmF1bHRGb250cy5wbGlz
dC5pbgorCUBlY2hvIFByZS1wcm9jZXNzaW5nIERlZmF1bHRGb250cy5wbGlzdC4uLgorCSQoQ0Mp
IC1FIC1QIC13IC14IGMgLXN0ZD1jODkgJChGUkFNRVdPUktfRkxBR1MpICQoSEVBREVSX0ZMQUdT
KSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgiICQ8ID4gJEAKKwogZWxzZQogCiBpZm5kZWYgRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvRGVm
YXVsdEZvbnRzLnBsaXN0LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy9EZWZhdWx0Rm9udHMucGxpc3QuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9S
ZXNvdXJjZXMvRGVmYXVsdEZvbnRzLnBsaXN0LmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcw
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBs
aXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBs
ZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4K
KzxkaWN0PgorICAgIDxrZXk+aGFudDwva2V5PiAvKiBUcmFkaXRpb25hbCBDaGluZXNlICovCisg
ICAgPGRpY3Q+CisgICAgICAgIDxrZXk+bW9ub3NwYWNlPC9rZXk+CisgICAgICAgIDxzdHJpbmc+
SGVpdGkgVEM8L3N0cmluZz4KKyAgICAgICAgPGtleT5zdGFuZGFyZDwva2V5PgorICAgICAgICA8
c3RyaW5nPkhlaXRpIFRDPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c2Fucy1zZXJpZjwva2V5Pgor
ICAgICAgICA8c3RyaW5nPkhlaXRpIFRDPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c2VyaWY8L2tl
eT4KKyAgICAgICAgPHN0cmluZz5BcHBsZSBMaVN1bmc8L3N0cmluZz4KKyAgICA8L2RpY3Q+Cisg
ICAgPGtleT5oYW5zPC9rZXk+IC8qIFNpbXBsaWZpZWQgQ2hpbmVzZSAqLworICAgIDxkaWN0Pgor
ICAgICAgICA8a2V5Pm1vbm9zcGFjZTwva2V5PgorICAgICAgICA8c3RyaW5nPkhlaXRpIFNDPC9z
dHJpbmc+CisgICAgICAgIDxrZXk+c3RhbmRhcmQ8L2tleT4KKyAgICAgICAgPHN0cmluZz5IZWl0
aSBTQzwvc3RyaW5nPgorICAgICAgICA8a2V5PnNhbnMtc2VyaWY8L2tleT4KKyAgICAgICAgPHN0
cmluZz5IZWl0aSBTQzwvc3RyaW5nPgorICAgICAgICA8a2V5PnNlcmlmPC9rZXk+CisgICAgICAg
IDxzdHJpbmc+U1RTb25nPC9zdHJpbmc+CisgICAgPC9kaWN0PgorICAgIDxrZXk+aHJrdDwva2V5
PiAgLyogSmFwYW5lc2UgKi8KKyAgICA8ZGljdD4KKyAgICAgICAgPGtleT5tb25vc3BhY2U8L2tl
eT4KKyAgICAgICAgPHN0cmluZz5Pc2FrYS1Nb25vPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c3Rh
bmRhcmQ8L2tleT4KKyAgICAgICAgPHN0cmluZz5IaXJhZ2lubyBLYWt1IEdvdGhpYyBQcm88L3N0
cmluZz4KKyAgICAgICAgPGtleT5zYW5zLXNlcmlmPC9rZXk+CisgICAgICAgIDxzdHJpbmc+SGly
YWdpbm8gS2FrdSBHb3RoaWMgUHJvPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c2VyaWY8L2tleT4K
KyAgICAgICAgPHN0cmluZz5IaXJhZ2lubyBNaW5jaG8gUHJvPC9zdHJpbmc+CisgICAgPC9kaWN0
PgorICAgIDxrZXk+aGFuZzwva2V5PiAvKiBLb3JlYW4gKi8KKyAgICA8ZGljdD4KKyNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJ
T04pCisgICAgICAgIDxrZXk+bW9ub3NwYWNlPC9rZXk+CisgICAgICAgIDxzdHJpbmc+QXBwbGUg
U0QgR290aGljIE5lbzwvc3RyaW5nPgorICAgICAgICA8a2V5PnN0YW5kYXJkPC9rZXk+CisgICAg
ICAgIDxzdHJpbmc+QXBwbGUgU0QgR290aGljIE5lbzwvc3RyaW5nPgorICAgICAgICA8a2V5PnNh
bnMtc2VyaWY8L2tleT4KKyAgICAgICAgPHN0cmluZz5BcHBsZSBTRCBHb3RoaWMgTmVvPC9zdHJp
bmc+CisjZWxzZQorICAgICAgICA8a2V5Pm1vbm9zcGFjZTwva2V5PgorICAgICAgICA8c3RyaW5n
PkFwcGxlR290aGljPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c3RhbmRhcmQ8L2tleT4KKyAgICAg
ICAgPHN0cmluZz5BcHBsZUdvdGhpYzwvc3RyaW5nPgorICAgICAgICA8a2V5PnNhbnMtc2VyaWY8
L2tleT4KKyAgICAgICAgPHN0cmluZz5BcHBsZUdvdGhpYzwvc3RyaW5nPgorI2VuZGlmCisgICAg
ICAgIDxrZXk+c2VyaWY8L2tleT4KKyAgICAgICAgPHN0cmluZz5BcHBsZU15dW5nam88L3N0cmlu
Zz4KKyAgICA8L2RpY3Q+CisgICAgPGtleT56eXl5PC9rZXk+IC8qIE90aGVyIHNjcmlwdHMgKFVT
Q1JJUFRfQ09NTU9OKSAqLworICAgIDxkaWN0PgorICAgICAgICA8a2V5Pm1vbm9zcGFjZTwva2V5
PgorICAgICAgICA8c3RyaW5nPkNvdXJpZXI8L3N0cmluZz4KKyAgICAgICAgPGtleT5zdGFuZGFy
ZDwva2V5PgorICAgICAgICA8c3RyaW5nPlRpbWVzPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c2Fu
cy1zZXJpZjwva2V5PgorICAgICAgICA8c3RyaW5nPkhlbHZldGljYTwvc3RyaW5nPgorICAgICAg
ICA8a2V5PnNlcmlmPC9rZXk+CisgICAgICAgIDxzdHJpbmc+VGltZXM8L3N0cmluZz4KKyAgICA8
L2RpY3Q+Cis8L2RpY3Q+Cis8L3BsaXN0PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL0RlZmF1bHRGb250cy5wbGlzdC5pbgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTM3NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTU4NjQsNiArNTg2NCw3IEBACiAJCUUxODI1NjkwMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dv
cmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxODI1NjhFMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuaCAqLzsgfTsK
IAkJRTE4MjU4QUMwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgyNThBQjBF
RjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJRTE4
NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgKi87IH07CisJCUUxOTU4MjMxMTUzNjA5OUMwMEI2MDg3NSAvKiBEZWZhdWx0
Rm9udHMucGxpc3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOTU4MjMwMTUzNjA5OUMwMEI2MDg3NSAvKiBEZWZhdWx0Rm9udHMucGxpc3QgKi87IH07
CiAJCUUxQTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMTQ3MDcx
MTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggKi87IH07CiAJCUUx
QTMxNjJEMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMxNjJCMTM0
QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUEzMTYyRTEzNEJDMzJE
MDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzE2MkMxMzRCQzMyRDAwN0M5QTRG
IC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbSAqLzsgfTsKQEAgLTU5MDAsNiArNTkw
MSw3IEBACiAJCUUxQjRDRDI1MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQjRD
RDI0MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbSAqLzsgfTsKIAkJ
RTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUJFNTEyQjBDRjZDNTEyMDAy
RUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCAqLzsgfTsKIAkJRTFCRTUxMkUwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFCRTUxMkMwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5oICovOyB9OworCQlFMUMyRjI0QTE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMyRjI0
ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi87IH07CiAJCUUxQzM2MkVGMEVB
RjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMzNjJFRDBFQUYyQUE5MDA3NDEwQkMgLyogSlNX
b3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQlFMUMzNjJGMDBFQUYyQUE5MDA3NDEwQkMgLyogSlNX
b3JrZXJMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUMzNjJFRTBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAg
Ki87IH07CiAJCUUxQzM2QzAzMEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMzZDMDIw
RUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyOTgwLDYgKzEyOTgyLDcgQEAKIAkJ
RTE4MjU2OEUwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTE4MjU4QUIwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtl
ckNvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTg3NzJG
MDEyNkUyNjI5MDAzREQ1ODYgLyogTGFuZ3VhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGFuZ3VhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMTk1ODIzMDE1MzYwOTlDMDBCNjA4NzUgLyogRGVmYXVsdEZvbnRzLnBsaXN0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSBEZWZhdWx0Rm9udHMucGxpc3Q7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxQTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJO
b2RlQWxnb3JpdGhtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUEzMTYy
QjEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUEzMTYyQzEzNEJDMzJEMDA3QzlBNEYg
LyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwNDMsNiArMTMwNDYsOCBAQAogCQlFMUI0Q0QyNDEw
QjMyMkUyMDBCRkZEN0UgLyogQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFCRTUxMkIwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xU
VW5pY29kZVNvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUJFNTEyQzBD
RjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFhTTFRVbmljb2RlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMUMyRjI0NDE1MzM5OENFMDA4M0Y5NzQgLyogRGVmYXVsdEZvbnRzLnBsaXN0LmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0OyBmaWxl
RW5jb2RpbmcgPSA0OyBwYXRoID0gRGVmYXVsdEZvbnRzLnBsaXN0LmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
LnBsaXN0OyB9OworCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXR0aW5nc01hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzYyRUQwRUFGMkFBOTAwNzQxMEJDIC8q
IEpTV29ya2VyTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
b3JrZXJMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUMzNjJFRTBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckxvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2Jq
ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzkwOSw2ICsxMzkxNCw3IEBACiAJ
CQkJODUxMzZDOTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nICovLAog
CQkJCTFBQjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovLAogCQkJ
CTFBQjFBRTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLywKKwkJCQlF
MUMyRjI0NDE1MzM5OENFMDA4M0Y5NzQgLyogRGVmYXVsdEZvbnRzLnBsaXN0LmluICovLAogCQkJ
KTsKIAkJCXBhdGggPSBSZXNvdXJjZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MTUwNDksNiArMTUwNTUsNyBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NW
YWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBD
U1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzExNDU2MzJGOTAwM0FFOEY1IC8qIERP
TURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTE5NTgyMzAxNTM2MDk5QzAwQjYwODc1
IC8qIERlZmF1bHRGb250cy5wbGlzdCAqLywKIAkJCQk5NzY2NTA0RTE0NEZCRkZFMDBGNkJCNTEg
LyogRXZlbnRGYWN0b3J5LmNwcCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyog
RXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50
SW50ZXJmYWNlcy5oICovLApAQCAtMTY3NzcsNiArMTY3ODQsNyBAQAogCQkJCTkzQzA5QTdFMEIw
NjRFRUYwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXJNYWMubW0gKi8sCiAJCQkJNjVCRjAyM0MwOTc0
ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJE
MTBGMiAvKiBQYWdlTWFjLmNwcCAqLywKKwkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyog
U2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJRjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNv
cmVGcmFtZVZpZXcuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMjQ4OTIsNiArMjQ5
MDAsNyBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29y
LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpv
b21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEz
OUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRTE5NTgyMzEx
NTM2MDk5QzAwQjYwODc1IC8qIERlZmF1bHRGb250cy5wbGlzdCBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzc0MCw2ICsyNzc0OSw3IEBACiAJCQkJQTA3RDMzNTUxNTJCNjMwRTAwMUI2MzkzIC8qIEpT
V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTA4Q0Yx
NTQxNTJCNzdCMzAwOUM1Nzc1IC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM1QTFFQTdDMTUyQkNGMDQwMDREMDBCNiAvKiBTaW1wbGlmeU1hcmt1
cENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFDMkYyNEExNTMzQTIxMjAwODNGOTc0
IC8qIFNldHRpbmdzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc0MEU4M0MxNTMyREUxNzAw
NzYwNjI4IC8qIFRyZWVTY29wZUFkanVzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDExMzc0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw5IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBzZXRHZW5lcmljRm9udEZhbWlseU0KICAgICAgICAgcmV0dXJuOwogICAgIGVsc2UK
ICAgICAgICAgZm9udE1hcC5zZXQoc3RhdGljX2Nhc3Q8aW50PihzY3JpcHQpLCBmYW1pbHkpOwot
ICAgIHBhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOworCisgICAgaWYgKHBh
Z2UpCisgICAgICAgIHBhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQog
CiBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0R2VuZXJpY0ZvbnRGYW1pbHlG
b3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgVVNjcmlwdENvZGUg
c2NyaXB0KQpAQCAtMTEzLDcgKzExNSw3IEBAIHN0YXRpYyBFZGl0aW5nQmVoYXZpb3JUeXBlIGVk
aXRpbmdCZWhhdmkKIH0KIAogU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCi0gICAgOiBt
X3BhZ2UocGFnZSkKKyAgICA6IG1fcGFnZSgwKQogICAgICwgbV9lZGl0YWJsZUxpbmtCZWhhdmlv
cihFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3IpCiAgICAgLCBtX3RleHREaXJlY3Rpb25TdWJt
ZW51SW5jbHVzaW9uQmVoYXZpb3IoVGV4dERpcmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5j
bHVkZWQpCiAgICAgLCBtX3Bhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKDEpCkBAIC0yNjAs
NiArMjYyLDggQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLy8gQSBGcmFt
ZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRv
bWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCiAgICAgQXRv
bWljU3RyaW5nOjppbml0KCk7CisgICAgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsK
KyAgICBtX3BhZ2UgPSBwYWdlOyAvLyBQYWdlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQg
d2VuIGNvbnN0cnVjdGluZyBTZXR0aW5ncywgc28ga2VlcGluZyBtX3BhZ2UgbnVsbCBvdmVyIGlu
aXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkgY2FsbC4KIH0KIAogUGFzc093blB0cjxTZXR0
aW5ncz4gU2V0dGluZ3M6OmNyZWF0ZShQYWdlKiBwYWdlKQpAQCAtMjY3LDYgKzI3MSwxMyBAQCBQ
YXNzT3duUHRyPFNldHRpbmdzPiBTZXR0aW5nczo6Y3JlYXRlKFBhCiAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBTZXR0aW5ncyhwYWdlKSk7CiB9IAogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQg
U2V0dGluZ3M6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKK3sKKyAgICAvLyBPdGhl
ciBwbGF0Zm9ybXMgY2FuIHNldCB1cCBmb250cyBmcm9tIGEgY2xpZW50LCBidXQgb24gTWFjLCB3
ZSB3YW50IGl0IGluIFdlYkNvcmUgdG8gc2hhcmUgY29kZSBiZXR3ZWVuIFdlYktpdDEgYW5kIFdl
YktpdDIuCit9CisjZW5kaWYKKwogY29uc3QgQXRvbWljU3RyaW5nJiBTZXR0aW5nczo6c3RhbmRh
cmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0
R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAsIHNjcmlw
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiAxMTM3NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1NSw2ICs1NTUs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgU2V0dGluZ3Mo
UGFnZSopOwogCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsK
KwogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAKICAgICAgICAgU3RyaW5nIG1fZGVmYXVsdFRleHRF
bmNvZGluZ05hbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5nc01hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5nc01hYy5tbQko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRpbmdzTWFjLm1tCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiTG9jYWxlVG9TY3JpcHRN
YXBwaW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBOU0RpY3Rpb25hcnkgKmRlZmF1bHRGb250RmFtaWx5RGljdGlvbmFy
eSgpCit7CisgICAgc3RhdGljIE5TRGljdGlvbmFyeSAqZm9udEZhbWlseURpY3Rpb25hcnk7Cisg
ICAgaWYgKGZvbnRGYW1pbHlEaWN0aW9uYXJ5KQorICAgICAgICByZXR1cm4gZm9udEZhbWlseURp
Y3Rpb25hcnk7CisKKyAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJ
ZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkNvcmUiXTsKKyAgICBOU0RhdGEgKmZpbGVEYXRhID0g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W2J1bmRsZSBVUkxGb3JSZXNvdXJjZTpAIkRl
ZmF1bHRGb250cyIgd2l0aEV4dGVuc2lvbjpAInBsaXN0Il1dOworICAgIE5TRXJyb3IgKmVycm9y
OworICAgIGlkIHByb3BlcnR5TGlzdCA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJv
cGVydHlMaXN0V2l0aERhdGE6ZmlsZURhdGEgb3B0aW9uczpOU1Byb3BlcnR5TGlzdEltbXV0YWJs
ZSBmb3JtYXQ6MCBlcnJvcjomZXJyb3JdOworICAgIGlmICghcHJvcGVydHlMaXN0KQorICAgICAg
ICBGQVRBTCgiQ291bGQgbm90IHJlYWQgZm9udCBmYWxsYmFjayBmaWxlOiAlcyIsIFtbZXJyb3Ig
ZGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKyAgICBpZiAoIVtwcm9wZXJ0eUxpc3QgaXNLaW5k
T2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIEZBVEFMKCJGb250IGZhbGxi
YWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSByb290IG9iamVjdCBpcyBub3QgYSBkaWN0
aW9uYXJ5Iik7CisKKyAgICBmb250RmFtaWx5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PE5TRGlj
dGlvbmFyeSAqPihwcm9wZXJ0eUxpc3QpOworICAgIENGUmV0YWluKGZvbnRGYW1pbHlEaWN0aW9u
YXJ5KTsKKyAgICByZXR1cm4gZm9udEZhbWlseURpY3Rpb25hcnk7Cit9CisKK3ZvaWQgU2V0dGlu
Z3M6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc3RhbmRhcmRGYW1pbHksICgic3RhbmRhcmQiKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG1vbm9zcGFjZUZhbWlseSwgKCJtb25v
c3BhY2UiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlcmlmRmFt
aWx5LCAoInNlcmlmIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBz
YW5zU2VyaWZGYW1pbHksICgic2Fucy1zZXJpZiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgY3Vyc2l2ZUZhbWlseSwgKCJjdXJzaXZlIikpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmYW50YXN5RmFtaWx5LCAoImZhbnRhc3kiKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHBpY3RvZ3JhcGhGYW1pbHksICgi
cGljdG9ncmFwaCIpKTsKKworICAgIE5TRGljdGlvbmFyeSAqcm9vdERpY3Rpb25hcnkgPSBkZWZh
dWx0Rm9udEZhbWlseURpY3Rpb25hcnkoKTsKKyAgICBmb3IgKE5TU3RyaW5nICpzY3JpcHROYW1l
IGluIHJvb3REaWN0aW9uYXJ5KSB7CisgICAgICAgIE5TRGljdGlvbmFyeSAqc2NyaXB0RGljdGlv
bmFyeSA9IHN0YXRpY19jYXN0PE5TRGljdGlvbmFyeSAqPihbcm9vdERpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OnNjcmlwdE5hbWVdKTsKKyAgICAgICAgaWYgKCFbc2NyaXB0TmFtZSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgRkFUQUwoIkZvbnQgZmFsbGJhY2sg
ZmlsZSBoYXMgaW5jb3JyZWN0IGZvcm1hdCAtIHNjcmlwdCBuYW1lIGlzIG5vdCBhIHN0cmluZyIp
OworICAgICAgICBpZiAoIVtzY3JpcHREaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05TRGljdGlv
bmFyeSBjbGFzc11dKQorICAgICAgICAgICAgRkFUQUwoIkZvbnQgZmFsbGJhY2sgZmlsZSBoYXMg
aW5jb3JyZWN0IGZvcm1hdCAtIHBlci1zY3JpcHQgdmFsdWUgaXMgbm90IGEgZGljdGlvbmFyeSIp
OworCisgICAgICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHNjcmlwdE5hbWVUb0NvZGUoc2NyaXB0
TmFtZSk7CisgICAgICAgIGlmIChzY3JpcHQgPT0gVVNDUklQVF9VTktOT1dOKQorICAgICAgICAg
ICAgRkFUQUwoIkZvbnQgZmFsbGJhY2sgZmlsZSBoYXMgaW5jb3JyZWN0IGZvcm1hdCAtIHVua25v
d24gbGFuZ3VhZ2UgY29kZSAlcyIsIFtzY3JpcHROYW1lIFVURjhTdHJpbmddKTsKKworICAgICAg
ICBmb3IgKE5TU3RyaW5nICpnZW5lcmljRmFtaWx5TmFtZSBpbiBzY3JpcHREaWN0aW9uYXJ5KSB7
CisgICAgICAgICAgICBOU1N0cmluZyAqZmFtaWx5TmFtZSA9IFtzY3JpcHREaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpnZW5lcmljRmFtaWx5TmFtZV07CisgICAgICAgICAgICBpZiAoIVtnZW5lcmlj
RmFtaWx5TmFtZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAg
ICAgIEZBVEFMKCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSBnZW5l
cmljIGZhbWlseSBuYW1lIGlzIG5vdCBhIHN0cmluZyIpOworICAgICAgICAgICAgaWYgKCFbZmFt
aWx5TmFtZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgICAg
IEZBVEFMKCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSBmb250IGZh
bWlseSBuYW1lIGlzIG5vdCBhIHN0cmluZyIpOworCisgICAgICAgICAgICBBdG9taWNTdHJpbmcg
Z2VuZXJpY0ZhbWlseShnZW5lcmljRmFtaWx5TmFtZSk7CisKKyAgICAgICAgICAgIGlmIChnZW5l
cmljRmFtaWx5ID09IHN0YW5kYXJkRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldFN0YW5kYXJk
Rm9udEZhbWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2Vu
ZXJpY0ZhbWlseSA9PSBtb25vc3BhY2VGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0Rml4ZWRG
b250RmFtaWx5KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlIGlmIChnZW5l
cmljRmFtaWx5ID09IHNlcmlmRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldFNlcmlmRm9udEZh
bWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2VuZXJpY0Zh
bWlseSA9PSBzYW5zU2VyaWZGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0U2Fuc1NlcmlmRm9u
dEZhbWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2VuZXJp
Y0ZhbWlseSA9PSBjdXJzaXZlRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldEN1cnNpdmVGb250
RmFtaWx5KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlIGlmIChnZW5lcmlj
RmFtaWx5ID09IGZhbnRhc3lGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0RmFudGFzeUZvbnRG
YW1pbHkoZmFtaWx5TmFtZSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdlbmVyaWNG
YW1pbHkgPT0gcGljdG9ncmFwaEZhbWlseSkKKyAgICAgICAgICAgICAgICBzZXRQaWN0b2dyYXBo
Rm9udEZhbWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIEZBVEFMKCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQg
LSB1bmtub3duIGZvbnQgZmFtaWx5IG5hbWUgJXMiLCBbZmFtaWx5TmFtZSBVVEY4U3RyaW5nXSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136728</attachid>
            <date>2012-04-11 12:49:44 -0700</date>
            <delta_ts>2012-04-11 13:05:31 -0700</delta_ts>
            <desc>Mac fix</desc>
            <filename>MacDefaultFonts.txt</filename>
            <type>text/plain</type>
            <size>22893</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIGxhbmcsIHhtbDps
YW5nLCBjb250ZW50LWxhbmd1YWdlIGlnbm9yZWQgd2hlbiBjaG9vc2luZyBmb250cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMyMjAyMDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgZGVmYXVsdCBmb250IHRhYmxlIGZvciBNYWMgcG9y
dC4gQ2xpZW50cyBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhlc2UgaWYgdGhleSB3YW50IHRvLAorICAg
ICAgICBidXQga25vd2luZyB3aGljaCBmb250cyB0byB1c2UgaXMgbW9yZSBhYm91dCB0aGUgcGxh
dGZvcm0gdGhhbiBhYm91dCB0aGUgY2xpZW50LgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9t
YWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFJlc291cmNlcy9EZWZhdWx0Rm9udHMucGxpc3QuaW46IEFkZGVkLgorICAgICAg
ICBBZGRlZCBTZXR0aW5nc01hYy5tbS4gQWRkZWQgcHJlcHJvY2Vzc2VkIHByb3BlcnR5IGxpc3Qg
d2l0aCBkZWZhdWx0IGZvbnRzLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRHZW5lcmljRm9udEZhbWlseU1hcCk6IERvbid0IG5vdGlmeSB0aGUg
cGFnZSBpZiB3ZSBkb24ndCBoYXZlIG9uZSB5ZXQuCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5n
czo6U2V0dGluZ3MpOiBBc3NpZ24gdG8gbV9wYWdlIGFmdGVyIGNhbGxpbmcgaW5pdGlhbGl6ZURl
ZmF1bHRGb250RmFtaWxpZXMsCisgICAgICAgIHNvIHRoYXQgd2Ugd29uJ3QgdHJ5IHRvIGNhbGwg
cGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCkgaW4gYSBoYWxmLWluaXRpYWxp
emVkCisgICAgICAgIFBhZ2UgdGhhdCdzIGNyZWF0aW5nIHNldHRpbmdzLgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKTogRHVtbXkgaW1s
cGxlbWVudGF0aW9uIGZvciBwb3J0cyB0aGF0CisgICAgICAgIHJlbHkgb24gY2xpZW50IHRvIHNl
dCBkZWZhdWx0cy4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDogQWRkZWQgaW5pdGlhbGl6
ZURlZmF1bHRGb250RmFtaWxpZXMoKS4KKworICAgICAgICAqIHBhZ2UvbWFjL1NldHRpbmdzTWFj
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRGb250RmFtaWx5RGljdGlvbmFy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFt
aWxpZXMpOgorICAgICAgICBMb2FkIGRlZmF1bHRzIGZyb20gYSBwbGlzdCBmaWxlIGluc2lkZSBX
ZWJDb3JlIGZyYW1ld29yay4KKwogMjAxMi0wNC0xMSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNjE0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDExMzc0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1
ZGlvIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZGF0YWJhc2UgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJzb2NrZXRzIFwKKyAgICAkKFdlYkNvcmUpL1Jlc291cmNlcyBcCiAgICAg
JChXZWJDb3JlKS9iaW5kaW5ncy9nZW5lcmljIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pz
IFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL29iamMgXApAQCAtNjU4LDYgKzY1OSwxMiBAQCBl
bHNlCiAgICAgRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyA9IDAKIGVuZGlmCiAKK2FsbDogRGVm
YXVsdEZvbnRzLnBsaXN0CisKK0RlZmF1bHRGb250cy5wbGlzdCA6IERlZmF1bHRGb250cy5wbGlz
dC5pbgorCUBlY2hvIFByZS1wcm9jZXNzaW5nIERlZmF1bHRGb250cy5wbGlzdC4uLgorCSQoQ0Mp
IC1FIC1QIC13IC14IGMgLXN0ZD1jODkgJChGUkFNRVdPUktfRkxBR1MpICQoSEVBREVSX0ZMQUdT
KSAtaW5jbHVkZSAid3RmL1BsYXRmb3JtLmgiICQ8ID4gJEAKKwogZWxzZQogCiBpZm5kZWYgRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvRGVm
YXVsdEZvbnRzLnBsaXN0LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy9EZWZhdWx0Rm9udHMucGxpc3QuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9S
ZXNvdXJjZXMvRGVmYXVsdEZvbnRzLnBsaXN0LmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcw
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBs
aXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBs
ZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4K
KzxkaWN0PgorICAgIDxrZXk+aGFudDwva2V5PiAvKiBUcmFkaXRpb25hbCBDaGluZXNlICovCisg
ICAgPGRpY3Q+CisgICAgICAgIDxrZXk+bW9ub3NwYWNlPC9rZXk+CisgICAgICAgIDxzdHJpbmc+
SGVpdGkgVEM8L3N0cmluZz4KKyAgICAgICAgPGtleT5zdGFuZGFyZDwva2V5PgorICAgICAgICA8
c3RyaW5nPkhlaXRpIFRDPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c2Fucy1zZXJpZjwva2V5Pgor
ICAgICAgICA8c3RyaW5nPkhlaXRpIFRDPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c2VyaWY8L2tl
eT4KKyAgICAgICAgPHN0cmluZz5BcHBsZSBMaVN1bmc8L3N0cmluZz4KKyAgICA8L2RpY3Q+Cisg
ICAgPGtleT5oYW5zPC9rZXk+IC8qIFNpbXBsaWZpZWQgQ2hpbmVzZSAqLworICAgIDxkaWN0Pgor
ICAgICAgICA8a2V5Pm1vbm9zcGFjZTwva2V5PgorICAgICAgICA8c3RyaW5nPkhlaXRpIFNDPC9z
dHJpbmc+CisgICAgICAgIDxrZXk+c3RhbmRhcmQ8L2tleT4KKyAgICAgICAgPHN0cmluZz5IZWl0
aSBTQzwvc3RyaW5nPgorICAgICAgICA8a2V5PnNhbnMtc2VyaWY8L2tleT4KKyAgICAgICAgPHN0
cmluZz5IZWl0aSBTQzwvc3RyaW5nPgorICAgICAgICA8a2V5PnNlcmlmPC9rZXk+CisgICAgICAg
IDxzdHJpbmc+U1RTb25nPC9zdHJpbmc+CisgICAgPC9kaWN0PgorICAgIDxrZXk+aHJrdDwva2V5
PiAgLyogSmFwYW5lc2UgKi8KKyAgICA8ZGljdD4KKyAgICAgICAgPGtleT5tb25vc3BhY2U8L2tl
eT4KKyAgICAgICAgPHN0cmluZz5Pc2FrYS1Nb25vPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c3Rh
bmRhcmQ8L2tleT4KKyAgICAgICAgPHN0cmluZz5IaXJhZ2lubyBLYWt1IEdvdGhpYyBQcm88L3N0
cmluZz4KKyAgICAgICAgPGtleT5zYW5zLXNlcmlmPC9rZXk+CisgICAgICAgIDxzdHJpbmc+SGly
YWdpbm8gS2FrdSBHb3RoaWMgUHJvPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c2VyaWY8L2tleT4K
KyAgICAgICAgPHN0cmluZz5IaXJhZ2lubyBNaW5jaG8gUHJvPC9zdHJpbmc+CisgICAgPC9kaWN0
PgorICAgIDxrZXk+aGFuZzwva2V5PiAvKiBLb3JlYW4gKi8KKyAgICA8ZGljdD4KKyNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xJ
T04pCisgICAgICAgIDxrZXk+bW9ub3NwYWNlPC9rZXk+CisgICAgICAgIDxzdHJpbmc+QXBwbGUg
U0QgR290aGljIE5lbzwvc3RyaW5nPgorICAgICAgICA8a2V5PnN0YW5kYXJkPC9rZXk+CisgICAg
ICAgIDxzdHJpbmc+QXBwbGUgU0QgR290aGljIE5lbzwvc3RyaW5nPgorICAgICAgICA8a2V5PnNh
bnMtc2VyaWY8L2tleT4KKyAgICAgICAgPHN0cmluZz5BcHBsZSBTRCBHb3RoaWMgTmVvPC9zdHJp
bmc+CisjZWxzZQorICAgICAgICA8a2V5Pm1vbm9zcGFjZTwva2V5PgorICAgICAgICA8c3RyaW5n
PkFwcGxlR290aGljPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c3RhbmRhcmQ8L2tleT4KKyAgICAg
ICAgPHN0cmluZz5BcHBsZUdvdGhpYzwvc3RyaW5nPgorICAgICAgICA8a2V5PnNhbnMtc2VyaWY8
L2tleT4KKyAgICAgICAgPHN0cmluZz5BcHBsZUdvdGhpYzwvc3RyaW5nPgorI2VuZGlmCisgICAg
ICAgIDxrZXk+c2VyaWY8L2tleT4KKyAgICAgICAgPHN0cmluZz5BcHBsZU15dW5nam88L3N0cmlu
Zz4KKyAgICA8L2RpY3Q+CisgICAgPGtleT56eXl5PC9rZXk+IC8qIE90aGVyIHNjcmlwdHMgKFVT
Q1JJUFRfQ09NTU9OKSAqLworICAgIDxkaWN0PgorICAgICAgICA8a2V5Pm1vbm9zcGFjZTwva2V5
PgorICAgICAgICA8c3RyaW5nPkNvdXJpZXI8L3N0cmluZz4KKyAgICAgICAgPGtleT5zdGFuZGFy
ZDwva2V5PgorICAgICAgICA8c3RyaW5nPlRpbWVzPC9zdHJpbmc+CisgICAgICAgIDxrZXk+c2Fu
cy1zZXJpZjwva2V5PgorICAgICAgICA8c3RyaW5nPkhlbHZldGljYTwvc3RyaW5nPgorICAgICAg
ICA8a2V5PnNlcmlmPC9rZXk+CisgICAgICAgIDxzdHJpbmc+VGltZXM8L3N0cmluZz4KKyAgICA8
L2RpY3Q+Cis8L2RpY3Q+Cis8L3BsaXN0PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL0RlZmF1bHRGb250cy5wbGlzdC5pbgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTM3NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTU4NjQsNiArNTg2NCw3IEBACiAJCUUxODI1NjkwMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dv
cmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxODI1NjhFMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuaCAqLzsgfTsK
IAkJRTE4MjU4QUMwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgyNThBQjBF
RjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJRTE4
NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgKi87IH07CisJCUUxOTU4MjMxMTUzNjA5OUMwMEI2MDg3NSAvKiBEZWZhdWx0
Rm9udHMucGxpc3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOTU4MjMwMTUzNjA5OUMwMEI2MDg3NSAvKiBEZWZhdWx0Rm9udHMucGxpc3QgKi87IH07
CiAJCUUxQTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMTQ3MDcx
MTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggKi87IH07CiAJCUUx
QTMxNjJEMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMxNjJCMTM0
QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUEzMTYyRTEzNEJDMzJE
MDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzE2MkMxMzRCQzMyRDAwN0M5QTRG
IC8qIFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbSAqLzsgfTsKQEAgLTU5MDAsNiArNTkw
MSw3IEBACiAJCUUxQjRDRDI1MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQjRD
RDI0MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbSAqLzsgfTsKIAkJ
RTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUJFNTEyQjBDRjZDNTEyMDAy
RUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCAqLzsgfTsKIAkJRTFCRTUxMkUwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFCRTUxMkMwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5oICovOyB9OworCQlFMUMyRjI0QTE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMyRjI0
ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi87IH07CiAJCUUxQzM2MkVGMEVB
RjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMzNjJFRDBFQUYyQUE5MDA3NDEwQkMgLyogSlNX
b3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQlFMUMzNjJGMDBFQUYyQUE5MDA3NDEwQkMgLyogSlNX
b3JrZXJMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUMzNjJFRTBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAg
Ki87IH07CiAJCUUxQzM2QzAzMEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMzZDMDIw
RUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyOTgwLDYgKzEyOTgyLDcgQEAKIAkJ
RTE4MjU2OEUwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTE4MjU4QUIwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtl
ckNvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTg3NzJG
MDEyNkUyNjI5MDAzREQ1ODYgLyogTGFuZ3VhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGFuZ3VhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMTk1ODIzMDE1MzYwOTlDMDBCNjA4NzUgLyogRGVmYXVsdEZvbnRzLnBsaXN0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSBEZWZhdWx0Rm9udHMucGxpc3Q7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxQTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJO
b2RlQWxnb3JpdGhtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUEzMTYy
QjEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUEzMTYyQzEzNEJDMzJEMDA3QzlBNEYg
LyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwNDMsNiArMTMwNDYsOCBAQAogCQlFMUI0Q0QyNDEw
QjMyMkUyMDBCRkZEN0UgLyogQ3JlZGVudGlhbFN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFCRTUxMkIwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU0xU
VW5pY29kZVNvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUJFNTEyQzBD
RjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFhTTFRVbmljb2RlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMUMyRjI0NDE1MzM5OENFMDA4M0Y5NzQgLyogRGVmYXVsdEZvbnRzLnBsaXN0LmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0OyBmaWxl
RW5jb2RpbmcgPSA0OyBwYXRoID0gRGVmYXVsdEZvbnRzLnBsaXN0LmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
LnBsaXN0OyB9OworCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXR0aW5nc01hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzYyRUQwRUFGMkFBOTAwNzQxMEJDIC8q
IEpTV29ya2VyTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
b3JrZXJMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUMzNjJFRTBF
QUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckxvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2Jq
ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NR2xvYmFsT2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzkwOSw2ICsxMzkxNCw3IEBACiAJ
CQkJODUxMzZDOTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nICovLAog
CQkJCTFBQjFBRTc4MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nICovLAogCQkJ
CTFBQjFBRTc5MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyAqLywKKwkJCQlF
MUMyRjI0NDE1MzM5OENFMDA4M0Y5NzQgLyogRGVmYXVsdEZvbnRzLnBsaXN0LmluICovLAogCQkJ
KTsKIAkJCXBhdGggPSBSZXNvdXJjZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MTUwNDksNiArMTUwNTUsNyBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NW
YWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBD
U1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJOUIzQTg4NzExNDU2MzJGOTAwM0FFOEY1IC8qIERP
TURPTVNldHRhYmxlVG9rZW5MaXN0LmggKi8sCisJCQkJRTE5NTgyMzAxNTM2MDk5QzAwQjYwODc1
IC8qIERlZmF1bHRGb250cy5wbGlzdCAqLywKIAkJCQk5NzY2NTA0RTE0NEZCRkZFMDBGNkJCNTEg
LyogRXZlbnRGYWN0b3J5LmNwcCAqLywKIAkJCQk5NzBCNzJBNTE0NTAwOEVCMDBGMDBBMzcgLyog
RXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50
SW50ZXJmYWNlcy5oICovLApAQCAtMTY3NzcsNiArMTY3ODQsNyBAQAogCQkJCTkzQzA5QTdFMEIw
NjRFRUYwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXJNYWMubW0gKi8sCiAJCQkJNjVCRjAyM0MwOTc0
ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJE
MTBGMiAvKiBQYWdlTWFjLmNwcCAqLywKKwkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyog
U2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJRjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNv
cmVGcmFtZVZpZXcuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMjQ4OTIsNiArMjQ5
MDAsNyBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29y
LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpv
b21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEz
OUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRTE5NTgyMzEx
NTM2MDk5QzAwQjYwODc1IC8qIERlZmF1bHRGb250cy5wbGlzdCBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzc0MCw2ICsyNzc0OSw3IEBACiAJCQkJQTA3RDMzNTUxNTJCNjMwRTAwMUI2MzkzIC8qIEpT
V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTA4Q0Yx
NTQxNTJCNzdCMzAwOUM1Nzc1IC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM1QTFFQTdDMTUyQkNGMDQwMDREMDBCNiAvKiBTaW1wbGlmeU1hcmt1
cENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFDMkYyNEExNTMzQTIxMjAwODNGOTc0
IC8qIFNldHRpbmdzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTc0MEU4M0MxNTMyREUxNzAw
NzYwNjI4IC8qIFRyZWVTY29wZUFkanVzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDExMzc0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw5IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBzZXRHZW5lcmljRm9udEZhbWlseU0KICAgICAgICAgcmV0dXJuOwogICAgIGVsc2UK
ICAgICAgICAgZm9udE1hcC5zZXQoc3RhdGljX2Nhc3Q8aW50PihzY3JpcHQpLCBmYW1pbHkpOwot
ICAgIHBhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOworCisgICAgaWYgKHBh
Z2UpCisgICAgICAgIHBhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQog
CiBzdGF0aWMgaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0R2VuZXJpY0ZvbnRGYW1pbHlG
b3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgVVNjcmlwdENvZGUg
c2NyaXB0KQpAQCAtMTEzLDcgKzExNSw3IEBAIHN0YXRpYyBFZGl0aW5nQmVoYXZpb3JUeXBlIGVk
aXRpbmdCZWhhdmkKIH0KIAogU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCi0gICAgOiBt
X3BhZ2UocGFnZSkKKyAgICA6IG1fcGFnZSgwKQogICAgICwgbV9lZGl0YWJsZUxpbmtCZWhhdmlv
cihFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3IpCiAgICAgLCBtX3RleHREaXJlY3Rpb25TdWJt
ZW51SW5jbHVzaW9uQmVoYXZpb3IoVGV4dERpcmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5j
bHVkZWQpCiAgICAgLCBtX3Bhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKDEpCkBAIC0yNjAs
NiArMjYyLDggQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLy8gQSBGcmFt
ZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRv
bWljU3RyaW5nIAogICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCiAgICAgQXRv
bWljU3RyaW5nOjppbml0KCk7CisgICAgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsK
KyAgICBtX3BhZ2UgPSBwYWdlOyAvLyBQYWdlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQg
d2VuIGNvbnN0cnVjdGluZyBTZXR0aW5ncywgc28ga2VlcGluZyBtX3BhZ2UgbnVsbCBvdmVyIGlu
aXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkgY2FsbC4KIH0KIAogUGFzc093blB0cjxTZXR0
aW5ncz4gU2V0dGluZ3M6OmNyZWF0ZShQYWdlKiBwYWdlKQpAQCAtMjY3LDYgKzI3MSwxMyBAQCBQ
YXNzT3duUHRyPFNldHRpbmdzPiBTZXR0aW5nczo6Y3JlYXRlKFBhCiAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBTZXR0aW5ncyhwYWdlKSk7CiB9IAogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQg
U2V0dGluZ3M6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKK3sKKyAgICAvLyBPdGhl
ciBwbGF0Zm9ybXMgY2FuIHNldCB1cCBmb250cyBmcm9tIGEgY2xpZW50LCBidXQgb24gTWFjLCB3
ZSB3YW50IGl0IGluIFdlYkNvcmUgdG8gc2hhcmUgY29kZSBiZXR3ZWVuIFdlYktpdDEgYW5kIFdl
YktpdDIuCit9CisjZW5kaWYKKwogY29uc3QgQXRvbWljU3RyaW5nJiBTZXR0aW5nczo6c3RhbmRh
cmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0
R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAsIHNjcmlw
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiAxMTM3NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1NSw2ICs1NTUs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgU2V0dGluZ3Mo
UGFnZSopOwogCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsK
KwogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAKICAgICAgICAgU3RyaW5nIG1fZGVmYXVsdFRleHRF
bmNvZGluZ05hbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5nc01hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5nc01hYy5tbQko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRpbmdzTWFjLm1tCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiTG9jYWxlVG9TY3JpcHRN
YXBwaW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBOU0RpY3Rpb25hcnkgKmRlZmF1bHRGb250RmFtaWx5RGljdGlvbmFy
eSgpCit7CisgICAgc3RhdGljIE5TRGljdGlvbmFyeSAqZm9udEZhbWlseURpY3Rpb25hcnk7Cisg
ICAgaWYgKGZvbnRGYW1pbHlEaWN0aW9uYXJ5KQorICAgICAgICByZXR1cm4gZm9udEZhbWlseURp
Y3Rpb25hcnk7CisKKyAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJ
ZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkNvcmUiXTsKKyAgICBOU0RhdGEgKmZpbGVEYXRhID0g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W2J1bmRsZSBVUkxGb3JSZXNvdXJjZTpAIkRl
ZmF1bHRGb250cyIgd2l0aEV4dGVuc2lvbjpAInBsaXN0Il1dOworICAgIE5TRXJyb3IgKmVycm9y
OworICAgIGlkIHByb3BlcnR5TGlzdCA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJv
cGVydHlMaXN0V2l0aERhdGE6ZmlsZURhdGEgb3B0aW9uczpOU1Byb3BlcnR5TGlzdEltbXV0YWJs
ZSBmb3JtYXQ6MCBlcnJvcjomZXJyb3JdOworICAgIGlmICghcHJvcGVydHlMaXN0KQorICAgICAg
ICBGQVRBTCgiQ291bGQgbm90IHJlYWQgZm9udCBmYWxsYmFjayBmaWxlOiAlcyIsIFtbZXJyb3Ig
ZGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKyAgICBpZiAoIVtwcm9wZXJ0eUxpc3QgaXNLaW5k
T2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIEZBVEFMKCJGb250IGZhbGxi
YWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSByb290IG9iamVjdCBpcyBub3QgYSBkaWN0
aW9uYXJ5Iik7CisKKyAgICBmb250RmFtaWx5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PE5TRGlj
dGlvbmFyeSAqPihwcm9wZXJ0eUxpc3QpOworICAgIENGUmV0YWluKGZvbnRGYW1pbHlEaWN0aW9u
YXJ5KTsKKyAgICByZXR1cm4gZm9udEZhbWlseURpY3Rpb25hcnk7Cit9CisKK3ZvaWQgU2V0dGlu
Z3M6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc3RhbmRhcmRGYW1pbHksICgic3RhbmRhcmQiKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG1vbm9zcGFjZUZhbWlseSwgKCJtb25v
c3BhY2UiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlcmlmRmFt
aWx5LCAoInNlcmlmIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBz
YW5zU2VyaWZGYW1pbHksICgic2Fucy1zZXJpZiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgY3Vyc2l2ZUZhbWlseSwgKCJjdXJzaXZlIikpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmYW50YXN5RmFtaWx5LCAoImZhbnRhc3kiKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHBpY3RvZ3JhcGhGYW1pbHksICgi
cGljdG9ncmFwaCIpKTsKKworICAgIE5TRGljdGlvbmFyeSAqcm9vdERpY3Rpb25hcnkgPSBkZWZh
dWx0Rm9udEZhbWlseURpY3Rpb25hcnkoKTsKKyAgICBmb3IgKE5TU3RyaW5nICpzY3JpcHROYW1l
IGluIHJvb3REaWN0aW9uYXJ5KSB7CisgICAgICAgIE5TRGljdGlvbmFyeSAqc2NyaXB0RGljdGlv
bmFyeSA9IHN0YXRpY19jYXN0PE5TRGljdGlvbmFyeSAqPihbcm9vdERpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OnNjcmlwdE5hbWVdKTsKKyAgICAgICAgaWYgKCFbc2NyaXB0TmFtZSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgRkFUQUwoIkZvbnQgZmFsbGJhY2sg
ZmlsZSBoYXMgaW5jb3JyZWN0IGZvcm1hdCAtIHNjcmlwdCBuYW1lIGlzIG5vdCBhIHN0cmluZyIp
OworICAgICAgICBpZiAoIVtzY3JpcHREaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05TRGljdGlv
bmFyeSBjbGFzc11dKQorICAgICAgICAgICAgRkFUQUwoIkZvbnQgZmFsbGJhY2sgZmlsZSBoYXMg
aW5jb3JyZWN0IGZvcm1hdCAtIHBlci1zY3JpcHQgdmFsdWUgaXMgbm90IGEgZGljdGlvbmFyeSIp
OworCisgICAgICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHNjcmlwdE5hbWVUb0NvZGUoc2NyaXB0
TmFtZSk7CisgICAgICAgIGlmIChzY3JpcHQgPT0gVVNDUklQVF9VTktOT1dOKQorICAgICAgICAg
ICAgRkFUQUwoIkZvbnQgZmFsbGJhY2sgZmlsZSBoYXMgaW5jb3JyZWN0IGZvcm1hdCAtIHVua25v
d24gbGFuZ3VhZ2UgY29kZSAlcyIsIFtzY3JpcHROYW1lIFVURjhTdHJpbmddKTsKKworICAgICAg
ICBmb3IgKE5TU3RyaW5nICpnZW5lcmljRmFtaWx5TmFtZSBpbiBzY3JpcHREaWN0aW9uYXJ5KSB7
CisgICAgICAgICAgICBOU1N0cmluZyAqZmFtaWx5TmFtZSA9IFtzY3JpcHREaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpnZW5lcmljRmFtaWx5TmFtZV07CisgICAgICAgICAgICBpZiAoIVtnZW5lcmlj
RmFtaWx5TmFtZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAg
ICAgIEZBVEFMKCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSBnZW5l
cmljIGZhbWlseSBuYW1lIGlzIG5vdCBhIHN0cmluZyIpOworICAgICAgICAgICAgaWYgKCFbZmFt
aWx5TmFtZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgICAg
IEZBVEFMKCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQgLSBmb250IGZh
bWlseSBuYW1lIGlzIG5vdCBhIHN0cmluZyIpOworCisgICAgICAgICAgICBBdG9taWNTdHJpbmcg
Z2VuZXJpY0ZhbWlseShnZW5lcmljRmFtaWx5TmFtZSk7CisKKyAgICAgICAgICAgIGlmIChnZW5l
cmljRmFtaWx5ID09IHN0YW5kYXJkRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldFN0YW5kYXJk
Rm9udEZhbWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2Vu
ZXJpY0ZhbWlseSA9PSBtb25vc3BhY2VGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0Rml4ZWRG
b250RmFtaWx5KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlIGlmIChnZW5l
cmljRmFtaWx5ID09IHNlcmlmRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldFNlcmlmRm9udEZh
bWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2VuZXJpY0Zh
bWlseSA9PSBzYW5zU2VyaWZGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0U2Fuc1NlcmlmRm9u
dEZhbWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZSBpZiAoZ2VuZXJp
Y0ZhbWlseSA9PSBjdXJzaXZlRmFtaWx5KQorICAgICAgICAgICAgICAgIHNldEN1cnNpdmVGb250
RmFtaWx5KGZhbWlseU5hbWUsIHNjcmlwdCk7CisgICAgICAgICAgICBlbHNlIGlmIChnZW5lcmlj
RmFtaWx5ID09IGZhbnRhc3lGYW1pbHkpCisgICAgICAgICAgICAgICAgc2V0RmFudGFzeUZvbnRG
YW1pbHkoZmFtaWx5TmFtZSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGdlbmVyaWNG
YW1pbHkgPT0gcGljdG9ncmFwaEZhbWlseSkKKyAgICAgICAgICAgICAgICBzZXRQaWN0b2dyYXBo
Rm9udEZhbWlseShmYW1pbHlOYW1lLCBzY3JpcHQpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIEZBVEFMKCJGb250IGZhbGxiYWNrIGZpbGUgaGFzIGluY29ycmVjdCBmb3JtYXQg
LSB1bmtub3duIGZvbnQgZmFtaWx5IG5hbWUgJXMiLCBbZmFtaWx5TmFtZSBVVEY4U3RyaW5nXSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2V0dGluZ3NNYWMubW0KX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTEzNzU3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDQtMTAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CisKKyAgICAgICAgW01hY10gbGFuZywgeG1sOmxhbmcsIGNvbnRlbnQtbGFuZ3VhZ2UgaWdub3Jl
ZCB3aGVuIGNob29zaW5nIGZvbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDg3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzIyMDIwMj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRpb24tZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2ZvbnRzL2hhbi1kaXN1bmlmaWNhdGlvbi5odG1s
OiBBZGRlZC4KKwogMjAxMi0wNC0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTM2MTEuCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLWV4cGVjdGVk
LW1pc21hdGNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zv
bnRzL2hhbi1kaXN1bmlmaWNhdGlvbi1leHBlY3RlZC1taXNtYXRjaC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbnRzL2hhbi1kaXN1bmlmaWNhdGlvbi1l
eHBlY3RlZC1taXNtYXRjaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxwPkphcGFuZXNlIGFuZCBDaGluZXNlIHJlbmRlcmluZ3Mgb2Yg
dGhpcyBjaGFyYWN0ZXIgc2hvdWxkIGJlIGRpZmZlcmVudDo8L3A+Cis8Ym9keT4KKzxwIHN0eWxl
PSJmb250LXNpemU6NjBweCI+SmFwYW5lc2U6IDxzcGFuIGxhbmc9InpoIj7kuI48L3NwYW4+PC9w
PgorPHAgc3R5bGU9ImZvbnQtc2l6ZTo2MHB4Ij5DaGluZXNlOiA8c3BhbiBsYW5nPSJqYSI+5LiO
PC9zcGFuPjwvcD4KKzwvYm9keT4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmljYXRpb24tZXhwZWN0ZWQtbWlzbWF0Y2guaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbnRzL2hhbi1kaXN1bmlmaWNhdGlvbi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb250cy9oYW4tZGlzdW5pZmlj
YXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb250
cy9oYW4tZGlzdW5pZmljYXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8cD5KYXBhbmVzZSBhbmQgQ2hpbmVzZSByZW5kZXJpbmdz
IG9mIHRoaXMgY2hhcmFjdGVyIHNob3VsZCBiZSBkaWZmZXJlbnQ6PC9wPgorPGJvZHk+Cis8cCBz
dHlsZT0iZm9udC1zaXplOjYwcHgiPkphcGFuZXNlOiA8c3BhbiBsYW5nPSJqYSI+5LiOPC9zcGFu
PjwvcD4KKzxwIHN0eWxlPSJmb250LXNpemU6NjBweCI+Q2hpbmVzZTogPHNwYW4gbGFuZz0iemgi
PuS4jjwvc3Bhbj48L3A+Cis8L2JvZHk+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZm9udHMvaGFuLWRpc3VuaWZpY2F0aW9uLmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoK
</data>
<flag name="review"
          id="141624"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>