<?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>169674</bug_id>
          
          <creation_ts>2017-03-15 08:02:41 -0700</creation_ts>
          <short_desc>Use CopyFontDescriptorWithStrokeForStyle to get correct stroke width for captions.</short_desc>
          <delta_ts>2017-03-20 05:04:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288051</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-03-15 08:02:41 -0700</bug_when>
    <thetext>We should use the MediaAccessibility function CopyFontDescriptorWithStrokeForStyle to get correct captions stroke width from font size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288510</commentid>
    <comment_count>1</comment_count>
      <attachid>304628</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-03-16 03:24:08 -0700</bug_when>
    <thetext>Created attachment 304628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288519</commentid>
    <comment_count>2</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-03-16 04:30:16 -0700</bug_when>
    <thetext>rdar://problem/30956385</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288539</commentid>
    <comment_count>3</comment_count>
      <attachid>304628</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-16 06:46:26 -0700</bug_when>
    <thetext>Comment on attachment 304628
Patch

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

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:367
&gt; +    CFStringRef trackLanguage = nullptr;

A track may have a language tag (see TrackBase::validBCP47Language), why pass NULL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288986</commentid>
    <comment_count>4</comment_count>
      <attachid>304773</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-03-17 06:34:39 -0700</bug_when>
    <thetext>Created attachment 304773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288987</commentid>
    <comment_count>5</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-03-17 06:37:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 304628 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304628&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:367
&gt; &gt; +    CFStringRef trackLanguage = nullptr;
&gt; 
&gt; A track may have a language tag (see TrackBase::validBCP47Language), why
&gt; pass NULL?

Thanks for reviewing! Added language parameter in last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289006</commentid>
    <comment_count>6</comment_count>
      <attachid>304773</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-03-17 08:31:27 -0700</bug_when>
    <thetext>Comment on attachment 304773
Patch

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

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1243
&gt; +    String language;
&gt; +

Ditto: blank line not necessary.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1251
&gt; +    auto&amp; tracks = mediaElement-&gt;textTracks();
&gt; +    for (unsigned i = 0; i &lt; tracks.length(); ++i) {
&gt; +        auto track = tracks.item(i);
&gt; +        if (track &amp;&amp; track-&gt;mode() == TextTrack::Mode::Showing) {
&gt; +            language = track-&gt;validBCP47Language();
&gt; +            break;
&gt; +        }
&gt; +    }

It is possible to have more than one text track enabled so this may not choose the correct font for one or more tracks. 

The default UI only allows a user to enable one track at a time so I think this is OK for now, but please file a bug to consider doing this differently.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1257
&gt; +    if (document().page()-&gt;group().captionPreferences().captionStrokeWidth(m_fontSize, language, strokeWidth, important))
&gt; +        setInlineStyleProperty(CSSPropertyWebkitTextStrokeWidth, strokeWidth, CSSPrimitiveValue::CSS_PT, important);

I think it would be better to set this in the stylesheet like the other user style preferences. This is OK for now, but please file a bug and note it here to figure out another way to do this.

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:361
&gt; +bool CaptionUserPreferencesMediaAF::captionStrokeWidth(float fontSize, const String&amp; language, float&amp; strokeWidth, bool&amp; important) const

Nit: something like &quot;captionStrokeWidthForFont&quot; would be better.

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:379
&gt; +    // Currently, MACaptionAppearanceCopyFontDescriptorWithStrokeForStyle is returning very large stroke widths.
&gt; +    // To avoid stroke widths that are too large, we set a maximum value of 10% of the font size.

Please file a Radar against MediaAccessibility and note the number here.

&gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:380
&gt; +    strokeWidth = std::min(strokeWidth, fontSize / 10.0f);

Nit: the &quot;f&quot; is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289026</commentid>
    <comment_count>7</comment_count>
      <attachid>304773</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-17 09:38:07 -0700</bug_when>
    <thetext>Comment on attachment 304773
Patch

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

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1257
&gt;&gt; +        setInlineStyleProperty(CSSPropertyWebkitTextStrokeWidth, strokeWidth, CSSPrimitiveValue::CSS_PT, important);
&gt; 
&gt; I think it would be better to set this in the stylesheet like the other user style preferences. This is OK for now, but please file a bug and note it here to figure out another way to do this.

We can switch to unprefixed stroke width now, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289034</commentid>
    <comment_count>8</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-03-17 10:09:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 304773 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304773&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1243
&gt; &gt; +    String language;
&gt; &gt; +
&gt; 
&gt; Ditto: blank line not necessary.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1251
&gt; &gt; +    auto&amp; tracks = mediaElement-&gt;textTracks();
&gt; &gt; +    for (unsigned i = 0; i &lt; tracks.length(); ++i) {
&gt; &gt; +        auto track = tracks.item(i);
&gt; &gt; +        if (track &amp;&amp; track-&gt;mode() == TextTrack::Mode::Showing) {
&gt; &gt; +            language = track-&gt;validBCP47Language();
&gt; &gt; +            break;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; It is possible to have more than one text track enabled so this may not
&gt; choose the correct font for one or more tracks. 
&gt; 
&gt; The default UI only allows a user to enable one track at a time so I think
&gt; this is OK for now, but please file a bug to consider doing this differently.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1257
&gt; &gt; +    if (document().page()-&gt;group().captionPreferences().captionStrokeWidth(m_fontSize, language, strokeWidth, important))
&gt; &gt; +        setInlineStyleProperty(CSSPropertyWebkitTextStrokeWidth, strokeWidth, CSSPrimitiveValue::CSS_PT, important);
&gt; 
&gt; I think it would be better to set this in the stylesheet like the other user
&gt; style preferences. This is OK for now, but please file a bug and note it
&gt; here to figure out another way to do this.
&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:361
&gt; &gt; +bool CaptionUserPreferencesMediaAF::captionStrokeWidth(float fontSize, const String&amp; language, float&amp; strokeWidth, bool&amp; important) const
&gt; 
&gt; Nit: something like &quot;captionStrokeWidthForFont&quot; would be better.
&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:379
&gt; &gt; +    // Currently, MACaptionAppearanceCopyFontDescriptorWithStrokeForStyle is returning very large stroke widths.
&gt; &gt; +    // To avoid stroke widths that are too large, we set a maximum value of 10% of the font size.
&gt; 
&gt; Please file a Radar against MediaAccessibility and note the number here.
&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp:380
&gt; &gt; +    strokeWidth = std::min(strokeWidth, fontSize / 10.0f);
&gt; 
&gt; Nit: the &quot;f&quot; is unnecessary.

Thanks for reviewing! I will update the patch before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289035</commentid>
    <comment_count>9</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-03-17 10:10:24 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 304773 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304773&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1257
&gt; &gt;&gt; +        setInlineStyleProperty(CSSPropertyWebkitTextStrokeWidth, strokeWidth, CSSPrimitiveValue::CSS_PT, important);
&gt; &gt; 
&gt; &gt; I think it would be better to set this in the stylesheet like the other user style preferences. This is OK for now, but please file a bug and note it here to figure out another way to do this.
&gt; 
&gt; We can switch to unprefixed stroke width now, right?

Yes, thanks for catching this! I will update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289462</commentid>
    <comment_count>10</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2017-03-20 05:04:34 -0700</bug_when>
    <thetext>Committed &lt;https://trac.webkit.org/changeset/214169&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304628</attachid>
            <date>2017-03-16 03:24:08 -0700</date>
            <delta_ts>2017-03-17 06:34:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169674-20170316032408.patch</filename>
            <type>text/plain</type>
            <size>11076</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE3LTAzLTE2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ29weUZvbnREZXNj
cmlwdG9yV2l0aFN0cm9rZUZvclN0eWxlIHRvIGdldCBjb3JyZWN0IHN0cm9rZSB3aWR0aCBmb3Ig
Y2FwdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk2NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgdGhlIE1lZGlhQWNjZXNzaWJpbGl0eSBmdW5jdGlvbiBNQUNvcHlGb250RGVzY3JpcHRv
cldpdGhTdHJva2VGb3JTdHlsZSB0byBnZXQKKyAgICAgICAgY29ycmVjdCB2aWRlbyBjYXB0aW9u
cyBzdHJva2Ugd2lkdGggZnJvbSBhIGdpdmVuIGZvbnQgc2l6ZS4gCisKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVUaW1lckZpcmVkKToKKyAg
ICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmNhcHRpb25TdHJva2VXaWR0aCk6CisgICAgICAgICog
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvblN0cm9rZVdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1Rl
eHRFZGdlQ1NTKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGOjpzdHJva2VXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJp
bGl0eVNvZnRMaW5rLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9NZWRpYUFjY2Vzc2liaWxp
dHlTb2Z0TGluay5oOgorCiAyMDE3LTAzLTE1ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4K
IAogICAgICAgICBGbGF0dGVuIFJUQyBlbnVtIG5hbWluZwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24g
MjE0MDM1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQwLDYgKzEyNDAsMTIgQEAgdm9pZCBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZQogCiAgICAgdXBkYXRlQWN0aXZlQ3Vlc0ZvbnRT
aXplKCk7CiAgICAgdXBkYXRlRGlzcGxheSgpOworCisgICAgZmxvYXQgc3Ryb2tlV2lkdGg7Cisg
ICAgYm9vbCBpbXBvcnRhbnQ7CisgICAgCisgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpICYmIGRv
Y3VtZW50KCkucGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLmNhcHRpb25TdHJv
a2VXaWR0aChtX2ZvbnRTaXplLCBzdHJva2VXaWR0aCwgaW1wb3J0YW50KSkKKyAgICAgICAgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgc3Ry
b2tlV2lkdGgsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQsIGltcG9ydGFudCk7CiB9CiAKIHZv
aWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDIxNDAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGVBbmRJbXBv
cnRhbmNlKGJvb2wmIGltcG9ydGFudCkgY29uc3QgeyBpbXBvcnRhbnQgPSBmYWxzZTsgcmV0dXJu
IDAuMDVmOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FwdGlvblN0cm9rZVdpZHRoKGZsb2F0LCBm
bG9hdCYsIGJvb2wmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgdmlydHVhbCBTdHJp
bmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHRpb25z
U3R5bGVTaGVldE92ZXJyaWRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENhcHRpb25zU3R5bGVT
aGVldE92ZXJyaWRlKGNvbnN0IFN0cmluZyYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAkocmV2aXNpb24g
MjE0MDM1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJUZXh0
VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUg
IlZUVEN1ZS5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzU3LDI4ICszNTgsMjggQEAgU3RyaW5n
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjbwogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c3Ry
b2tlV2lkdGgoKSBjb25zdAorYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2Fw
dGlvblN0cm9rZVdpZHRoKGZsb2F0IGZvbnRTaXplLCBmbG9hdCYgc3Ryb2tlV2lkdGgsIGJvb2wm
IGltcG9ydGFudCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3Ry
aW5nPiBzdHJva2VXaWR0aERlZmF1bHQoQVNDSUlMaXRlcmFsKCIgLjAzZW0gIikpOwotICAgIAot
ICAgIGlmICghTUFDYXB0aW9uRm9udEF0dHJpYnV0ZVN0cm9rZVdpZHRoICYmICFjYW5Mb2FkX01l
ZGlhQWNjZXNzaWJpbGl0eV9NQUNhcHRpb25Gb250QXR0cmlidXRlU3Ryb2tlV2lkdGgoKSkKLSAg
ICAgICAgcmV0dXJuIHN0cm9rZVdpZHRoRGVmYXVsdDsKKyAgICBpZiAoIWNhbkxvYWRfTWVkaWFB
Y2Nlc3NpYmlsaXR5X01BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0b3JXaXRoU3Ry
b2tlRm9yU3R5bGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKKyAgICBDRlN0cmluZ1JlZiB0cmFja0xhbmd1
YWdlID0gbnVsbHB0cjsKKyAgICBDR0Zsb2F0IHN0cm9rZVdpZHRoUHQ7CisgICAgCisgICAgYXV0
byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVz
Y3JpcHRvcldpdGhTdHJva2VGb3JTdHlsZShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIs
ICZiZWhhdmlvciwga01BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGVEZWZhdWx0LCB0cmFja0xh
bmd1YWdlLCBmb250U2l6ZSwgJnN0cm9rZVdpZHRoUHQpKTsKIAotICAgIGF1dG8gZm9udCA9IGFk
b3B0Q0YoTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZvclN0eWxlKGtNQUNh
cHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yLCBrTUFDYXB0aW9uQXBwZWFyYW5j
ZUZvbnRTdHlsZURlZmF1bHQpKTsKLSAgICBpZiAoIWZvbnQpCi0gICAgICAgIHJldHVybiBzdHJv
a2VXaWR0aERlZmF1bHQ7Ci0gICAgCi0gICAgYXV0byBzdHJva2VXaWR0aEF0dHJpYnV0ZSA9IGFk
b3B0Q0YoQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUoZm9udC5nZXQoKSwgTUFDYXB0aW9u
Rm9udEF0dHJpYnV0ZVN0cm9rZVdpZHRoKSk7Ci0gICAgaWYgKCFzdHJva2VXaWR0aEF0dHJpYnV0
ZSkKLSAgICAgICAgcmV0dXJuIHN0cm9rZVdpZHRoRGVmYXVsdDsKLSAgICAKLSAgICBpbnQgc3Ry
b2tlV2lkdGggPSAwOwotICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRk51
bWJlclJlZj4oc3Ryb2tlV2lkdGhBdHRyaWJ1dGUuZ2V0KCkpLCBrQ0ZOdW1iZXJJbnRUeXBlLCAm
c3Ryb2tlV2lkdGgpKQotICAgICAgICByZXR1cm4gc3Ryb2tlV2lkdGhEZWZhdWx0OworICAgIGlm
ICghZm9udERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBT
dHJpbmc6OmZvcm1hdCgiICVkcHggIiwgc3Ryb2tlV2lkdGgpOworICAgIHN0cm9rZVdpZHRoID0g
c3Ryb2tlV2lkdGhQdDsKKyAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBw
ZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7CisgICAgCisgICAgLy8gQ3VycmVudGx5LCBNQUNhcHRp
b25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9yV2l0aFN0cm9rZUZvclN0eWxlIGlzIHJldHVy
bmluZyB2ZXJ5IGxhcmdlIHN0cm9rZSB3aWR0aHMuCisgICAgLy8gVG8gYXZvaWQgc3Ryb2tlIHdp
ZHRocyB0aGF0IGFyZSB0b28gbGFyZ2UsIHdlIHNldCBhIG1heGltdW0gdmFsdWUgb2YgMTAlIG9m
IHRoZSBmb250IHNpemUuCisgICAgc3Ryb2tlV2lkdGggPSBzdGQ6Om1pbihzdHJva2VXaWR0aCwg
Zm9udFNpemUgLyAxMC4wZik7CisgICAgCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIFN0cmluZyBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNUZXh0RWRnZUNTUygpIGNvbnN0
CkBAIC00MDMsMTEgKzQwNCw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6Y2EKICAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5VGV4dFNoYWRvdywg
bWFrZVN0cmluZyhlZGdlU3R5bGVEcm9wU2hhZG93LmdldCgpLCAiIGJsYWNrIiksIGltcG9ydGFu
dCk7CiAKICAgICBpZiAodGV4dEVkZ2VTdHlsZSA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRF
ZGdlU3R5bGVEcm9wU2hhZG93IHx8IHRleHRFZGdlU3R5bGUgPT0ga01BQ2FwdGlvbkFwcGVhcmFu
Y2VUZXh0RWRnZVN0eWxlVW5pZm9ybSkgewotICAgICAgICBpZiAodGV4dEVkZ2VTdHlsZSA9PSBr
TUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVEcm9wU2hhZG93KQotICAgICAgICAgICAg
YXBwZW5kQ1NTKGJ1aWxkZXIsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgIi4wM2VtIGJs
YWNrIiwgaW1wb3J0YW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kQ1NTKGJ1
aWxkZXIsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgbWFrZVN0cmluZyhzdHJva2VXaWR0
aCgpLCAiIGJsYWNrIiksIGltcG9ydGFudCk7Ci0KKyAgICAgICAgYXBwZW5kQ1NTKGJ1aWxkZXIs
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCAiYmxhY2siLCBpbXBvcnRhbnQpOwog
ICAgICAgICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlQYWludE9yZGVyLCBnZXRWYWx1
ZU5hbWUoQ1NTVmFsdWVTdHJva2UpLCBpbXBvcnRhbnQpOwogICAgICAgICBhcHBlbmRDU1MoYnVp
bGRlciwgQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbiwgZ2V0VmFsdWVOYW1lKENTU1ZhbHVlUm91
bmQpLCBpbXBvcnRhbnQpOwogICAgICAgICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlT
dHJva2VMaW5lY2FwLCBnZXRWYWx1ZU5hbWUoQ1NTVmFsdWVSb3VuZCksIGltcG9ydGFudCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWVkaWFBRi5oCShyZXZpc2lvbiAyMTQwMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcg
QEAgcHVibGljOgogICAgIGJvb2wgdXNlclByZWZlcnNTdWJ0aXRsZXMoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNjYWxlQW5kSW1wb3J0YW5jZShib29sJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYXB0aW9uU3Ryb2tlV2lkdGgoZmxvYXQgZm9udFNp
emUsIGZsb2F0JiBzdHJva2VXaWR0aCwgYm9vbCYgaW1wb3J0YW50KSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgc2V0SW50ZXJlc3RlZEluQ2FwdGlvblByZWZlcmVuY2VDaGFuZ2VzKCkgb3Zl
cnJpZGU7CiAKQEAgLTgwLDcgKzgxLDYgQEAgcHJpdmF0ZToKICAgICBDb2xvciBjYXB0aW9uc1Rl
eHRDb2xvcihib29sJikgY29uc3Q7CiAgICAgU3RyaW5nIGNhcHRpb25zRGVmYXVsdEZvbnRDU1Mo
KSBjb25zdDsKICAgICBTdHJpbmcgd2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0
OwotICAgIFN0cmluZyBzdHJva2VXaWR0aCgpIGNvbnN0OwogICAgIFN0cmluZyBjYXB0aW9uc1Rl
eHRFZGdlQ1NTKCkgY29uc3Q7CiAgICAgU3RyaW5nIGNvbG9yUHJvcGVydHlDU1MoQ1NTUHJvcGVy
dHlJRCwgY29uc3QgQ29sb3ImLCBib29sKSBjb25zdDsKICAgICBUaW1lciBtX3VwZGF0ZVN0eWxl
U2hlZXRUaW1lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01lZGlhQWNjZXNz
aWJpbGl0eVNvZnRMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAJKHJldmlzaW9uIDIxNDAzNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsOCBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShXZWJDb3JlLCBNCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3Jl
LCBNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5n
dWFnZXMsIENGQXJyYXlSZWYsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChk
b21haW4pKTsKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhQWNj
ZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlQcmVmZXJyZWRDYXB0aW9uaW5nTWVk
aWFDaGFyYWN0ZXJpc3RpY3MsICBDRkFycmF5UmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFp
biBkb21haW4pLCAoZG9tYWluKSk7CiBTT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NP
VVJDRShXZWJDb3JlLCBNZWRpYUFjY2Vzc2liaWxpdHksIE1BQXVkaWJsZU1lZGlhQ29weVByZWZl
cnJlZENoYXJhY3RlcmlzdGljcywgQ0ZBcnJheVJlZiwgKCksICgpKTsKLQorU09GVF9MSU5LX0ZV
TkNUSU9OX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFBY2Nlc3NpYmlsaXR5LCBN
QUNhcHRpb25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9yV2l0aFN0cm9rZUZvclN0eWxlLCBD
VEZvbnREZXNjcmlwdG9yUmVmLCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IsIE1BQ2FwdGlvbkFwcGVhcmFuY2VG
b250U3R5bGUgZm9udFN0eWxlLCBDRlN0cmluZ1JlZiB0cmFja0xhbmd1YWdlLCBDR0Zsb2F0IGRh
cndpbmdQb2ludFNpemUsIENHRmxvYXQgKnN0cm9rZVdpZHRoUHQpLCAoZG9tYWluLCBiZWhhdmlv
ciwgZm9udFN0eWxlLCB0cmFja0xhbmd1YWdlLCBkYXJ3aW5nUG9pbnRTaXplLCBzdHJva2VXaWR0
aFB0KSk7CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYUFjY2Vz
c2liaWxpdHksIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlv
biwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRShX
ZWJDb3JlLCBNZWRpYUFjY2Vzc2liaWxpdHksIGtNQUF1ZGlibGVNZWRpYVNldHRpbmdzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX1NPVVJDRShXZWJDb3JlLCBNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkZvbnRBdHRy
aWJ1dGVTdHJva2VXaWR0aCwgQ0ZTdHJpbmdSZWYpCiAKICNlbmRpZiAvLyBIQVZFKE1FRElBX0FD
Q0VTU0lCSUxJVFlfRlJBTUVXT1JLKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
TWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oCShyZXZpc2lvbiAyMTQw
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0
TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMyArNjUsMTIgQEAgU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgTQogI2RlZmluZSBNQUNhcHRpb25BcHBlYXJhbmNlQ29w
eVByZWZlcnJlZENhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcyBzb2Z0TGlua19NZWRpYUFj
Y2Vzc2liaWxpdHlfTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlQcmVmZXJyZWRDYXB0aW9uaW5nTWVk
aWFDaGFyYWN0ZXJpc3RpY3MKIFNPRlRfTElOS19GVU5DVElPTl9NQVlfRkFJTF9GT1JfSEVBREVS
KFdlYkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFBdWRpYmxlTWVkaWFDb3B5UHJlZmVycmVk
Q2hhcmFjdGVyaXN0aWNzLCBDRkFycmF5UmVmLCAoKSwgKCkpCiAjZGVmaW5lIE1BQXVkaWJsZU1l
ZGlhQ29weVByZWZlcnJlZENoYXJhY3RlcmlzdGljcyBzb2Z0TGlua19NZWRpYUFjY2Vzc2liaWxp
dHlfTUFBdWRpYmxlTWVkaWFDb3B5UHJlZmVycmVkQ2hhcmFjdGVyaXN0aWNzCi0KK1NPRlRfTElO
S19GVU5DVElPTl9NQVlfRkFJTF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0
eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvcldpdGhTdHJva2VGb3JTdHls
ZSwgQ1RGb250RGVzY3JpcHRvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW4gZG9tYWlu
LCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yLCBNQUNhcHRpb25BcHBlYXJh
bmNlRm9udFN0eWxlIGZvbnRTdHlsZSwgQ0ZTdHJpbmdSZWYgdHJhY2tMYW5ndWFnZSwgQ0dGbG9h
dCBkYXJ3aW5nUG9pbnRTaXplLCBDR0Zsb2F0ICpzdHJva2VXaWR0aFB0KSwgKGRvbWFpbiwgYmVo
YXZpb3IsIGZvbnRTdHlsZSwgdHJhY2tMYW5ndWFnZSwgZGFyd2luZ1BvaW50U2l6ZSwgc3Ryb2tl
V2lkdGhQdCkpCisjZGVmaW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0b3JX
aXRoU3Ryb2tlRm9yU3R5bGUgc29mdExpbmtfTWVkaWFBY2Nlc3NpYmlsaXR5X01BQ2FwdGlvbkFw
cGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0b3JXaXRoU3Ryb2tlRm9yU3R5bGUKIFNPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0eSwga01BWENhcHRp
b25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBDRlN0cmluZ1JlZikKICNk
ZWZpbmUga01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uIGdl
dF9NZWRpYUFjY2Vzc2liaWxpdHlfa01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCkKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFdl
YkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0eSwga01BQXVkaWJsZU1lZGlhU2V0dGluZ3NDaGFuZ2Vk
Tm90aWZpY2F0aW9uLCBDRlN0cmluZ1JlZikKICNkZWZpbmUga01BQXVkaWJsZU1lZGlhU2V0dGlu
Z3NDaGFuZ2VkTm90aWZpY2F0aW9uIGdldF9NZWRpYUFjY2Vzc2liaWxpdHlfa01BQXVkaWJsZU1l
ZGlhU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9NQVlf
RkFJTF9GT1JfSEVBREVSKFdlYkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uRm9u
dEF0dHJpYnV0ZVN0cm9rZVdpZHRoLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUgTUFDYXB0aW9uRm9u
dEF0dHJpYnV0ZVN0cm9rZVdpZHRoIGdldF9NZWRpYUFjY2Vzc2liaWxpdHlfTUFDYXB0aW9uRm9u
dEF0dHJpYnV0ZVN0cm9rZVdpZHRoKCkKIAogI2VuZGlmIC8vIEhBVkUoTUVESUFfQUNDRVNTSUJJ
TElUWV9GUkFNRVdPUkspCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304773</attachid>
            <date>2017-03-17 06:34:39 -0700</date>
            <delta_ts>2017-03-17 08:31:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169674-20170317143437.patch</filename>
            <type>text/plain</type>
            <size>12641</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAzLTE3ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ29weUZvbnREZXNj
cmlwdG9yV2l0aFN0cm9rZUZvclN0eWxlIHRvIGdldCBjb3JyZWN0IHN0cm9rZSB3aWR0aCBmb3Ig
Y2FwdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk2NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgdGhlIE1lZGlhQWNjZXNzaWJpbGl0eSBmdW5jdGlvbiBNQUNvcHlGb250RGVzY3JpcHRv
cldpdGhTdHJva2VGb3JTdHlsZSB0byBnZXQKKyAgICAgICAgY29ycmVjdCB2aWRlbyBjYXB0aW9u
cyBzdHJva2Ugd2lkdGggZnJvbSBhIGdpdmVuIGZvbnQgc2l6ZS4KKworICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRleHRTdHJva2VTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
Ojp1cGRhdGVUaW1lckZpcmVkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5oOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvblN0cm9rZVdpZHRo
KToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uU3Ry
b2tlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUY6OnN0cm9rZVdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
TWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01l
ZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmg6CisKIDIwMTctMDMtMTcgIE1pZ3VlbCBHb21leiAg
PG1hZ29tZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgKHIyMTM4MzMpOiB3cml0
ZSBhIGxheW91dCB0ZXN0IGZvciAxNjkxOTkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDIxNDEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIzMCw2ICsxMjMwLDMzIEBAIHZvaWQgTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWUKIAogfQogCit2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRleHRTdHJva2VTdHlsZSgpCit7CisgICAgaWYgKCFkb2N1
bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50ID0gcGFyZW50TWVkaWFFbGVtZW50KHRoaXMpOworICAgIGlmICghbWVkaWFF
bGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU3RyaW5nIGxhbmd1YWdlOworCisg
ICAgYXV0byYgdHJhY2tzID0gbWVkaWFFbGVtZW50LT50ZXh0VHJhY2tzKCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrcy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGF1dG8g
dHJhY2sgPSB0cmFja3MuaXRlbShpKTsKKyAgICAgICAgaWYgKHRyYWNrICYmIHRyYWNrLT5tb2Rl
KCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKSB7CisgICAgICAgICAgICBsYW5ndWFnZSA9
IHRyYWNrLT52YWxpZEJDUDQ3TGFuZ3VhZ2UoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIGZsb2F0IHN0cm9rZVdpZHRoOworICAgIGJvb2wgaW1wb3J0
YW50OworICAgIAorICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJl
ZmVyZW5jZXMoKS5jYXB0aW9uU3Ryb2tlV2lkdGgobV9mb250U2l6ZSwgbGFuZ3VhZ2UsIHN0cm9r
ZVdpZHRoLCBpbXBvcnRhbnQpKQorICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBzdHJva2VXaWR0aCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QVCwgaW1wb3J0YW50KTsKK30KKwogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50Ojp1cGRhdGVUaW1lckZpcmVkKCkKIHsKICAgICBpZiAoIWRvY3VtZW50
KCkucGFnZSgpKQpAQCAtMTI0MCw2ICsxMjY3LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZQogCiAgICAgdXBkYXRlQWN0aXZlQ3Vlc0ZvbnRTaXplKCk7CiAgICAg
dXBkYXRlRGlzcGxheSgpOworICAgIHVwZGF0ZVRleHRTdHJva2VTdHlsZSgpOwogfQogCiB2b2lk
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRleHRUcmFja1Jl
cHJlc2VudGF0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaAkocmV2aXNpb24gMjE0MTA0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUzLDcgKzQ1Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUaW1lckZp
cmVkKCk7CiAgICAgdm9pZCB1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKTsKLQorICAgIHZvaWQg
dXBkYXRlVGV4dFN0cm9rZVN0eWxlKCk7CisgICAgCiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYpOwogCiAgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAyMTQxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6
ZVNjYWxlQW5kSW1wb3J0YW5jZShib29sJiBpbXBvcnRhbnQpIGNvbnN0IHsgaW1wb3J0YW50ID0g
ZmFsc2U7IHJldHVybiAwLjA1ZjsgfQogCisgICAgdmlydHVhbCBib29sIGNhcHRpb25TdHJva2VX
aWR0aChmbG9hdCwgY29uc3QgU3RyaW5nJiwgZmxvYXQmLCBib29sJikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRl
KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShjb25zdCBTdHJpbmcmKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Ri5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9uIDIxNDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2luY2x1ZGUgIlVzZXJT
dHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlICJWVFRDdWUuaCIKKyNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTM1NywyOCArMzU4LDI4IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6Y28KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1TdHJpbmcgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnN0cm9rZVdpZHRoKCkgY29uc3QKK2Jvb2wgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25TdHJva2VXaWR0aChmbG9hdCBmb250U2l6
ZSwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgZmxvYXQmIHN0cm9rZVdpZHRoLCBib29sJiBpbXBv
cnRhbnQpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
c3Ryb2tlV2lkdGhEZWZhdWx0KEFTQ0lJTGl0ZXJhbCgiIC4wM2VtICIpKTsKLSAgICAKLSAgICBp
ZiAoIU1BQ2FwdGlvbkZvbnRBdHRyaWJ1dGVTdHJva2VXaWR0aCAmJiAhY2FuTG9hZF9NZWRpYUFj
Y2Vzc2liaWxpdHlfTUFDYXB0aW9uRm9udEF0dHJpYnV0ZVN0cm9rZVdpZHRoKCkpCi0gICAgICAg
IHJldHVybiBzdHJva2VXaWR0aERlZmF1bHQ7CisgICAgaWYgKCFjYW5Mb2FkX01lZGlhQWNjZXNz
aWJpbGl0eV9NQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvbnREZXNjcmlwdG9yV2l0aFN0cm9rZUZv
clN0eWxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBNQUNhcHRpb25BcHBl
YXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CisgICAgYXV0byB0cmFja0xhbmd1YWdlID0gbGFuZ3Vh
Z2UuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBDR0Zsb2F0IHN0cm9rZVdpZHRoUHQ7CisgICAgCisg
ICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlG
b250RGVzY3JpcHRvcldpdGhTdHJva2VGb3JTdHlsZShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFp
blVzZXIsICZiZWhhdmlvciwga01BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGVEZWZhdWx0LCB0
cmFja0xhbmd1YWdlLmdldCgpLCBmb250U2l6ZSwgJnN0cm9rZVdpZHRoUHQpKTsKIAotICAgIGF1
dG8gZm9udCA9IGFkb3B0Q0YoTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZv
clN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yLCBrTUFDYXB0
aW9uQXBwZWFyYW5jZUZvbnRTdHlsZURlZmF1bHQpKTsKLSAgICBpZiAoIWZvbnQpCi0gICAgICAg
IHJldHVybiBzdHJva2VXaWR0aERlZmF1bHQ7CisgICAgaWYgKCFmb250RGVzY3JpcHRvcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3Ryb2tlV2lkdGggPSBzdHJva2VXaWR0aFB0Owor
ICAgIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JV
c2VWYWx1ZTsKICAgICAKLSAgICBhdXRvIHN0cm9rZVdpZHRoQXR0cmlidXRlID0gYWRvcHRDRihD
VEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZShmb250LmdldCgpLCBNQUNhcHRpb25Gb250QXR0
cmlidXRlU3Ryb2tlV2lkdGgpKTsKLSAgICBpZiAoIXN0cm9rZVdpZHRoQXR0cmlidXRlKQotICAg
ICAgICByZXR1cm4gc3Ryb2tlV2lkdGhEZWZhdWx0OworICAgIC8vIEN1cnJlbnRseSwgTUFDYXB0
aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvcldpdGhTdHJva2VGb3JTdHlsZSBpcyByZXR1
cm5pbmcgdmVyeSBsYXJnZSBzdHJva2Ugd2lkdGhzLgorICAgIC8vIFRvIGF2b2lkIHN0cm9rZSB3
aWR0aHMgdGhhdCBhcmUgdG9vIGxhcmdlLCB3ZSBzZXQgYSBtYXhpbXVtIHZhbHVlIG9mIDEwJSBv
ZiB0aGUgZm9udCBzaXplLgorICAgIHN0cm9rZVdpZHRoID0gc3RkOjptaW4oc3Ryb2tlV2lkdGgs
IGZvbnRTaXplIC8gMTAuMGYpOwogICAgIAotICAgIGludCBzdHJva2VXaWR0aCA9IDA7Ci0gICAg
aWYgKCFDRk51bWJlckdldFZhbHVlKHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihzdHJva2VXaWR0
aEF0dHJpYnV0ZS5nZXQoKSksIGtDRk51bWJlckludFR5cGUsICZzdHJva2VXaWR0aCkpCi0gICAg
ICAgIHJldHVybiBzdHJva2VXaWR0aERlZmF1bHQ7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoIiAlZHB4ICIsIHN0cm9rZVdpZHRoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogU3RyaW5n
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRFZGdlQ1NTKCkgY29u
c3QKQEAgLTQwMywxMSArNDA0LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGOjpjYQogICAgICAgICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlUZXh0U2hhZG93
LCBtYWtlU3RyaW5nKGVkZ2VTdHlsZURyb3BTaGFkb3cuZ2V0KCksICIgYmxhY2siKSwgaW1wb3J0
YW50KTsKIAogICAgIGlmICh0ZXh0RWRnZVN0eWxlID09IGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4
dEVkZ2VTdHlsZURyb3BTaGFkb3cgfHwgdGV4dEVkZ2VTdHlsZSA9PSBrTUFDYXB0aW9uQXBwZWFy
YW5jZVRleHRFZGdlU3R5bGVVbmlmb3JtKSB7Ci0gICAgICAgIGlmICh0ZXh0RWRnZVN0eWxlID09
IGtNQUNhcHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZURyb3BTaGFkb3cpCi0gICAgICAgICAg
ICBhcHBlbmRDU1MoYnVpbGRlciwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCAiLjAzZW0g
YmxhY2siLCBpbXBvcnRhbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmRDU1Mo
YnVpbGRlciwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBtYWtlU3RyaW5nKHN0cm9rZVdp
ZHRoKCksICIgYmxhY2siKSwgaW1wb3J0YW50KTsKLQorICAgICAgICBhcHBlbmRDU1MoYnVpbGRl
ciwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsICJibGFjayIsIGltcG9ydGFudCk7
CiAgICAgICAgIGFwcGVuZENTUyhidWlsZGVyLCBDU1NQcm9wZXJ0eVBhaW50T3JkZXIsIGdldFZh
bHVlTmFtZShDU1NWYWx1ZVN0cm9rZSksIGltcG9ydGFudCk7CiAgICAgICAgIGFwcGVuZENTUyhi
dWlsZGVyLCBDU1NQcm9wZXJ0eVN0cm9rZUxpbmVqb2luLCBnZXRWYWx1ZU5hbWUoQ1NTVmFsdWVS
b3VuZCksIGltcG9ydGFudCk7CiAgICAgICAgIGFwcGVuZENTUyhidWlsZGVyLCBDU1NQcm9wZXJ0
eVN0cm9rZUxpbmVjYXAsIGdldFZhbHVlTmFtZShDU1NWYWx1ZVJvdW5kKSwgaW1wb3J0YW50KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmgJKHJldmlzaW9uIDIxNDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGVBbmRJbXBvcnRhbmNlKGJvb2wm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhcHRpb25TdHJva2VXaWR0aChmbG9hdCBmb250
U2l6ZSwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgZmxvYXQmIHN0cm9rZVdpZHRoLCBib29sJiBp
bXBvcnRhbnQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRJbnRlcmVzdGVkSW5DYXB0
aW9uUHJlZmVyZW5jZUNoYW5nZXMoKSBvdmVycmlkZTsKIApAQCAtODAsNyArODEsNiBAQCBwcml2
YXRlOgogICAgIENvbG9yIGNhcHRpb25zVGV4dENvbG9yKGJvb2wmKSBjb25zdDsKICAgICBTdHJp
bmcgY2FwdGlvbnNEZWZhdWx0Rm9udENTUygpIGNvbnN0OwogICAgIFN0cmluZyB3aW5kb3dSb3Vu
ZGVkQ29ybmVyUmFkaXVzQ1NTKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0cm9rZVdpZHRoKCkgY29u
c3Q7CiAgICAgU3RyaW5nIGNhcHRpb25zVGV4dEVkZ2VDU1MoKSBjb25zdDsKICAgICBTdHJpbmcg
Y29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDb2xvciYsIGJvb2wpIGNvbnN0
OwogICAgIFRpbWVyIG1fdXBkYXRlU3R5bGVTaGVldFRpbWVyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5r
LmNwcAkocmV2aXNpb24gMjE0MTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWVk
aWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw4
IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE0KIFNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9u
QXBwZWFyYW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcywgQ0ZBcnJheVJlZiwgKE1BQ2FwdGlvbkFw
cGVhcmFuY2VEb21haW4gZG9tYWluKSwgKGRvbWFpbikpOwogU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNl
Q29weVByZWZlcnJlZENhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcywgIENGQXJyYXlSZWYs
IChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKTsKIFNPRlRfTElO
S19GVU5DVElPTl9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0
eSwgTUFBdWRpYmxlTWVkaWFDb3B5UHJlZmVycmVkQ2hhcmFjdGVyaXN0aWNzLCBDRkFycmF5UmVm
LCAoKSwgKCkpOwotCitTT0ZUX0xJTktfRlVOQ1RJT05fTUFZX0ZBSUxfRk9SX1NPVVJDRShXZWJD
b3JlLCBNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udERlc2Ny
aXB0b3JXaXRoU3Ryb2tlRm9yU3R5bGUsIENURm9udERlc2NyaXB0b3JSZWYsIChNQUNhcHRpb25B
cHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhh
dmlvciwgTUFDYXB0aW9uQXBwZWFyYW5jZUZvbnRTdHlsZSBmb250U3R5bGUsIENGU3RyaW5nUmVm
IHRyYWNrTGFuZ3VhZ2UsIENHRmxvYXQgZGFyd2luZ1BvaW50U2l6ZSwgQ0dGbG9hdCAqc3Ryb2tl
V2lkdGhQdCksIChkb21haW4sIGJlaGF2aW9yLCBmb250U3R5bGUsIHRyYWNrTGFuZ3VhZ2UsIGRh
cndpbmdQb2ludFNpemUsIHN0cm9rZVdpZHRoUHQpKTsKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFKFdlYkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0eSwga01BWENhcHRpb25BcHBlYXJhbmNl
U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBDRlN0cmluZ1JlZikKIFNPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhQWNjZXNzaWJpbGl0eSwga01B
QXVkaWJsZU1lZGlhU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uLCBDRlN0cmluZ1JlZikKLVNP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIE1lZGlhQWNjZXNz
aWJpbGl0eSwgTUFDYXB0aW9uRm9udEF0dHJpYnV0ZVN0cm9rZVdpZHRoLCBDRlN0cmluZ1JlZikK
IAogI2VuZGlmIC8vIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01lZGlhQWNjZXNzaWJpbGl0
eVNvZnRMaW5rLmgJKHJldmlzaW9uIDIxNDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL01lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEz
ICs2NSwxMiBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBNCiAjZGVm
aW5lIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5UHJlZmVycmVkQ2FwdGlvbmluZ01lZGlhQ2hhcmFj
dGVyaXN0aWNzIHNvZnRMaW5rX01lZGlhQWNjZXNzaWJpbGl0eV9NQUNhcHRpb25BcHBlYXJhbmNl
Q29weVByZWZlcnJlZENhcHRpb25pbmdNZWRpYUNoYXJhY3RlcmlzdGljcwogU09GVF9MSU5LX0ZV
TkNUSU9OX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFBY2Nlc3NpYmlsaXR5LCBN
QUF1ZGlibGVNZWRpYUNvcHlQcmVmZXJyZWRDaGFyYWN0ZXJpc3RpY3MsIENGQXJyYXlSZWYsICgp
LCAoKSkKICNkZWZpbmUgTUFBdWRpYmxlTWVkaWFDb3B5UHJlZmVycmVkQ2hhcmFjdGVyaXN0aWNz
IHNvZnRMaW5rX01lZGlhQWNjZXNzaWJpbGl0eV9NQUF1ZGlibGVNZWRpYUNvcHlQcmVmZXJyZWRD
aGFyYWN0ZXJpc3RpY3MKLQorU09GVF9MSU5LX0ZVTkNUSU9OX01BWV9GQUlMX0ZPUl9IRUFERVIo
V2ViQ29yZSwgTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvbnRE
ZXNjcmlwdG9yV2l0aFN0cm9rZUZvclN0eWxlLCBDVEZvbnREZXNjcmlwdG9yUmVmLCAoTUFDYXB0
aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciAq
YmVoYXZpb3IsIE1BQ2FwdGlvbkFwcGVhcmFuY2VGb250U3R5bGUgZm9udFN0eWxlLCBDRlN0cmlu
Z1JlZiB0cmFja0xhbmd1YWdlLCBDR0Zsb2F0IGRhcndpbmdQb2ludFNpemUsIENHRmxvYXQgKnN0
cm9rZVdpZHRoUHQpLCAoZG9tYWluLCBiZWhhdmlvciwgZm9udFN0eWxlLCB0cmFja0xhbmd1YWdl
LCBkYXJ3aW5nUG9pbnRTaXplLCBzdHJva2VXaWR0aFB0KSkKKyNkZWZpbmUgTUFDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvcldpdGhTdHJva2VGb3JTdHlsZSBzb2Z0TGlua19NZWRp
YUFjY2Vzc2liaWxpdHlfTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvcldpdGhT
dHJva2VGb3JTdHlsZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVk
aWFBY2Nlc3NpYmlsaXR5LCBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3Rp
ZmljYXRpb24sIENGU3RyaW5nUmVmKQogI2RlZmluZSBrTUFYQ2FwdGlvbkFwcGVhcmFuY2VTZXR0
aW5nc0NoYW5nZWROb3RpZmljYXRpb24gZ2V0X01lZGlhQWNjZXNzaWJpbGl0eV9rTUFYQ2FwdGlv
bkFwcGVhcmFuY2VTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24oKQogU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFBY2Nlc3NpYmlsaXR5LCBrTUFB
dWRpYmxlTWVkaWFTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24sIENGU3RyaW5nUmVmKQogI2Rl
ZmluZSBrTUFBdWRpYmxlTWVkaWFTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24gZ2V0X01lZGlh
QWNjZXNzaWJpbGl0eV9rTUFBdWRpYmxlTWVkaWFTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24o
KQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoV2ViQ29yZSwgTWVkaWFB
Y2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25Gb250QXR0cmlidXRlU3Ryb2tlV2lkdGgsIENGU3RyaW5n
UmVmKQotI2RlZmluZSBNQUNhcHRpb25Gb250QXR0cmlidXRlU3Ryb2tlV2lkdGggZ2V0X01lZGlh
QWNjZXNzaWJpbGl0eV9NQUNhcHRpb25Gb250QXR0cmlidXRlU3Ryb2tlV2lkdGgoKQogCiAjZW5k
aWYgLy8gSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKIAo=
</data>
<flag name="review"
          id="326270"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>