<?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>102405</bug_id>
          
          <creation_ts>2012-11-15 09:42:49 -0800</creation_ts>
          <short_desc>Replace some trivial WebKitSystemInterface calls with direct SPI calls</short_desc>
          <delta_ts>2016-03-22 14:15:46 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Sesek">rsesek</reporter>
          <assigned_to name="Robert Sesek">rsesek</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>mrowe</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>768191</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Sesek">rsesek</who>
    <bug_when>2012-11-15 09:42:49 -0800</bug_when>
    <thetext>Replace some trivial WebKitSystemInterface calls with direct SPI calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768197</commentid>
    <comment_count>1</comment_count>
      <attachid>174471</attachid>
    <who name="Robert Sesek">rsesek</who>
    <bug_when>2012-11-15 09:52:03 -0800</bug_when>
    <thetext>Created attachment 174471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768199</commentid>
    <comment_count>2</comment_count>
      <attachid>174471</attachid>
    <who name="">mitz</who>
    <bug_when>2012-11-15 09:54:08 -0800</bug_when>
    <thetext>Comment on attachment 174471
Patch

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

&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:39
&gt; +// Forward-declaring symbols is preferred to using the WebKitSystemIterface.

Why do you say this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768200</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-15 09:54:10 -0800</bug_when>
    <thetext>Attachment 174471 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/mac/SystemPrivateInterface.h:42:  _NSDrawCarbonThemeBezel is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/mac/SystemPrivateInterface.h:43:  _NSDrawCarbonThemeListBox is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768201</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Sesek">rsesek</who>
    <bug_when>2012-11-15 09:54:43 -0800</bug_when>
    <thetext>This is really an RFC to see what people think of this approach of reducing reliance on the WebKitSystemInterface (at least where code is shared between Chromium and Mac). In this patch, I centralized all the forward declares for the SPI into a single file, but I could also just forward-declare at each callsite.

Another option would be to keep the wkFunction() pattern, but provide an implementation in code, rather than just linking in the opaque static library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768206</commentid>
    <comment_count>5</comment_count>
    <who name="Robert Sesek">rsesek</who>
    <bug_when>2012-11-15 09:56:25 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 174471 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174471&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:39
&gt; &gt; +// Forward-declaring symbols is preferred to using the WebKitSystemIterface.
&gt; 
&gt; Why do you say this?

There&apos;s an on-going discussion. This bug is to discuss if that&apos;s actually true, but I wrote the patch assuming it is.

(In reply to comment #3)
&gt; Attachment 174471 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:42:  _NSDrawCarbonThemeBezel is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:43:  _NSDrawCarbonThemeListBox is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
&gt; Total errors found: 2 in 9 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

I will pending the result of this discussion (if we want to move forward with doing this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768257</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-15 10:24:40 -0800</bug_when>
    <thetext>I don&apos;t think that we have reached consensus yet. Redeclaring SPIs has an extremely unfortunate consequence - if you get it wrong, or if the SPI changes later, compiler won&apos;t tell you about this, and the outcome will be a difficult to diagnose bug.

It&apos;s something we&apos;ve been doing for a long time with some SPIs (it mostly depended on personal preference whether to put something in WKSI or re-declare it), and the problem did happen before.

Additionally, please note that these are not APIs, so they may not exist in past or future OS releases. This needs to be handled gracefully at runtime by builds that are intended to have a single binary for multiple OS versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768303</commentid>
    <comment_count>7</comment_count>
    <who name="Robert Sesek">rsesek</who>
    <bug_when>2012-11-15 10:52:45 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I don&apos;t think that we have reached consensus yet. Redeclaring SPIs has an extremely unfortunate consequence - if you get it wrong, or if the SPI changes later, compiler won&apos;t tell you about this, and the outcome will be a difficult to diagnose bug.

OK. I&apos;ll relax the comment in the .h and maybe converting to direct SPI is something we only do in code shared by Chromium and Mac.

&gt; It&apos;s something we&apos;ve been doing for a long time with some SPIs (it mostly depended on personal preference whether to put something in WKSI or re-declare it), and the problem did happen before.
&gt; 
&gt; Additionally, please note that these are not APIs, so they may not exist in past or future OS releases. This needs to be handled gracefully at runtime by builds that are intended to have a single binary for multiple OS versions.

Yes, and Chromium is one such example of having a single binary that runs across multiple versions. Maybe we should then keep the wkFunction() pattern, perhaps in a SPI:: namespace, to keep the runtime checks away from the direct callsite (or do we want the checks at the callsite?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768307</commentid>
    <comment_count>8</comment_count>
      <attachid>174471</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-11-15 10:58:03 -0800</bug_when>
    <thetext>Comment on attachment 174471
Patch

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

I like the direction of moving from WKSI use to SPI. Though, it might be worth a discussion on webkit-dev because I&apos;m not sure everyone with an interest in this topic was on the private email thread about it.

r- because this specific patch has some errors in it, as explained in line-by-line comments.

&gt; Source/WebCore/platform/graphics/mac/FontCacheMac.mm:72
&gt; +    CGFontSetShouldUseMulticache();

This will break the build on future OS versions, can you skip this one for now? I can deal with it based on WKSI source.

&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:35
&gt; +// This file contains non-public functions in Mac system frameworks. These are

In the cases where WebKit already declares non-public symbols itself, we usually do it near the point of use, i.e. top of the same file. I am not sure it is a good direction to have one giant file of these, as each such individual symbol should be imported with caution. In particular, commenting the point of use in this file already makes it dependent on the point of use, but the association of point of use can bitrot.

&gt;&gt;&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:39
&gt;&gt;&gt; +// Forward-declaring symbols is preferred to using the WebKitSystemIterface.
&gt;&gt; 
&gt;&gt; Why do you say this?
&gt; 
&gt; There&apos;s an on-going discussion. This bug is to discuss if that&apos;s actually true, but I wrote the patch assuming it is.
&gt; 
&gt; (In reply to comment #3)

I don&apos;t think this comment is useful. &quot;Is preferred&quot; gives the reader no information because it does not say who prefers it or why. I would suggest dropping it.

&gt;&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:42
&gt;&gt; +void _NSDrawCarbonThemeBezel(NSRect, BOOL enabled);
&gt; 
&gt; _NSDrawCarbonThemeBezel is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]

This declaration of _NSDrawCarbonThemeBezel is incorrect and the point of use is incorrect two (wrong parameters). If it works it is only by accident.

&gt;&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:43
&gt;&gt; +void _NSDrawCarbonThemeListBox(NSRect, BOOL enabled);
&gt; 
&gt; _NSDrawCarbonThemeListBox is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]

This declaration of _NSDrawCarbonThemeListBox is incorrect and the point of use is incorrect two (wrong parameters). If it works it is only by accident.

&gt; Source/WebCore/rendering/RenderThemeMacShared.mm:726
&gt; +        _NSDrawCarbonThemeBezel(r, isEnabled(o) &amp;&amp; !isReadOnlyControl(o));

This call is wrong, as mentioned previously.

&gt; Source/WebCore/rendering/RenderThemeMacShared.mm:761
&gt; +    _NSDrawCarbonThemeListBox(r, isEnabled(o) &amp;&amp; !isReadOnlyControl(o));

This call is wrong, as mentioned previously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768308</commentid>
    <comment_count>9</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-11-15 11:00:36 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I don&apos;t think that we have reached consensus yet. Redeclaring SPIs has an extremely unfortunate consequence - if you get it wrong, or if the SPI changes later, compiler won&apos;t tell you about this, and the outcome will be a difficult to diagnose bug.
&gt; 
&gt; It&apos;s something we&apos;ve been doing for a long time with some SPIs (it mostly depended on personal preference whether to put something in WKSI or re-declare it), and the problem did happen before.
&gt; 
&gt; Additionally, please note that these are not APIs, so they may not exist in past or future OS releases. This needs to be handled gracefully at runtime by builds that are intended to have a single binary for multiple OS versions.

I&apos;ll just note for the record that, as the person who created WebKitSystemInterface, I personally would like to eliminate it entirely. I don&apos;t think the benefits over time have exceeded the costs, and many of the hypothetical reasons we wanted it in the first place have not really panned out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786106</commentid>
    <comment_count>10</comment_count>
      <attachid>174471</attachid>
    <who name="Robert Sesek">rsesek</who>
    <bug_when>2012-12-07 13:46:52 -0800</bug_when>
    <thetext>Comment on attachment 174471
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/mac/FontCacheMac.mm:72
&gt;&gt; +    CGFontSetShouldUseMulticache();
&gt; 
&gt; This will break the build on future OS versions, can you skip this one for now? I can deal with it based on WKSI source.

Reverted

&gt;&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:35
&gt;&gt; +// This file contains non-public functions in Mac system frameworks. These are
&gt; 
&gt; In the cases where WebKit already declares non-public symbols itself, we usually do it near the point of use, i.e. top of the same file. I am not sure it is a good direction to have one giant file of these, as each such individual symbol should be imported with caution. In particular, commenting the point of use in this file already makes it dependent on the point of use, but the association of point of use can bitrot.

OK. I&apos;ve removed this file and now just declare in the files in which the functions are used.

&gt;&gt;&gt; Source/WebCore/platform/mac/SystemPrivateInterface.h:42
&gt;&gt;&gt; +void _NSDrawCarbonThemeBezel(NSRect, BOOL enabled);
&gt;&gt; 
&gt;&gt; _NSDrawCarbonThemeBezel is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
&gt; 
&gt; This declaration of _NSDrawCarbonThemeBezel is incorrect and the point of use is incorrect two (wrong parameters). If it works it is only by accident.

Thanks for pointing that out. I should have checked the disassembly rather than assuming the signatures for the WK functions are the same. Updated, and below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786110</commentid>
    <comment_count>11</comment_count>
      <attachid>178265</attachid>
    <who name="Robert Sesek">rsesek</who>
    <bug_when>2012-12-07 13:48:55 -0800</bug_when>
    <thetext>Created attachment 178265
Patch,v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901282</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-17 23:38:48 -0700</bug_when>
    <thetext>I propose that we close this bug, since the main reason for it is no longer relevant now that the Blink project has forked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901285</commentid>
    <comment_count>13</comment_count>
      <attachid>178265</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2013-06-17 23:59:24 -0700</bug_when>
    <thetext>Comment on attachment 178265
Patch,v2

Marking as r- since the change as-is won&apos;t compile. It&apos;s also not clear that this is the direction we&apos;re interested in heading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177125</commentid>
    <comment_count>14</comment_count>
      <attachid>178265</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-22 14:14:49 -0700</bug_when>
    <thetext>Comment on attachment 178265
Patch,v2

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

&gt; Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm:49
&gt; +

This is now in CoreTextSPI.h, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177126</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-22 14:15:40 -0700</bug_when>
    <thetext>This was handled in a series of other commits. E.g., r175379 &lt;https://trac.webkit.org/changeset/175379&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174471</attachid>
            <date>2012-11-15 09:52:03 -0800</date>
            <delta_ts>2012-12-07 13:48:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102405-20121115125000.patch</filename>
            <type>text/plain</type>
            <size>15057</size>
            <attacher name="Robert Sesek">rsesek</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE0ODExNDNiNWE5Nzg2
ZjdhMTMzYTAwMTQxMzcyZjFjNjIxMTFlOC4uZDc5ZWI1YWYzNTZlYjdhZDM5MDdmM2ZhNjYxMmE3
Y2NhYjM5MzM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTExLTE1ICBSb2Jl
cnQgU2VzZWsgIDxyc2VzZWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2Ugc29tZSB0
cml2aWFsIFdlYktpdFN5c3RlbUludGVyZmFjZSBjYWxscyB3aXRoIGRpcmVjdCBTUEkgY2FsbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQwNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW06CisgICAgICAgIChXZWJD
b3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFy
YWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHbHlwaFBhZ2U6OmZpbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9TaW1wbGVGb250RGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnRE
YXRhOjpjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZSk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1N5c3RlbVByaXZhdGVJbnRlcmZhY2UuaDogQWRkZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjU2hhcmVkLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWNTaGFyZWQ6OnBhaW50VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjU2hhcmVkOjpwYWludFRleHRBcmVhKToKKwogMjAxMi0xMS0xNSAgR2Fib3IgUmFw
Y3NhbnlpICA8cmdhYm9yQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVsb2NhdGUgdGhlIEFSTSBO
RU9OIFNWRyBmaWx0ZXIgb3B0aW1pemF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGYxZDMwN2E2
MzUwYzk0YmI0Zjg2ZDQ3ZTUzNDYxOWUzMzg4NzE5M2IuLjdmYTE1MDc2NGI1Mjk4NWUwMjRhYTMw
ZThjNWI0NmRmOWE1MTkwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ0NSw2ICs0NDUsNyBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbWFjL1NlYXJjaFBvcHVwTWVudU1hYy5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9tYWMvU29mdExpbmtpbmcuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1N5c3RlbVBy
aXZhdGVJbnRlcmZhY2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1dlYkNvcmVOU1N0
cmluZ0V4dHJhcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRy
YXMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCcsCkBAIC01NDkyLDYgKzU0OTMsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9TaGFy
ZWRUaW1lck1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1NvdW5kTWFjLm1tJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0nLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL21hYy9TeXN0ZW1Qcml2YXRlSW50ZXJmYWNlLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL21hYy9TeXN0ZW1UaW1lTWFjLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vbWFjL1RoZW1lTWFjLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21hYy9UaGVtZU1hYy5t
bScsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMWNjNDYxMzk0NDQ1NTdiZGE3NzRkZWE4MWRhOGJkNjBhYzZmMmMzNy4uOGIwZmM3
ODdlMzk0YjNiYmY4MTBmZTA0ZWM4OGY4ODk5NjgxZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjc5LDYgKzY3OSw3IEBA
CiAJCTFDRkFFMzIzMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGQUUzMjIwQTZENkEzRjAw
MzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgKi87IH07CiAJCTFFNTAwODQ3MTY1MTZBRDgwMEI3RTA5
OCAvKiBSZW5kZXJUaGVtZU1hY1NoYXJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUU1MDA4NDUxNjUxNkFEODAwQjdFMDk4IC8qIFJlbmRlclRoZW1l
TWFjU2hhcmVkLmggKi87IH07CiAJCTFFNTAwODQ4MTY1MTZBRDgwMEI3RTA5OCAvKiBSZW5kZXJU
aGVtZU1hY1NoYXJlZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFFNTAwODQ2MTY1MTZBRDgwMEI3RTA5OCAvKiBSZW5kZXJUaGVtZU1hY1NoYXJlZC5t
bSAqLzsgfTsKKwkJMUVBNDdENTAxNjU1NjE4RDAwM0JEOTdDIC8qIFN5c3RlbVByaXZhdGVJbnRl
cmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFF
QTQ3RDRGMTY1NTYxOEQwMDNCRDk3QyAvKiBTeXN0ZW1Qcml2YXRlSW50ZXJmYWNlLmggKi87IH07
CiAJCTFGM0MzQkVBMTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGM0MzQkU4MTM1Q0FGM0Mw
MEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmNwcCAqLzsgfTsKIAkJMUYzQzNCRUIxMzVDQUYzQzAw
QjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFGM0MzQkU5MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xz
LmggKi87IH07CiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5h
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjNGMTk1
MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Nzk2LDYgKzc3OTcsNyBAQAogCQkx
Q0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIi
OyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNv
dXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTFFNTAwODQ1MTY1MTZBRDgwMEI3RTA5OCAv
KiBSZW5kZXJUaGVtZU1hY1NoYXJlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJUaGVtZU1hY1NoYXJlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RTUwMDg0NjE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNTaGFyZWQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJUaGVtZU1hY1NoYXJlZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUVBNDdENEYxNjU1NjE4RDAwM0JEOTdD
IC8qIFN5c3RlbVByaXZhdGVJbnRlcmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3lzdGVtUHJpdmF0ZUludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTkxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlh
Q29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9s
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjNGMTk1MjE0OTlDQTc2MDBBNUFF
QTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQT0RGcmVlTGlzdEFyZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc4
Miw2ICsxNTc4NCw3IEBACiAJCQkJNEIzMDQzQzgwQUUwMzcxRDAwQTgyNjQ3IC8qIFNvdW5kTWFj
Lm1tICovLAogCQkJCTg0QjJCMjRGMDU2QkYxNUYwMEQyQjc3MSAvKiBTU0xLZXlHZW5lcmF0b3JN
YWMuY3BwICovLAogCQkJCTkzQjJEODE3MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5h
dGlvbi5tbSAqLywKKwkJCQkxRUE0N0Q0RjE2NTU2MThEMDAzQkQ5N0MgLyogU3lzdGVtUHJpdmF0
ZUludGVyZmFjZS5oICovLAogCQkJCTY1ODJBMTU1MDk5OTlENkQwMEJFRUI2RCAvKiBTeXN0ZW1U
aW1lTWFjLmNwcCAqLywKIAkJCQlCQ0U2NTlFNTBFQTkyRkIyMDA3RTQ1MzMgLyogVGhlbWVNYWMu
aCAqLywKIAkJCQlCQ0U2NTlFODBFQTkyRkZBMDA3RTQ1MzMgLyogVGhlbWVNYWMubW0gKi8sCkBA
IC0yNTcxMyw2ICsyNTcxNiw3IEBACiAJCQkJMTQxMURDQjExNjRDMzlBODAwRDQ5QkMxIC8qIFdp
ZHRoQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MEI3OEMwMTY1MENFODEwMDFEQkUxQiAv
KiBTZWxlY3RSdWxlRmVhdHVyZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUU1MDA4NDcxNjUx
NkFEODAwQjdFMDk4IC8qIFJlbmRlclRoZW1lTWFjU2hhcmVkLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxRUE0N0Q1MDE2NTU2MThEMDAzQkQ5N0MgLyogU3lzdGVtUHJpdmF0ZUludGVyZmFjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KaW5k
ZXggNjI1MDk2OGU3NzQzNjNiNGM1YzEwNDQ2NjI0ZTkwNzFlMzlkZWVlNy4uZDU0NzhlYTFjOTM5
ODQ3YmNlMmYxYjdjNTQ0MDhkNWQ4OWMxMmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRm9udC5oIgog
I2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgIlN5c3RlbVByaXZhdGVJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogCkBAIC0yMzksNyArMjQwLDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNv
bGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjcCwKICAgICB9
IGVsc2UgewogICAgICAgICBQcm92aWRlckluZm8gaW5mbyA9IHsgY3AsIGxlbmd0aCwgc3RyaW5n
QXR0cmlidXRlcy5nZXQoKSB9OwogCi0gICAgICAgIGxpbmUuYWRvcHRDRih3a0NyZWF0ZUNUTGlu
ZVdpdGhVbmlDaGFyUHJvdmlkZXIoJnByb3ZpZGVTdHJpbmdBbmRBdHRyaWJ1dGVzLCAwLCAmaW5m
bykpOworICAgICAgICBsaW5lLmFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aFVuaUNoYXJQcm92aWRl
cigmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvKSk7CiAgICAgfQogCiAgICAg
bV9jb3JlVGV4dExpbmVzLmFwcGVuZChsaW5lLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCmluZGV4IDNmYTQzM2Yz
ZDJkNDFjZDdkMTQ3OTgyODZhOTVkNGM3YjgwZTk5NzguLmZlZmM1NWQyZmY2MGNmNDU2NjgyYzZl
MzBlM2YyMGEwMDc5ODRiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQpAQCAtMzEsOCArMzEsOSBAQAogI2ltcG9ydCAi
Rm9udENhY2hlLmgiCiAKICNpbXBvcnQgIkZvbnQuaCIKLSNpbXBvcnQgIlNpbXBsZUZvbnREYXRh
LmgiCiAjaW1wb3J0ICJGb250UGxhdGZvcm1EYXRhLmgiCisjaW1wb3J0ICJTaW1wbGVGb250RGF0
YS5oIgorI2ltcG9ydCAiU3lzdGVtUHJpdmF0ZUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViRm9udENhY2hlLmgiCiAjaW1wb3J0IDxB
cHBLaXQvQXBwS2l0Lmg+CkBAIC02OCw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGZvbnRDYWNoZUFU
U05vdGlmaWNhdGlvbkNhbGxiYWNrKEFUU0ZvbnROb3RpZmljYXRpb25JbmZvUmVmLCB2b2lkKikK
IAogdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiB7Ci0gICAgd2tTZXRVcEZvbnRDYWNo
ZSgpOworICAgIENHRm9udFNldFNob3VsZFVzZU11bHRpY2FjaGUoKTsKICNpZiBQTEFURk9STShJ
T1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIENGTm90
aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENl
bnRlcigpLCB0aGlzLCBmb250Q2FjaGVSZWdpc3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9u
Q2FsbGJhY2ssIGtDVEZvbnRNYW5hZ2VyUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5vdGlmaWNhdGlv
biwgMCwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkp
OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HbHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR2x5cGhQYWdlVHJlZU5vZGVNYWMuY3BwCmluZGV4IDQ1YTY2OTFiODMyNjc5YmIz
ZmRjZTM1YjJjYWUyM2U4NTYyNjhhMDQuLjg0ZGQ0NDc1YzU1ZmE5ZGE0NjU4OTNiZDA3NzhhNDY5
ZTEzMzk4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HbHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dseXBoUGFnZVRyZWVOb2RlTWFjLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
CiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisjaW5jbHVk
ZSAiU3lzdGVtUHJpdmF0ZUludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuaD4KIApAQCAtNTcsNyArNTgsNyBAQCBib29sIEdseXBoUGFnZTo6ZmlsbCh1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYgogCiAgICAg
VmVjdG9yPENHR2x5cGgsIDUxMj4gZ2x5cGhzKGJ1ZmZlckxlbmd0aCk7CiAgICAgaWYgKCFzaG91
bGRVc2VDb3JlVGV4dChidWZmZXIsIGJ1ZmZlckxlbmd0aCwgZm9udERhdGEpKSB7Ci0gICAgICAg
IHdrR2V0R2x5cGhzRm9yQ2hhcmFjdGVycyhmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkuY2dGb250
KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgQ0dGb250
R2V0R2x5cGhzRm9yVW5pY2hhcnMoZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLmNnRm9udCgpLCBi
dWZmZXIsIGdseXBocy5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgaWYgKCFnbHlwaHNbaV0p
CiAgICAgICAgICAgICAgICAgc2V0R2x5cGhEYXRhRm9ySW5kZXgob2Zmc2V0ICsgaSwgMCwgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxl
Rm9udERhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2lt
cGxlRm9udERhdGFNYWMubW0KaW5kZXggZmMyM2JiZDliN2ZhNzBmY2FiZThlNmNhY2NjNzM2MmQ0
OGQxNDAwNS4uNTViNjA1OTc0MzYwZjYzMzM1NTRhYjhjNzE5MjM1NGEwNjMxNDIzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRh
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVG
b250RGF0YU1hYy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiRm9udENhY2hlLmgiCiAj
aW1wb3J0ICJGb250RGVzY3JpcHRpb24uaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2lt
cG9ydCAiU3lzdGVtUHJpdmF0ZUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogI2ltcG9ydCA8QXBwbGljYXRp
b25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CkBAIC00NDQsNyArNDQ1LDcgQEAgYm9v
bCBTaW1wbGVGb250RGF0YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMKICAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnQoQWRv
cHRDRiwgQ1RGb250Q29weUdyYXBoaWNzRm9udChwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgMCkp
OwogCiAgICAgUHJvdmlkZXJJbmZvIGluZm8gPSB7IGNoYXJhY3RlcnMsIGxlbmd0aCwgZ2V0Q0ZT
dHJpbmdBdHRyaWJ1dGVzKDAsIHBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkpIH07Ci0gICAg
UmV0YWluUHRyPENUTGluZVJlZj4gbGluZShBZG9wdENGLCB3a0NyZWF0ZUNUTGluZVdpdGhVbmlD
aGFyUHJvdmlkZXIoJnByb3ZpZGVTdHJpbmdBbmRBdHRyaWJ1dGVzLCAwLCAmaW5mbykpOworICAg
IFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmUoQWRvcHRDRiwgQ1RMaW5lQ3JlYXRlV2l0aFVuaUNo
YXJQcm92aWRlcigmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvKSk7CiAKICAg
ICBDRkFycmF5UmVmIHJ1bkFycmF5ID0gQ1RMaW5lR2V0R2x5cGhSdW5zKGxpbmUuZ2V0KCkpOwog
ICAgIENGSW5kZXggcnVuQ291bnQgPSBDRkFycmF5R2V0Q291bnQocnVuQXJyYXkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N5c3RlbVByaXZhdGVJbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TeXN0ZW1Qcml2YXRlSW50ZXJmYWNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjNhOTVhNDA4MWMwNzgzMDBkNjQ3YTdhNTVjOTQ3N2YwMjE2OGU2MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TeXN0ZW1Qcml2YXRl
SW50ZXJmYWNlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlv
bi9DRkJhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CisvLyBUaGlzIGZpbGUgY29udGFpbnMgbm9uLXB1YmxpYyBmdW5jdGlvbnMgaW4gTWFjIHN5c3Rl
bSBmcmFtZXdvcmtzLiBUaGVzZSBhcmUKKy8vIHVuZG9jdW1lbnRlZCBhbmQgYXJlIGxpYWJsZSB0
byBjaGFuZ2UgYXQgYW55IHRpbWUsIGFuZCBzbyBzaG91bGQgYmUgdXNlZAorLy8gd2l0aCBjYXV0
aW9uLgorLy8KKy8vIEZvcndhcmQtZGVjbGFyaW5nIHN5bWJvbHMgaXMgcHJlZmVycmVkIHRvIHVz
aW5nIHRoZSBXZWJLaXRTeXN0ZW1JdGVyZmFjZS4KKworLy8gcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjU2hhcmVkLm1tLgordm9pZCBfTlNEcmF3Q2FyYm9uVGhlbWVCZXplbChOU1JlY3QsIEJPT0wg
ZW5hYmxlZCk7Cit2b2lkIF9OU0RyYXdDYXJib25UaGVtZUxpc3RCb3goTlNSZWN0LCBCT09MIGVu
YWJsZWQpOworCisvLyBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
Q29yZVRleHQubW0KKy8vIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5t
bQorQ1RMaW5lUmVmIENUTGluZUNyZWF0ZVdpdGhVbmlDaGFyUHJvdmlkZXIoCisgICAgY29uc3Qg
VW5pQ2hhciogKCpwcm92aWRlKShDRkluZGV4IHN0cmluZ0luZGV4LCBDRkluZGV4KiBjaGFyQ291
bnQsIENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRlcywgdm9pZCogY29udGV4dCksCisgICAgdm9p
ZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2b2lkKiBjb250ZXh0KSwKKyAgICB2
b2lkKiBpbmZvKTsKKworLy8gcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZVRyZWVOb2Rl
TWFjLmNwcAordm9pZCBDR0ZvbnRHZXRHbHlwaHNGb3JVbmljaGFycyhDR0ZvbnRSZWYsIGNvbnN0
IFVuaUNoYXJbXSwgQ0dHbHlwaFtdLCBzaXplX3QpOworCisvLyBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udENhY2hlTWFjLm1tCit2b2lkIENHRm9udFNldFNob3VsZFVzZU11bHRpY2FjaGUoKTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hY1NoYXJlZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hY1NoYXJlZC5tbQppbmRleCA4ZTkwMmZjYzUzODg0YjU2Y2Rh
NjA4YzEyMWVlODQxM2IyZjExNjFiLi43NmU0Njc1NzFkMzE1Y2E4MGZjOTlhNDNiNTdkY2Y3YmVk
NGQzY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWNTaGFyZWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
U2hhcmVkLm1tCkBAIC00Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNp
bXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiU3R5bGVSZXNvbHZlci5oIgorI2lt
cG9ydCAiU3lzdGVtUHJpdmF0ZUludGVyZmFjZS5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgog
I2ltcG9ydCAiVGhlbWVNYWMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0NlbGxFeHRyYXMuaCIKQEAg
LTcyMCw5ICs3MjEsOSBAQCBib29sIFJlbmRlclRoZW1lTWFjU2hhcmVkOjpwYWludFRleHRGaWVs
ZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbgogICAgIC8vIFdlIGRvIG5v
dCB1c2UgTlNUZXh0RmllbGRDZWxsIHRvIGRyYXcgc3R5bGVkIHRleHQgZmllbGRzIG9uIExpb24g
YW5kIFNub3dMZW9wYXJkIGJlY2F1c2UKICAgICAvLyB0aGVyZSBhcmUgYSBudW1iZXIgb2YgYnVn
cyBvbiB0aG9zZSBwbGF0Zm9ybXMgdGhhdCByZXF1aXJlIE5TVGV4dEZpZWxkQ2VsbCB0byBiZSBp
biBjaGFyZ2UKICAgICAvLyBvZiBwYWludGluZyBpdHMgb3duIGJhY2tncm91bmQuIFdlIG5lZWQg
V2ViQ29yZSB0byBwYWludCBzdHlsZWQgYmFja2dyb3VuZHMsIHNvIHdlJ2xsIHVzZQotICAgIC8v
IHRoaXMgV2ViQ29yZVN5c3RlbUludGVyZmFjZSBmdW5jdGlvbiBpbnN0ZWFkLgorICAgIC8vIHRo
aXMgU1BJIGZ1bmN0aW9uIGluc3RlYWQuCiAgICAgaWYgKCF1c2VOU1RleHRGaWVsZENlbGwpIHsK
LSAgICAgICAgd2tEcmF3QmV6ZWxlZFRleHRGaWVsZENlbGwociwgaXNFbmFibGVkKG8pICYmICFp
c1JlYWRPbmx5Q29udHJvbChvKSk7CisgICAgICAgIF9OU0RyYXdDYXJib25UaGVtZUJlemVsKHIs
IGlzRW5hYmxlZChvKSAmJiAhaXNSZWFkT25seUNvbnRyb2wobykpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogI2VuZGlmCkBAIC03NTcsNyArNzU4LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZU1hY1NoYXJlZDo6cGFpbnRDYXBzTG9ja0luZGljYXRvcihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8KIGJvb2wgUmVuZGVyVGhlbWVNYWNTaGFyZWQ6OnBhaW50VGV4dEFyZWEoUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikK
IHsKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5m
by5jb250ZXh0KTsKLSAgICB3a0RyYXdCZXplbGVkVGV4dEFyZWEociwgaXNFbmFibGVkKG8pICYm
ICFpc1JlYWRPbmx5Q29udHJvbChvKSk7CisgICAgX05TRHJhd0NhcmJvblRoZW1lTGlzdEJveChy
LCBpc0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178265</attachid>
            <date>2012-12-07 13:48:55 -0800</date>
            <delta_ts>2013-06-17 23:59:24 -0700</delta_ts>
            <desc>Patch,v2</desc>
            <filename>bug-102405-20121207164619.patch</filename>
            <type>text/plain</type>
            <size>7216</size>
            <attacher name="Robert Sesek">rsesek</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3ZDRiYjc1M2Q2ZTVl
ZDg0Yjc3MDBkODcxN2JhYzcwMDBiNjZmMC4uMjk3MjIyOThhMWVkNzZjNjQ4ZGE2OTMwODdhYjc3
NGFhOTViNmMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTA3ICBSb2Jl
cnQgU2VzZWsgIDxyc2VzZWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2Ugc29tZSB0
cml2aWFsIFdlYktpdFN5c3RlbUludGVyZmFjZSBjYWxscyB3aXRoIGRpcmVjdCBTUEkgY2FsbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjQwNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywganVzdCByZXBsYWNpbmcgZnVuY3Rpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hh
cmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZVRyZWVO
b2RlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFnZTo6ZmlsbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVl
bmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWNTaGFyZWQubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hY1NoYXJlZDo6cGFpbnRUZXh0RmllbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWNTaGFyZWQ6OnBhaW50VGV4dEFyZWEpOgorCiAy
MDEyLTEyLTA3ICBTY290dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gUmVtb3ZlIGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgYW5kIHN3aXRjaCB0byBk
ZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KaW5kZXggNjI1
MDk2OGU3NzQzNjNiNGM1YzEwNDQ2NjI0ZTkwNzFlMzlkZWVlNy4uOThiZWE5MjZhYjAxNTFiY2I3
MzNiMTVlMTM3YTkwZjgyMDkzZjU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJD
b3JlVGV4dC5tbQpAQCAtMzMsMTUgKzMzLDIwIEBACiAKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNl
cnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KIAorZXh0ZXJuICJDIiB7CiAjaWYgIVBMQVRG
T1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCiAvLyBU
aGUgZm9sbG93aW5nIHN5bWJvbHMgYXJlIFNQSSBpbiAxMC41LgotZXh0ZXJuICJDIiB7CiB2b2lk
IENUUnVuR2V0QWR2YW5jZXMoQ1RSdW5SZWYgcnVuLCBDRlJhbmdlIHJhbmdlLCBDR1NpemUgYnVm
ZmVyW10pOwogY29uc3QgQ0dTaXplKiBDVFJ1bkdldEFkdmFuY2VzUHRyKENUUnVuUmVmIHJ1bik7
CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUVHlwZXNldHRlck9wdGlvbkZvcmNlZEVtYmVk
ZGluZ0xldmVsOwotfQogI2VuZGlmCiAKK0NUTGluZVJlZiBDVExpbmVDcmVhdGVXaXRoVW5pQ2hh
clByb3ZpZGVyKAorICAgIGNvbnN0IFVuaUNoYXIqICgqcHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJ
bmRleCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rpb25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZv
aWQqIGNvbnRleHQpLAorICAgIHZvaWQoKmRpc3Bvc2UpKGNvbnN0IFVuaUNoYXIqIGNoYXJzLCB2
b2lkKiBjb250ZXh0KSwKKyAgICB2b2lkKiBpbmZvKTsKK30KKwogQGludGVyZmFjZSBXZWJDYXNj
YWRlTGlzdCA6IE5TQXJyYXkgewogICAgIEBwcml2YXRlCiAgICAgY29uc3QgV2ViQ29yZTo6Rm9u
dCogX2ZvbnQ7CkBAIC0yMzksNyArMjQ0LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6
OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjcCwKICAg
ICB9IGVsc2UgewogICAgICAgICBQcm92aWRlckluZm8gaW5mbyA9IHsgY3AsIGxlbmd0aCwgc3Ry
aW5nQXR0cmlidXRlcy5nZXQoKSB9OwogCi0gICAgICAgIGxpbmUuYWRvcHRDRih3a0NyZWF0ZUNU
TGluZVdpdGhVbmlDaGFyUHJvdmlkZXIoJnByb3ZpZGVTdHJpbmdBbmRBdHRyaWJ1dGVzLCAwLCAm
aW5mbykpOworICAgICAgICBsaW5lLmFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aFVuaUNoYXJQcm92
aWRlcigmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvKSk7CiAgICAgfQogCiAg
ICAgbV9jb3JlVGV4dExpbmVzLmFwcGVuZChsaW5lLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdlVHJlZU5vZGVN
YWMuY3BwCmluZGV4IDQ1YTY2OTFiODMyNjc5YmIzZmRjZTM1YjJjYWUyM2U4NTYyNjhhMDQuLjY0
ODMxNWU5YTVkZjkxNjg2MjMwZGQ4NWU5ZTc4MDk4NzYzZTE1NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZVRyZWVO
b2RlTWFjLmNwcApAQCAtMzQsNiArMzQsMTEgQEAKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmg+CiAKKy8vIEZvcndhcmQgZGVjbGFyZSBTUEk6CitleHRlcm4gIkMiIHsKK3ZvaWQgQ0dG
b250R2V0R2x5cGhzRm9yVW5pY2hhcnMoQ0dGb250UmVmLCBjb25zdCBVbmlDaGFyW10sIENHR2x5
cGhbXSwgc2l6ZV90KTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBz
aG91bGRVc2VDb3JlVGV4dChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNv
bnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSkKQEAgLTU3LDcgKzYyLDcgQEAgYm9vbCBHbHlw
aFBhZ2U6OmZpbGwodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiBidWZm
ZXIsIHVuc2lnbmVkIGIKIAogICAgIFZlY3RvcjxDR0dseXBoLCA1MTI+IGdseXBocyhidWZmZXJM
ZW5ndGgpOwogICAgIGlmICghc2hvdWxkVXNlQ29yZVRleHQoYnVmZmVyLCBidWZmZXJMZW5ndGgs
IGZvbnREYXRhKSkgewotICAgICAgICB3a0dldEdseXBoc0ZvckNoYXJhY3RlcnMoZm9udERhdGEt
PnBsYXRmb3JtRGF0YSgpLmNnRm9udCgpLCBidWZmZXIsIGdseXBocy5kYXRhKCksIGJ1ZmZlckxl
bmd0aCk7CisgICAgICAgIENHRm9udEdldEdseXBoc0ZvclVuaWNoYXJzKGZvbnREYXRhLT5wbGF0
Zm9ybURhdGEoKS5jZ0ZvbnQoKSwgYnVmZmVyLCBnbHlwaHMuZGF0YSgpLCBidWZmZXJMZW5ndGgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgICAgIGlmICghZ2x5cGhzW2ldKQogICAgICAgICAgICAgICAgIHNldEdseXBoRGF0YUZvcklu
ZGV4KG9mZnNldCArIGksIDAsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCmluZGV4IDgxNjM2OTNiNTE4
MDRkMGJjNDlmOTY4N2IzZTVlNTBmMjBkZDQwMDguLjg3MzQxMzdlYmQ0MTYyMTU5ZGZlYTU4YWY1
MDU5YzhlODcxYTIwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KQEAgLTQ4LDYgKzQ4LDE0IEBACiAt
IChCT09MKV9pc0Zha2VGaXhlZFBpdGNoOwogQGVuZAogCisvLyBGb3J3YXJkIGRlY2xhcmUgU1BJ
OgorZXh0ZXJuICJDIiB7CitDVExpbmVSZWYgQ1RMaW5lQ3JlYXRlV2l0aFVuaUNoYXJQcm92aWRl
cigKKyAgICBjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENG
SW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiBjb250
ZXh0KSwKKyAgICB2b2lkICgqZGlzcG9zZSkoY29uc3QgVW5pQ2hhciogY2hhcnMsIHZvaWQqIGNv
bnRleHQpLAorICAgIHZvaWQqIGluZm8pOworfQorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NDQsNyArNDUyLDcgQEAgYm9vbCBTaW1wbGVGb250RGF0
YTo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMKICAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnQoQWRvcHRDRiwgQ1RGb250Q29w
eUdyYXBoaWNzRm9udChwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgMCkpOwogCiAgICAgUHJvdmlk
ZXJJbmZvIGluZm8gPSB7IGNoYXJhY3RlcnMsIGxlbmd0aCwgZ2V0Q0ZTdHJpbmdBdHRyaWJ1dGVz
KDAsIHBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkpIH07Ci0gICAgUmV0YWluUHRyPENUTGlu
ZVJlZj4gbGluZShBZG9wdENGLCB3a0NyZWF0ZUNUTGluZVdpdGhVbmlDaGFyUHJvdmlkZXIoJnBy
b3ZpZGVTdHJpbmdBbmRBdHRyaWJ1dGVzLCAwLCAmaW5mbykpOworICAgIFJldGFpblB0cjxDVExp
bmVSZWY+IGxpbmUoQWRvcHRDRiwgQ1RMaW5lQ3JlYXRlV2l0aFVuaUNoYXJQcm92aWRlcigmcHJv
dmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvKSk7CiAKICAgICBDRkFycmF5UmVmIHJ1
bkFycmF5ID0gQ1RMaW5lR2V0R2x5cGhSdW5zKGxpbmUuZ2V0KCkpOwogICAgIENGSW5kZXggcnVu
Q291bnQgPSBDRkFycmF5R2V0Q291bnQocnVuQXJyYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjU2hhcmVkLm1tIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjU2hhcmVkLm1tCmluZGV4IGU2MDc0Y2MyNjRkYzQ2NzU3
ZDVjMmZmZDRlNTU5ODY4MTFhNGU0NTYuLjA5NDY4MzU1MTVlN2Y0YWM0MGM0MjEyNGViMWUxYmVk
Yjg2ZjFkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hY1NoYXJlZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWNTaGFyZWQubW0KQEAgLTEyNSw2ICsxMjUsMTEgQEAgY29uc3QgZG91YmxlIHByb2dyZXNzQW5p
bWF0aW9uTnVtRnJhbWVzID0gMjU2OwogfQogQGVuZAogCitleHRlcm4gIkMiIHsKK3ZvaWQgX05T
RHJhd0NhcmJvblRoZW1lTGlzdEJveChOU1JlY3QsIEJPT0wgZW5hYmxlZCwgQk9PTCBmbGlwcGVk
KTsKK3ZvaWQgX05TRHJhd0NhcmJvblRoZW1lQmV6ZWwoTlNSZWN0LCBCT09MIGVuYWJsZWQsIEJP
T0wgZmxpcHBlZCk7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKQEAgLTcyMCw5ICs3MjUsOSBAQCBib29sIFJlbmRlclRoZW1lTWFjU2hhcmVk
OjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbgog
ICAgIC8vIFdlIGRvIG5vdCB1c2UgTlNUZXh0RmllbGRDZWxsIHRvIGRyYXcgc3R5bGVkIHRleHQg
ZmllbGRzIG9uIExpb24gYW5kIFNub3dMZW9wYXJkIGJlY2F1c2UKICAgICAvLyB0aGVyZSBhcmUg
YSBudW1iZXIgb2YgYnVncyBvbiB0aG9zZSBwbGF0Zm9ybXMgdGhhdCByZXF1aXJlIE5TVGV4dEZp
ZWxkQ2VsbCB0byBiZSBpbiBjaGFyZ2UKICAgICAvLyBvZiBwYWludGluZyBpdHMgb3duIGJhY2tn
cm91bmQuIFdlIG5lZWQgV2ViQ29yZSB0byBwYWludCBzdHlsZWQgYmFja2dyb3VuZHMsIHNvIHdl
J2xsIHVzZQotICAgIC8vIHRoaXMgV2ViQ29yZVN5c3RlbUludGVyZmFjZSBmdW5jdGlvbiBpbnN0
ZWFkLgorICAgIC8vIHRoaXMgU1BJIGZ1bmN0aW9uIGluc3RlYWQuCiAgICAgaWYgKCF1c2VOU1Rl
eHRGaWVsZENlbGwpIHsKLSAgICAgICAgd2tEcmF3QmV6ZWxlZFRleHRGaWVsZENlbGwociwgaXNF
bmFibGVkKG8pICYmICFpc1JlYWRPbmx5Q29udHJvbChvKSk7CisgICAgICAgIF9OU0RyYXdDYXJi
b25UaGVtZUJlemVsKHIsIGlzRW5hYmxlZChvKSAmJiAhaXNSZWFkT25seUNvbnRyb2wobyksIFlF
Uyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZW5kaWYKQEAgLTc1Nyw3ICs3NjIs
NyBAQCBib29sIFJlbmRlclRoZW1lTWFjU2hhcmVkOjpwYWludENhcHNMb2NrSW5kaWNhdG9yKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbwogYm9vbCBSZW5kZXJUaGVtZU1hY1NoYXJlZDo6
cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOwotICAgIHdrRHJhd0JlemVsZWRUZXh0QXJl
YShyLCBpc0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKTsKKyAgICBfTlNEcmF3
Q2FyYm9uVGhlbWVMaXN0Qm94KHIsIGlzRW5hYmxlZChvKSAmJiAhaXNSZWFkT25seUNvbnRyb2wo
byksIFlFUyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCg==
</data>
<flag name="review"
          id="194734"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
      

    </bug>

</bugzilla>