<?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>36328</bug_id>
          
          <creation_ts>2010-03-18 15:24:01 -0700</creation_ts>
          <short_desc>Missing plug-ins should be represented by text only, instead of lego block</short_desc>
          <delta_ts>2010-03-25 12:33:47 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>CLOSED</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="Kevin Decker">kdecker</reporter>
          <assigned_to name="Kevin Decker">kdecker</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>kdecker</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>sullivan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>201592</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-18 15:24:01 -0700</bug_when>
    <thetext>Missing plug-ins should be represented by text only, instead of lego block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201602</commentid>
    <comment_count>1</comment_count>
      <attachid>51104</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-18 15:40:13 -0700</bug_when>
    <thetext>Created attachment 51104
updated design</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201871</commentid>
    <comment_count>2</comment_count>
      <attachid>51104</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-03-19 09:01:10 -0700</bug_when>
    <thetext>Comment on attachment 51104
updated design

It would have reduced the size of this patch and therefore made it easier to review if the renamings (error-&gt;_error, element-&gt;_element) had been done in a separate patch.

&gt; +- (void)drawRect:(NSRect)rect
&gt; +{
&gt; +    BOOL savedShouldUseFontSmoothing = [WebView _shouldUseFontSmoothing];
&gt; +    // Turn off font smoothing so text draws correctly on a transparent background
&gt; +    [WebView _setShouldUseFontSmoothing:NO];
&gt; +
&gt; +    NSString *text = UI_STRING(&quot;Missing Plug-in&quot;, &quot;Missing Plug-in label&quot;);
&gt; +    NSFont *font = [NSFont boldSystemFontOfSize:TextFontSize];
&gt; +    CGFloat textWidth = [text _web_widthWithFont:font];
&gt; +    CGRect missingPluginRect;
&gt; +    missingPluginRect.size = CGSizeMake(textWidth + RoundedRectLeftRightTextMargin * 2, RoundedRectHeight);
&gt; +    missingPluginRect.origin = CGPointMake(NSWidth(rect) / 2 - NSWidth(missingPluginRect) /2, NSHeight(rect) / 2 - NSHeight(missingPluginRect) / 2);
&gt; +    // Line up to pixel boundaries
&gt; +    missingPluginRect = NSIntegralRect(missingPluginRect);

&gt; +    CGFloat textX = floor(NSWidth(missingPluginRect) / 2) - (textWidth / 2) + NSMinX(missingPluginRect);

This should use CGFloor.

&gt; +    CGFloat drawingFontHeight = [font ascender] - [font descender];
&gt; +    CGFloat textY = NSMinY(missingPluginRect) + drawingFontHeight / 2;
&gt; +    textY = MAX(roundf(textY) - 1, 0);

This should use CGRound.

This calculation of textY doesn&apos;t seem to be correct. If the goal is to visually center arbitrary text in an arbitrary font, then the calculation needs to be essentially (ignoring flipped-ness and assuming ascender and descender are both positive values):

baseline = bottom of text rect + (height of text rect - (ascender + descender)) / 2 + descender.

&gt; +    
&gt; +    // Draw the rounded rect, white fill with 20% opacity

I don&apos;t think commenting on the opacity value here is helpful, since it&apos;s using a symbolic value that just happens to be 20% at this point.

&gt; +static void addRelativeCurveToPoint(CGMutablePathRef path, CGFloat ctrlx1, CGFloat ctrly1, CGFloat ctrlx2, CGFloat ctrly2, CGFloat endx, CGFloat endy)
&gt; +{
&gt; +    CGPoint currentPt = CGPathGetCurrentPoint(path);
&gt; +    ctrlx1 += currentPt.x;
&gt; +    ctrly1 += currentPt.y;
&gt; +    ctrlx2 += currentPt.x;
&gt; +    ctrly2 += currentPt.y;
&gt; +    endx += currentPt.x;
&gt; +    endy += currentPt.y;
&gt; +    CGPathAddCurveToPoint(path, 0, ctrlx1, ctrly1, ctrlx2, ctrly2, endx, endy);
&gt; +}
&gt; +
&gt; +static RetainPtr&lt;CGMutablePathRef&gt; createRoundedRect(CGRect rect, CGFloat radius)
&gt; +{
&gt; +    CGFloat inset = 1;
&gt; +    CGFloat left = rect.origin.x;
&gt; +    CGFloat right = left + rect.size.width;
&gt; +    CGFloat bottom = rect.origin.y;
&gt; +    CGFloat top = bottom + rect.size.height;
&gt; +    
&gt; +    RetainPtr&lt;CGMutablePathRef&gt; path(AdoptCF, CGPathCreateMutable());
&gt; +    
&gt; +    CGPathMoveToPoint(path.get(), 0, left + inset, top - (radius + inset));
&gt; +    
&gt; +    addRelativeCurveToPoint(path.get(), 0, KappaCurve * radius, radius - (KappaCurve * radius), radius, radius, radius);
&gt; +    
&gt; +    CGPathAddLineToPoint(path.get(), 0, right - (radius + inset), top - inset);
&gt; +    addRelativeCurveToPoint(path.get(), KappaCurve * radius, 0, radius, -radius + (KappaCurve * radius), radius, -radius);
&gt; +    
&gt; +    CGPathAddLineToPoint(path.get(), 0, right - inset, bottom + (radius + inset));
&gt; +    addRelativeCurveToPoint(path.get(), 0, -(KappaCurve * radius), -radius + (KappaCurve * radius), -radius, -radius, -radius);
&gt; +    
&gt; +    CGPathAddLineToPoint(path.get(), 0, left + radius + inset, bottom + inset);
&gt; +    addRelativeCurveToPoint(path.get(), KappaCurve * -radius, 0, -radius, radius - (KappaCurve * radius), -radius, radius);
&gt; +    
&gt; +    CGPathCloseSubpath(path.get());
&gt; +    return path;

Is there a cross-platform place where this function and its helper could be put?


r- for the apparently incorrect text placement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201879</commentid>
    <comment_count>3</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-03-19 09:14:19 -0700</bug_when>
    <thetext>Dan Bernstein pointed out that CGFloor and CGRound are not API, so ignore the suggestions to use them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201881</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-19 09:16:15 -0700</bug_when>
    <thetext>I suggest we get rid of the WebNullPluginView class entirely and put the responsibility for this into platform-independent code in WebCore.

One way to do that would be to make a MissingPluginIndicator class in cross-platform code, derived from Widget, to draw the missing plug-in text. This would be a Widget that is not backed by a platform-specific object. Then WebFrameLoaderClient::createPlugin could create this object and not involve an NSView at all.

Another, probably better, way to do it would be to change RenderEmbeddedObject to give it the capability of drawing the missing plug-in text. To do this we would change the argument of FrameLoader::requestObject to be a RenderEmbeddedObject* instead of a RenderPart* and possibly rename it to requestEmbeddedObject. Then do the same thing with the first argument to FrameLoader::loadPlugin. Then inside FrameLoader::loadPlugin we would call RenderEmbeddedObject::setShowsMissingPluginIndicator and add the code to draw the missing plug-in message to the RenderEmbeddedObject class.

The only issue is that our design for missing plug-ins for Safari may not be exactly what other platforms want, so we might want to put #ifdefs or use a theme for the missing plug-in indicator eventually over time, but that’s not needed for the first cut at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201904</commentid>
    <comment_count>5</comment_count>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-19 09:54:59 -0700</bug_when>
    <thetext>These are helpful suggestions thanks. The second solution seems like a better fit here, since widgets are responsible for drawing themselves. I&apos;ll start working a couple small refactoring patches..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201926</commentid>
    <comment_count>6</comment_count>
      <attachid>51167</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-19 10:45:52 -0700</bug_when>
    <thetext>Created attachment 51167
FrameLoader refactoring patch

First step toward eliminating the WebKit WebNullPluginView class. The responsibility for this will soon be in platform-independent code in WebCore. And our plan is to change RenderEmbeddedObject and give it the capability of drawing the missing plug-in text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201932</commentid>
    <comment_count>7</comment_count>
      <attachid>51167</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-19 10:51:09 -0700</bug_when>
    <thetext>Comment on attachment 51167
FrameLoader refactoring patch

Thanks. I think this is a good approach.

&gt; -bool FrameLoader::requestObject(RenderPart* renderer, const String&amp; url, const AtomicString&amp; frameName,
&gt; +bool FrameLoader::requestObject(RenderEmbeddedObject* requestEmbeddedObject, const String&amp; url, const AtomicString&amp; frameName,

The type change here seems good, but I don&apos;t understand why the argument is now named &quot;request embedded object&quot;. That sounds like a sentence, with &quot;request&quot; being a verb. I think that renderer was actually a fine name for the argument. Or we could use &quot;container&quot; or &quot;object&quot;.

The function name &quot;requestObject&quot;, is not good, but you didn&apos;t change that.

&gt; +class RenderEmbeddedObject;
&gt;  class RenderPart;

These functions were the only thing using RenderPart, so I suggest you remove the forward declaration of RenderPart too.

&gt; -    bool requestObject(RenderPart* frame, const String&amp; url, const AtomicString&amp; frameName,
&gt; +    bool requestObject(RenderEmbeddedObject*, const String&amp; url, const AtomicString&amp; frameName,
&gt;          const String&amp; serviceType, const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues);

&gt; -    bool loadPlugin(RenderPart*, const KURL&amp;, const String&amp; mimeType,
&gt; +    bool loadPlugin(RenderEmbeddedObject*, const KURL&amp;, const String&amp; mimeType,
&gt;      const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, bool useFallback);

Indenting is wrong here. You should fix that.

Since the purpose of the patch is primarily renaming and I didn&apos;t like the name change, I&apos;ll say review-, but lets keep going!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201937</commentid>
    <comment_count>8</comment_count>
      <attachid>51169</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-19 11:06:56 -0700</bug_when>
    <thetext>Created attachment 51169
Updated FrameLoader refactoring patch per Darin&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201939</commentid>
    <comment_count>9</comment_count>
      <attachid>51169</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-03-19 11:10:58 -0700</bug_when>
    <thetext>Comment on attachment 51169
Updated FrameLoader refactoring patch per Darin&apos;s feedback.

I know I told you to do that loadPlugin indenting on IRC, but I lied - it should match the requestObject indenting just above.

r=me with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201942</commentid>
    <comment_count>10</comment_count>
      <attachid>51169</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-19 11:12:04 -0700</bug_when>
    <thetext>Comment on attachment 51169
Updated FrameLoader refactoring patch per Darin&apos;s feedback.

&gt; +#include &quot;RenderEmbeddedObject.h&quot;
&gt;  #include &quot;RenderPart.h&quot;
&gt;  #include &quot;RenderView.h&quot;
&gt;  #include &quot;RenderWidget.h&quot;

No need for the RenderPart.h or RenderWidget.h includes, since RenderEmbeddedObject.h includes both of them.

&gt; -    bool loadPlugin(RenderPart*, const KURL&amp;, const String&amp; mimeType,
&gt; -    const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, bool useFallback);
&gt; +    bool loadPlugin(RenderEmbeddedObject*, const KURL&amp;, const String&amp; mimeType,
&gt; +                    const Vector&lt;String&gt;&amp; paramNames, const Vector&lt;String&gt;&amp; paramValues, bool useFallback);

It&apos;s supposed to be indented one tab stop (4 spaces), not lined up with the parenthesis.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202260</commentid>
    <comment_count>11</comment_count>
      <attachid>51239</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-20 18:24:36 -0700</bug_when>
    <thetext>Created attachment 51239
Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, and gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202293</commentid>
    <comment_count>12</comment_count>
      <attachid>51249</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-21 10:52:55 -0700</bug_when>
    <thetext>Created attachment 51249
Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, and gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202294</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-21 10:53:22 -0700</bug_when>
    <thetext>Attachment 51249 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 13 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>202295</commentid>
    <comment_count>14</comment_count>
      <attachid>51250</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-21 10:55:20 -0700</bug_when>
    <thetext>Created attachment 51250
Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, and gtk 

Now without tabs...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202296</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-21 10:58:53 -0700</bug_when>
    <thetext>Attachment 51250 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 13 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>202359</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-21 16:06:29 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=51250) [details]
&gt; Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win,
&gt; chromium, and gtk 

Can you add this hunk for the Qt port, too? :)

--- a/WebCore/platform/qt/Localizations.cpp
+++ b/WebCore/platform/qt/Localizations.cpp
@@ -524,5 +524,10 @@ String validationMessageStepMismatchText()
     return String();
 }
 
+String missingPluginText()
+{
+    return QCoreApplication::translate(&quot;QWebPage&quot;, &quot;Missing Plugin&quot;, &quot;Label text to be used when a plugin is missing&quot;);
+}
+
 }
 // vim: ts=4 sw=4 et</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202529</commentid>
    <comment_count>17</comment_count>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 09:17:23 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; Created an attachment (id=51250) [details] [details]
&gt; &gt; Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win,
&gt; &gt; chromium, and gtk 
&gt; 
&gt; Can you add this hunk for the Qt port, too? :)
&gt; 
&gt; --- a/WebCore/platform/qt/Localizations.cpp
&gt; +++ b/WebCore/platform/qt/Localizations.cpp
&gt; @@ -524,5 +524,10 @@ String validationMessageStepMismatchText()
&gt;      return String();
&gt;  }
&gt; 
&gt; +String missingPluginText()
&gt; +{
&gt; +    return QCoreApplication::translate(&quot;QWebPage&quot;, &quot;Missing Plugin&quot;, &quot;Label
&gt; text to be used when a plugin is missing&quot;);
&gt; +}
&gt; +
&gt;  }
&gt;  // vim: ts=4 sw=4 et

Thanks a lot, Simon!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202530</commentid>
    <comment_count>18</comment_count>
      <attachid>51292</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 09:18:31 -0700</bug_when>
    <thetext>Created attachment 51292
Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, gtk, and qt

Now incorporates Simon&apos;s above change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202531</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-22 09:19:24 -0700</bug_when>
    <thetext>Attachment 51292 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/qt/Localizations.cpp:356:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
WebCore/platform/qt/Localizations.cpp:357:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 2 in 14 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>202536</commentid>
    <comment_count>20</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-03-22 09:21:42 -0700</bug_when>
    <thetext>Is it OK that the qt port uses &quot;Plugin&quot; while the others all use &quot;Plug-in&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202541</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-03-22 09:25:52 -0700</bug_when>
    <thetext>Attachment 51292 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1055079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202544</commentid>
    <comment_count>22</comment_count>
      <attachid>51292</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-03-22 09:29:05 -0700</bug_when>
    <thetext>Comment on attachment 51292
Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, gtk, and qt

r+ if you fix the qt build breakage and style warning by not splitting the string across multiple lines, and change &quot;Plug-in&quot; to &quot;Plugin&quot; for the qt build also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202546</commentid>
    <comment_count>23</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2010-03-22 09:30:26 -0700</bug_when>
    <thetext>Oops, I meant &quot;change Plugin to Plug-in&quot;, obviously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202565</commentid>
    <comment_count>24</comment_count>
      <attachid>51300</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 10:10:13 -0700</bug_when>
    <thetext>Created attachment 51300
Add code to draw a subtle rounded rectangle containing the text &quot;Missing Plug-in&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202582</commentid>
    <comment_count>25</comment_count>
      <attachid>51300</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-22 10:31:28 -0700</bug_when>
    <thetext>Comment on attachment 51300
Add code to draw a subtle rounded rectangle containing the text &quot;Missing Plug-in&quot;

&gt; Index: rendering/RenderEmbeddedObject.h
&gt; ===================================================================
&gt; --- rendering/RenderEmbeddedObject.h	(revision 56339)
&gt; +++ rendering/RenderEmbeddedObject.h	(working copy)
&gt; @@ -34,12 +34,15 @@
&gt;      virtual ~RenderEmbeddedObject();
&gt;  
&gt;      void updateWidget(bool onlyCreateNonNetscapePlugins);
&gt; +    void setShowsMissingPluginIndicator() { m_showsMissingPluginIndicator = true; }

This needs an associated getter (which should be const).

&gt; +    void paint(PaintInfo&amp; paintInfo, int tx, int ty);

I think you should override paintReplaced.

&gt;  private:
&gt; +    bool m_showsMissingPluginIndicator;

Please put this after the private methods.

r- because it should override paintReplaced().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202662</commentid>
    <comment_count>26</comment_count>
      <attachid>51323</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 11:57:18 -0700</bug_when>
    <thetext>Created attachment 51323
Add code to draw a subtle rounded rectangle containing the text &quot;Missing Plug-in&quot;

Incorporates above feedback from Simon Fraser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202668</commentid>
    <comment_count>27</comment_count>
      <attachid>51326</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 12:09:35 -0700</bug_when>
    <thetext>Created attachment 51326
Add code to draw a subtle rounded rectangle containing the text &quot;Missing Plug-in&quot;

Added a few more small tweaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202678</commentid>
    <comment_count>28</comment_count>
      <attachid>51326</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-22 12:20:02 -0700</bug_when>
    <thetext>Comment on attachment 51326
Add code to draw a subtle rounded rectangle containing the text &quot;Missing Plug-in&quot;

&gt; +    virtual void paint(PaintInfo&amp; paintInfo, int tx, int ty);

Should omit the argument name paintInfo here.

&gt; +    tx += borderLeft() + paddingLeft();
&gt; +    ty += borderTop() + paddingTop();
&gt; +    FloatRect pluginRect = FloatRect(tx, ty, contentWidth(), contentHeight());

It&apos;d be cleaner not to modify the passed-in tx and ty here. I suggest writing this like this:

    FloatRect pluginRect = contentBoxRect();
    pluginRect.move(tx, ty);

This accomplishes the same thing and reads a bit cleaner to me.

&gt; +    fontDescription.setFontSmoothing(Antialiased);

I don&apos;t understand why the setFontSmoothing call is needed here.

&gt; +    FloatRect missingPluginRect = FloatRect();

The &quot;= FloatRect()&quot; is not needed. That&apos;s the same thing you&apos;d get if you didn&apos;t explicitly initialize it.

&gt; +    FloatPoint labelPoint = FloatPoint();

Same here.

&gt; +    labelPoint.setX(roundf(missingPluginRect.location().x() + (missingPluginRect.size().width() - textWidth) / 2));
&gt; +    labelPoint.setY(floorf(missingPluginRect.location().y()+ (missingPluginRect.size().height() - font.height()) / 2 + font.ascent()));

I think this would read better if you just use the constructor:

    FloatPoint labelPoint(roundf(missingPluginRect.location().x() + (missingPluginRect.size().width() - textWidth) / 2)),
        floorf(missingPluginRect.location().y()+ (missingPluginRect.size().height() - font.height()) / 2 + font.ascent()));

I don&apos;t understand the use of floorf instead of roundf for the Y coordinate.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202698</commentid>
    <comment_count>29</comment_count>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 12:35:29 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 51326 [details])
&gt; &gt; +    virtual void paint(PaintInfo&amp; paintInfo, int tx, int ty);
&gt; 
&gt; Should omit the argument name paintInfo here.
&gt; 
&gt; &gt; +    tx += borderLeft() + paddingLeft();
&gt; &gt; +    ty += borderTop() + paddingTop();
&gt; &gt; +    FloatRect pluginRect = FloatRect(tx, ty, contentWidth(), contentHeight());
&gt; 
&gt; It&apos;d be cleaner not to modify the passed-in tx and ty here. I suggest writing
&gt; this like this:
&gt; 
&gt;     FloatRect pluginRect = contentBoxRect();
&gt;     pluginRect.move(tx, ty);

I like that much better too, thanks!
&gt; 
&gt; This accomplishes the same thing and reads a bit cleaner to me.
&gt; 
&gt; &gt; +    fontDescription.setFontSmoothing(Antialiased);
&gt; 

At the time I wrote this code I thought I needed this. Testing before/after shows no visual difference. Removed.

&gt; &gt; +    FloatRect missingPluginRect = FloatRect();
&gt; 
&gt; The &quot;= FloatRect()&quot; is not needed. That&apos;s the same thing you&apos;d get if you
&gt; didn&apos;t explicitly initialize it.

Done.

&gt; 
&gt; &gt; +    FloatPoint labelPoint = FloatPoint();
&gt; 

Same here!
&gt; 
&gt; &gt; +    labelPoint.setX(roundf(missingPluginRect.location().x() + (missingPluginRect.size().width() - textWidth) / 2));
&gt; &gt; +    labelPoint.setY(floorf(missingPluginRect.location().y()+ (missingPluginRect.size().height() - font.height()) / 2 + font.ascent()));
&gt; 
&gt; I think this would read better if you just use the constructor:
&gt; 
&gt;     FloatPoint labelPoint(roundf(missingPluginRect.location().x() +
&gt; (missingPluginRect.size().width() - textWidth) / 2)),
&gt;         floorf(missingPluginRect.location().y()+
&gt; (missingPluginRect.size().height() - font.height()) / 2 + font.ascent()));

It wasn&apos;t as unwieldy as I thought it would be. Done!

&gt; 
&gt; I don&apos;t understand the use of floorf instead of roundf for the Y coordinate.

Fixed. They both should be the same.

Thanks for the awesome suggestions!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202723</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-22 13:20:09 -0700</bug_when>
    <thetext>This broke the leopard compile. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202730</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-22 13:32:48 -0700</bug_when>
    <thetext>I&apos;ll start a rollout in a minute unless I hear otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202731</commentid>
    <comment_count>32</comment_count>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 13:34:57 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; I&apos;ll start a rollout in a minute unless I hear otherwise.


working on a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202741</commentid>
    <comment_count>33</comment_count>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 13:49:36 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; I&apos;ll start a rollout in a minute unless I hear otherwise.
&gt; 
&gt; 
&gt; working on a fix.

(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; I&apos;ll start a rollout in a minute unless I hear otherwise.
&gt; 
&gt; 
&gt; working on a fix.

Fixed in http://trac.webkit.org/changeset/56357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202752</commentid>
    <comment_count>34</comment_count>
      <attachid>51352</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 14:18:17 -0700</bug_when>
    <thetext>Created attachment 51352
Eliminate WebNullPluginView from Mac OS X WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202781</commentid>
    <comment_count>35</comment_count>
      <attachid>51361</attachid>
    <who name="Kevin Decker">kdecker</who>
    <bug_when>2010-03-22 14:57:17 -0700</bug_when>
    <thetext>Created attachment 51361
51352: Eliminate WebNullPluginView from Mac OS X WebKit

Fix a find/replace Xcode mistake..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202786</commentid>
    <comment_count>36</comment_count>
      <attachid>51361</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-22 15:03:43 -0700</bug_when>
    <thetext>Comment on attachment 51361
51352: Eliminate WebNullPluginView from Mac OS X WebKit

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 56360)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,21 @@
&gt; +2010-03-22  Kevin Decker  &lt;kdecker@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=36328
&gt; +
&gt; +        * rendering/RenderEmbeddedObject.cpp:
&gt; +        (WebCore::RenderEmbeddedObject::RenderEmbeddedObject): Fix a find/repalce mistake from my earlier patrch.

2 typos on that line.

&gt; +        (WebCore::RenderEmbeddedObject::paint):Fix a find/repalce mistake from my earlier patrch.

Ditto.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203584</commentid>
    <comment_count>37</comment_count>
      <attachid>51169</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-24 14:30:59 -0700</bug_when>
    <thetext>Comment on attachment 51169
Updated FrameLoader refactoring patch per Darin&apos;s feedback.

Cleared Brady Eidson&apos;s review+ from obsolete attachment 51169 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51104</attachid>
            <date>2010-03-18 15:40:13 -0700</date>
            <delta_ts>2010-03-19 11:06:56 -0700</delta_ts>
            <desc>updated design</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13711</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1NjE5NikKKysrIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQz
LDYgQEAKIAkJOTM5ODEwQjAwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRhaW5lclBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
ODM2RjVFMDdFRTQyNTkwMDY4MkY5NSAvKiBXZWJQbHVnaW5Db250YWluZXJQcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5ODEwQjEw
ODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUxMTUwMzA3RUZGRUJGMDA5QjhC
RjcgLyogV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2suaCAqLzsgfTsKIAkJOTM5ODEwQjUwODI0QkYw
MTAwOERGMDM4IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwubmliIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ1RDE3QjAzNjVCRjM1MDA4NjM1Q0Ug
LyogV2ViQXV0aGVudGljYXRpb25QYW5lbC5uaWIgKi87IH07Ci0JCTkzOTgxMEI2MDgyNEJGMDEw
MDhERjAzOCAvKiBudWxscGx1Z2luLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODgzQkRFMDI1RTVDNkEwMTAwMDEwMiAvKiBudWxscGx1Z2lu
LnRpZmYgKi87IH07CiAJCTkzOTgxMEI3MDgyNEJGMDEwMDhERjAzOCAvKiB1cmxfaWNvbi50aWZm
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUI2NzEz
MDAyM0VERjg5MDFDMUE1MjUgLyogdXJsX2ljb24udGlmZiAqLzsgfTsKIAkJOTM5ODEwQkEwODI0
QkYwMTAwOERGMDM4IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjVGQkRDMDdEODI5QUUwMDE1OTg2MiAv
KiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9OwogCQk5Mzk4MTBCQzA4MjRCRjAxMDA4REYw
MzggLyogV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzk0NDYwN0UwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkJhY2tGb3J3
YXJkTGlzdC5tbSAqLzsgfTsKQEAgLTY3Miw3ICs2NzEsNiBAQAogCQlGNTM0NDRDRTAyRTg3Q0JB
MDE4NjM1Q0EgLyogV2ViS2l0U3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MzQ0NENGMDJF
ODdDQkEwMTg2MzVDQSAvKiBXZWJLaXRTdGF0aXN0aWNzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViS2l0U3RhdGlzdGljcy5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUz
NDQ0RDIwMkU4N0Q0QjAxODYzNUNBIC8qIFdlYktpdFN0YXRpc3RpY3NQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0U3RhdGlz
dGljc1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07Ci0JCUY1ODgzQkRFMDI1RTVDNkEwMTAwMDEwMiAvKiBudWxscGx1Z2luLnRp
ZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFn
ZS50aWZmOyBwYXRoID0gbnVsbHBsdWdpbi50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNTg4M0JFMDAyNUU1RTlEMDEwMDAxMDIgLyogV2ViTnVsbFBsdWdpblZpZXcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOdWxsUGx1
Z2luVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJRjU4ODNCRTEwMjVFNUU5RDAxMDAwMTAyIC8qIFdlYk51bGxQbHVnaW5WaWV3
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJOdWxsUGx1Z2luVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1OTI3RDRFMDJEMjZDNUUwMUNBMkRCQiAvKiBX
ZWJLaXRFcnJvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJLaXRFcnJvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC03OTksNyArNzk3LDYgQEAKIAkJCQk5MzI1RkJEQzA3
RDgyOUFFMDAxNTk4NjIgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLywKIAkJCQk5Mzk4MTEz
MjA4MjRCRjAxMDA4REYwMzggLyogSW5mby5wbGlzdCAqLywKIAkJCQk1REU4M0E3RDBEMEY3RkFE
MDBDQUQxMkEgLyogTG9jYWxpemFibGUuc3RyaW5ncyAqLywKLQkJCQlGNTg4M0JERTAyNUU1QzZB
MDEwMDAxMDIgLyogbnVsbHBsdWdpbi50aWZmICovLAogCQkJCUVEM0I0OERFMENDNTFGN0UwMERG
RjFFQiAvKiBTdHJpbmdzTm90VG9CZUxvY2FsaXplZC50eHQgKi8sCiAJCQkJRjVCNjcxMzAwMjNF
REY4OTAxQzFBNTI1IC8qIHVybF9pY29uLnRpZmYgKi8sCiAJCQkJNURFODNBNzQwRDBGN0Y5NDAw
Q0FEMTJBIC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIgKi8sCkBAIC0xNjIxLDcg
KzE2MTgsNiBAQAogCQkJZmlsZXMgPSAoCiAJCQkJOTM5ODEwQkEwODI0QkYwMTAwOERGMDM4IC8q
IElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovLAogCQkJCTVERTgzQTdGMEQw
RjdGQUQwMENBRDEyQSAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzIGluIFJlc291cmNlcyAqLywKLQkJ
CQk5Mzk4MTBCNjA4MjRCRjAxMDA4REYwMzggLyogbnVsbHBsdWdpbi50aWZmIGluIFJlc291cmNl
cyAqLywKIAkJCQk5Mzk4MTBCNzA4MjRCRjAxMDA4REYwMzggLyogdXJsX2ljb24udGlmZiBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQjUwODI0QkYwMTAwOERGMDM4IC8qIFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubmliIGluIFJlc291cmNlcyAqLywKIAkJCQk1REU4M0E3QTBEMEY3Rjk0MDBD
QUQxMkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8s
CkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjE5
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTAz
LTE4ICBLZXZpbiBEZWNrZXIgIDxrZGVja2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzYzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc2MDUzNDE+IE1p
c3NpbmcgcGx1Zy1pbnMgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGJ5IHRleHQgb25seSwgaW5zdGVh
ZCBvZiBsZWdvIGJsb2NrCisgICAgICAgIAorICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxp
emFibGUuc3RyaW5nczogVXBkYXRlZCBsb2NhbGl6YWJsZSBzdHJpbmdzLgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIG51bGwgcGx1Zy1pbiBpY29u
LgorCiAyMDEwLTAzLTE4ICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2Jp
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRl
eDogbWFjL1BsdWdpbnMvV2ViTnVsbFBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFjL1Bs
dWdpbnMvV2ViTnVsbFBsdWdpblZpZXcubW0JKHJldmlzaW9uIDU2MTk2KQorKysgbWFjL1BsdWdp
bnMvV2ViTnVsbFBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDQ5ICszMSw1NiBA
QAogI2ltcG9ydCAiRE9NRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGluZy5oIgogI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgorI2lt
cG9ydCAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCisjaW1wb3J0ICJXZWJLaXROU1N0cmluZ0V4
dHJhcy5oIgogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Rv
Y3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KIAorc3RhdGljIGNvbnN0IENH
RmxvYXQgVGV4dEJhc2VsaW5lRnJvbVRvcCA9IDEzOworc3RhdGljIGNvbnN0IENHRmxvYXQgVGV4
dENhbGlicmF0ZWRXaGl0ZSA9IDE7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBUZXh0Rm9udFNpemUg
PSAxMTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFRleHRPcGFjaXR5ID0gMC41NTsKKworc3RhdGlj
IGNvbnN0IENHRmxvYXQgS2FwcGFDdXJ2ZSA9IDAuNTUyMjg7CitzdGF0aWMgY29uc3QgQ0dGbG9h
dCBSb3VuZGVkUmVjdEJhY2tncm91bmRGaWxsQ2FsaWJyYXRlZFdoaXRlID0gMTsKK3N0YXRpYyBj
b25zdCBDR0Zsb2F0IFJvdW5kZWRSZWN0QmFja2dyb3VuZE9wYWNpdHkgPSAwLjI7CitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBSb3VuZGVkUmVjdEhlaWdodCA9IDE4Oworc3RhdGljIGNvbnN0IENHRmxv
YXQgUm91bmRlZFJlY3RMZWZ0UmlnaHRUZXh0TWFyZ2luID0gNjsKK3N0YXRpYyBjb25zdCBDR0Zs
b2F0IFJvdW5kZWRSZWN0UmFkaXVzID0gNTsKKworc3RhdGljIHZvaWQgYWRkUmVsYXRpdmVDdXJ2
ZVRvUG9pbnQoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBDR0Zsb2F0IGN0cmx4MSwgQ0dGbG9hdCBj
dHJseTEsIENHRmxvYXQgY3RybHgyLCBDR0Zsb2F0IGN0cmx5MiwgQ0dGbG9hdCBlbmR4LCBDR0Zs
b2F0IGVuZHkpOworc3RhdGljIFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPiBjcmVhdGVSb3Vu
ZGVkUmVjdChDR1JlY3QgcmVjdCwgQ0dGbG9hdCByYWRpdXMpOworCiBAaW1wbGVtZW50YXRpb24g
V2ViTnVsbFBsdWdpblZpZXcKIAogLSBpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZXJyb3I6
KE5TRXJyb3IgKillcnIgRE9NRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW0KLXsgICAgCi0gICAg
c3RhdGljIE5TSW1hZ2UgKm51bGxQbHVnSW5JbWFnZTsKLSAgICBpZiAoIW51bGxQbHVnSW5JbWFn
ZSkgewotICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNz
OltXZWJOdWxsUGx1Z2luVmlldyBjbGFzc11dOwotICAgICAgICBOU1N0cmluZyAqaW1hZ2VQYXRo
ID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJudWxscGx1Z2luIiBvZlR5cGU6QCJ0aWZmIl07
Ci0gICAgICAgIG51bGxQbHVnSW5JbWFnZSA9IFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250
ZW50c09mRmlsZTppbWFnZVBhdGhdOwotICAgIH0KLSAgICAKK3sgICAgICAgIAogICAgIHNlbGYg
PSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgZXJyb3IgPSBbZXJyIHJldGFpbl07CisgICAgX2Vycm9yID0gW2Vy
ciByZXRhaW5dOwogICAgIGlmIChlcnIpCi0gICAgICAgIGVsZW1lbnQgPSBbZWxlbSByZXRhaW5d
OworICAgICAgICBfZWxlbWVudCA9IFtlbGVtIHJldGFpbl07CiAKLSAgICBbc2VsZiBzZXRJbWFn
ZTpudWxsUGx1Z0luSW1hZ2VdOwotCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVh
bGxvYwotCiB7Ci0gICAgW2Vycm9yIHJlbGVhc2VdOwotICAgIFtlbGVtZW50IHJlbGVhc2VdOwor
ICAgIFtfZXJyb3IgcmVsZWFzZV07CisgICAgW19lbGVtZW50IHJlbGVhc2VdOwogICAgIFtzdXBl
ciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClyZXBvcnRGYWlsdXJlCiB7Ci0gICAgTlNFcnJvciAq
bG9jYWxFcnJvciA9IGVycm9yOwotICAgIERPTUVsZW1lbnQgKmxvY2FsRWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgTlNFcnJvciAqbG9jYWxFcnJvciA9IF9lcnJvcjsKKyAgICBET01FbGVtZW50ICps
b2NhbEVsZW1lbnQgPSBfZWxlbWVudDsKIAotICAgIGVycm9yID0gbmlsOwotICAgIGVsZW1lbnQg
PSBuaWw7CisgICAgX2Vycm9yID0gbmlsOworICAgIF9lbGVtZW50ID0gbmlsOwogCiAgICAgV2Vi
RnJhbWUgKndlYkZyYW1lID0ga2l0KGNvcmUobG9jYWxFbGVtZW50KS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSk7CiAgICAgaWYgKHdlYkZyYW1lKSB7CkBAIC05MCwxMSArOTcsODYgQEAKIAogLSAodm9p
ZCl2aWV3RGlkTW92ZVRvV2luZG93CiB7Ci0gICAgaWYgKCFlcnJvcikKKyAgICBpZiAoIV9lcnJv
cikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFtzZWxmIHdpbmRvd10pCiAgICAgICAgIFtz
ZWxmIHJlcG9ydEZhaWx1cmVdOwogfQogCistICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpcmVjdAor
eworICAgIEJPT0wgc2F2ZWRTaG91bGRVc2VGb250U21vb3RoaW5nID0gW1dlYlZpZXcgX3Nob3Vs
ZFVzZUZvbnRTbW9vdGhpbmddOworICAgIC8vIFR1cm4gb2ZmIGZvbnQgc21vb3RoaW5nIHNvIHRl
eHQgZHJhd3MgY29ycmVjdGx5IG9uIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZAorICAgIFtXZWJW
aWV3IF9zZXRTaG91bGRVc2VGb250U21vb3RoaW5nOk5PXTsKKworICAgIE5TU3RyaW5nICp0ZXh0
ID0gVUlfU1RSSU5HKCJNaXNzaW5nIFBsdWctaW4iLCAiTWlzc2luZyBQbHVnLWluIGxhYmVsIik7
CisgICAgTlNGb250ICpmb250ID0gW05TRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZTpUZXh0Rm9u
dFNpemVdOworICAgIENHRmxvYXQgdGV4dFdpZHRoID0gW3RleHQgX3dlYl93aWR0aFdpdGhGb250
OmZvbnRdOworICAgIENHUmVjdCBtaXNzaW5nUGx1Z2luUmVjdDsKKyAgICBtaXNzaW5nUGx1Z2lu
UmVjdC5zaXplID0gQ0dTaXplTWFrZSh0ZXh0V2lkdGggKyBSb3VuZGVkUmVjdExlZnRSaWdodFRl
eHRNYXJnaW4gKiAyLCBSb3VuZGVkUmVjdEhlaWdodCk7CisgICAgbWlzc2luZ1BsdWdpblJlY3Qu
b3JpZ2luID0gQ0dQb2ludE1ha2UoTlNXaWR0aChyZWN0KSAvIDIgLSBOU1dpZHRoKG1pc3NpbmdQ
bHVnaW5SZWN0KSAvMiwgTlNIZWlnaHQocmVjdCkgLyAyIC0gTlNIZWlnaHQobWlzc2luZ1BsdWdp
blJlY3QpIC8gMik7CisgICAgLy8gTGluZSB1cCB0byBwaXhlbCBib3VuZGFyaWVzCisgICAgbWlz
c2luZ1BsdWdpblJlY3QgPSBOU0ludGVncmFsUmVjdChtaXNzaW5nUGx1Z2luUmVjdCk7CisgICAg
Q0dGbG9hdCB0ZXh0WCA9IGZsb29yKE5TV2lkdGgobWlzc2luZ1BsdWdpblJlY3QpIC8gMikgLSAo
dGV4dFdpZHRoIC8gMikgKyBOU01pblgobWlzc2luZ1BsdWdpblJlY3QpOworICAgIENHRmxvYXQg
ZHJhd2luZ0ZvbnRIZWlnaHQgPSBbZm9udCBhc2NlbmRlcl0gLSBbZm9udCBkZXNjZW5kZXJdOwor
ICAgIENHRmxvYXQgdGV4dFkgPSBOU01pblkobWlzc2luZ1BsdWdpblJlY3QpICsgZHJhd2luZ0Zv
bnRIZWlnaHQgLyAyOworICAgIHRleHRZID0gTUFYKHJvdW5kZih0ZXh0WSkgLSAxLCAwKTsKKyAg
ICAKKyAgICAvLyBEcmF3IHRoZSByb3VuZGVkIHJlY3QsIHdoaXRlIGZpbGwgd2l0aCAyMCUgb3Bh
Y2l0eQorICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q0dDb250ZXh0UmVm
PihbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdKTsgCisg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsgCisgICAgUmV0YWluUHRyPENHTXV0YWJs
ZVBhdGhSZWY+IHJvdW5kZWRGaWxsUGF0aCA9IGNyZWF0ZVJvdW5kZWRSZWN0KG1pc3NpbmdQbHVn
aW5SZWN0LCBSb3VuZGVkUmVjdFJhZGl1cyk7IAorICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250
ZXh0KTsgCisgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCByb3VuZGVkRmlsbFBhdGguZ2V0
KCkpOyAKKyAgICBDR0NvbnRleHRDbG9zZVBhdGgoY29udGV4dCk7IAorICAgIENHQ29udGV4dFNl
dEdyYXlGaWxsQ29sb3IoY29udGV4dCwgUm91bmRlZFJlY3RCYWNrZ3JvdW5kRmlsbENhbGlicmF0
ZWRXaGl0ZSwgUm91bmRlZFJlY3RCYWNrZ3JvdW5kT3BhY2l0eSk7IAorICAgIENHQ29udGV4dEZp
bGxQYXRoKGNvbnRleHQpOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7Cisg
ICAgCisgICAgLy8gTm93IGRyYXcgdGhlIHRleHQKKyAgICBbdGV4dCBfd2ViX2RyYXdBdFBvaW50
Ok5TTWFrZVBvaW50KHRleHRYLCB0ZXh0WSkgZm9udDpmb250IHRleHRDb2xvcjpbTlNDb2xvciBj
b2xvcldpdGhDYWxpYnJhdGVkV2hpdGU6MCBhbHBoYTpUZXh0T3BhY2l0eV1dOworICAgIAorICAg
IFtXZWJWaWV3IF9zZXRTaG91bGRVc2VGb250U21vb3RoaW5nOnNhdmVkU2hvdWxkVXNlRm9udFNt
b290aGluZ107Cit9CisKIEBlbmQKKworc3RhdGljIHZvaWQgYWRkUmVsYXRpdmVDdXJ2ZVRvUG9p
bnQoQ0dNdXRhYmxlUGF0aFJlZiBwYXRoLCBDR0Zsb2F0IGN0cmx4MSwgQ0dGbG9hdCBjdHJseTEs
IENHRmxvYXQgY3RybHgyLCBDR0Zsb2F0IGN0cmx5MiwgQ0dGbG9hdCBlbmR4LCBDR0Zsb2F0IGVu
ZHkpCit7CisgICAgQ0dQb2ludCBjdXJyZW50UHQgPSBDR1BhdGhHZXRDdXJyZW50UG9pbnQocGF0
aCk7CisgICAgY3RybHgxICs9IGN1cnJlbnRQdC54OworICAgIGN0cmx5MSArPSBjdXJyZW50UHQu
eTsKKyAgICBjdHJseDIgKz0gY3VycmVudFB0Lng7CisgICAgY3RybHkyICs9IGN1cnJlbnRQdC55
OworICAgIGVuZHggKz0gY3VycmVudFB0Lng7CisgICAgZW5keSArPSBjdXJyZW50UHQueTsKKyAg
ICBDR1BhdGhBZGRDdXJ2ZVRvUG9pbnQocGF0aCwgMCwgY3RybHgxLCBjdHJseTEsIGN0cmx4Miwg
Y3RybHkyLCBlbmR4LCBlbmR5KTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR011dGFibGVQYXRo
UmVmPiBjcmVhdGVSb3VuZGVkUmVjdChDR1JlY3QgcmVjdCwgQ0dGbG9hdCByYWRpdXMpCit7Cisg
ICAgQ0dGbG9hdCBpbnNldCA9IDE7CisgICAgQ0dGbG9hdCBsZWZ0ID0gcmVjdC5vcmlnaW4ueDsK
KyAgICBDR0Zsb2F0IHJpZ2h0ID0gbGVmdCArIHJlY3Quc2l6ZS53aWR0aDsKKyAgICBDR0Zsb2F0
IGJvdHRvbSA9IHJlY3Qub3JpZ2luLnk7CisgICAgQ0dGbG9hdCB0b3AgPSBib3R0b20gKyByZWN0
LnNpemUuaGVpZ2h0OworICAgIAorICAgIFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPiBwYXRo
KEFkb3B0Q0YsIENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgCisgICAgQ0dQYXRoTW92ZVRv
UG9pbnQocGF0aC5nZXQoKSwgMCwgbGVmdCArIGluc2V0LCB0b3AgLSAocmFkaXVzICsgaW5zZXQp
KTsKKyAgICAKKyAgICBhZGRSZWxhdGl2ZUN1cnZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBLYXBw
YUN1cnZlICogcmFkaXVzLCByYWRpdXMgLSAoS2FwcGFDdXJ2ZSAqIHJhZGl1cyksIHJhZGl1cywg
cmFkaXVzLCByYWRpdXMpOworICAgIAorICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0
KCksIDAsIHJpZ2h0IC0gKHJhZGl1cyArIGluc2V0KSwgdG9wIC0gaW5zZXQpOworICAgIGFkZFJl
bGF0aXZlQ3VydmVUb1BvaW50KHBhdGguZ2V0KCksIEthcHBhQ3VydmUgKiByYWRpdXMsIDAsIHJh
ZGl1cywgLXJhZGl1cyArIChLYXBwYUN1cnZlICogcmFkaXVzKSwgcmFkaXVzLCAtcmFkaXVzKTsK
KyAgICAKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCByaWdodCAtIGlu
c2V0LCBib3R0b20gKyAocmFkaXVzICsgaW5zZXQpKTsKKyAgICBhZGRSZWxhdGl2ZUN1cnZlVG9Q
b2ludChwYXRoLmdldCgpLCAwLCAtKEthcHBhQ3VydmUgKiByYWRpdXMpLCAtcmFkaXVzICsgKEth
cHBhQ3VydmUgKiByYWRpdXMpLCAtcmFkaXVzLCAtcmFkaXVzLCAtcmFkaXVzKTsKKyAgICAKKyAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBsZWZ0ICsgcmFkaXVzICsgaW5z
ZXQsIGJvdHRvbSArIGluc2V0KTsKKyAgICBhZGRSZWxhdGl2ZUN1cnZlVG9Qb2ludChwYXRoLmdl
dCgpLCBLYXBwYUN1cnZlICogLXJhZGl1cywgMCwgLXJhZGl1cywgcmFkaXVzIC0gKEthcHBhQ3Vy
dmUgKiByYWRpdXMpLCAtcmFkaXVzLCByYWRpdXMpOworICAgIAorICAgIENHUGF0aENsb3NlU3Vi
cGF0aChwYXRoLmdldCgpKTsKKyAgICByZXR1cm4gcGF0aDsKK30KSW5kZXg6IG1hYy9QbHVnaW5z
L1dlYk51bGxQbHVnaW5WaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFjL1BsdWdpbnMvV2ViTnVsbFBs
dWdpblZpZXcuaAkocmV2aXNpb24gNTYxOTYpCisrKyBtYWMvUGx1Z2lucy9XZWJOdWxsUGx1Z2lu
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTIgQEAKICAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgotCiBAY2xhc3MgRE9NRWxlbWVudDsKIAot
QGludGVyZmFjZSBXZWJOdWxsUGx1Z2luVmlldyA6IE5TSW1hZ2VWaWV3CitAaW50ZXJmYWNlIFdl
Yk51bGxQbHVnaW5WaWV3IDogTlNWaWV3CiB7Ci0gICAgTlNFcnJvciAqZXJyb3I7Ci0gICAgRE9N
RWxlbWVudCAqZWxlbWVudDsKKyAgICBOU0Vycm9yICpfZXJyb3I7CisgICAgRE9NRWxlbWVudCAq
X2VsZW1lbnQ7CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBlcnJvcjoo
TlNFcnJvciAqKWVycm9yIERPTUVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50OwpJbmRleDog
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjE5
NikKKysrIG1hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAx
MC0wMy0xOCAgS2V2aW4gRGVja2VyICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM2MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjA1MzQx
PiBNaXNzaW5nIHBsdWctaW5zIHNob3VsZCBiZSByZXByZXNlbnRlZCBieSB0ZXh0IG9ubHksIGlu
c3RlYWQgb2YgbGVnbyBibG9jaworCisgICAgICAgICogUGx1Z2lucy9XZWJOdWxsUGx1Z2luVmll
dy5oOiBObyBsb25nZXIgYSBzdWJjbGFzcyBvZiBOU0ltYWdlVmlldy4gQWxzbyB1cGRhdGVkIHN0
eWxlIGJ5IGFkZGluZyB1bmRlcnNjb3JlcyB0byBpdmFycy4gCisgICAgICAgICogUGx1Z2lucy9X
ZWJOdWxsUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTnVsbFBsdWdpblZpZXcgaW5pdFdp
dGhGcmFtZTplcnJvcjpET01FbGVtZW50Ol0pOiBFbGltaW5hdGUgLVtOU0ltYWdlVmlldyBzZXRJ
bWFnZTpdIHJlbGF0ZWQgY29kZS4KKyAgICAgICAgKC1bV2ViTnVsbFBsdWdpblZpZXcgZGVhbGxv
Y10pOiBpdmFycyBub3cgaGF2ZSB1bmRlcnNjb3Jlczsgbm8gcmVhbCBjb2RlIGNoYW5nZXMuCisg
ICAgICAgICgtW1dlYk51bGxQbHVnaW5WaWV3IHJlcG9ydEZhaWx1cmVdKTogRGl0dG8KKyAgICAg
ICAgKC1bV2ViTnVsbFBsdWdpblZpZXcgdmlld0RpZE1vdmVUb1dpbmRvd10pOiBEaXR0by4KKyAg
ICAgICAgKC1bV2ViTnVsbFBsdWdpblZpZXcgZHJhd1JlY3Q6XSk6IERyYXcgYSBzdWJ0bGUgcm91
bmRlZCByZWN0YW5nbGUgY29udGFpbmluZyB0aGUgd29yZHMgIk1pc3NpbmcgUGx1Zy1pbi4iCisg
ICAgICAgIChhZGRSZWxhdGl2ZUN1cnZlVG9Qb2ludCk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKGNyZWF0ZVJvdW5kZWRSZWN0KTogRGl0dG8uCisgICAgICAgICogUmVzb3VyY2Vz
L251bGxwbHVnaW4udGlmZjogUmVtb3ZlZC4KKwogMjAxMC0wMy0xNiAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
SW5kZXg6IG1hYy9SZXNvdXJjZXMvbnVsbHBsdWdpbi50aWZmCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS90aWZmCkluZGV4OiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiA1NjE5NikK
KysrIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAt
MTkwLDYgKzE5MCw5IEBACiAALwAqACAATQBhAGsAZQAgAFUAcABwAGUAcgAgAEMAYQBzAGUAIABj
AG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACiAAIgBNAGEAawBlACAAVQBw
AHAAZQByACAAQwBhAHMAZQAiACAAPQAgACIATQBhAGsAZQAgAFUAcABwAGUAcgAgAEMAYQBzAGUA
IgA7AAogAAorAC8AKgAgAE0AaQBzAHMAaQBuAGcAIABQAGwAdQBnAC0AaQBuACAAbABhAGIAZQBs
ACAAKgAvAAorACIATQBpAHMAcwBpAG4AZwAgAFAAbAB1AGcALQBpAG4AIgAgAD0AIAAiAE0AaQBz
AHMAaQBuAGcAIABQAGwAdQBnAC0AaQBuACIAOwAKKwAKIAAvACoAIABOAG8AIABHAHUAZQBzAHMA
ZQBzACAARgBvAHUAbgBkACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAv
AAogACIATgBvACAARwB1AGUAcwBzAGUAcwAgAEYAbwB1AG4AZAAiACAAPQAgACIATgBvACAARwB1
AGUAcwBzAGUAcwAgAEYAbwB1AG4AZAAiADsACiAACg==
</data>
<flag name="review"
          id="34312"
          type_id="1"
          status="-"
          setter="sullivan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51167</attachid>
            <date>2010-03-19 10:45:52 -0700</date>
            <delta_ts>2010-03-19 11:06:56 -0700</delta_ts>
            <desc>FrameLoader refactoring patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6101</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDU2MjQ0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMt
MTkgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpcnN0IHN0ZXAgdG93YXJkOgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMjgKKworICAgICAg
ICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2FyZCBlbGltaW5hdGluZyB0aGUgV2ViS2l0IFdl
Yk51bGxQbHVnaW5WaWV3IGNsYXNzLiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIHRoaXMgd2lsbCBz
b29uCisgICAgICAgIGJlIGluIHBsYXRmb3JtLWluZGVwZW5kZW50IGNvZGUgaW4gV2ViQ29yZS4g
VGhlIHBsYW4gaXMgdG8gY2hhbmdlIFJlbmRlckVtYmVkZGVkT2JqZWN0IGFuZCBnaXZlIGl0IHRo
ZSBjYXBhYmlsaXR5IG9mCisgICAgICAgIGRyYXdpbmcgdGhlIG1pc3NpbmcgcGx1Zy1pbiB0ZXh0
LiAKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdCk6IFJlbmFtZWQgdGhlIHJlbmRlcmVyIHBhcmFt
ZXRlciB0byByZXF1ZXN0RW1iZWRkZWRPYmplY3QgYW5kIG1hZGUgaXQKKyAgICAgICAgYSBSZW5k
ZXJFbWJlZGRlZE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUGx1
Z2luKTogTGlrZXdpc2UuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6IFVwZGF0ZWQg
bG9hZFBsdWdpbigpIGFuZCByZXF1ZXN0T2JqZWN0KCkgbWV0aG9kIHNpZ25hdHVyZXMgYWNjb3Jk
aW5nbHkuIAorCiAyMDEwLTAzLTE5ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IGxv
YWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gNTYyNDQpCisrKyBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgorI2lu
Y2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTEy
NTcsNyArMTI1OCw3IEBACiAgICAgcmV0dXJuIHNldHRpbmdzID8gc2V0dGluZ3MtPmRlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lKCkgOiBTdHJpbmcoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6cmVx
dWVzdE9iamVjdChSZW5kZXJQYXJ0KiByZW5kZXJlciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLAorYm9vbCBGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVj
dChSZW5kZXJFbWJlZGRlZE9iamVjdCogcmVxdWVzdEVtYmVkZGVkT2JqZWN0LCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiBtaW1l
VHlwZS5pc0VtcHR5KCkpCkBAIC0xMjczLDE4ICsxMjc0LDE4IEBACiAgICAgICAgIGNvbXBsZXRl
ZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7CiAKICAgICBib29sIHVzZUZhbGxiYWNrOwotICAgIGlm
IChzaG91bGRVc2VQbHVnaW4oY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgcmVuZGVyZXItPmhhc0Zh
bGxiYWNrQ29udGVudCgpLCB1c2VGYWxsYmFjaykpIHsKKyAgICBpZiAoc2hvdWxkVXNlUGx1Z2lu
KGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIHJlcXVlc3RFbWJlZGRlZE9iamVjdC0+aGFzRmFsbGJh
Y2tDb250ZW50KCksIHVzZUZhbGxiYWNrKSkgewogICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBtX2ZyYW1lLT5zZXR0aW5ncygpOwogICAgICAgICBpZiAoIWFsbG93UGx1Z2lucyhBYm91dFRv
SW5zdGFudGlhdGVQbHVnaW4pCiAgICAgICAgICAgICB8fCAoIXNldHRpbmdzLT5pc0phdmFFbmFi
bGVkKCkgJiYgTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUp
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGlzRG9jdW1lbnRTYW5k
Ym94ZWQoU2FuZGJveFBsdWdpbnMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICByZXR1cm4gbG9hZFBsdWdpbihyZW5kZXJlciwgY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgcGFy
YW1OYW1lcywgcGFyYW1WYWx1ZXMsIHVzZUZhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuIGxvYWRQ
bHVnaW4ocmVxdWVzdEVtYmVkZGVkT2JqZWN0LCBjb21wbGV0ZWRVUkwsIG1pbWVUeXBlLCBwYXJh
bU5hbWVzLCBwYXJhbVZhbHVlcywgdXNlRmFsbGJhY2spOwogICAgIH0KIAotICAgIEFTU0VSVChy
ZW5kZXJlci0+bm9kZSgpLT5oYXNUYWdOYW1lKG9iamVjdFRhZykgfHwgcmVuZGVyZXItPm5vZGUo
KS0+aGFzVGFnTmFtZShlbWJlZFRhZykpOwotICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgpKTsKKyAg
ICBBU1NFUlQocmVxdWVzdEVtYmVkZGVkT2JqZWN0LT5ub2RlKCktPmhhc1RhZ05hbWUob2JqZWN0
VGFnKSB8fCByZXF1ZXN0RW1iZWRkZWRPYmplY3QtPm5vZGUoKS0+aGFzVGFnTmFtZShlbWJlZFRh
ZykpOworICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFBs
dWdJbkVsZW1lbnQqPihyZXF1ZXN0RW1iZWRkZWRPYmplY3QtPm5vZGUoKSk7CiAKICAgICAvLyBJ
ZiB0aGUgcGx1Zy1pbiBlbGVtZW50IGFscmVhZHkgY29udGFpbnMgYSBzdWJmcmFtZSwgcmVxdWVz
dEZyYW1lIHdpbGwgcmUtdXNlIGl0LiBPdGhlcndpc2UsCiAgICAgLy8gaXQgd2lsbCBjcmVhdGUg
YSBuZXcgZnJhbWUgYW5kIHNldCBpdCBhcyB0aGUgUmVuZGVyUGFydCdzIHdpZGdldCwgY2F1c2lu
ZyB3aGF0IHdhcyBwcmV2aW91c2x5IApAQCAtMTM1NiwxMyArMTM1NywxMyBAQAogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG5vZGUpOwogfQogICAgIAotYm9vbCBG
cmFtZUxvYWRlcjo6bG9hZFBsdWdpbihSZW5kZXJQYXJ0KiByZW5kZXJlciwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCAKK2Jvb2wgRnJhbWVMb2FkZXI6OmxvYWRQbHVn
aW4oUmVuZGVyRW1iZWRkZWRPYmplY3QqIHJlcXVlc3RFbWJlZGRlZE9iamVjdCwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVz
ZUZhbGxiYWNrKQogewogICAgIFJlZlB0cjxXaWRnZXQ+IHdpZGdldDsKIAotICAgIGlmIChyZW5k
ZXJlciAmJiAhdXNlRmFsbGJhY2spIHsKLSAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1l
bnQgPSB0b1BsdWdJbkVsZW1lbnQocmVuZGVyZXItPm5vZGUoKSk7CisgICAgaWYgKHJlcXVlc3RF
bWJlZGRlZE9iamVjdCAmJiAhdXNlRmFsbGJhY2spIHsKKyAgICAgICAgSFRNTFBsdWdJbkVsZW1l
bnQqIGVsZW1lbnQgPSB0b1BsdWdJbkVsZW1lbnQocmVxdWVzdEVtYmVkZGVkT2JqZWN0LT5ub2Rl
KCkpOwogCiAgICAgICAgIGlmICghU2VjdXJpdHlPcmlnaW46OmNhbkxvYWQodXJsLCBTdHJpbmco
KSwgZnJhbWUoKS0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBv
cnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgdXJsLnN0cmluZygpKTsKQEAgLTEzNzEsMTEgKzEz
NzIsMTEgQEAKIAogICAgICAgICBjaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KG1fZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCk7CiAKLSAgICAgICAgd2lkZ2V0ID0gbV9j
bGllbnQtPmNyZWF0ZVBsdWdpbihJbnRTaXplKHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSwgcmVu
ZGVyZXItPmNvbnRlbnRIZWlnaHQoKSksCisgICAgICAgIHdpZGdldCA9IG1fY2xpZW50LT5jcmVh
dGVQbHVnaW4oSW50U2l6ZShyZXF1ZXN0RW1iZWRkZWRPYmplY3QtPmNvbnRlbnRXaWR0aCgpLCBy
ZXF1ZXN0RW1iZWRkZWRPYmplY3QtPmNvbnRlbnRIZWlnaHQoKSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZh
bHVlcywgbWltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpICYmICFtX2NvbnRhaW5zUGx1
Z0lucyk7CiAgICAgICAgIGlmICh3aWRnZXQpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRX
aWRnZXQod2lkZ2V0KTsKKyAgICAgICAgICAgIHJlcXVlc3RFbWJlZGRlZE9iamVjdC0+c2V0V2lk
Z2V0KHdpZGdldCk7CiAgICAgICAgICAgICBtX2NvbnRhaW5zUGx1Z0lucyA9IHRydWU7CiAgICAg
ICAgIH0KICAgICB9CkluZGV4OiBsb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs
b2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTYyNDQpCisrKyBsb2FkZXIvRnJhbWVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogY2xhc3MgSWNvbkxvYWRlcjsK
IGNsYXNzIEludFNpemU7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOworY2xhc3MgUmVuZGVyRW1i
ZWRkZWRPYmplY3Q7CiBjbGFzcyBSZW5kZXJQYXJ0OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlTG9hZGVyOwpAQCAtMjkxLDcgKzI5Miw3IEBACiAKICAgICBib29sIGlzQ29t
cGxldGUoKSBjb25zdDsKIAotICAgIGJvb2wgcmVxdWVzdE9iamVjdChSZW5kZXJQYXJ0KiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLAorICAg
IGJvb2wgcmVxdWVzdE9iamVjdChSZW5kZXJFbWJlZGRlZE9iamVjdCosIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29uc3QgU3RyaW5n
JiBzZXJ2aWNlVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAKICAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0
IFN0cmluZyYgdXJsKTsKQEAgLTM0OSw3ICszNTAsNyBAQAogICAgIHZvaWQgc3RhcnRlZCgpOwog
CiAgICAgYm9vbCBzaG91bGRVc2VQbHVnaW4oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNrKTsKLSAgICBib29sIGxv
YWRQbHVnaW4oUmVuZGVyUGFydCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LAorICAgIGJvb2wgbG9hZFBsdWdpbihSZW5kZXJFbWJlZGRlZE9iamVjdCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJh
Y2spOwogICAgIAogICAgIHZvaWQgbmF2aWdhdGVXaXRoaW5Eb2N1bWVudChIaXN0b3J5SXRlbSop
Owo=
</data>
<flag name="review"
          id="34384"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51169</attachid>
            <date>2010-03-19 11:06:56 -0700</date>
            <delta_ts>2010-03-24 14:30:59 -0700</delta_ts>
            <desc>Updated FrameLoader refactoring patch per Darin&apos;s feedback.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4077</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDU2MjQ1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMt
MTkgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpcnN0IHN0ZXAgdG93YXJkOgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMjgKKworICAgICAg
ICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2FyZCBlbGltaW5hdGluZyB0aGUgV2ViS2l0IFdl
Yk51bGxQbHVnaW5WaWV3IGNsYXNzLiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIHRoaXMgd2lsbCBz
b29uCisgICAgICAgIGJlIGluIHBsYXRmb3JtLWluZGVwZW5kZW50IGNvZGUgaW4gV2ViQ29yZS4g
VGhlIHBsYW4gaXMgdG8gY2hhbmdlIFJlbmRlckVtYmVkZGVkT2JqZWN0IGFuZCBnaXZlIGl0IHRo
ZSBjYXBhYmlsaXR5IG9mCisgICAgICAgIGRyYXdpbmcgdGhlIG1pc3NpbmcgcGx1Zy1pbiB0ZXh0
LiAKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdCk6IFRoZSAicmVuZGVyZXIiIHBhcmFtZXRlciBp
cyBub3cgYSBSZW5kZXJFbWJlZGRlZE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkUGx1Z2luKTogTGlrZXdpc2UuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6IFVwZGF0ZWQgbWV0aG9kIHNpZ25hdHVyZXMgYXMgcGVyIGFib3ZlLgorICAgICAgICAqIHBh
Z2UvRnJhbWUuaDogQWRkZWQgImNsYXNzIFJlbmRlclBhcnQiCisKIDIwMTAtMDMtMTkgIExhc3ps
byBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBh
Z2UvRnJhbWUuaAkocmV2aXNpb24gNTYyNDQpCisrKyBwYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDYgKzY3LDcgQEAKICAgICBjbGFzcyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjsKICAgICBjbGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudDsKICAgICBjbGFzcyBSZWd1bGFyRXhw
cmVzc2lvbjsKKyAgICBjbGFzcyBSZW5kZXJQYXJ0OwogICAgIGNsYXNzIFRpbGVkQmFja2luZ1N0
b3JlOwogCiAgICAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxGcmFtZT4KSW5kZXg6
IGxvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gNTYyNDQpCisrKyBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MSw2ICs4MSw3IEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNp
bmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgor
I2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydC5o
IgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKQEAg
LTEyNTcsNyArMTI1OCw3IEBACiAgICAgcmV0dXJuIHNldHRpbmdzID8gc2V0dGluZ3MtPmRlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lKCkgOiBTdHJpbmcoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6
cmVxdWVzdE9iamVjdChSZW5kZXJQYXJ0KiByZW5kZXJlciwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLAorYm9vbCBGcmFtZUxvYWRlcjo6cmVxdWVzdE9i
amVjdChSZW5kZXJFbWJlZGRlZE9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzKQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIG1pbWVUeXBlLmlzRW1w
dHkoKSkKQEAgLTEzNTYsNyArMTM1Nyw3IEBACiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxQ
bHVnSW5FbGVtZW50Kj4obm9kZSk7CiB9CiAgICAgCi1ib29sIEZyYW1lTG9hZGVyOjpsb2FkUGx1
Z2luKFJlbmRlclBhcnQqIHJlbmRlcmVyLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIAorYm9vbCBGcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihSZW5kZXJFbWJlZGRlZE9i
amVjdCogcmVuZGVyZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjaykKIHsKICAgICBSZWZQdHI8V2lkZ2V0
PiB3aWRnZXQ7CkluZGV4OiBsb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsb2Fk
ZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTYyNDQpCisrKyBsb2FkZXIvRnJhbWVMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQAogY2xhc3MgSWNvbkxvYWRlcjsKIGNs
YXNzIEludFNpemU7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwotY2xhc3MgUmVuZGVyUGFydDsK
K2NsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTI5MSw3ICsyOTEs
NyBAQAogCiAgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3Q7CiAKLSAgICBib29sIHJlcXVlc3RP
YmplY3QoUmVuZGVyUGFydCogZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZyYW1lTmFtZSwKKyAgICBib29sIHJlcXVlc3RPYmplY3QoUmVuZGVyRW1iZWRkZWRP
YmplY3QqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUs
CiAgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogCiAgICAg
S1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCk7CkBAIC0zNDksOCArMzQ5LDggQEAK
ICAgICB2b2lkIHN0YXJ0ZWQoKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlUGx1Z2luKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGhhc0ZhbGxiYWNrLCBib29sJiB1c2VG
YWxsYmFjayk7Ci0gICAgYm9vbCBsb2FkUGx1Z2luKFJlbmRlclBhcnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNr
KTsKKyAgICBib29sIGxvYWRQbHVnaW4oUmVuZGVyRW1iZWRkZWRPYmplY3QqLCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgYm9vbCB1c2VGYWxsYmFjayk7CiAgICAgCiAgICAgdm9pZCBuYXZpZ2F0ZVdpdGhpbkRvY3Vt
ZW50KEhpc3RvcnlJdGVtKik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvRGlmZmVyZW50RG9jdW1lbnQo
SGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51239</attachid>
            <date>2010-03-20 18:24:36 -0700</date>
            <delta_ts>2010-03-21 10:52:55 -0700</delta_ts>
            <desc>Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, and gtk</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7522</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkocmV2aXNpb24g
NTYzMTIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDEyIEBACiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQorICAgIAorU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoIk1pc3NpbmcgUGx1Zy1pbiIpOworfQogCiBTdHJpbmcg
bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA1NjMxMikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMy0yMCAgS2V2aW4gRGVja2Vy
ICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2
MzI4CisKKyAgICAgICAgKiBzcmMvTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptaXNzaW5nUGx1Z2luVGV4dCk6IEFkZGVkLgorCiAyMDEwLTAzLTIwICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xs
aW5nIG91dCByNTYyOTQuCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDEwLTAzLTIwICBLZXZpbiBEZWNrZXIgIDxr
ZGVja2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMjgK
KworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczogQWRkZWQuCisK
IDIwMTAtMDMtMTggIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBX
ZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwko
cmV2aXNpb24gNTYzMTIpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDEwLTAzLTIwICBLZXZpbiBEZWNrZXIgIDxrZGVja2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMjgKKyAgICAgICAgCisg
ICAgICAgICogV2ViQ29yZUxvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWlzc2luZ1BsdWdpblRleHQpOiBBZGRlZC4KKwogMjAxMC0wMy0xNyAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDU2MzEy
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDcgQEAKIFN0cmluZyBXZWJDb3JlOjp1bmtub3duRmlsZVNpemVUZXh0
KCkgeyByZXR1cm4gU3RyaW5nKExQQ1RTVFJfVUlfU1RSSU5HKCJVbmtub3duIiwgIlVua25vd24g
ZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0aW5nIGl0ZW0iKSk7IH0KIFN0cmluZyBXZWJDb3Jl
Ojp1cGxvYWRGaWxlVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhMUENUU1RSX1VJX1NUUklORygiVXBs
b2FkIGZpbGUiLCAiKFdpbmRvd3MpIEZvcm0gc3VibWl0IGZpbGUgdXBsb2FkIGRpYWxvZyB0aXRs
ZSIpKTsgfQogU3RyaW5nIFdlYkNvcmU6OmFsbEZpbGVzVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhM
UENUU1RSX1VJX1NUUklORygiQWxsIEZpbGVzIiwgIihXaW5kb3dzKSBGb3JtIHN1Ym1pdCBmaWxl
IHVwbG9hZCBhbGwgZmlsZXMgcG9wLXVwIikpOyB9Ci0KK1N0cmluZyBXZWJDb3JlOjptaXNzaW5n
UGx1Z2luVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhMUENUU1RSX1VJX1NUUklORygiTWlzc2luZyBQ
bHVnLWluIiwgIk1pc3NpbmcgUGx1Zy1pbiBsYWJlbCIpKTsgfQogU3RyaW5nIFdlYkNvcmU6Omlt
YWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgCiB7
IAogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdChBZG9wdENGLCBVSV9T
VFJJTkcoIiVAICVkXHhDM1x4OTclZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5k
YWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSk7CkluZGV4
OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW0JKHJldmlzaW9u
IDU2MzEyKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjQwLDYgKzY0MCwxMSBAQAogICAgIHJldHVybiBuaWw7CiB9CiAK
Ky0gKE5TU3RyaW5nICopbWlzc2luZ1BsdWdpblRleHQKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5H
KCJNaXNzaW5nIFBsdWctaW4iLCAiTWlzc2luZyBQbHVnLWluIGxhYmVsIik7Cit9CisKIC0gKE5T
U3RyaW5nICopbXVsdGlwbGVGaWxlVXBsb2FkVGV4dEZvck51bWJlck9mRmlsZXM6KHVuc2lnbmVk
KW51bWJlck9mRmlsZXMKIHsKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
VUlfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZp
bGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBs
ZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzXTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjMxMikKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAt
MDMtMjAgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmll
d0ZhY3RvcnkubW06CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IG1pc3NpbmdQbHVnaW5UZXh0
XSk6IEFkZGVkLgorCiAyMDEwLTAzLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvRW5n
bGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiA1NjMxMikKKysrIFdlYktp
dC9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTE5
MCw2ICsxOTAsOSBAQAogAC8AKgAgAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACAAYwBv
AG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAogACIATQBhAGsAZQAgAFUAcABw
AGUAcgAgAEMAYQBzAGUAIgAgAD0AIAAiAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACIA
OwAKIAAKKwAvACoAIABNAGkAcwBzAGkAbgBnACAAUABsAHUAZwAtAGkAbgAgAGwAYQBiAGUAbAAg
ACoALwAKKwAiAE0AaQBzAHMAaQBuAGcAIABQAGwAdQBnAC0AaQBuACIAIAA9ACAAIgBNAGkAcwBz
AGkAbgBnACAAUABsAHUAZwAtAGkAbgAiADsACisACiAALwAqACAATgBvACAARwB1AGUAcwBzAGUA
cwAgAEYAbwB1AG4AZAAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAK
IAAiAE4AbwAgAEcAdQBlAHMAcwBlAHMAIABGAG8AdQBuAGQAIgAgAD0AIAAiAE4AbwAgAEcAdQBl
AHMAcwBlAHMAIABGAG8AdQBuAGQAIgA7AAogAApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMy0yMCAg
S2V2aW4gRGVja2VyICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBi
dWcgVVJMIChPT1BTISkKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAg
ICAqIHBhZ2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oOgorICAgICAgICAqIHBsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5n
c0d0ay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW06
CisKIDIwMTAtMDMtMjAgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUv
cGFnZS9tYWMvV2ViQ29yZVZpZXdGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L21hYy9XZWJDb3JlVmlld0ZhY3RvcnkuaAkocmV2aXNpb24gNTYzMTIpCisrKyBXZWJDb3JlL3Bh
Z2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQy
LDggQEAKIC0gKE5TU3RyaW5nICopQVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYjsKIC0gKE5TU3Ry
aW5nICopQVhNZW51TGlzdEFjdGlvblZlcmI7CiAKKy0gKE5TU3RyaW5nICopbWlzc2luZ1BsdWdp
blRleHQ7CisKIC0gKE5TU3RyaW5nICopbXVsdGlwbGVGaWxlVXBsb2FkVGV4dEZvck51bWJlck9m
RmlsZXM6KHVuc2lnbmVkKW51bWJlck9mRmlsZXM7CiAvLyBGVFAgRGlyZWN0b3J5IFJlbGF0ZWQK
IC0gKE5TU3RyaW5nICopdW5rbm93bkZpbGVTaXplVGV4dDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCShyZXZpc2lvbiA1NjMxMikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzUsNiArMzM1LDExIEBACiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQorICAgIAor
U3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChfKCJNaXNzaW5nIFBsdWctaW4iKSk7Cit9CiAKIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRU
ZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCiB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW0JKHJldmlzaW9uIDU2MzEyKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjk5
LDYgKzY5OSwxMyBAQAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIG1pc3NpbmdQ
bHVnaW5UZXh0KCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0
dXJuIFtbV2ViQ29yZVZpZXdGYWN0b3J5IHNoYXJlZEZhY3RvcnldIG1pc3NpbmdQbHVnaW5UZXh0
XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KIAogU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxl
cykKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShyZXZpc2lvbiA1NjMx
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjgsNiArMTI4LDcgQEAKICAgICBTdHJpbmcgQVhNZW51TGlzdFBvcHVwQWN0aW9uVmVy
YigpOwogICAgIFN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCk7CiAKKyAgICBTdHJpbmcgbWlzc2lu
Z1BsdWdpblRleHQoKTsKICAgICBTdHJpbmcgbXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25l
ZCBudW1iZXJPZkZpbGVzKTsKICAgICBTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51249</attachid>
            <date>2010-03-21 10:52:55 -0700</date>
            <delta_ts>2010-03-21 10:55:20 -0700</delta_ts>
            <desc>Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, and gtk</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7563</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkocmV2aXNpb24g
NTYzMTIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDEyIEBACiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQorICAgIAorU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoIk1pc3NpbmcgUGx1Zy1pbiIpOworfQogCiBTdHJpbmcg
bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA1NjMxMikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMy0yMCAgS2V2aW4gRGVja2Vy
ICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2
MzI4CisKKyAgICAgICAgKiBzcmMvTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptaXNzaW5nUGx1Z2luVGV4dCk6IEFkZGVkLgorCiAyMDEwLTAzLTIwICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xs
aW5nIG91dCByNTYyOTQuCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDEwLTAzLTIwICBLZXZpbiBEZWNrZXIgIDxr
ZGVja2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMjgK
KworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczogQWRkZWQuCisK
IDIwMTAtMDMtMTggIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBX
ZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwko
cmV2aXNpb24gNTYzMTIpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDEwLTAzLTIwICBLZXZpbiBEZWNrZXIgIDxrZGVja2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMjgKKyAgICAgICAgCisg
ICAgICAgICogV2ViQ29yZUxvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWlzc2luZ1BsdWdpblRleHQpOiBBZGRlZC4KKwogMjAxMC0wMy0xNyAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDU2MzEy
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDcgQEAKIFN0cmluZyBXZWJDb3JlOjp1bmtub3duRmlsZVNpemVUZXh0
KCkgeyByZXR1cm4gU3RyaW5nKExQQ1RTVFJfVUlfU1RSSU5HKCJVbmtub3duIiwgIlVua25vd24g
ZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0aW5nIGl0ZW0iKSk7IH0KIFN0cmluZyBXZWJDb3Jl
Ojp1cGxvYWRGaWxlVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhMUENUU1RSX1VJX1NUUklORygiVXBs
b2FkIGZpbGUiLCAiKFdpbmRvd3MpIEZvcm0gc3VibWl0IGZpbGUgdXBsb2FkIGRpYWxvZyB0aXRs
ZSIpKTsgfQogU3RyaW5nIFdlYkNvcmU6OmFsbEZpbGVzVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhM
UENUU1RSX1VJX1NUUklORygiQWxsIEZpbGVzIiwgIihXaW5kb3dzKSBGb3JtIHN1Ym1pdCBmaWxl
IHVwbG9hZCBhbGwgZmlsZXMgcG9wLXVwIikpOyB9Ci0KK1N0cmluZyBXZWJDb3JlOjptaXNzaW5n
UGx1Z2luVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhMUENUU1RSX1VJX1NUUklORygiTWlzc2luZyBQ
bHVnLWluIiwgIk1pc3NpbmcgUGx1Zy1pbiBsYWJlbCIpKTsgfQogU3RyaW5nIFdlYkNvcmU6Omlt
YWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgCiB7
IAogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdChBZG9wdENGLCBVSV9T
VFJJTkcoIiVAICVkXHhDM1x4OTclZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5k
YWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSk7CkluZGV4
OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW0JKHJldmlzaW9u
IDU2MzEyKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjQwLDYgKzY0MCwxMSBAQAogICAgIHJldHVybiBuaWw7CiB9CiAK
Ky0gKE5TU3RyaW5nICopbWlzc2luZ1BsdWdpblRleHQKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5H
KCJNaXNzaW5nIFBsdWctaW4iLCAiTWlzc2luZyBQbHVnLWluIGxhYmVsIik7Cit9CisKIC0gKE5T
U3RyaW5nICopbXVsdGlwbGVGaWxlVXBsb2FkVGV4dEZvck51bWJlck9mRmlsZXM6KHVuc2lnbmVk
KW51bWJlck9mRmlsZXMKIHsKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
VUlfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZp
bGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBs
ZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzXTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjMxMikKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAt
MDMtMjAgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmll
d0ZhY3RvcnkubW06CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IG1pc3NpbmdQbHVnaW5UZXh0
XSk6IEFkZGVkLgorCiAyMDEwLTAzLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvRW5n
bGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiA1NjMxMikKKysrIFdlYktp
dC9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTE5
MCw2ICsxOTAsOSBAQAogAC8AKgAgAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACAAYwBv
AG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAogACIATQBhAGsAZQAgAFUAcABw
AGUAcgAgAEMAYQBzAGUAIgAgAD0AIAAiAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACIA
OwAKIAAKKwAvACoAIABNAGkAcwBzAGkAbgBnACAAUABsAHUAZwAtAGkAbgAgAGwAYQBiAGUAbAAg
ACoALwAKKwAiAE0AaQBzAHMAaQBuAGcAIABQAGwAdQBnAC0AaQBuACIAIAA9ACAAIgBNAGkAcwBz
AGkAbgBnACAAUABsAHUAZwAtAGkAbgAiADsACisACiAALwAqACAATgBvACAARwB1AGUAcwBzAGUA
cwAgAEYAbwB1AG4AZAAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAK
IAAiAE4AbwAgAEcAdQBlAHMAcwBlAHMAIABGAG8AdQBuAGQAIgAgAD0AIAAiAE4AbwAgAEcAdQBl
AHMAcwBlAHMAIABGAG8AdQBuAGQAIgA7AAogAApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMy0yMCAg
S2V2aW4gRGVja2VyICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKwlodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzYzMjgKKworICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oOiBBZGRl
ZCAtbWlzc2luZ1BsdWdpblRleHQgbWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuaDogQWRkZWQgbWlzc2luZ1BsdWdpblRleHQoKQorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDogTGlrZXdpc2UuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW06IFNhbWUgaGVyZS4KKwogMjAxMC0wMy0yMCAg
QW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJDb3Jl
Vmlld0ZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVWaWV3
RmFjdG9yeS5oCShyZXZpc2lvbiA1NjMxMikKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZVZp
ZXdGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsOCBAQAogLSAoTlNTdHJp
bmcgKilBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiOwogLSAoTlNTdHJpbmcgKilBWE1lbnVMaXN0
QWN0aW9uVmVyYjsKIAorLSAoTlNTdHJpbmcgKiltaXNzaW5nUGx1Z2luVGV4dDsKKwogLSAoTlNT
dHJpbmcgKiltdWx0aXBsZUZpbGVVcGxvYWRUZXh0Rm9yTnVtYmVyT2ZGaWxlczoodW5zaWduZWQp
bnVtYmVyT2ZGaWxlczsKIC8vIEZUUCBEaXJlY3RvcnkgUmVsYXRlZAogLSAoTlNTdHJpbmcgKil1
bmtub3duRmlsZVNpemVUZXh0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVk
U3RyaW5nc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxp
emVkU3RyaW5nc0d0ay5jcHAJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICszMzUs
MTEgQEAKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CisgICAgCitTdHJpbmcgbWlzc2luZ1Bs
dWdpblRleHQoKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIk1pc3NpbmcgUGx1
Zy1pbiIpKTsKK30KIAogU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVt
YmVyT2ZGaWxlcykKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmlu
Z3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3Ry
aW5nc01hYy5tbQkocmV2aXNpb24gNTYzMTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2Nh
bGl6ZWRTdHJpbmdzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTksNiArNjk5LDEzIEBACiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKQorewor
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmll
d0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gbWlzc2luZ1BsdWdpblRleHRdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQogCiBTdHJpbmcgbXVs
dGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgs
NyBAQAogICAgIFN0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCk7CiAgICAgU3RyaW5n
IEFYTGlua0FjdGlvblZlcmIoKTsKIAorICAgIFN0cmluZyBtaXNzaW5nUGx1Z2luVGV4dCgpOwog
ICAgIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMp
OwogICAgIFN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51250</attachid>
            <date>2010-03-21 10:55:20 -0700</date>
            <delta_ts>2010-03-22 09:19:08 -0700</delta_ts>
            <desc>Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, and gtk </desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7563</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkocmV2aXNpb24g
NTYzMTIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDEyIEBACiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQorICAgIAorU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoIk1pc3NpbmcgUGx1Zy1pbiIpOworfQogCiBTdHJpbmcg
bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA1NjMxMikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMy0yMCAgS2V2aW4gRGVja2Vy
ICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2
MzI4CisKKyAgICAgICAgKiBzcmMvTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptaXNzaW5nUGx1Z2luVGV4dCk6IEFkZGVkLgorCiAyMDEwLTAzLTIwICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xs
aW5nIG91dCByNTYyOTQuCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDEwLTAzLTIwICBLZXZpbiBEZWNrZXIgIDxr
ZGVja2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMjgK
KworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczogQWRkZWQuCisK
IDIwMTAtMDMtMTggIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBX
ZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwko
cmV2aXNpb24gNTYzMTIpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDEwLTAzLTIwICBLZXZpbiBEZWNrZXIgIDxrZGVja2VyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYzMjgKKyAgICAgICAgCisg
ICAgICAgICogV2ViQ29yZUxvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWlzc2luZ1BsdWdpblRleHQpOiBBZGRlZC4KKwogMjAxMC0wMy0xNyAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDU2MzEy
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDcgQEAKIFN0cmluZyBXZWJDb3JlOjp1bmtub3duRmlsZVNpemVUZXh0
KCkgeyByZXR1cm4gU3RyaW5nKExQQ1RTVFJfVUlfU1RSSU5HKCJVbmtub3duIiwgIlVua25vd24g
ZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0aW5nIGl0ZW0iKSk7IH0KIFN0cmluZyBXZWJDb3Jl
Ojp1cGxvYWRGaWxlVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhMUENUU1RSX1VJX1NUUklORygiVXBs
b2FkIGZpbGUiLCAiKFdpbmRvd3MpIEZvcm0gc3VibWl0IGZpbGUgdXBsb2FkIGRpYWxvZyB0aXRs
ZSIpKTsgfQogU3RyaW5nIFdlYkNvcmU6OmFsbEZpbGVzVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhM
UENUU1RSX1VJX1NUUklORygiQWxsIEZpbGVzIiwgIihXaW5kb3dzKSBGb3JtIHN1Ym1pdCBmaWxl
IHVwbG9hZCBhbGwgZmlsZXMgcG9wLXVwIikpOyB9Ci0KK1N0cmluZyBXZWJDb3JlOjptaXNzaW5n
UGx1Z2luVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhMUENUU1RSX1VJX1NUUklORygiTWlzc2luZyBQ
bHVnLWluIiwgIk1pc3NpbmcgUGx1Zy1pbiBsYWJlbCIpKTsgfQogU3RyaW5nIFdlYkNvcmU6Omlt
YWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgCiB7
IAogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdChBZG9wdENGLCBVSV9T
VFJJTkcoIiVAICVkXHhDM1x4OTclZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5k
YWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSk7CkluZGV4
OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW0JKHJldmlzaW9u
IDU2MzEyKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNjQwLDYgKzY0MCwxMSBAQAogICAgIHJldHVybiBuaWw7CiB9CiAK
Ky0gKE5TU3RyaW5nICopbWlzc2luZ1BsdWdpblRleHQKK3sKKyAgICByZXR1cm4gVUlfU1RSSU5H
KCJNaXNzaW5nIFBsdWctaW4iLCAiTWlzc2luZyBQbHVnLWluIGxhYmVsIik7Cit9CisKIC0gKE5T
U3RyaW5nICopbXVsdGlwbGVGaWxlVXBsb2FkVGV4dEZvck51bWJlck9mRmlsZXM6KHVuc2lnbmVk
KW51bWJlck9mRmlsZXMKIHsKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
VUlfU1RSSU5HKCIlZCBmaWxlcyIsICJMYWJlbCB0byBkZXNjcmliZSB0aGUgbnVtYmVyIG9mIGZp
bGVzIHNlbGVjdGVkIGluIGEgZmlsZSB1cGxvYWQgY29udHJvbCB0aGF0IGFsbG93cyBtdWx0aXBs
ZSBmaWxlcyIpLCBudW1iZXJPZkZpbGVzXTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjMxMikKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAt
MDMtMjAgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmll
d0ZhY3RvcnkubW06CisgICAgICAgICgtW1dlYlZpZXdGYWN0b3J5IG1pc3NpbmdQbHVnaW5UZXh0
XSk6IEFkZGVkLgorCiAyMDEwLTAzLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvRW5n
bGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiA1NjMxMikKKysrIFdlYktp
dC9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTE5
MCw2ICsxOTAsOSBAQAogAC8AKgAgAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACAAYwBv
AG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAogACIATQBhAGsAZQAgAFUAcABw
AGUAcgAgAEMAYQBzAGUAIgAgAD0AIAAiAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBlACIA
OwAKIAAKKwAvACoAIABNAGkAcwBzAGkAbgBnACAAUABsAHUAZwAtAGkAbgAgAGwAYQBiAGUAbAAg
ACoALwAKKwAiAE0AaQBzAHMAaQBuAGcAIABQAGwAdQBnAC0AaQBuACIAIAA9ACAAIgBNAGkAcwBz
AGkAbgBnACAAUABsAHUAZwAtAGkAbgAiADsACisACiAALwAqACAATgBvACAARwB1AGUAcwBzAGUA
cwAgAEYAbwB1AG4AZAAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAK
IAAiAE4AbwAgAEcAdQBlAHMAcwBlAHMAIABGAG8AdQBuAGQAIgAgAD0AIAAiAE4AbwAgAEcAdQBl
AHMAcwBlAHMAIABGAG8AdQBuAGQAIgA7AAogAApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMy0yMCAg
S2V2aW4gRGVja2VyICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKwlodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzYzMjgKKworICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oOiBBZGRl
ZCAtbWlzc2luZ1BsdWdpblRleHQgbWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuaDogQWRkZWQgbWlzc2luZ1BsdWdpblRleHQoKQorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDogTGlrZXdpc2UuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMubW06IFNhbWUgaGVyZS4KKwogMjAxMC0wMy0yMCAg
QW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJDb3Jl
Vmlld0ZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVWaWV3
RmFjdG9yeS5oCShyZXZpc2lvbiA1NjMxMikKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZVZp
ZXdGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsOCBAQAogLSAoTlNTdHJp
bmcgKilBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiOwogLSAoTlNTdHJpbmcgKilBWE1lbnVMaXN0
QWN0aW9uVmVyYjsKIAorLSAoTlNTdHJpbmcgKiltaXNzaW5nUGx1Z2luVGV4dDsKKwogLSAoTlNT
dHJpbmcgKiltdWx0aXBsZUZpbGVVcGxvYWRUZXh0Rm9yTnVtYmVyT2ZGaWxlczoodW5zaWduZWQp
bnVtYmVyT2ZGaWxlczsKIC8vIEZUUCBEaXJlY3RvcnkgUmVsYXRlZAogLSAoTlNTdHJpbmcgKil1
bmtub3duRmlsZVNpemVUZXh0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVk
U3RyaW5nc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxp
emVkU3RyaW5nc0d0ay5jcHAJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICszMzUs
MTEgQEAKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CisgICAgCitTdHJpbmcgbWlzc2luZ1Bs
dWdpblRleHQoKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIk1pc3NpbmcgUGx1
Zy1pbiIpKTsKK30KIAogU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVt
YmVyT2ZGaWxlcykKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmlu
Z3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3Ry
aW5nc01hYy5tbQkocmV2aXNpb24gNTYzMTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2Nh
bGl6ZWRTdHJpbmdzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTksNiArNjk5LDEzIEBACiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKQorewor
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4gW1tXZWJDb3JlVmll
d0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gbWlzc2luZ1BsdWdpblRleHRdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgcmV0dXJuIFN0cmluZygpOworfQogCiBTdHJpbmcgbXVs
dGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDU2MzEyKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgs
NyBAQAogICAgIFN0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCk7CiAgICAgU3RyaW5n
IEFYTGlua0FjdGlvblZlcmIoKTsKIAorICAgIFN0cmluZyBtaXNzaW5nUGx1Z2luVGV4dCgpOwog
ICAgIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMp
OwogICAgIFN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51292</attachid>
            <date>2010-03-22 09:18:31 -0700</date>
            <delta_ts>2010-03-22 09:29:05 -0700</delta_ts>
            <desc>Added &quot;Missing plug-in&quot; localizable string to the following ports: mac, win, chromium, gtk, and qt</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>8231</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkocmV2aXNpb24g
NTYzMzUpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDEyIEBACiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQorICAgIAorU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoIk1pc3NpbmcgUGx1Zy1pbiIpOworfQogCiBTdHJpbmcg
bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA1NjMzNSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMy0yMiAgS2V2aW4gRGVja2Vy
ICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2
MzI4CisKKyAgICAgICAgKiBzcmMvTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptaXNzaW5nUGx1Z2luVGV4dCk6IEFkZGVkCisKIDIwMTAtMDMtMjIgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gNTYzMzUpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTAtMDMtMjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAg
ICAgICogRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOiBBZGRlZCAiTWlzc2luZyBQ
bHVnLWluIiBzdHJpbmcuCisKIDIwMTAtMDMtMTggIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9A
cHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNTYzMzUpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTAzLTIyICBLZXZpbiBEZWNr
ZXIgIDxrZGVja2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzYzMjgKKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZUxvY2FsaXplZFN0cmluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWlzc2luZ1BsdWdpblRleHQpOiBBZGRlZC4KKwogMjAxMC0wMy0x
NyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5n
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5ncy5j
cHAJKHJldmlzaW9uIDU2MzM1KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlTG9jYWxpemVkU3RyaW5n
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAKIFN0cmluZyBXZWJDb3JlOjp1
bmtub3duRmlsZVNpemVUZXh0KCkgeyByZXR1cm4gU3RyaW5nKExQQ1RTVFJfVUlfU1RSSU5HKCJV
bmtub3duIiwgIlVua25vd24gZmlsZXNpemUgRlRQIGRpcmVjdG9yeSBsaXN0aW5nIGl0ZW0iKSk7
IH0KIFN0cmluZyBXZWJDb3JlOjp1cGxvYWRGaWxlVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhMUENU
U1RSX1VJX1NUUklORygiVXBsb2FkIGZpbGUiLCAiKFdpbmRvd3MpIEZvcm0gc3VibWl0IGZpbGUg
dXBsb2FkIGRpYWxvZyB0aXRsZSIpKTsgfQogU3RyaW5nIFdlYkNvcmU6OmFsbEZpbGVzVGV4dCgp
IHsgcmV0dXJuIFN0cmluZyhMUENUU1RSX1VJX1NUUklORygiQWxsIEZpbGVzIiwgIihXaW5kb3dz
KSBGb3JtIHN1Ym1pdCBmaWxlIHVwbG9hZCBhbGwgZmlsZXMgcG9wLXVwIikpOyB9Ci0KK1N0cmlu
ZyBXZWJDb3JlOjptaXNzaW5nUGx1Z2luVGV4dCgpIHsgcmV0dXJuIFN0cmluZyhMUENUU1RSX1VJ
X1NUUklORygiTWlzc2luZyBQbHVnLWluIiwgIk1pc3NpbmcgUGx1Zy1pbiBsYWJlbCIpKTsgfQog
U3RyaW5nIFdlYkNvcmU6OmltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkgCiB7IAogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZv
cm1hdChBZG9wdENGLCBVSV9TVFJJTkcoIiVAICVkXHhDM1x4OTclZCBwaXhlbHMiLCAid2luZG93
IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9s
LCBub3QgeCkiKSk7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0
b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0Zh
Y3RvcnkubW0JKHJldmlzaW9uIDU2MzM1KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaWV3RmFjdG9yeS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQwLDYgKzY0MCwxMSBAQAogICAg
IHJldHVybiBuaWw7CiB9CiAKKy0gKE5TU3RyaW5nICopbWlzc2luZ1BsdWdpblRleHQKK3sKKyAg
ICByZXR1cm4gVUlfU1RSSU5HKCJNaXNzaW5nIFBsdWctaW4iLCAiTGFiZWwgdGV4dCB0byBiZSB1
c2VkIHdoZW4gYSBwbHVnaW4gaXMgbWlzc2luZyIpOworfQorCiAtIChOU1N0cmluZyAqKW11bHRp
cGxlRmlsZVVwbG9hZFRleHRGb3JOdW1iZXJPZkZpbGVzOih1bnNpZ25lZCludW1iZXJPZkZpbGVz
CiB7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OlVJX1NUUklORygiJWQg
ZmlsZXMiLCAiTGFiZWwgdG8gZGVzY3JpYmUgdGhlIG51bWJlciBvZiBmaWxlcyBzZWxlY3RlZCBp
biBhIGZpbGUgdXBsb2FkIGNvbnRyb2wgdGhhdCBhbGxvd3MgbXVsdGlwbGUgZmlsZXMiKSwgbnVt
YmVyT2ZGaWxlc107CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTYzMzUpCisrKyBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTAzLTIyICBLZXZpbiBE
ZWNrZXIgIDxrZGVja2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzYzMjgKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3RmFjdG9yeSBtaXNzaW5nUGx1Z2luVGV4dF0pOiBBZGRlZC4KKwog
MjAxMC0wMy0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9FbmdsaXNoLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0VuZ2xpc2gubHByb2ovTG9j
YWxpemFibGUuc3RyaW5ncwkocmV2aXNpb24gNTYzMzUpCisrKyBXZWJLaXQvRW5nbGlzaC5scHJv
ai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDkgQEAK
IAAvACoAIABNAGEAawBlACAAVQBwAHAAZQByACAAQwBhAHMAZQAgAGMAbwBuAHQAZQB4AHQAIABt
AGUAbgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAE0AYQBrAGUAIABVAHAAcABlAHIAIABDAGEAcwBl
ACIAIAA9ACAAIgBNAGEAawBlACAAVQBwAHAAZQByACAAQwBhAHMAZQAiADsACiAACisALwAqACAA
TABhAGIAZQBsACAAdABlAHgAdAAgAHQAbwAgAGIAZQAgAHUAcwBlAGQAIAB3AGgAZQBuACAAYQAg
AHAAbAB1AGcAaQBuACAAaQBzACAAbQBpAHMAcwBpAG4AZwAgACoALwAKKwAiAE0AaQBzAHMAaQBu
AGcAIABQAGwAdQBnAC0AaQBuACIAIAA9ACAAIgBNAGkAcwBzAGkAbgBnACAAUABsAHUAZwAtAGkA
bgAiADsACisACiAALwAqACAATgBvACAARwB1AGUAcwBzAGUAcwAgAEYAbwB1AG4AZAAgAGMAbwBu
AHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAE4AbwAgAEcAdQBlAHMAcwBl
AHMAIABGAG8AdQBuAGQAIgAgAD0AIAAiAE4AbwAgAEcAdQBlAHMAcwBlAHMAIABGAG8AdQBuAGQA
IgA7AAogAApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2MzM1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wMy0yMiAgS2V2aW4gRGVja2VyICA8a2RlY2tl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MzI4CisKKyAg
ICAgICAgKiBwYWdlL21hYy9XZWJDb3JlVmlld0ZhY3RvcnkuaDogQWRkZWQgLW1pc3NpbmdQbHVn
aW5UZXh0IG1ldGhvZCAKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6IEFk
ZGVkIG1pc3NpbmdQbHVnaW5UZXh0KCkKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTG9jYWxpemVk
U3RyaW5nc0d0ay5jcHA6IExpa2V3aXNlLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Mb2NhbGl6
ZWRTdHJpbmdzTWFjLm1tOiBTYW1lIGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vcXQvTG9jYWxp
emF0aW9ucy5jcHA6IERpdHRvLgorCiAyMDEwLTAzLTIyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZVZpZXdGYWN0b3J5LmgJKHJldmlzaW9uIDU2MzM1KQor
KysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlVmlld0ZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQyLDYgKzE0Miw4IEBACiAtIChOU1N0cmluZyAqKUFYTWVudUxpc3RQb3B1cEFjdGlvblZl
cmI7CiAtIChOU1N0cmluZyAqKUFYTWVudUxpc3RBY3Rpb25WZXJiOwogCistIChOU1N0cmluZyAq
KW1pc3NpbmdQbHVnaW5UZXh0OworCiAtIChOU1N0cmluZyAqKW11bHRpcGxlRmlsZVVwbG9hZFRl
eHRGb3JOdW1iZXJPZkZpbGVzOih1bnNpZ25lZCludW1iZXJPZkZpbGVzOwogLy8gRlRQIERpcmVj
dG9yeSBSZWxhdGVkCiAtIChOU1N0cmluZyAqKXVua25vd25GaWxlU2l6ZVRleHQ7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL3F0L0xvY2FsaXphdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vcXQvTG9jYWxpemF0aW9ucy5jcHAJKHJldmlzaW9uIDU2MzM1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUw
LDYgKzM1MCwxMiBAQAogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KKyAgICAKK1N0cmluZyBt
aXNzaW5nUGx1Z2luVGV4dCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiTWlzc2luZyBQbHVnaW4iLCAiTGFiZWwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgdG8gYmUgdXNlZCB3aGVuIGEgcGx1Z2luIGlz
IG1pc3NpbmciKTsKK30KIAogU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQp
CiB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNw
cAkocmV2aXNpb24gNTYzMzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJp
bmdzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDYgKzMzNSwxMSBAQAogewogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KKyAgICAKK1N0cmluZyBtaXNzaW5nUGx1Z2luVGV4dCgpCit7Cisg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiTWlzc2luZyBQbHVnLWluIikpOworfQogCiBT
dHJpbmcgbXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQogewpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLm1tCShyZXZp
c2lvbiA1NjMzNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTY5OSw2ICs2OTksMTMgQEAKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKK1N0cmluZyBtaXNzaW5nUGx1Z2luVGV4dCgpCit7CisgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRG
YWN0b3J5XSBtaXNzaW5nUGx1Z2luVGV4dF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CiAKIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRU
ZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCiB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuaAkocmV2aXNpb24gNTYzMzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCw3IEBACiAgICAgU3RyaW5n
IEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKTsKICAgICBTdHJpbmcgQVhMaW5rQWN0aW9uVmVy
YigpOwogCisgICAgU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCk7CiAgICAgU3RyaW5nIG11bHRp
cGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcyk7CiAgICAgU3RyaW5nIHVu
a25vd25GaWxlU2l6ZVRleHQoKTsKIAo=
</data>
<flag name="review"
          id="34526"
          type_id="1"
          status="+"
          setter="sullivan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51300</attachid>
            <date>2010-03-22 10:10:13 -0700</date>
            <delta_ts>2010-03-22 11:57:18 -0700</delta_ts>
            <desc>Add code to draw a subtle rounded rectangle containing the text &quot;Missing Plug-in&quot;</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5535</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzM5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMTggQEAKIDIwMTAtMDMt
MjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgogCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5k
ZXJFbWJlZGRlZE9iamVjdCk6IEluaXRpYWxpemUgbmV3IGJvb2xlYW4gdG8gZmFsc2UKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludCk6IEFkZGVkLiBEcmF3IGEg
c3VidGxlIHJvdW5kZWQgcmVjdGFuZ2xlIGNvbnRhaW5pbmcKKyAgICAgICAgdGhlIHRleHQgIk1p
c3NpbmcgUGx1Zy1pbiIKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aDogQWRkZWQgcGFpbnQgbWV0aG9kIGFuZCBuZXcgYm9vbGVhbiAibV9zZXRTaG93c01pc3NpbmdQ
bHVnaW5JbmRpY2F0b3IiCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6
c2V0U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKTogQWRkZWQuCisKKzIwMTAtMDMtMjIgIEtl
dmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEpv
aG4gU3VsbGl2YW4uCiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2MzI4CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAkocmV2aXNpb24gNTYz
MzkpCisrKyByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsMTIgKzM0LDE1IEBACiAgICAgdmlydHVhbCB+UmVuZGVyRW1iZWRkZWRPYmplY3QoKTsK
IAogICAgIHZvaWQgdXBkYXRlV2lkZ2V0KGJvb2wgb25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lu
cyk7CisgICAgdm9pZCBzZXRTaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3IoKSB7IG1fc2hvd3NN
aXNzaW5nUGx1Z2luSW5kaWNhdG9yID0gdHJ1ZTsgfQorICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygp
IGNvbnN0OwogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgYm9vbCBtX3Nob3dzTWlzc2luZ1BsdWdp
bkluZGljYXRvcjsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmplY3QiOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1i
ZWRkZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IHJlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gNTYzMzkpCisrKyByZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNiArMjQsMjMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogCisjaW5j
bHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJG
b250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTEVt
YmVkRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MUGFyYW1FbGVtZW50LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGF0
aC5oIgogI2luY2x1ZGUgIlBsdWdpbldpZGdldC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldFByb3RlY3Rv
ci5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTQ5LDkgKzU2LDE2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisgICAgCitzdGF0aWMgY29uc3Qg
ZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0SGVpZ2h0ID0gMTg7CitzdGF0aWMgY29uc3Qg
ZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0TGVmdFJpZ2h0VGV4dE1hcmdpbiA9IDY7Citz
dGF0aWMgY29uc3QgZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0T3BhY2l0eSA9IDAuMDQ1
Oworc3RhdGljIGNvbnN0IGZsb2F0IG1pc3NpbmdQbHVnaW5Sb3VuZGVkUmVjdFJhZGl1cyA9IDU7
CitzdGF0aWMgY29uc3QgZmxvYXQgbWlzc2luZ1BsdWdpblRleHRPcGFjaXR5ID0gMC4xNzU7CiAK
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdChFbGVtZW50KiBlbGVt
ZW50KQogICAgIDogUmVuZGVyUGFydE9iamVjdChlbGVtZW50KQorICAgICwgbV9zaG93c01pc3Np
bmdQbHVnaW5JbmRpY2F0b3IoZmFsc2UpCiB7CiAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+c2V0
SXNWaXN1YWxseU5vbkVtcHR5KCk7CiB9CkBAIC0zMzEsNiArMzQ1LDU0IEBACiAjZW5kaWYKIH0K
IAordm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGludCB0eCwgaW50IHR5KQoreworICAgIGlmICghbV9zaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0
b3IpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhh
c2VTZWxlY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdHggKz0gYm9yZGVyTGVmdCgp
ICsgcGFkZGluZ0xlZnQoKTsKKyAgICB0eSArPSBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKTsK
KyAgICBGbG9hdFJlY3QgcGx1Z2luUmVjdCA9IEZsb2F0UmVjdCh0eCwgdHksIGNvbnRlbnRXaWR0
aCgpLCBjb250ZW50SGVpZ2h0KCkpOworICAgIAorICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb247CisgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Gb250KENT
U1ZhbHVlV2Via2l0U21hbGxDb250cm9sLCBmb250RGVzY3JpcHRpb24pOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOworICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRGb250U21vb3RoaW5nKEFudGlhbGlhc2VkKTsKKyAgICBGb250IGZvbnQoZm9udERlc2NyaXB0
aW9uLCAwLCAwKTsKKyAgICBmb250LnVwZGF0ZSgwKTsKKyAgICAKKyAgICBTdHJpbmcgbGFiZWwg
PSBtaXNzaW5nUGx1Z2luVGV4dCgpOworICAgIFRleHRSdW4gcnVuKGxhYmVsLmNoYXJhY3RlcnMo
KSwgbGFiZWwubGVuZ3RoKCkpOworICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOworICAg
IGZsb2F0IHRleHRXaWR0aCA9IGZvbnQuZmxvYXRXaWR0aChydW4pOworICAgIAorICAgIEZsb2F0
UmVjdCBtaXNzaW5nUGx1Z2luUmVjdCA9IEZsb2F0UmVjdCgpOworICAgIG1pc3NpbmdQbHVnaW5S
ZWN0LnNldFNpemUoRmxvYXRTaXplKHRleHRXaWR0aCArIG1pc3NpbmdQbHVnaW5Sb3VuZGVkUmVj
dExlZnRSaWdodFRleHRNYXJnaW4gKiAyLCBtaXNzaW5nUGx1Z2luUm91bmRlZFJlY3RIZWlnaHQp
KTsKKyAgICBtaXNzaW5nUGx1Z2luUmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KChwbHVnaW5S
ZWN0LnNpemUoKS53aWR0aCgpIC8gMiAtIG1pc3NpbmdQbHVnaW5SZWN0LnNpemUoKS53aWR0aCgp
IC8gMikgKyBwbHVnaW5SZWN0LmxvY2F0aW9uKCkueCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHBsdWdpblJlY3Quc2l6ZSgpLmhlaWdodCgpIC8gMiAt
IG1pc3NpbmdQbHVnaW5SZWN0LnNpemUoKS5oZWlnaHQoKSAvIDIpICsgcGx1Z2luUmVjdC5sb2Nh
dGlvbigpLnkoKSkpOworICAgCisgICAgUGF0aCBwYXRoID0gUGF0aDo6Y3JlYXRlUm91bmRlZFJl
Y3RhbmdsZShtaXNzaW5nUGx1Z2luUmVjdCwgRmxvYXRTaXplKG1pc3NpbmdQbHVnaW5Sb3VuZGVk
UmVjdFJhZGl1cywgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0UmFkaXVzKSk7CisgICAgY29udGV4
dC0+YmVnaW5QYXRoKCk7CisgICAgY29udGV4dC0+YWRkUGF0aChwYXRoKTsgIAorICAgIGNvbnRl
eHQtPnNldEFscGhhKG1pc3NpbmdQbHVnaW5Sb3VuZGVkUmVjdE9wYWNpdHkpOworICAgIGNvbnRl
eHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7Cisg
ICAgY29udGV4dC0+ZmlsbFBhdGgoKTsKKworICAgIGZsb2F0IGRyYXdpbmdGb250SGVpZ2h0ID0g
Zm9udC5hc2NlbnQoKSArIGZvbnQuZGVzY2VudCgpOworICAgIEZsb2F0UG9pbnQgbGFiZWxQb2lu
dCA9IEZsb2F0UG9pbnQoKTsKKyAgICBsYWJlbFBvaW50LnNldFgocm91bmRmKG1pc3NpbmdQbHVn
aW5SZWN0LmxvY2F0aW9uKCkueCgpICsgKG1pc3NpbmdQbHVnaW5SZWN0LnNpemUoKS53aWR0aCgp
IC0gdGV4dFdpZHRoKSAvIDIpKTsKKyAgICBsYWJlbFBvaW50LnNldFkoZmxvb3JmKG1pc3NpbmdQ
bHVnaW5SZWN0LmxvY2F0aW9uKCkueSgpKyAobWlzc2luZ1BsdWdpblJlY3Quc2l6ZSgpLmhlaWdo
dCgpIC0gZHJhd2luZ0ZvbnRIZWlnaHQpIC8gMiArIGZvbnQuYXNjZW50KCkpKTsKKyAgICBjb250
ZXh0LT5zZXRBbHBoYShtaXNzaW5nUGx1Z2luVGV4dE9wYWNpdHkpOworICAgIGNvbnRleHQtPnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CisgICAgY29u
dGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgbGFiZWxQb2ludCk7ICAgIAorfQorCiB2b2lk
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpsYXlvdXQoKQogewogICAgIEFTU0VSVChuZWVkc0xheW91
dCgpKTsK
</data>
<flag name="review"
          id="34535"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51323</attachid>
            <date>2010-03-22 11:57:18 -0700</date>
            <delta_ts>2010-03-22 12:09:35 -0700</delta_ts>
            <desc>Add code to draw a subtle rounded rectangle containing the text &quot;Missing Plug-in&quot;</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7413</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzUx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDMt
MjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKTogQ2FsbCBzaG93TWlz
c2luZ1BsdWdpbkluZGljYXRvcigpIGluIGNhc2VzIHRoYXQgZmFpbAorICAgICAgICB0byBnZW5l
cmF0ZSBhIHdpZGdldC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwOiBBZGRlZCBuZXcgbWlzc2luZyBwbHVnLWluIHJlbGF0ZWQgc3RhdGljIGNvbnN0YW50cy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9i
amVjdCk6IEluaXRpYWxpemUgbmV3bHkgYm9vbGVhbiB0byBmYWxzZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOiBBZGRlZC4gRHJhd3MgYSBz
dWJ0bGUgcm91bmRlZCByZWN0YW5nbGUKKyAgICAgICAgY29udGFpbmluZyB0aGUgdGV4dCAiTWlz
c2luZyBQbHVnLWluIi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aDogQWRkZWQgcGFpbnRSZXBsYWNlZCBtZXRob2QgYW5kIG5ldyBib29sZWFuCisgICAgICAgICJt
X3Nob3dNaXNzaW5nUGx1Z2luSW5kaWNhdG9yIgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OnNob3dNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKTogQWRkZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOiBNb3ZlZCBwYWludChQYWludEluZm8mLCBpbnQs
IGludCkgZnJvbSBwcml2YXRlIHRvIHByb3RlY3RlZC4KKwogMjAxMC0wMy0yMiAgSmFrdWIgV2ll
Y3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCShyZXZp
c2lvbiA1NjM1MSkKKysrIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwxNSArMzQsMjAgQEAKICAgICB2aXJ0dWFsIH5SZW5kZXJFbWJlZGRlZE9i
amVjdCgpOwogCiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoYm9vbCBvbmx5Q3JlYXRlTm9uTmV0c2Nh
cGVQbHVnaW5zKTsKLQorICAgIHZvaWQgc2hvd01pc3NpbmdQbHVnaW5JbmRpY2F0b3IoKSB7IG1f
c2hvd01pc3NpbmdQbHVnaW5JbmRpY2F0b3IgPSB0cnVlOyB9CiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBib29sIG1fc2hvd01pc3NpbmdQ
bHVnaW5JbmRpY2F0b3I7CisKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRPYmplY3QiOyB9CiAgICAgdmlydHVhbCBib29s
IGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSk7CisK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdmlydHVhbCBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdDsKICNlbmRpZgpJbmRleDogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAkocmV2aXNpb24gNTYzNTEp
CisrKyByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDExICs1
NSwxMSBAQAogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB4LCBpbnQgeSk7CiAK
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzV2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB4LCBpbnQgeSk7
CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0
aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0
eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKTsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAkocmV2aXNpb24gNTYzNTEpCisrKyByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNiArMjQsMjMgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogCisjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJGb250U2VsZWN0b3Iu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTEVtYmVkRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyYW1FbGVt
ZW50LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1
ZGUgIlBsdWdpbldpZGdldC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldFByb3RlY3Rvci5oIgogI2luY2x1
ZGUgIlRleHQuaCIKQEAgLTQ5LDkgKzU2LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisgICAgCitzdGF0aWMgY29uc3QgZmxvYXQgbWlzc2lu
Z1BsdWdpblJvdW5kZWRSZWN0SGVpZ2h0ID0gMTg7CitzdGF0aWMgY29uc3QgZmxvYXQgbWlzc2lu
Z1BsdWdpblJvdW5kZWRSZWN0TGVmdFJpZ2h0VGV4dE1hcmdpbiA9IDY7CitzdGF0aWMgY29uc3Qg
ZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0T3BhY2l0eSA9IDAuMjA7CitzdGF0aWMgY29u
c3QgZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0UmFkaXVzID0gNTsKK3N0YXRpYyBjb25z
dCBmbG9hdCBtaXNzaW5nUGx1Z2luVGV4dE9wYWNpdHkgPSAwLjU1OwogCiBSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoRWxlbWVudCogZWxlbWVudCkKICAgICA6IFJl
bmRlclBhcnRPYmplY3QoZWxlbWVudCkKKyAgICAsIG1fc2hvd01pc3NpbmdQbHVnaW5JbmRpY2F0
b3IoZmFsc2UpCiB7CiAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+c2V0SXNWaXN1YWxseU5vbkVt
cHR5KCk7CiB9CkBAIC0zMzEsNiArMzQ1LDY3IEBACiAjZW5kaWYKIH0KIAordm9pZCBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5
KQoreworICAgIGlmIChtX3Nob3dNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKSB7CisgICAgICAgIFJl
bmRlclJlcGxhY2VkOjpwYWludChwYWludEluZm8sIHR4LCB0eSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgUmVuZGVyUGFydE9iamVjdDo6cGFpbnQocGFpbnRJbmZvLCB0eCwg
dHkpOworfQorICAgIAordm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZChQ
YWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCit7CisgICAgaWYgKCFtX3Nob3dN
aXNzaW5nUGx1Z2luSW5kaWNhdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGFpbnRJ
bmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBp
ZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgdHggKz0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKKyAgICB0eSArPSBib3JkZXJU
b3AoKSArIHBhZGRpbmdUb3AoKTsKKyAgICBGbG9hdFJlY3QgcGx1Z2luUmVjdCA9IEZsb2F0UmVj
dCh0eCwgdHksIGNvbnRlbnRXaWR0aCgpLCBjb250ZW50SGVpZ2h0KCkpOworICAgIAorICAgIEZv
bnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247CisgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRU
aGVtZSgpLT5zeXN0ZW1Gb250KENTU1ZhbHVlV2Via2l0U21hbGxDb250cm9sLCBmb250RGVzY3Jp
cHRpb24pOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOwor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKEFudGlhbGlhc2VkKTsKKyAgICBG
b250IGZvbnQoZm9udERlc2NyaXB0aW9uLCAwLCAwKTsKKyAgICBmb250LnVwZGF0ZSgwKTsKKyAg
ICAKKyAgICBTdHJpbmcgbGFiZWwgPSBtaXNzaW5nUGx1Z2luVGV4dCgpOworICAgIFRleHRSdW4g
cnVuKGxhYmVsLmNoYXJhY3RlcnMoKSwgbGFiZWwubGVuZ3RoKCkpOworICAgIHJ1bi5kaXNhYmxl
Um91bmRpbmdIYWNrcygpOworICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQuZmxvYXRXaWR0aChy
dW4pOworICAgIAorICAgIEZsb2F0UmVjdCBtaXNzaW5nUGx1Z2luUmVjdCA9IEZsb2F0UmVjdCgp
OworICAgIG1pc3NpbmdQbHVnaW5SZWN0LnNldFNpemUoRmxvYXRTaXplKHRleHRXaWR0aCArIG1p
c3NpbmdQbHVnaW5Sb3VuZGVkUmVjdExlZnRSaWdodFRleHRNYXJnaW4gKiAyLCBtaXNzaW5nUGx1
Z2luUm91bmRlZFJlY3RIZWlnaHQpKTsKKyAgICBtaXNzaW5nUGx1Z2luUmVjdC5zZXRMb2NhdGlv
bihGbG9hdFBvaW50KChwbHVnaW5SZWN0LnNpemUoKS53aWR0aCgpIC8gMiAtIG1pc3NpbmdQbHVn
aW5SZWN0LnNpemUoKS53aWR0aCgpIC8gMikgKyBwbHVnaW5SZWN0LmxvY2F0aW9uKCkueCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsdWdpblJlY3Qu
c2l6ZSgpLmhlaWdodCgpIC8gMiAtIG1pc3NpbmdQbHVnaW5SZWN0LnNpemUoKS5oZWlnaHQoKSAv
IDIpICsgcGx1Z2luUmVjdC5sb2NhdGlvbigpLnkoKSkpOworICAgCisgICAgUGF0aCBwYXRoID0g
UGF0aDo6Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShtaXNzaW5nUGx1Z2luUmVjdCwgRmxvYXRTaXpl
KG1pc3NpbmdQbHVnaW5Sb3VuZGVkUmVjdFJhZGl1cywgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0
UmFkaXVzKSk7CisgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQtPmNsaXAocGx1Z2lu
UmVjdCk7CisgICAgY29udGV4dC0+YmVnaW5QYXRoKCk7CisgICAgY29udGV4dC0+YWRkUGF0aChw
YXRoKTsgIAorICAgIGNvbnRleHQtPnNldEFscGhhKG1pc3NpbmdQbHVnaW5Sb3VuZGVkUmVjdE9w
YWNpdHkpOworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIHN0eWxlKCkt
PmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC0+ZmlsbFBhdGgoKTsKKworICAgIEZsb2F0UG9p
bnQgbGFiZWxQb2ludCA9IEZsb2F0UG9pbnQoKTsKKyAgICBsYWJlbFBvaW50LnNldFgocm91bmRm
KG1pc3NpbmdQbHVnaW5SZWN0LmxvY2F0aW9uKCkueCgpICsgKG1pc3NpbmdQbHVnaW5SZWN0LnNp
emUoKS53aWR0aCgpIC0gdGV4dFdpZHRoKSAvIDIpKTsKKyAgICBsYWJlbFBvaW50LnNldFkoZmxv
b3JmKG1pc3NpbmdQbHVnaW5SZWN0LmxvY2F0aW9uKCkueSgpKyAobWlzc2luZ1BsdWdpblJlY3Qu
c2l6ZSgpLmhlaWdodCgpIC0gZm9udC5oZWlnaHQoKSkgLyAyICsgZm9udC5hc2NlbnQoKSkpOwor
ICAgIGNvbnRleHQtPnNldEFscGhhKG1pc3NpbmdQbHVnaW5UZXh0T3BhY2l0eSk7CisgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsK
KyAgICBjb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBsYWJlbFBvaW50KTsKKyAgICBj
b250ZXh0LT5yZXN0b3JlKCk7Cit9CisKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmxheW91
dCgpCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwpJbmRleDogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1
NjM1MSkKKysrIGxvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzYs
NyArMTM3Niw4IEBACiAgICAgICAgIGlmICh3aWRnZXQpIHsKICAgICAgICAgICAgIHJlbmRlcmVy
LT5zZXRXaWRnZXQod2lkZ2V0KTsKICAgICAgICAgICAgIG1fY29udGFpbnNQbHVnSW5zID0gdHJ1
ZTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zaG93
TWlzc2luZ1BsdWdpbkluZGljYXRvcigpOwogICAgIH0KIAogICAgIHJldHVybiB3aWRnZXQgIT0g
MDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51326</attachid>
            <date>2010-03-22 12:09:35 -0700</date>
            <delta_ts>2010-03-22 12:20:02 -0700</delta_ts>
            <desc>Add code to draw a subtle rounded rectangle containing the text &quot;Missing Plug-in&quot;</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7745</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzUx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDMt
MjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjMyOAorICAgICAgICAKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4pOiBDYWxs
IHNldFNob3dzTWlzc2luZ1BsdWdpbkluZGljYXRvcih0cnVlKSBpbiBjYXNlcyB0aGF0IGZhaWwK
KyAgICAgICAgdG8gZ2VuZXJhdGUgYSB3aWRnZXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcDogQWRkZWQgbmV3IG1pc3NpbmcgcGx1Zy1pbiByZWxhdGVkIHN0
YXRpYyBjb25zdGFudHMKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpS
ZW5kZXJFbWJlZGRlZE9iamVjdCk6IEluaXRpYWxpemUgbmV3bHkgYm9vbGVhbiB0byBmYWxzZS4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOiBB
ZGRlZC4gRHJhd3MgYSBzdWJ0bGUgcm91bmRlZCByZWN0YW5nbGUKKyAgICAgICAgY29udGFpbmlu
ZyB0aGUgdGV4dCAiTWlzc2luZyBQbHVnLWluIi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuaDogQWRkZWQgdGhlIGZvbGxvd2luZyB0d28gbWV0aG9kcyBiZWxvdy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpzZXRTaG93c01pc3NpbmdQ
bHVnaW5JbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnNob3dzTWlzc2luZ1BsdWdpbkluZGljYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5oOiBNb3ZlZCBwYWludChQYWludEluZm8mLCBpbnQsIGludCkgZnJvbSBwcml2YXRl
IHRvIHByb3RlY3RlZC4KKwogMjAxMC0wMy0yMiAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdt
YWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCShyZXZpc2lvbiA1NjM1MSkKKysrIHJl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw4IEBACiAgICAgdmlydHVhbCB+UmVuZGVyRW1iZWRkZWRPYmplY3QoKTsKIAogICAgIHZvaWQg
dXBkYXRlV2lkZ2V0KGJvb2wgb25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lucyk7Ci0KKyAgICB2
b2lkIHNldFNob3dzTWlzc2luZ1BsdWdpbkluZGljYXRvcihib29sIHNob3dzTWlzc2luZ1BsdWdp
bkluZGljYXRvcikgeyBtX3NldFNob3dzTWlzc2luZ1BsdWdpbkluZGljYXRvciA9IHNob3dzTWlz
c2luZ1BsdWdpbkluZGljYXRvcjsgfQorICAgIGJvb2wgc2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNh
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9zZXRTaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3I7IH0K
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdmlydHVhbCBib29sIGFsbG93
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdDsKICNlbmRpZgpAQCAtNDMsMTEgKzQ0LDE1
IEBACiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4g
IlJlbmRlckVtYmVkZGVkT2JqZWN0IjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0VtYmVkZGVkT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpOworCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3Q7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICBib29sIG1fc2V0
U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yOwogfTsKIAogaW5saW5lIFJlbmRlckVtYmVkZGVk
T2JqZWN0KiB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KQpJbmRl
eDogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuaAkocmV2aXNpb24gNTYzNTEpCisrKyByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDExICs1NSwxMSBAQAogCiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGludCB4LCBpbnQgeSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
V2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGludCB4LCBpbnQgeSk7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpOwogICAg
IHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKTsKSW5k
ZXg6IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gNTYzNTEpCisrKyByZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNiAr
MjQsMjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9i
amVjdC5oIgogCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkZvbnQu
aCIKKyNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSFRNTEVtYmVkRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MUGFyYW1FbGVtZW50LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBsdWdpbldpZGdldC5oIgorI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRl
cldpZGdldFByb3RlY3Rvci5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTQ5LDkgKzU2LDE2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisgICAg
CitzdGF0aWMgY29uc3QgZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0SGVpZ2h0ID0gMTg7
CitzdGF0aWMgY29uc3QgZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0TGVmdFJpZ2h0VGV4
dE1hcmdpbiA9IDY7CitzdGF0aWMgY29uc3QgZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0
T3BhY2l0eSA9IDAuMjA7CitzdGF0aWMgY29uc3QgZmxvYXQgbWlzc2luZ1BsdWdpblJvdW5kZWRS
ZWN0UmFkaXVzID0gNTsKK3N0YXRpYyBjb25zdCBmbG9hdCBtaXNzaW5nUGx1Z2luVGV4dE9wYWNp
dHkgPSAwLjU1OwogCiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3Qo
RWxlbWVudCogZWxlbWVudCkKICAgICA6IFJlbmRlclBhcnRPYmplY3QoZWxlbWVudCkKKyAgICAs
IG1fc2V0U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKGZhbHNlKQogewogICAgIHZpZXcoKS0+
ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlOb25FbXB0eSgpOwogfQpAQCAtMzMxLDYgKzM0NSw2
NyBAQAogI2VuZGlmCiB9CiAKK3ZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKK3sKKyAgICBpZiAobV9zZXRTaG93c01p
c3NpbmdQbHVnaW5JbmRpY2F0b3IpIHsKKyAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KHBh
aW50SW5mbywgdHgsIHR5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBSZW5k
ZXJQYXJ0T2JqZWN0OjpwYWludChwYWludEluZm8sIHR4LCB0eSk7Cit9CisgICAgCit2b2lkIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBp
bnQgdHgsIGludCB0eSkKK3sKKyAgICBpZiAoIW1fc2V0U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNh
dG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2VTZWxlY3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdHggKz0gYm9yZGVyTGVm
dCgpICsgcGFkZGluZ0xlZnQoKTsKKyAgICB0eSArPSBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KTsKKyAgICBGbG9hdFJlY3QgcGx1Z2luUmVjdCA9IEZsb2F0UmVjdCh0eCwgdHksIGNvbnRlbnRX
aWR0aCgpLCBjb250ZW50SGVpZ2h0KCkpOworICAgIAorICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb247CisgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Gb250
KENTU1ZhbHVlV2Via2l0U21hbGxDb250cm9sLCBmb250RGVzY3JpcHRpb24pOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRGb250U21vb3RoaW5nKEFudGlhbGlhc2VkKTsKKyAgICBGb250IGZvbnQoZm9udERlc2Ny
aXB0aW9uLCAwLCAwKTsKKyAgICBmb250LnVwZGF0ZSgwKTsKKyAgICAKKyAgICBTdHJpbmcgbGFi
ZWwgPSBtaXNzaW5nUGx1Z2luVGV4dCgpOworICAgIFRleHRSdW4gcnVuKGxhYmVsLmNoYXJhY3Rl
cnMoKSwgbGFiZWwubGVuZ3RoKCkpOworICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwor
ICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQuZmxvYXRXaWR0aChydW4pOworICAgIAorICAgIEZs
b2F0UmVjdCBtaXNzaW5nUGx1Z2luUmVjdCA9IEZsb2F0UmVjdCgpOworICAgIG1pc3NpbmdQbHVn
aW5SZWN0LnNldFNpemUoRmxvYXRTaXplKHRleHRXaWR0aCArIG1pc3NpbmdQbHVnaW5Sb3VuZGVk
UmVjdExlZnRSaWdodFRleHRNYXJnaW4gKiAyLCBtaXNzaW5nUGx1Z2luUm91bmRlZFJlY3RIZWln
aHQpKTsKKyAgICBtaXNzaW5nUGx1Z2luUmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KChwbHVn
aW5SZWN0LnNpemUoKS53aWR0aCgpIC8gMiAtIG1pc3NpbmdQbHVnaW5SZWN0LnNpemUoKS53aWR0
aCgpIC8gMikgKyBwbHVnaW5SZWN0LmxvY2F0aW9uKCkueCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsdWdpblJlY3Quc2l6ZSgpLmhlaWdodCgpIC8g
MiAtIG1pc3NpbmdQbHVnaW5SZWN0LnNpemUoKS5oZWlnaHQoKSAvIDIpICsgcGx1Z2luUmVjdC5s
b2NhdGlvbigpLnkoKSkpOworICAgCisgICAgUGF0aCBwYXRoID0gUGF0aDo6Y3JlYXRlUm91bmRl
ZFJlY3RhbmdsZShtaXNzaW5nUGx1Z2luUmVjdCwgRmxvYXRTaXplKG1pc3NpbmdQbHVnaW5Sb3Vu
ZGVkUmVjdFJhZGl1cywgbWlzc2luZ1BsdWdpblJvdW5kZWRSZWN0UmFkaXVzKSk7CisgICAgY29u
dGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQtPmNsaXAocGx1Z2luUmVjdCk7CisgICAgY29udGV4
dC0+YmVnaW5QYXRoKCk7CisgICAgY29udGV4dC0+YWRkUGF0aChwYXRoKTsgIAorICAgIGNvbnRl
eHQtPnNldEFscGhhKG1pc3NpbmdQbHVnaW5Sb3VuZGVkUmVjdE9wYWNpdHkpOworICAgIGNvbnRl
eHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7Cisg
ICAgY29udGV4dC0+ZmlsbFBhdGgoKTsKKworICAgIEZsb2F0UG9pbnQgbGFiZWxQb2ludCA9IEZs
b2F0UG9pbnQoKTsKKyAgICBsYWJlbFBvaW50LnNldFgocm91bmRmKG1pc3NpbmdQbHVnaW5SZWN0
LmxvY2F0aW9uKCkueCgpICsgKG1pc3NpbmdQbHVnaW5SZWN0LnNpemUoKS53aWR0aCgpIC0gdGV4
dFdpZHRoKSAvIDIpKTsKKyAgICBsYWJlbFBvaW50LnNldFkoZmxvb3JmKG1pc3NpbmdQbHVnaW5S
ZWN0LmxvY2F0aW9uKCkueSgpKyAobWlzc2luZ1BsdWdpblJlY3Quc2l6ZSgpLmhlaWdodCgpIC0g
Zm9udC5oZWlnaHQoKSkgLyAyICsgZm9udC5hc2NlbnQoKSkpOworICAgIGNvbnRleHQtPnNldEFs
cGhhKG1pc3NpbmdQbHVnaW5UZXh0T3BhY2l0eSk7CisgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KENvbG9yOjpibGFjaywgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LT5kcmF3
QmlkaVRleHQoZm9udCwgcnVuLCBsYWJlbFBvaW50KTsKKyAgICBjb250ZXh0LT5yZXN0b3JlKCk7
Cit9CisKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmxheW91dCgpCiB7CiAgICAgQVNTRVJU
KG5lZWRzTGF5b3V0KCkpOwpJbmRleDogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1NjM1MSkKKysrIGxvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzYsNyArMTM3Niw4IEBACiAgICAg
ICAgIGlmICh3aWRnZXQpIHsKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRXaWRnZXQod2lkZ2V0
KTsKICAgICAgICAgICAgIG1fY29udGFpbnNQbHVnSW5zID0gdHJ1ZTsKLSAgICAgICAgfQorICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRTaG93c01pc3NpbmdQbHVnaW5J
bmRpY2F0b3IodHJ1ZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHdpZGdldCAhPSAwOwo=
</data>
<flag name="review"
          id="34566"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51352</attachid>
            <date>2010-03-22 14:18:17 -0700</date>
            <delta_ts>2010-03-22 14:57:17 -0700</delta_ts>
            <desc>Eliminate WebNullPluginView from Mac OS X WebKit</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20915</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU2
MzU4KQorKysgV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjYsNyArMTY2LDYgQEAKIAkJOTM5ODEwMkIwODI0QkYwMTAwOERGMDM4IC8q
IFdlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjVBNjcyQjkwMjYzODY2RTAxMDAwMTAyIC8qIFdlYkJhc2VO
ZXRzY2FwZVBsdWdpblN0cmVhbS5oICovOyB9OwogCQk5Mzk4MTAyRTA4MjRCRjAxMDA4REYwMzgg
LyogV2ViQmFzZVBsdWdpblBhY2thZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzRTRBRjQ2MDM2NjUyMTUwMDAwRTUwNiAvKiBXZWJCYXNlUGx1Z2lu
UGFja2FnZS5oICovOyB9OwogCQk5Mzk4MTAzMTA4MjRCRjAxMDA4REYwMzggLyogV2ViTmV0c2Nh
cGVQbHVnaW5QYWNrYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNUY3MTcxRTAyODg0OTNDMDE4NjM1Q0EgLyogV2ViTmV0c2NhcGVQbHVnaW5QYWNr
YWdlLmggKi87IH07Ci0JCTkzOTgxMDM0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOdWxsUGx1Z2lu
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4
ODNCRTAwMjVFNUU5RDAxMDAwMTAyIC8qIFdlYk51bGxQbHVnaW5WaWV3LmggKi87IH07CiAJCTkz
OTgxMDM1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0OERGRjg0MDM2NUZFNkEwMENBMkFDQSAvKiBX
ZWJQbHVnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCTkzOTgxMDM2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0OERGRjg1MDM2NUZF
NkEwMENBMkFDQSAvKiBXZWJQbHVnaW5Db250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTkzOTgxMDM3MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJQbHVnaW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDY3Mjc1QzAzNjcxNTg1MDBDQTJBQ0EgLyogV2ViUGx1Z2luQ29udHJvbGxl
ci5oICovOyB9OwpAQCAtMjQzLDcgKzI0Miw2IEBACiAJCTkzOTgxMEIwMDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJQbHVnaW5Db250YWluZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgzNkY1RTA3RUU0MjU5MDA2ODJGOTUgLyogV2ViUGx1
Z2luQ29udGFpbmVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzOTgxMEIxMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250
YWluZXJDaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjVFMTE1MDMwN0VGRkVCRjAwOUI4QkY3IC8qIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgg
Ki87IH07CiAJCTkzOTgxMEI1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0NUQxN0IwMzY1QkYzNTAwODYzNUNFIC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwubmliICov
OyB9OwotCQk5Mzk4MTBCNjA4MjRCRjAxMDA4REYwMzggLyogbnVsbHBsdWdpbi50aWZmIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg4M0JERTAyNUU1
QzZBMDEwMDAxMDIgLyogbnVsbHBsdWdpbi50aWZmICovOyB9OwogCQk5Mzk4MTBCNzA4MjRCRjAx
MDA4REYwMzggLyogdXJsX2ljb24udGlmZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjVCNjcxMzAwMjNFREY4OTAxQzFBNTI1IC8qIHVybF9pY29uLnRp
ZmYgKi87IH07CiAJCTkzOTgxMEJBMDgyNEJGMDEwMDhERjAzOCAvKiBJRE5TY3JpcHRXaGl0ZUxp
c3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzI1RkJEQzA3RDgyOUFFMDAxNTk4NjIgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLzsgfTsK
IAkJOTM5ODEwQkMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM5NDQ2MDdFMDIwRjUw
RUQwRUNBMTc2NyAvKiBXZWJCYWNrRm9yd2FyZExpc3QubW0gKi87IH07CkBAIC0yNjUsNyArMjYz
LDYgQEAKIAkJOTM5ODEwRDEwODI0QkYwMTAwOERGMDM4IC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdp
blN0cmVhbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1QTY3MkJBMDI2Mzg2NkUwMTAwMDEwMiAvKiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW0gKi87IH07CiAJCTkzOTgxMEQzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJCYXNlUGx1Z2luUGFj
a2FnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
RTRBRjQ3MDM2NjUyMTUwMDAwRTUwNiAvKiBXZWJCYXNlUGx1Z2luUGFja2FnZS5tbSAqLzsgfTsK
IAkJOTM5ODEwRDYwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1RjcxNzFG
MDI4ODQ5M0MwMTg2MzVDQSAvKiBXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubW0gKi87IH07Ci0J
CTkzOTgxMEQ5MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOdWxsUGx1Z2luVmlldy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODgzQkUxMDI1RTVFOUQw
MTAwMDEwMiAvKiBXZWJOdWxsUGx1Z2luVmlldy5tbSAqLzsgfTsKIAkJOTM5ODEwREEwODI0QkYw
MTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDY3Mjc1RDAzNjcxNTg1MDBDQTJBQ0EgLyogV2Vi
UGx1Z2luQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJOTM5ODEwREIwODI0QkYwMTAwOERGMDM4IC8q
IFdlYlBsdWdpbkRhdGFiYXNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjVGNzE3MjEwMjg4NDkzQzAxODYzNUNBIC8qIFdlYlBsdWdpbkRhdGFiYXNl
Lm1tICovOyB9OwogCQk5Mzk4MTBEQzA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luUGFja2Fn
ZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFNEFG
NEMwMzY2NTk0NDAwMDBFNTA2IC8qIFdlYlBsdWdpblBhY2thZ2UubSAqLzsgfTsKQEAgLTY3Miw5
ICs2NjksNiBAQAogCQlGNTM0NDRDRTAyRTg3Q0JBMDE4NjM1Q0EgLyogV2ViS2l0U3RhdGlzdGlj
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YktpdFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCUY1MzQ0NENGMDJFODdDQkEwMTg2MzVDQSAvKiBXZWJLaXRTdGF0
aXN0aWNzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBw
YXRoID0gV2ViS2l0U3RhdGlzdGljcy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUzNDQ0RDIwMkU4N0Q0QjAxODYzNUNBIC8qIFdl
YktpdFN0YXRpc3RpY3NQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0U3RhdGlzdGljc1ByaXZhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUY1ODgzQkRFMDI1
RTVDNkEwMTAwMDEwMiAvKiBudWxscGx1Z2luLnRpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0gbnVsbHBsdWdpbi50
aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNTg4M0JFMDAyNUU1RTlEMDEwMDAx
MDIgLyogV2ViTnVsbFBsdWdpblZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOdWxsUGx1Z2luVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjU4ODNCRTEwMjVFNUU5
RDAxMDAwMTAyIC8qIFdlYk51bGxQbHVnaW5WaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOdWxsUGx1Z2luVmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUY1OTI3RDRFMDJEMjZDNUUwMUNBMkRCQiAvKiBXZWJLaXRFcnJvcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRFcnJvcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1
OTY2OEM4MDJBRDI5MjMwMTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IHBhdGggPSBXZWJTdHJpbmdU
cnVuY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCUY1OTY2OEM5MDJBRDI5MjMwMTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0
b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBw
YXRoID0gV2ViU3RyaW5nVHJ1bmNhdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTc5OSw3ICs3OTMsNiBAQAogCQkJCTkzMjVG
QkRDMDdEODI5QUUwMDE1OTg2MiAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovLAogCQkJCTkz
OTgxMTMyMDgyNEJGMDEwMDhERjAzOCAvKiBJbmZvLnBsaXN0ICovLAogCQkJCTVERTgzQTdEMEQw
RjdGQUQwMENBRDEyQSAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzICovLAotCQkJCUY1ODgzQkRFMDI1
RTVDNkEwMTAwMDEwMiAvKiBudWxscGx1Z2luLnRpZmYgKi8sCiAJCQkJRUQzQjQ4REUwQ0M1MUY3
RTAwREZGMUVCIC8qIFN0cmluZ3NOb3RUb0JlTG9jYWxpemVkLnR4dCAqLywKIAkJCQlGNUI2NzEz
MDAyM0VERjg5MDFDMUE1MjUgLyogdXJsX2ljb24udGlmZiAqLywKIAkJCQk1REU4M0E3NDBEMEY3
Rjk0MDBDQUQxMkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiAqLywKQEAgLTEy
NzIsOCArMTI2NSw2IEBACiAJCQkJODQ4REZGNDMwMzY1RjcxNTAwQ0EyQUNBIC8qIFdlYktpdCBQ
bHVnLWlucyAqLywKIAkJCQk4M0U0QUY0NjAzNjY1MjE1MDAwMEU1MDYgLyogV2ViQmFzZVBsdWdp
blBhY2thZ2UuaCAqLywKIAkJCQk4M0U0QUY0NzAzNjY1MjE1MDAwMEU1MDYgLyogV2ViQmFzZVBs
dWdpblBhY2thZ2UubW0gKi8sCi0JCQkJRjU4ODNCRTAwMjVFNUU5RDAxMDAwMTAyIC8qIFdlYk51
bGxQbHVnaW5WaWV3LmggKi8sCi0JCQkJRjU4ODNCRTEwMjVFNUU5RDAxMDAwMTAyIC8qIFdlYk51
bGxQbHVnaW5WaWV3Lm1tICovLAogCQkJCUY1RjcxNzIwMDI4ODQ5M0MwMTg2MzVDQSAvKiBXZWJQ
bHVnaW5EYXRhYmFzZS5oICovLAogCQkJCUY1RjcxNzIxMDI4ODQ5M0MwMTg2MzVDQSAvKiBXZWJQ
bHVnaW5EYXRhYmFzZS5tbSAqLywKIAkJCQkyMjQxMDBGMjA5MTgxOEQ5MDBEMkQyNjYgLyogV2Vi
UGx1Z2luc1ByaXZhdGUuaCAqLywKQEAgLTE0OTgsNyArMTQ4OSw2IEBACiAJCQkJNjVFMEY5RTYw
ODUwMEYyMzAwN0U1Q0I5IC8qIFdlYk5TVXNlckRlZmF1bHRzRXh0cmFzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5Mzk4MTAyNDA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNWaWV3RXh0cmFzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5Mzk4MTAyNTA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNXaW5kb3dF
eHRyYXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzOTgxMDM0MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJOdWxsUGx1Z2luVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMkEwODI0QkYwMTAw
OERGMDM4IC8qIFdlYlBhbmVsQXV0aGVudGljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0QzQzVCQzBCNTc3M0M1MDAyQ0E0NTAgLyogV2ViUGFzdGVib2FyZEhlbHBlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzdCNkZCNEUxMDYzNTMwQzAwMEZEQjNCIC8qIFdlYlBERkRvY3Vt
ZW50RXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAgLTE2MjEsNyArMTYxMSw2IEBACiAJCQlmaWxl
cyA9ICgKIAkJCQk5Mzk4MTBCQTA4MjRCRjAxMDA4REYwMzggLyogSUROU2NyaXB0V2hpdGVMaXN0
LnR4dCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNURFODNBN0YwRDBGN0ZBRDAwQ0FEMTJBIC8qIExv
Y2FsaXphYmxlLnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAotCQkJCTkzOTgxMEI2MDgyNEJGMDEw
MDhERjAzOCAvKiBudWxscGx1Z2luLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzOTgxMEI3
MDgyNEJGMDEwMDhERjAzOCAvKiB1cmxfaWNvbi50aWZmIGluIFJlc291cmNlcyAqLywKIAkJCQk5
Mzk4MTBCNTA4MjRCRjAxMDA4REYwMzggLyogV2ViQXV0aGVudGljYXRpb25QYW5lbC5uaWIgaW4g
UmVzb3VyY2VzICovLAogCQkJCTVERTgzQTdBMEQwRjdGOTQwMENBRDEyQSAvKiBXZWJKYXZhU2Ny
aXB0VGV4dElucHV0UGFuZWwubmliIGluIFJlc291cmNlcyAqLywKQEAgLTE4NzYsNyArMTg2NSw2
IEBACiAJCQkJNjVFMEY5RTcwODUwMEYyMzAwN0U1Q0I5IC8qIFdlYk5TVXNlckRlZmF1bHRzRXh0
cmFzLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBDOTA4MjRCRjAxMDA4REYwMzggLyogV2Vi
TlNWaWV3RXh0cmFzLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBDQTA4MjRCRjAxMDA4REYw
MzggLyogV2ViTlNXaW5kb3dFeHRyYXMubSBpbiBTb3VyY2VzICovLAotCQkJCTkzOTgxMEQ5MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJOdWxsUGx1Z2luVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTgxMEQwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxl
ci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEM0M1QkQwQjU3NzNDNTAwMkNBNDUwIC8qIFdlYlBh
c3RlYm9hcmRIZWxwZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzN0I2RkI0RjEwNjM1MzBDMDAw
RkRCM0IgLyogV2ViUERGRG9jdW1lbnRFeHRyYXMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
NTYzNTgpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEg
QEAKKzIwMTAtMDMtMjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBXZWJOdWxsUGx1Z2luVmlldyBhbmQgbnVsbHBs
dWdpbi50aWZmIGZyb20gdGhlIHByb2plY3QuCisKIDIwMTAtMDMtMjIgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgICogU3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQudHh0
OiBVcGRhdGVkIGZvciByZWNlbnQgY2hhbmdlcy4KSW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gNTYzNTgpCisrKyBXZWJLaXQvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw2IEBACiAjaW1wb3J0ICJXZWJQbHVnaW5Db250YWluZXJDaGVjay5oIgogI2ltcG9ydCAi
V2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLmgiCiAjaW1wb3J0ICJXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oIgotI2ltcG9ydCAiV2ViTnVsbFBsdWdpblZpZXcuaCIK
ICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXZWJQbHVnaW5SZXF1ZXN0Lmgi
CiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKSW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOdWxsUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
TnVsbFBsdWdpblZpZXcubW0JKHJldmlzaW9uIDU2MzU1KQorKysgV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk51bGxQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwMCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJXZWJOdWxsUGx1Z2luVmlldy5oIgotCi0jaW1wb3J0ICJET01FbGVt
ZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5n
LmgiCi0jaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJWaWV3SW50ZXJu
YWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRWxl
bWVudC5oPgotCi1AaW1wbGVtZW50YXRpb24gV2ViTnVsbFBsdWdpblZpZXcKLQotLSBpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgZXJyb3I6KE5TRXJyb3IgKillcnIgRE9NRWxlbWVudDooRE9N
RWxlbWVudCAqKWVsZW0KLXsgICAgCi0gICAgc3RhdGljIE5TSW1hZ2UgKm51bGxQbHVnSW5JbWFn
ZTsKLSAgICBpZiAoIW51bGxQbHVnSW5JbWFnZSkgewotICAgICAgICBOU0J1bmRsZSAqYnVuZGxl
ID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJOdWxsUGx1Z2luVmlldyBjbGFzc11dOwot
ICAgICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJu
dWxscGx1Z2luIiBvZlR5cGU6QCJ0aWZmIl07Ci0gICAgICAgIG51bGxQbHVnSW5JbWFnZSA9IFtb
TlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mRmlsZTppbWFnZVBhdGhdOwotICAgIH0K
LSAgICAKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGVycm9yID0gW2VyciByZXRhaW5dOwot
ICAgIGlmIChlcnIpCi0gICAgICAgIGVsZW1lbnQgPSBbZWxlbSByZXRhaW5dOwotCi0gICAgW3Nl
bGYgc2V0SW1hZ2U6bnVsbFBsdWdJbkltYWdlXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
ICh2b2lkKWRlYWxsb2MKLQotewotICAgIFtlcnJvciByZWxlYXNlXTsKLSAgICBbZWxlbWVudCBy
ZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpcmVwb3J0RmFpbHVy
ZQotewotICAgIE5TRXJyb3IgKmxvY2FsRXJyb3IgPSBlcnJvcjsKLSAgICBET01FbGVtZW50ICps
b2NhbEVsZW1lbnQgPSBlbGVtZW50OwotCi0gICAgZXJyb3IgPSBuaWw7Ci0gICAgZWxlbWVudCA9
IG5pbDsKLQotICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IGtpdChjb3JlKGxvY2FsRWxlbWVudCkt
PmRvY3VtZW50KCktPmZyYW1lKCkpOwotICAgIGlmICh3ZWJGcmFtZSkgewotICAgICAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwotICAgICAgICBXZWJSZXNvdXJjZURl
bGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldFJl
c291cmNlTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwotICAgICAgICBpZiAo
aW1wbGVtZW50YXRpb25zLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3JGdW5jKQotICAgICAgICAgICAg
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+cGx1Z0luRmFpbGVkV2l0
aEVycm9yRnVuYywgd2ViVmlldywKLSAgICAgICAgICAgICAgICBAc2VsZWN0b3Iod2ViVmlldzpw
bHVnSW5GYWlsZWRXaXRoRXJyb3I6ZGF0YVNvdXJjZTopLCBsb2NhbEVycm9yLCBbd2ViRnJhbWUg
X2RhdGFTb3VyY2VdKTsKLSAgICB9Ci0KLSAgICBbbG9jYWxFcnJvciByZWxlYXNlXTsKLSAgICBb
bG9jYWxFbGVtZW50IHJlbGVhc2VdOwotfQotCi0tICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cK
LXsKLSAgICBpZiAoIWVycm9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoW3NlbGYgd2lu
ZG93XSkKLSAgICAgICAgW3NlbGYgcmVwb3J0RmFpbHVyZV07Ci19Ci0KLUBlbmQKSW5kZXg6IFdl
YktpdC9tYWMvUGx1Z2lucy9XZWJOdWxsUGx1Z2luVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvUGx1Z2lucy9XZWJOdWxsUGx1Z2luVmlldy5oCShyZXZpc2lvbiA1NjM1NSkKKysrIFdl
YktpdC9tYWMvUGx1Z2lucy9XZWJOdWxsUGx1Z2luVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KLQotQGNsYXNz
IERPTUVsZW1lbnQ7Ci0KLUBpbnRlcmZhY2UgV2ViTnVsbFBsdWdpblZpZXcgOiBOU0ltYWdlVmll
dwotewotICAgIE5TRXJyb3IgKmVycm9yOwotICAgIERPTUVsZW1lbnQgKmVsZW1lbnQ7Ci19Ci0K
LS0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBlcnJvcjooTlNFcnJvciAqKWVycm9y
IERPTUVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50OwotCi1AZW5kCkluZGV4OiBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlz
aW9uIDU2MzU4KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNiBAQAogI2ltcG9ydCAiV2ViTlNV
UkxFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luVmlldy5oIgogI2ltcG9ydCAi
V2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLmgiCi0jaW1wb3J0ICJXZWJOdWxsUGx1Z2luVmlldy5o
IgogI2ltcG9ydCAiV2ViUGFuZWxBdXRoZW50aWNhdGlvbkhhbmRsZXIuaCIKICNpbXBvcnQgIldl
YlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlBsdWdpblBhY2thZ2UuaCIKQEAgLTE1
OTgsMjAgKzE1OTcsMjQgQEAKICNlbmRpZgogICAgIH0gZWxzZQogICAgICAgICBlcnJvckNvZGUg
PSBXZWJLaXRFcnJvckNhbm5vdEZpbmRQbHVnSW47Ci0KKyAgICAKICAgICBpZiAoIWVycm9yQ29k
ZSAmJiAhdmlldykKICAgICAgICAgZXJyb3JDb2RlID0gV2ViS2l0RXJyb3JDYW5ub3RMb2FkUGx1
Z0luOworICAgIAorICAgIGlmIChlcnJvckNvZGUgJiYgbV93ZWJGcmFtZSkgeworICAgICAgICBX
ZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0g
V2ViVmlld0dldFJlc291cmNlTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwor
ICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3JGdW5jKSB7
CisgICAgICAgICAgICBLVVJMIHBsdWdpblBhZ2VVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwo
ZGVwcmVjYXRlZFBhcnNlVVJMKHBhcmFtZXRlclZhbHVlKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVz
LCAicGx1Z2luc3BhZ2UiKSkpOworICAgICAgICAgICAgaWYgKCFwbHVnaW5QYWdlVVJMLnByb3Rv
Y29sSW5IVFRQRmFtaWx5KCkpCisgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTCA9IEtVUkwo
KTsKKyAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdp
dGhQbHVnaW5FcnJvckNvZGU6ZXJyb3JDb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50VVJMOnBsdWdpblVSTCBwbHVn
aW5QYWdlVVJMOnBsdWdpblBhZ2VVUkwgcGx1Z2luTmFtZTpbcGx1Z2luUGFja2FnZSBuYW1lXSBN
SU1FVHlwZTpNSU1FVHlwZV07CisgICAgICAgICAgICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUo
aW1wbGVtZW50YXRpb25zLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3JGdW5jLCBbbV93ZWJGcmFtZS5n
ZXQoKSB3ZWJWaWV3XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2Vs
ZWN0b3Iod2ViVmlldzpwbHVnSW5GYWlsZWRXaXRoRXJyb3I6ZGF0YVNvdXJjZTopLCBlcnJvciwg
W21fd2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdKTsKKyAgICAgICAgICAgIFtlcnJvciByZWxl
YXNlXTsKKyAgICAgICAgfQogCi0gICAgaWYgKGVycm9yQ29kZSkgewotICAgICAgICBLVVJMIHBs
dWdpblBhZ2VVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKHBh
cmFtZXRlclZhbHVlKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAicGx1Z2luc3BhZ2UiKSkpOwot
ICAgICAgICBpZiAoIXBsdWdpblBhZ2VVUkwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKLSAgICAg
ICAgICAgIHBsdWdpblBhZ2VVUkwgPSBLVVJMKCk7Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0g
W1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6ZXJyb3JDb2RlCi0gICAg
ICAgICAgICBjb250ZW50VVJMOnBsdWdpblVSTCBwbHVnaW5QYWdlVVJMOnBsdWdpblBhZ2VVUkwg
cGx1Z2luTmFtZTpbcGx1Z2luUGFja2FnZSBuYW1lXSBNSU1FVHlwZTpNSU1FVHlwZV07Ci0gICAg
ICAgIFdlYk51bGxQbHVnaW5WaWV3ICpudWxsVmlldyA9IFtbW1dlYk51bGxQbHVnaW5WaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKQotICAgICAgICAgICAgZXJyb3I6ZXJyb3IgRE9NRWxlbWVudDpraXQoZWxlbWVudCld
IGF1dG9yZWxlYXNlXTsKLSAgICAgICAgdmlldyA9IG51bGxWaWV3OwotICAgICAgICBbZXJyb3Ig
cmVsZWFzZV07CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKICAgICBBU1NFUlQodmll
dyk7CkBAIC0xNjkyLDE0ICsxNjk1LDEzIEBACiAgICAgfQogCiAgICAgaWYgKCF2aWV3KSB7Ci0g
ICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5F
cnJvckNvZGU6V2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUKLSAgICAgICAgICAgIGNvbnRlbnRV
Ukw6bmlsCi0gICAgICAgICAgICBwbHVnaW5QYWdlVVJMOm5pbAotICAgICAgICAgICAgcGx1Z2lu
TmFtZTpbcGx1Z2luUGFja2FnZSBuYW1lXQotICAgICAgICAgICAgTUlNRVR5cGU6TUlNRVR5cGVd
OwotICAgICAgICB2aWV3ID0gW1tbV2ViTnVsbFBsdWdpblZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpCi0gICAgICAg
ICAgICBlcnJvcjplcnJvciBET01FbGVtZW50OmtpdChlbGVtZW50KV0gYXV0b3JlbGVhc2VdOwot
ICAgICAgICBbZXJyb3IgcmVsZWFzZV07CisgICAgICAgIFdlYlJlc291cmNlRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0UmVzb3VyY2VMb2Fk
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMoZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSk7Cisg
ICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPnBsdWdJbkZhaWxlZFdpdGhFcnJvckZ1bmMpIHsK
KyAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQ
bHVnaW5FcnJvckNvZGU6V2ViS2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgY29udGVudFVSTDpuaWwg
cGx1Z2luUGFnZVVSTDpuaWwgcGx1Z2luTmFtZTpbcGx1Z2luUGFja2FnZSBuYW1lXSBNSU1FVHlw
ZTpNSU1FVHlwZV07CisgICAgICAgICAgICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoaW1wbGVt
ZW50YXRpb25zLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3JGdW5jLCBbbV93ZWJGcmFtZS5nZXQoKSB3
ZWJWaWV3XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc2VsZWN0b3Io
d2ViVmlldzpwbHVnSW5GYWlsZWRXaXRoRXJyb3I6ZGF0YVNvdXJjZTopLCBlcnJvciwgW21fd2Vi
RnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdKTsKKyAgICAgICAgICAgIFtlcnJvciByZWxlYXNlXTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVCh2aWV3KTsKSW5kZXg6IFdlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1
NjM1OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTAtMDMtMjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgIFRoaXMgcGF0Y2gg
ZW50aXJlbHkgV2ViTnVsbFBsdWdpblZpZXcuCisgICAgICAgIAorICAgICAgICAqIFBsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAqIFBsdWdpbnMvV2ViTnVsbFBsdWdp
blZpZXcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBQbHVnaW5zL1dlYk51bGxQbHVnaW5WaWV3Lm1t
OiBSZW1vdmVkLgorICAgICAgICAqIFJlc291cmNlcy9udWxscGx1Z2luLnRpZmY6IFJlbW92ZWQu
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKTogSW52b2tlIHRoZSByZXNv
dXJjZSBsb2FkIGRlbGVnYXRlIGlmIHRoZSBwbHVnLWluIGZhaWxlZCB0byBsb2FkLgorCiAyMDEw
LTAzLTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJLaXQvbWFjL1Jlc291cmNlcy9udWxs
cGx1Z2luLnRpZmYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3RpZmYKSW5kZXg6IFdlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjM1OCkK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMTMgQEAKIDIw
MTAtMDMtMjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0
Ojp1cGRhdGVXaWRnZXQpOiBEb24ndCB1cGRhdGUgdGhlIHdpZGdldCBpZiB3ZSdyZSBzaG93aW5n
IHRoZSBtaXNzaW5nIHBsdWctaW4gaW5kaWNhdG9yLgorCisyMDEwLTAzLTIyICBLZXZpbiBEZWNr
ZXIgIDxrZGVja2VyQGFwcGxlLmNvbT4KICAgICAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhl
IExlb3BhcmQgYnVpbGQuCiAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcDogQWRkICIuZiIgdG8gY29udGFudHMuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwCShyZXZpc2lvbiA1NjM1OCkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1
NSw5IEBACiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVwZGF0ZVdpZGdldChib29sIG9u
bHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMpCiB7CisgICAgaWYgKG1fc2V0U2hvd3NNaXNzaW5n
UGx1Z2luSW5kaWNhdG9yKQorICAgICAgICByZXR1cm47CisKICAgICBTdHJpbmcgdXJsOwogICAg
IFN0cmluZyBzZXJ2aWNlVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbU5hbWVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51361</attachid>
            <date>2010-03-22 14:57:17 -0700</date>
            <delta_ts>2010-03-22 15:03:43 -0700</delta_ts>
            <desc>51352: Eliminate WebNullPluginView from Mac OS X WebKit</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>23346</size>
            <attacher name="Kevin Decker">kdecker</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU2
MzYwKQorKysgV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjYsNyArMTY2LDYgQEAKIAkJOTM5ODEwMkIwODI0QkYwMTAwOERGMDM4IC8q
IFdlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjVBNjcyQjkwMjYzODY2RTAxMDAwMTAyIC8qIFdlYkJhc2VO
ZXRzY2FwZVBsdWdpblN0cmVhbS5oICovOyB9OwogCQk5Mzk4MTAyRTA4MjRCRjAxMDA4REYwMzgg
LyogV2ViQmFzZVBsdWdpblBhY2thZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzRTRBRjQ2MDM2NjUyMTUwMDAwRTUwNiAvKiBXZWJCYXNlUGx1Z2lu
UGFja2FnZS5oICovOyB9OwogCQk5Mzk4MTAzMTA4MjRCRjAxMDA4REYwMzggLyogV2ViTmV0c2Nh
cGVQbHVnaW5QYWNrYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNUY3MTcxRTAyODg0OTNDMDE4NjM1Q0EgLyogV2ViTmV0c2NhcGVQbHVnaW5QYWNr
YWdlLmggKi87IH07Ci0JCTkzOTgxMDM0MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOdWxsUGx1Z2lu
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4
ODNCRTAwMjVFNUU5RDAxMDAwMTAyIC8qIFdlYk51bGxQbHVnaW5WaWV3LmggKi87IH07CiAJCTkz
OTgxMDM1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0OERGRjg0MDM2NUZFNkEwMENBMkFDQSAvKiBX
ZWJQbHVnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCTkzOTgxMDM2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0OERGRjg1MDM2NUZF
NkEwMENBMkFDQSAvKiBXZWJQbHVnaW5Db250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTkzOTgxMDM3MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJQbHVnaW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDY3Mjc1QzAzNjcxNTg1MDBDQTJBQ0EgLyogV2ViUGx1Z2luQ29udHJvbGxl
ci5oICovOyB9OwpAQCAtMjQzLDcgKzI0Miw2IEBACiAJCTkzOTgxMEIwMDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJQbHVnaW5Db250YWluZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgzNkY1RTA3RUU0MjU5MDA2ODJGOTUgLyogV2ViUGx1
Z2luQ29udGFpbmVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzOTgxMEIxMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250
YWluZXJDaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjVFMTE1MDMwN0VGRkVCRjAwOUI4QkY3IC8qIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgg
Ki87IH07CiAJCTkzOTgxMEI1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0NUQxN0IwMzY1QkYzNTAwODYzNUNFIC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwubmliICov
OyB9OwotCQk5Mzk4MTBCNjA4MjRCRjAxMDA4REYwMzggLyogbnVsbHBsdWdpbi50aWZmIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg4M0JERTAyNUU1
QzZBMDEwMDAxMDIgLyogbnVsbHBsdWdpbi50aWZmICovOyB9OwogCQk5Mzk4MTBCNzA4MjRCRjAx
MDA4REYwMzggLyogdXJsX2ljb24udGlmZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjVCNjcxMzAwMjNFREY4OTAxQzFBNTI1IC8qIHVybF9pY29uLnRp
ZmYgKi87IH07CiAJCTkzOTgxMEJBMDgyNEJGMDEwMDhERjAzOCAvKiBJRE5TY3JpcHRXaGl0ZUxp
c3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzI1RkJEQzA3RDgyOUFFMDAxNTk4NjIgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLzsgfTsK
IAkJOTM5ODEwQkMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM5NDQ2MDdFMDIwRjUw
RUQwRUNBMTc2NyAvKiBXZWJCYWNrRm9yd2FyZExpc3QubW0gKi87IH07CkBAIC0yNjUsNyArMjYz
LDYgQEAKIAkJOTM5ODEwRDEwODI0QkYwMTAwOERGMDM4IC8qIFdlYkJhc2VOZXRzY2FwZVBsdWdp
blN0cmVhbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1QTY3MkJBMDI2Mzg2NkUwMTAwMDEwMiAvKiBXZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0u
bW0gKi87IH07CiAJCTkzOTgxMEQzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJCYXNlUGx1Z2luUGFj
a2FnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
RTRBRjQ3MDM2NjUyMTUwMDAwRTUwNiAvKiBXZWJCYXNlUGx1Z2luUGFja2FnZS5tbSAqLzsgfTsK
IAkJOTM5ODEwRDYwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1RjcxNzFG
MDI4ODQ5M0MwMTg2MzVDQSAvKiBXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubW0gKi87IH07Ci0J
CTkzOTgxMEQ5MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOdWxsUGx1Z2luVmlldy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODgzQkUxMDI1RTVFOUQw
MTAwMDEwMiAvKiBXZWJOdWxsUGx1Z2luVmlldy5tbSAqLzsgfTsKIAkJOTM5ODEwREEwODI0QkYw
MTAwOERGMDM4IC8qIFdlYlBsdWdpbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDY3Mjc1RDAzNjcxNTg1MDBDQTJBQ0EgLyogV2Vi
UGx1Z2luQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJOTM5ODEwREIwODI0QkYwMTAwOERGMDM4IC8q
IFdlYlBsdWdpbkRhdGFiYXNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjVGNzE3MjEwMjg4NDkzQzAxODYzNUNBIC8qIFdlYlBsdWdpbkRhdGFiYXNl
Lm1tICovOyB9OwogCQk5Mzk4MTBEQzA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luUGFja2Fn
ZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFNEFG
NEMwMzY2NTk0NDAwMDBFNTA2IC8qIFdlYlBsdWdpblBhY2thZ2UubSAqLzsgfTsKQEAgLTY3Miw5
ICs2NjksNiBAQAogCQlGNTM0NDRDRTAyRTg3Q0JBMDE4NjM1Q0EgLyogV2ViS2l0U3RhdGlzdGlj
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YktpdFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCUY1MzQ0NENGMDJFODdDQkEwMTg2MzVDQSAvKiBXZWJLaXRTdGF0
aXN0aWNzLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBw
YXRoID0gV2ViS2l0U3RhdGlzdGljcy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUzNDQ0RDIwMkU4N0Q0QjAxODYzNUNBIC8qIFdl
YktpdFN0YXRpc3RpY3NQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0U3RhdGlzdGljc1ByaXZhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUY1ODgzQkRFMDI1
RTVDNkEwMTAwMDEwMiAvKiBudWxscGx1Z2luLnRpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0gbnVsbHBsdWdpbi50
aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNTg4M0JFMDAyNUU1RTlEMDEwMDAx
MDIgLyogV2ViTnVsbFBsdWdpblZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOdWxsUGx1Z2luVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjU4ODNCRTEwMjVFNUU5
RDAxMDAwMTAyIC8qIFdlYk51bGxQbHVnaW5WaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOdWxsUGx1Z2luVmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUY1OTI3RDRFMDJEMjZDNUUwMUNBMkRCQiAvKiBXZWJLaXRFcnJvcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRFcnJvcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1
OTY2OEM4MDJBRDI5MjMwMTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IHBhdGggPSBXZWJTdHJpbmdU
cnVuY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCUY1OTY2OEM5MDJBRDI5MjMwMTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0
b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBw
YXRoID0gV2ViU3RyaW5nVHJ1bmNhdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTc5OSw3ICs3OTMsNiBAQAogCQkJCTkzMjVG
QkRDMDdEODI5QUUwMDE1OTg2MiAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovLAogCQkJCTkz
OTgxMTMyMDgyNEJGMDEwMDhERjAzOCAvKiBJbmZvLnBsaXN0ICovLAogCQkJCTVERTgzQTdEMEQw
RjdGQUQwMENBRDEyQSAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzICovLAotCQkJCUY1ODgzQkRFMDI1
RTVDNkEwMTAwMDEwMiAvKiBudWxscGx1Z2luLnRpZmYgKi8sCiAJCQkJRUQzQjQ4REUwQ0M1MUY3
RTAwREZGMUVCIC8qIFN0cmluZ3NOb3RUb0JlTG9jYWxpemVkLnR4dCAqLywKIAkJCQlGNUI2NzEz
MDAyM0VERjg5MDFDMUE1MjUgLyogdXJsX2ljb24udGlmZiAqLywKIAkJCQk1REU4M0E3NDBEMEY3
Rjk0MDBDQUQxMkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiAqLywKQEAgLTEy
NzIsOCArMTI2NSw2IEBACiAJCQkJODQ4REZGNDMwMzY1RjcxNTAwQ0EyQUNBIC8qIFdlYktpdCBQ
bHVnLWlucyAqLywKIAkJCQk4M0U0QUY0NjAzNjY1MjE1MDAwMEU1MDYgLyogV2ViQmFzZVBsdWdp
blBhY2thZ2UuaCAqLywKIAkJCQk4M0U0QUY0NzAzNjY1MjE1MDAwMEU1MDYgLyogV2ViQmFzZVBs
dWdpblBhY2thZ2UubW0gKi8sCi0JCQkJRjU4ODNCRTAwMjVFNUU5RDAxMDAwMTAyIC8qIFdlYk51
bGxQbHVnaW5WaWV3LmggKi8sCi0JCQkJRjU4ODNCRTEwMjVFNUU5RDAxMDAwMTAyIC8qIFdlYk51
bGxQbHVnaW5WaWV3Lm1tICovLAogCQkJCUY1RjcxNzIwMDI4ODQ5M0MwMTg2MzVDQSAvKiBXZWJQ
bHVnaW5EYXRhYmFzZS5oICovLAogCQkJCUY1RjcxNzIxMDI4ODQ5M0MwMTg2MzVDQSAvKiBXZWJQ
bHVnaW5EYXRhYmFzZS5tbSAqLywKIAkJCQkyMjQxMDBGMjA5MTgxOEQ5MDBEMkQyNjYgLyogV2Vi
UGx1Z2luc1ByaXZhdGUuaCAqLywKQEAgLTE0OTgsNyArMTQ4OSw2IEBACiAJCQkJNjVFMEY5RTYw
ODUwMEYyMzAwN0U1Q0I5IC8qIFdlYk5TVXNlckRlZmF1bHRzRXh0cmFzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5Mzk4MTAyNDA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNWaWV3RXh0cmFzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5Mzk4MTAyNTA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNXaW5kb3dF
eHRyYXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzOTgxMDM0MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJOdWxsUGx1Z2luVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMkEwODI0QkYwMTAw
OERGMDM4IC8qIFdlYlBhbmVsQXV0aGVudGljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0QzQzVCQzBCNTc3M0M1MDAyQ0E0NTAgLyogV2ViUGFzdGVib2FyZEhlbHBlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzdCNkZCNEUxMDYzNTMwQzAwMEZEQjNCIC8qIFdlYlBERkRvY3Vt
ZW50RXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAgLTE2MjEsNyArMTYxMSw2IEBACiAJCQlmaWxl
cyA9ICgKIAkJCQk5Mzk4MTBCQTA4MjRCRjAxMDA4REYwMzggLyogSUROU2NyaXB0V2hpdGVMaXN0
LnR4dCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNURFODNBN0YwRDBGN0ZBRDAwQ0FEMTJBIC8qIExv
Y2FsaXphYmxlLnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAotCQkJCTkzOTgxMEI2MDgyNEJGMDEw
MDhERjAzOCAvKiBudWxscGx1Z2luLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzOTgxMEI3
MDgyNEJGMDEwMDhERjAzOCAvKiB1cmxfaWNvbi50aWZmIGluIFJlc291cmNlcyAqLywKIAkJCQk5
Mzk4MTBCNTA4MjRCRjAxMDA4REYwMzggLyogV2ViQXV0aGVudGljYXRpb25QYW5lbC5uaWIgaW4g
UmVzb3VyY2VzICovLAogCQkJCTVERTgzQTdBMEQwRjdGOTQwMENBRDEyQSAvKiBXZWJKYXZhU2Ny
aXB0VGV4dElucHV0UGFuZWwubmliIGluIFJlc291cmNlcyAqLywKQEAgLTE4NzYsNyArMTg2NSw2
IEBACiAJCQkJNjVFMEY5RTcwODUwMEYyMzAwN0U1Q0I5IC8qIFdlYk5TVXNlckRlZmF1bHRzRXh0
cmFzLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBDOTA4MjRCRjAxMDA4REYwMzggLyogV2Vi
TlNWaWV3RXh0cmFzLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBDQTA4MjRCRjAxMDA4REYw
MzggLyogV2ViTlNXaW5kb3dFeHRyYXMubSBpbiBTb3VyY2VzICovLAotCQkJCTkzOTgxMEQ5MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJOdWxsUGx1Z2luVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTgxMEQwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxl
ci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEM0M1QkQwQjU3NzNDNTAwMkNBNDUwIC8qIFdlYlBh
c3RlYm9hcmRIZWxwZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzN0I2RkI0RjEwNjM1MzBDMDAw
RkRCM0IgLyogV2ViUERGRG9jdW1lbnRFeHRyYXMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
NTYzNjApCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEg
QEAKKzIwMTAtMDMtMjIgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjMyOAorCisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZSBXZWJOdWxsUGx1Z2luVmlldyBhbmQgbnVsbHBs
dWdpbi50aWZmIGZyb20gdGhlIHByb2plY3QuCisKIDIwMTAtMDMtMjIgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgICogU3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQudHh0
OiBVcGRhdGVkIGZvciByZWNlbnQgY2hhbmdlcy4KSW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gNTYzNjApCisrKyBXZWJLaXQvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw2IEBACiAjaW1wb3J0ICJXZWJQbHVnaW5Db250YWluZXJDaGVjay5oIgogI2ltcG9ydCAi
V2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLmgiCiAjaW1wb3J0ICJXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oIgotI2ltcG9ydCAiV2ViTnVsbFBsdWdpblZpZXcuaCIK
ICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXZWJQbHVnaW5SZXF1ZXN0Lmgi
CiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKSW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOdWxsUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
TnVsbFBsdWdpblZpZXcubW0JKHJldmlzaW9uIDU2MzYwKQorKysgV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk51bGxQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwMCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJXZWJOdWxsUGx1Z2luVmlldy5oIgotCi0jaW1wb3J0ICJET01FbGVt
ZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5n
LmgiCi0jaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJWaWV3SW50ZXJu
YWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRWxl
bWVudC5oPgotCi1AaW1wbGVtZW50YXRpb24gV2ViTnVsbFBsdWdpblZpZXcKLQotLSBpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgZXJyb3I6KE5TRXJyb3IgKillcnIgRE9NRWxlbWVudDooRE9N
RWxlbWVudCAqKWVsZW0KLXsgICAgCi0gICAgc3RhdGljIE5TSW1hZ2UgKm51bGxQbHVnSW5JbWFn
ZTsKLSAgICBpZiAoIW51bGxQbHVnSW5JbWFnZSkgewotICAgICAgICBOU0J1bmRsZSAqYnVuZGxl
ID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJOdWxsUGx1Z2luVmlldyBjbGFzc11dOwot
ICAgICAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJu
dWxscGx1Z2luIiBvZlR5cGU6QCJ0aWZmIl07Ci0gICAgICAgIG51bGxQbHVnSW5JbWFnZSA9IFtb
TlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mRmlsZTppbWFnZVBhdGhdOwotICAgIH0K
LSAgICAKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGVycm9yID0gW2VyciByZXRhaW5dOwot
ICAgIGlmIChlcnIpCi0gICAgICAgIGVsZW1lbnQgPSBbZWxlbSByZXRhaW5dOwotCi0gICAgW3Nl
bGYgc2V0SW1hZ2U6bnVsbFBsdWdJbkltYWdlXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
ICh2b2lkKWRlYWxsb2MKLQotewotICAgIFtlcnJvciByZWxlYXNlXTsKLSAgICBbZWxlbWVudCBy
ZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpcmVwb3J0RmFpbHVy
ZQotewotICAgIE5TRXJyb3IgKmxvY2FsRXJyb3IgPSBlcnJvcjsKLSAgICBET01FbGVtZW50ICps
b2NhbEVsZW1lbnQgPSBlbGVtZW50OwotCi0gICAgZXJyb3IgPSBuaWw7Ci0gICAgZWxlbWVudCA9
IG5pbDsKLQotICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IGtpdChjb3JlKGxvY2FsRWxlbWVudCkt
PmRvY3VtZW50KCktPmZyYW1lKCkpOwotICAgIGlmICh3ZWJGcmFtZSkgewotICAgICAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwotICAgICAgICBXZWJSZXNvdXJjZURl
bGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldFJl
c291cmNlTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwotICAgICAgICBpZiAo
aW1wbGVtZW50YXRpb25zLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3JGdW5jKQotICAgICAgICAgICAg
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+cGx1Z0luRmFpbGVkV2l0
aEVycm9yRnVuYywgd2ViVmlldywKLSAgICAgICAgICAgICAgICBAc2VsZWN0b3Iod2ViVmlldzpw
bHVnSW5GYWlsZWRXaXRoRXJyb3I6ZGF0YVNvdXJjZTopLCBsb2NhbEVycm9yLCBbd2ViRnJhbWUg
X2RhdGFTb3VyY2VdKTsKLSAgICB9Ci0KLSAgICBbbG9jYWxFcnJvciByZWxlYXNlXTsKLSAgICBb
bG9jYWxFbGVtZW50IHJlbGVhc2VdOwotfQotCi0tICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cK
LXsKLSAgICBpZiAoIWVycm9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoW3NlbGYgd2lu
ZG93XSkKLSAgICAgICAgW3NlbGYgcmVwb3J0RmFpbHVyZV07Ci19Ci0KLUBlbmQKSW5kZXg6IFdl
YktpdC9tYWMvUGx1Z2lucy9XZWJOdWxsUGx1Z2luVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvUGx1Z2lucy9XZWJOdWxsUGx1Z2luVmlldy5oCShyZXZpc2lvbiA1NjM2MCkKKysrIFdl
YktpdC9tYWMvUGx1Z2lucy9XZWJOdWxsUGx1Z2luVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KLQotQGNsYXNz
IERPTUVsZW1lbnQ7Ci0KLUBpbnRlcmZhY2UgV2ViTnVsbFBsdWdpblZpZXcgOiBOU0ltYWdlVmll
dwotewotICAgIE5TRXJyb3IgKmVycm9yOwotICAgIERPTUVsZW1lbnQgKmVsZW1lbnQ7Ci19Ci0K
LS0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBlcnJvcjooTlNFcnJvciAqKWVycm9y
IERPTUVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50OwotCi1AZW5kCkluZGV4OiBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlz
aW9uIDU2MzYwKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNiBAQAogI2ltcG9ydCAiV2ViTlNV
UkxFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5ldHNjYXBlUGx1Z2luVmlldy5oIgogI2ltcG9ydCAi
V2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLmgiCi0jaW1wb3J0ICJXZWJOdWxsUGx1Z2luVmlldy5o
IgogI2ltcG9ydCAiV2ViUGFuZWxBdXRoZW50aWNhdGlvbkhhbmRsZXIuaCIKICNpbXBvcnQgIldl
YlBsdWdpbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlBsdWdpblBhY2thZ2UuaCIKQEAgLTE2
MDEsMTcgKzE2MDAsMjEgQEAKIAogICAgIGlmICghZXJyb3JDb2RlICYmICF2aWV3KQogICAgICAg
ICBlcnJvckNvZGUgPSBXZWJLaXRFcnJvckNhbm5vdExvYWRQbHVnSW47CisgICAgCisgICAgaWYg
KGVycm9yQ29kZSAmJiBtX3dlYkZyYW1lKSB7CisgICAgICAgIFdlYlJlc291cmNlRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0UmVzb3VyY2VM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisgICAgICAgIGlmIChpbXBsZW1l
bnRhdGlvbnMtPnBsdWdJbkZhaWxlZFdpdGhFcnJvckZ1bmMpIHsKKyAgICAgICAgICAgIEtVUkwg
cGx1Z2luUGFnZVVSTCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwo
cGFyYW1ldGVyVmFsdWUocGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJwbHVnaW5zcGFnZSIpKSk7
CisgICAgICAgICAgICBpZiAoIXBsdWdpblBhZ2VVUkwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkK
KyAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMID0gS1VSTCgpOworICAgICAgICAgICAgTlNF
cnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpl
cnJvckNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRlbnRVUkw6cGx1Z2luVVJMIHBsdWdpblBhZ2VVUkw6cGx1Z2luUGFn
ZVVSTCBwbHVnaW5OYW1lOltwbHVnaW5QYWNrYWdlIG5hbWVdIE1JTUVUeXBlOk1JTUVUeXBlXTsK
KyAgICAgICAgICAgIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPnBs
dWdJbkZhaWxlZFdpdGhFcnJvckZ1bmMsIFttX3dlYkZyYW1lLmdldCgpIHdlYlZpZXddLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzZWxlY3Rvcih3ZWJWaWV3OnBsdWdJ
bkZhaWxlZFdpdGhFcnJvcjpkYXRhU291cmNlOiksIGVycm9yLCBbbV93ZWJGcmFtZS5nZXQoKSBf
ZGF0YVNvdXJjZV0pOworICAgICAgICAgICAgW2Vycm9yIHJlbGVhc2VdOworICAgICAgICB9CiAK
LSAgICBpZiAoZXJyb3JDb2RlKSB7Ci0gICAgICAgIEtVUkwgcGx1Z2luUGFnZVVSTCA9IGRvY3Vt
ZW50LT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwocGFyYW1ldGVyVmFsdWUocGFyYW1O
YW1lcywgcGFyYW1WYWx1ZXMsICJwbHVnaW5zcGFnZSIpKSk7Ci0gICAgICAgIGlmICghcGx1Z2lu
UGFnZVVSTC5wcm90b2NvbEluSFRUUEZhbWlseSgpKQotICAgICAgICAgICAgcGx1Z2luUGFnZVVS
TCA9IEtVUkwoKTsKLSAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIF9p
bml0V2l0aFBsdWdpbkVycm9yQ29kZTplcnJvckNvZGUKLSAgICAgICAgICAgIGNvbnRlbnRVUkw6
cGx1Z2luVVJMIHBsdWdpblBhZ2VVUkw6cGx1Z2luUGFnZVVSTCBwbHVnaW5OYW1lOltwbHVnaW5Q
YWNrYWdlIG5hbWVdIE1JTUVUeXBlOk1JTUVUeXBlXTsKLSAgICAgICAgV2ViTnVsbFBsdWdpblZp
ZXcgKm51bGxWaWV3ID0gW1tbV2ViTnVsbFBsdWdpblZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpCi0gICAgICAgICAg
ICBlcnJvcjplcnJvciBET01FbGVtZW50OmtpdChlbGVtZW50KV0gYXV0b3JlbGVhc2VdOwotICAg
ICAgICB2aWV3ID0gbnVsbFZpZXc7Ci0gICAgICAgIFtlcnJvciByZWxlYXNlXTsKKyAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogICAgIAogICAgIEFTU0VSVCh2aWV3KTsKQEAgLTE2OTIsMTQgKzE2
OTUsMTMgQEAKICAgICB9CiAKICAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAgTlNFcnJvciAqZXJy
b3IgPSBbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJLaXRFcnJv
ckphdmFVbmF2YWlsYWJsZQotICAgICAgICAgICAgY29udGVudFVSTDpuaWwKLSAgICAgICAgICAg
IHBsdWdpblBhZ2VVUkw6bmlsCi0gICAgICAgICAgICBwbHVnaW5OYW1lOltwbHVnaW5QYWNrYWdl
IG5hbWVdCi0gICAgICAgICAgICBNSU1FVHlwZTpNSU1FVHlwZV07Ci0gICAgICAgIHZpZXcgPSBb
W1tXZWJOdWxsUGx1Z2luVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgICAgIGVycm9yOmVycm9yIERP
TUVsZW1lbnQ6a2l0KGVsZW1lbnQpXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFtlcnJvciByZWxl
YXNlXTsKKyAgICAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGlt
cGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0
aW9ucyhnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGltcGxlbWVu
dGF0aW9ucy0+cGx1Z0luRmFpbGVkV2l0aEVycm9yRnVuYykgeworICAgICAgICAgICAgTlNFcnJv
ciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTpXZWJL
aXRFcnJvckphdmFVbmF2YWlsYWJsZSBjb250ZW50VVJMOm5pbCBwbHVnaW5QYWdlVVJMOm5pbCBw
bHVnaW5OYW1lOltwbHVnaW5QYWNrYWdlIG5hbWVdIE1JTUVUeXBlOk1JTUVUeXBlXTsKKyAgICAg
ICAgICAgIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPnBsdWdJbkZh
aWxlZFdpdGhFcnJvckZ1bmMsIFttX3dlYkZyYW1lLmdldCgpIHdlYlZpZXddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzZWxlY3Rvcih3ZWJWaWV3OnBsdWdJbkZhaWxl
ZFdpdGhFcnJvcjpkYXRhU291cmNlOiksIGVycm9yLCBbbV93ZWJGcmFtZS5nZXQoKSBfZGF0YVNv
dXJjZV0pOworICAgICAgICAgICAgW2Vycm9yIHJlbGVhc2VdOworICAgICAgICB9CiAgICAgfQog
CiAgICAgQVNTRVJUKHZpZXcpOwpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzYwKQorKysgV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wMy0yMiAg
S2V2aW4gRGVja2VyICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2MzI4CisKKyAgICAgICAgVGhpcyBwYXRjaCBlbnRpcmVseSBXZWJOdWxsUGx1
Z2luVmlldy4KKyAgICAgICAgCisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW06CisgICAgICAgICogUGx1Z2lucy9XZWJOdWxsUGx1Z2luVmlldy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTnVsbFBsdWdpblZpZXcubW06IFJlbW92ZWQuCisgICAgICAg
ICogUmVzb3VyY2VzL251bGxwbHVnaW4udGlmZjogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVQbHVnaW4pOiBJbnZva2UgdGhlIHJlc291cmNlIGxvYWQgZGVsZWdhdGUg
aWYgdGhlIHBsdWctaW4gZmFpbGVkIHRvIGxvYWQuCisKIDIwMTAtMDMtMjIgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxs
aXZhbi4KSW5kZXg6IFdlYktpdC9tYWMvUmVzb3VyY2VzL251bGxwbHVnaW4udGlmZgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWlt
ZS10eXBlID0gaW1hZ2UvdGlmZgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2MzYwKQorKysgV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0yMiAgS2V2aW4gRGVj
a2VyICA8a2RlY2tlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2MzI4CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2Jq
ZWN0KTogRml4IGEgZmluZC9yZXBhbGNlIG1pc3Rha2UgZnJvbSBteSBlYXJsaWVyIHBhdHJjaC4K
KyAgICAgICAgUmVuYW1lIG1fc2V0U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yIC0+IG1fc2hv
d3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yLiAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVk
ZGVkT2JqZWN0Ojp1cGRhdGVXaWRnZXQpOiBEb24ndCB1cGRhdGUgdGhlIHdpZGdldCBpZiB3ZSdy
ZSBzaG93aW5nCisgICAgICAgIHRoZSBtaXNzaW5nIHBsdWctaW4gaW5kaWNhdG9yLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KTpGaXggYSBmaW5kL3JlcGFs
Y2UgbWlzdGFrZSBmcm9tIG15IGVhcmxpZXIgcGF0cmNoLgorICAgICAgICBSZW5hbWUgbV9zZXRT
aG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3IgLT4gbV9zaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0
b3IuIAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFj
ZWQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaDog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2V0U2hvd3NN
aXNzaW5nUGx1Z2luSW5kaWNhdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6c2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKTogRGl0dG8uCisKIDIw
MTAtMDMtMjIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBLaWx6ZXIuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmgJKHJldmlzaW9uIDU2MzYwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQAog
ICAgIHZpcnR1YWwgflJlbmRlckVtYmVkZGVkT2JqZWN0KCk7CiAKICAgICB2b2lkIHVwZGF0ZVdp
ZGdldChib29sIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMpOwotICAgIHZvaWQgc2V0U2hv
d3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKGJvb2wgc2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9y
KSB7IG1fc2V0U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yID0gc2hvd3NNaXNzaW5nUGx1Z2lu
SW5kaWNhdG9yOyB9Ci0gICAgYm9vbCBzaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3IoKSBjb25z
dCB7IHJldHVybiBtX3NldFNob3dzTWlzc2luZ1BsdWdpbkluZGljYXRvcjsgfQorICAgIHZvaWQg
c2V0U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKGJvb2wgc2hvd3NNaXNzaW5nUGx1Z2luSW5k
aWNhdG9yKSB7IG1fc2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yID0gc2hvd3NNaXNzaW5nUGx1
Z2luSW5kaWNhdG9yOyB9CisgICAgYm9vbCBzaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3IoKSBj
b25zdCB7IHJldHVybiBtX3Nob3dzTWlzc2luZ1BsdWdpbkluZGljYXRvcjsgfQogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZygpIGNvbnN0OwogI2VuZGlmCkBAIC01Miw3ICs1Miw3IEBACiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKLSAgICBib29sIG1fc2V0U2hvd3NNaXNzaW5n
UGx1Z2luSW5kaWNhdG9yOworICAgIGJvb2wgbV9zaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3I7
CiB9OwogCiBpbmxpbmUgUmVuZGVyRW1iZWRkZWRPYmplY3QqIHRvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCShyZXZpc2lvbiA1NjM2MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBA
QAogCiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoRWxlbWVudCog
ZWxlbWVudCkKICAgICA6IFJlbmRlclBhcnRPYmplY3QoZWxlbWVudCkKLSAgICAsIG1fc2V0U2hv
d3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKGZhbHNlKQorICAgICwgbV9zaG93c01pc3NpbmdQbHVn
aW5JbmRpY2F0b3IoZmFsc2UpCiB7CiAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+c2V0SXNWaXN1
YWxseU5vbkVtcHR5KCk7CiB9CkBAIC0xNTUsNiArMTU1LDkgQEAKIAogdm9pZCBSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6dXBkYXRlV2lkZ2V0KGJvb2wgb25seUNyZWF0ZU5vbk5ldHNjYXBlUGx1Z2lu
cykKIHsKKyAgICBpZiAobV9zaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3IpCisgICAgICAgIHJl
dHVybjsKKwogICAgIFN0cmluZyB1cmw7CiAgICAgU3RyaW5nIHNlcnZpY2VUeXBlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IHBhcmFtTmFtZXM7CkBAIC0zNDcsNyArMzUwLDcgQEAKIAogdm9pZCBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50
IHR5KQogewotICAgIGlmIChtX3NldFNob3dzTWlzc2luZ1BsdWdpbkluZGljYXRvcikgeworICAg
IGlmIChtX3Nob3dzTWlzc2luZ1BsdWdpbkluZGljYXRvcikgewogICAgICAgICBSZW5kZXJSZXBs
YWNlZDo6cGFpbnQocGFpbnRJbmZvLCB0eCwgdHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMzU3LDcgKzM2MCw3IEBACiAgICAgCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIHsKLSAgICBp
ZiAoIW1fc2V0U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKQorICAgIGlmICghbV9zaG93c01p
c3NpbmdQbHVnaW5JbmRpY2F0b3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikK
</data>
<flag name="review"
          id="34600"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>