<?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>57717</bug_id>
          
          <creation_ts>2011-04-02 21:51:36 -0700</creation_ts>
          <short_desc>Convert use of raw pointers to RefPtr in using Cairo</short_desc>
          <delta_ts>2011-04-14 19:12:50 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joone Hur">joone</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joone.hur</cc>
    
    <cc>morrita</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>378473</commentid>
    <comment_count>0</comment_count>
    <who name="Joone Hur">joone</who>
    <bug_when>2011-04-02 21:51:36 -0700</bug_when>
    <thetext>We need to use RefPtr instead of raw pointers when using cairo_t, cairo_surface_t in WebCore/platform/graphics/cairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378546</commentid>
    <comment_count>1</comment_count>
      <attachid>88009</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2011-04-03 07:03:21 -0700</bug_when>
    <thetext>Created attachment 88009
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378547</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-03 07:08:25 -0700</bug_when>
    <thetext>Attachment 88009 did not build on chromium:
Build output: http://queues.webkit.org/results/8247736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378549</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-03 07:12:48 -0700</bug_when>
    <thetext>Attachment 88009 did not build on qt:
Build output: http://queues.webkit.org/results/8328020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378550</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-03 07:59:03 -0700</bug_when>
    <thetext>Attachment 88009 did not build on chromium:
Build output: http://queues.webkit.org/results/8318751</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378556</commentid>
    <comment_count>5</comment_count>
      <attachid>88011</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2011-04-03 09:20:41 -0700</bug_when>
    <thetext>Created attachment 88011
Proposed Patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378557</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-03 09:23:42 -0700</bug_when>
    <thetext>Attachment 88011 did not build on chromium:
Build output: http://queues.webkit.org/results/8319696</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378559</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-03 10:16:11 -0700</bug_when>
    <thetext>Attachment 88011 did not build on chromium:
Build output: http://queues.webkit.org/results/8307749</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378561</commentid>
    <comment_count>8</comment_count>
      <attachid>88012</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2011-04-03 11:00:27 -0700</bug_when>
    <thetext>Created attachment 88012
Proposed Patch3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378665</commentid>
    <comment_count>9</comment_count>
      <attachid>88012</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-03 22:59:10 -0700</bug_when>
    <thetext>Comment on attachment 88012
Proposed Patch3

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

This patch makes my heart sing!  Unfortunately I think it also will make WebCore crash (in the one case I pointed out.

&gt; Source/WebCore/platform/graphics/cairo/ContextShadowCairo.cpp:82
&gt; +    scratchBuffer = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height));
&gt; +    return scratchBuffer.get();

Um.  This isn&apos;t going to work, or?  I think you want to return a PassRefPtr here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378766</commentid>
    <comment_count>10</comment_count>
      <attachid>88012</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-04 07:04:59 -0700</bug_when>
    <thetext>Comment on attachment 88012
Proposed Patch3

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

&gt;&gt; Source/WebCore/platform/graphics/cairo/ContextShadowCairo.cpp:82
&gt;&gt; +    return scratchBuffer.get();
&gt; 
&gt; Um.  This isn&apos;t going to work, or?  I think you want to return a PassRefPtr here.

I think it should work, since scratchBuffer is a static global. This patch should probably rename &quot;scratchBuffer&quot; to something like &quot;gScratchBuffer&quot; to make it clear that it&apos;s static though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378810</commentid>
    <comment_count>11</comment_count>
    <who name="Joone Hur">joone</who>
    <bug_when>2011-04-04 08:55:03 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 88012 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88012&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/cairo/ContextShadowCairo.cpp:82
&gt; &gt;&gt; +    return scratchBuffer.get();
&gt; &gt; 
&gt; &gt; Um.  This isn&apos;t going to work, or?  I think you want to return a PassRefPtr here.
&gt; 
&gt; I think it should work, since scratchBuffer is a static global. This patch should probably rename &quot;scratchBuffer&quot; to something like &quot;gScratchBuffer&quot; to make it clear that it&apos;s static though.

This code works well without any crash.
http://www.w3schools.com/css3/tryit.asp?filename=trycss3_box-shadow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379485</commentid>
    <comment_count>12</comment_count>
      <attachid>88212</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2011-04-05 06:00:30 -0700</bug_when>
    <thetext>Created attachment 88212
Proposed Patch4

I updated the patch with the change suggested by Martin.
Thanks, Eric and Martin for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379587</commentid>
    <comment_count>13</comment_count>
      <attachid>88212</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-05 08:34:23 -0700</bug_when>
    <thetext>Comment on attachment 88212
Proposed Patch4

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

r- because of some minor style issues and a possible leak you might be able to fix!

&gt; Source/WebCore/platform/graphics/ContextShadow.h:38
&gt; +#if PLATFORM(CAIRO)
&gt; +#include &quot;RefPtrCairo.h&quot;
&gt; +#endif
&gt;  #include &lt;wtf/RefCounted.h&gt;

This should be in separate block.

&gt; Source/WebCore/platform/graphics/ContextShadow.h:133
&gt; +#if PLATFORM(CAIRO)
&gt; +    RefPtr&lt;cairo_surface_t&gt; m_layerImage; // Buffer to where the temporary shadow will be drawn to.
&gt; +    RefPtr&lt;cairo_t&gt; m_layerContext; // Context used to paint the shadow to the layer image.
&gt; +#else

Why not use change the typedefs above instead of adding #ifdefs to the code?

&gt; Source/WebCore/platform/graphics/cairo/CairoPath.h:35
&gt;          static cairo_surface_t* pathSurface = cairo_image_surface_create(CAIRO_FORMAT_A8, 1, 1);
&gt; -        m_cr = cairo_create(pathSurface);
&gt; +        m_cr = adoptRef(cairo_create(pathSurface));

Looking at this now, isn&apos;t the surface leaked? It scould be a RefPtr here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381084</commentid>
    <comment_count>14</comment_count>
      <attachid>88561</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2011-04-06 20:16:04 -0700</bug_when>
    <thetext>Created attachment 88561
Proposed Patch5

I applied Martin&apos;s suggestions to the patch.
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381341</commentid>
    <comment_count>15</comment_count>
      <attachid>88561</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-07 07:56:49 -0700</bug_when>
    <thetext>Comment on attachment 88561
Proposed Patch5

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

&gt; Source/WebCore/platform/graphics/ContextShadow.h:38
&gt; +#if PLATFORM(CAIRO)
&gt; +#include &quot;RefPtrCairo.h&quot;
&gt; +#endif
&gt; +

Please move this to a separate block with a newline between the first block of includes and this one.

&gt; Source/WebCore/platform/graphics/ContextShadow.h:57
&gt; +typedef RefPtr&lt;cairo_surface_t&gt; PlatformImage;

We don&apos;t need to take a reference to the m_layerImage, so maybe it makes sense to just leave this as a cairo_surface_t. What do you think?

&gt; Source/WebCore/platform/graphics/cairo/CairoPath.h:34
&gt; +        static RefPtr&lt;cairo_surface_t&gt; pathSurface = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_A8, 1, 1));

Ack! I didn&apos;t realize this was static. Please revert this line. Sorry!

&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:95
&gt; +    RefPtr&lt;cairo_t&gt; shadowContext = shadow-&gt;beginShadowLayer(graphicsContext, fontExtentsRect);
&gt; +    if (shadowContext.get()) {
&gt; +        prepareContextForGlyphDrawing(shadowContext.get(), font, point);
&gt; +        drawGlyphsToContext(shadowContext.get(), font, glyphs, numGlyphs);
&gt;          shadow-&gt;endShadowLayer(graphicsContext);

I don&apos;t think you should use RefPtr here since you don&apos;t want to take a reference.

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:171
&gt; -    cairo_t* shadowContext = shadow-&gt;beginShadowLayer(context, solidFigureExtents);
&gt; -    if (!shadowContext)
&gt; +    RefPtr&lt;cairo_t&gt; shadowContext = shadow-&gt;beginShadowLayer(context, solidFigureExtents);
&gt; +    if (!shadowContext.get())

Ditto. I don&apos;t think it adds anything here.

&gt; Source/WebCore/platform/graphics/cairo/ImageCairo.cpp:143
&gt;      if (shadow-&gt;m_type != ContextShadow::NoShadow) {
&gt; -        cairo_t* shadowContext = shadow-&gt;beginShadowLayer(context, dstRect);
&gt; +        RefPtr&lt;cairo_t&gt; shadowContext = shadow-&gt;beginShadowLayer(context, dstRect);
&gt;          if (shadowContext) {

Ditto.

&gt; Source/WebCore/platform/graphics/gtk/FontGtk.cpp:248
&gt; -    cairo_t* shadowContext = shadow-&gt;beginShadowLayer(graphicsContext, extents);
&gt; +    RefPtr&lt;cairo_t&gt; shadowContext = shadow-&gt;beginShadowLayer(graphicsContext, extents);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382346</commentid>
    <comment_count>16</comment_count>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-04-08 10:25:59 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 88561 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88561&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ContextShadow.h:38
&gt; &gt; +#if PLATFORM(CAIRO)
&gt; &gt; +#include &quot;RefPtrCairo.h&quot;
&gt; &gt; +#endif
&gt; &gt; +
&gt; 
&gt; Please move this to a separate block with a newline between the first block of includes and this one.
&gt; 

I will fix it.

&gt; &gt; Source/WebCore/platform/graphics/ContextShadow.h:57
&gt; &gt; +typedef RefPtr&lt;cairo_surface_t&gt; PlatformImage;
&gt; 
&gt; We don&apos;t need to take a reference to the m_layerImage, so maybe it makes sense to just leave this as a cairo_surface_t. What do you think?
&gt; 

I agree. m_layerImage just takes a static pointer of cairo_surface_t, so we don&apos;t need to mange the reference count.

&gt; &gt; Source/WebCore/platform/graphics/cairo/CairoPath.h:34
&gt; &gt; +        static RefPtr&lt;cairo_surface_t&gt; pathSurface = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_A8, 1, 1));
&gt; 
&gt; Ack! I didn&apos;t realize this was static. Please revert this line. Sorry!
&gt; 

That&apos;s ok.

&gt; &gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:95
&gt; &gt; +    RefPtr&lt;cairo_t&gt; shadowContext = shadow-&gt;beginShadowLayer(graphicsContext, fontExtentsRect);
&gt; &gt; +    if (shadowContext.get()) {
&gt; &gt; +        prepareContextForGlyphDrawing(shadowContext.get(), font, point);
&gt; &gt; +        drawGlyphsToContext(shadowContext.get(), font, glyphs, numGlyphs);
&gt; &gt;          shadow-&gt;endShadowLayer(graphicsContext);
&gt; 
&gt; I don&apos;t think you should use RefPtr here since you don&apos;t want to take a reference. 
&gt; 

However, beginShadowLayer returns RefPtr&lt;cairo_t&gt;, so I need to use RefPtr here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382355</commentid>
    <comment_count>17</comment_count>
      <attachid>88561</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-08 10:30:17 -0700</bug_when>
    <thetext>Comment on attachment 88561
Proposed Patch5

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:95
&gt;&gt;&gt;          shadow-&gt;endShadowLayer(graphicsContext);
&gt;&gt; 
&gt;&gt; I don&apos;t think you should use RefPtr here since you don&apos;t want to take a reference.
&gt; 
&gt; However, beginShadowLayer returns RefPtr&lt;cairo_t&gt;, so I need to use RefPtr here.

Typically things only return a PassRefPtr if they are handing off ownership. It seems that beginShadowLayer shouldn&apos;t make this suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382384</commentid>
    <comment_count>18</comment_count>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-04-08 10:55:37 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 88561 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88561&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/cairo/FontCairo.cpp:95
&gt; &gt;&gt;&gt;          shadow-&gt;endShadowLayer(graphicsContext);
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t think you should use RefPtr here since you don&apos;t want to take a reference.
&gt; &gt; 
&gt; &gt; However, beginShadowLayer returns RefPtr&lt;cairo_t&gt;, so I need to use RefPtr here.
&gt; 
&gt; Typically things only return a PassRefPtr if they are handing off ownership. It seems that beginShadowLayer shouldn&apos;t make this suggestion.

Yes, we can&apos;t use a PassRefPtr as return value here, so it seems to make sense to just leave m_layerContext as a cairo_t to return a raw pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383410</commentid>
    <comment_count>19</comment_count>
      <attachid>88561</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2011-04-11 13:07:01 -0700</bug_when>
    <thetext>Comment on attachment 88561
Proposed Patch5

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/cairo/CairoPath.h:34
&gt;&gt;&gt; +        static RefPtr&lt;cairo_surface_t&gt; pathSurface = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_A8, 1, 1));
&gt;&gt; 
&gt;&gt; Ack! I didn&apos;t realize this was static. Please revert this line. Sorry!
&gt; 
&gt; That&apos;s ok.

Is this static really threadsafe? Under MSVCRT (which also uses this code) there is no guarantee that this will only execute once.  Could it be changed to a static initializer so that it is known to complete prior to multi-threaded execution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383919</commentid>
    <comment_count>20</comment_count>
      <attachid>89184</attachid>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-04-12 03:34:02 -0700</bug_when>
    <thetext>Created attachment 89184
Proposed Patch6

Creating the pathSurface could be threadsafe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384315</commentid>
    <comment_count>21</comment_count>
      <attachid>89184</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-12 13:35:17 -0700</bug_when>
    <thetext>Comment on attachment 89184
Proposed Patch6

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

&gt; Source/WebCore/platform/graphics/cairo/CairoPath.h:31
&gt; +{

This isn&apos;t thread-safe as before.
I guess what Brent said is that you can put the variable to the file static scope,
and to make linkers/loaders to call its constructor. 

In general it&apos;s good to avoid static initializers. 
But WebKit uses it many places so you don&apos;t worry about to use it ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385021</commentid>
    <comment_count>22</comment_count>
      <attachid>89407</attachid>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-04-13 11:12:25 -0700</bug_when>
    <thetext>Created attachment 89407
Proposed Patch7

Thanks for your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385107</commentid>
    <comment_count>23</comment_count>
      <attachid>89407</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-13 11:58:03 -0700</bug_when>
    <thetext>Comment on attachment 89407
Proposed Patch7

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

I apologize that this change has balooned from its original intent. I understand if you wish to separate out the parts of the change into separate bugs.

&gt; Source/WebCore/platform/graphics/cairo/CairoPath.cpp:18
&gt; +/*
&gt; +    Copyright (C) 2011 Collabora Ltd.
&gt; +
&gt; +    This library is free software; you can redistribute it and/or
&gt; +    modify it under the terms of the GNU Library General Public
&gt; +    License as published by the Free Software Foundation; either
&gt; +    version 2 of the License, or (at your option) any later version.
&gt; +
&gt; +    This library is distributed in the hope that it will be useful,
&gt; +    but WITHOUT ANY WARRANTY; without even the implied warranty of
&gt; +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
&gt; +    Library General Public License for more details.
&gt; +
&gt; +    You should have received a copy of the GNU Library General Public License
&gt; +    aint with this library; see the file COPYING.LIB.  If not, write to
&gt; +    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt; +    Boston, MA 02110-1301, USA.
&gt; +*/

I think it&apos;s good that you are moving this stuff into an actual implementation file since it&apos;s becoming heftier. Please, please take this opportunity to rename this to PlatformPathCairo though. Having CairoPath.{cpp,h} and PathCairo.cpp is incredibly confusing!

Please format this license blocks with asterisks down the left side to match the other files in this directory.

&gt; Source/WebCore/platform/graphics/cairo/CairoPath.cpp:25
&gt; +cairo_surface_t* CairoPath::m_pathSurface = cairo_image_surface_create(CAIRO_FORMAT_A8, 1, 1);

Now that this is in a CPP file you can dispense with the static class member altogether and just do:

static cairo_surface_t* getPathSurface()
{
    static pathSurface =  cairo_image_surface_create(CAIRO_FORMAT_A8, 1, 1);
    return pathSurface;
}

&gt; Source/WebCore/platform/graphics/cairo/CairoPath.h:35
&gt;      CairoPath()
&gt;      {
&gt; -        static cairo_surface_t* pathSurface = cairo_image_surface_create(CAIRO_FORMAT_A8, 1, 1);
&gt; -        m_cr = cairo_create(pathSurface);
&gt; +        m_cr = adoptRef(cairo_create(m_pathSurface));
&gt;      }

Please move the implementation of the constructor into the CPP file so you can remove the cairo.h include above. The assignment of m_cr should be an initializer.

CairoPath()
    : m_cr(adoptRef(cairo_create(m_pathSurface))
{
}

&gt; Source/WebCore/platform/graphics/cairo/CairoPath.h:40
&gt;      ~CairoPath()
&gt;      {
&gt; -        cairo_destroy(m_cr);
&gt;      }
&gt;  

This can be one line now and perhaps even omitted.

&gt; Source/WebCore/platform/graphics/cairo/CairoPath.h:45
&gt; +    static cairo_surface_t* m_pathSurface;

You can remove this. See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385549</commentid>
    <comment_count>24</comment_count>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-04-13 23:42:14 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 89407 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89407&amp;action=review
&gt; 
&gt; I apologize that this change has balooned from its original intent. I understand if you wish to separate out the parts of the change into separate bugs.

No problem, it would be good to file a new bug to deal with the thread-safety issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385550</commentid>
    <comment_count>25</comment_count>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-04-13 23:43:04 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 89407 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89407&amp;action=review
&gt; &gt; 
&gt; &gt; I apologize that this change has balooned from its original intent. I understand if you wish to separate out the parts of the change into separate bugs.
&gt; 
&gt; No problem, it would be good to file a new bug to deal with the thread-safety issue.

https://bugs.webkit.org/show_bug.cgi?id=58514</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385570</commentid>
    <comment_count>26</comment_count>
      <attachid>89545</attachid>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-04-14 00:38:57 -0700</bug_when>
    <thetext>Created attachment 89545
Proposed Patch8

This patch is updated to only deal with replacing raw pointers with RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386303</commentid>
    <comment_count>27</comment_count>
      <attachid>89545</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-14 19:12:43 -0700</bug_when>
    <thetext>Comment on attachment 89545
Proposed Patch8

Clearing flags on attachment: 89545

Committed r83932: &lt;http://trac.webkit.org/changeset/83932&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386304</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-14 19:12:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88009</attachid>
            <date>2011-04-03 07:03:21 -0700</date>
            <delta_ts>2011-04-03 09:20:41 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cairo_RefPtr.patch</filename>
            <type>text/plain</type>
            <size>20342</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOTQzNmJlLi4yOGVhNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTEtMDQtMDMgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCB1
c2Ugb2YgcmF3IHBvaW50ZXJzIHRvIFJlZlB0ciBpbiB1c2luZyBDYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3MTcKKworICAgICAgICBObyBu
ZXcgdGVzdHMgYWRkZWQgYmVjYXVlIG9mIGp1c3QgcmVwbGFjaW5nIHJhdyBwb3JpbnRlcnMgd2l0
aCBzbWFydCBwb2ludGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuaDogVXNlIFJlZlB0cnMgb2YgdGhlIFBsYXRmb3JtSW1hZ2UgYW5kIFBsYXRmb3JtQ29u
dGV4dCBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb1BhdGguaDogVXNlIGEgUmVmUHRyIG9mIGNhaXJvX3QgaW5zdGVhZCBvZiBy
YXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6Q2Fpcm9QYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6fkNhaXJvUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWlyb1BhdGg6OmNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NvbnRleHRTaGFkb3dDYWlyby5jcHA6IFVzZSBhIFJlZlB0ciBvZiBjYWlyb19zdXJmYWNlX3Qg
aW5zdGVhZCBvZiByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OnB1cmdlU2NyYXRjaEJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOiBSZXR1cm5zIFBsYXRmb3Jt
Q29udGV4dCogaW5zdGVhZCBvZiBQbGF0Zm9ybUNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
U2hhZG93OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOiBVc2UgYSBSZWZQdHIgb2YgY2Fpcm9fdCBp
bnN0ZWFkIG9mIHJhdyBwb2ludGVyLgorICAgICAgICAoY29weVN1cmZhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOiBSZXR1cm5zIFBsYXRmb3JtQ29udGV4dCogaW5z
dGVhZCBvZiBQbGF0Zm9ybUNvbnRleHQuCisKIDIwMTEtMDQtMDIgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IDg1
MGQ0ODkuLmJkZjRkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZXh0U2hhZG93LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJS
ZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFURk9S
TShDQUlSTykKQEAgLTUwLDE0ICs1MSwxNCBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiAKICNpZiBQTEFURk9STShDQUlSTykKLXR5cGVkZWYgY2Fpcm9f
c3VyZmFjZV90KiBQbGF0Zm9ybUltYWdlOwotdHlwZWRlZiBjYWlyb190KiBQbGF0Zm9ybUNvbnRl
eHQ7Cit0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCBQbGF0Zm9ybUltYWdlOwordHlwZWRlZiBjYWly
b190IFBsYXRmb3JtQ29udGV4dDsKICNlbGlmIFBMQVRGT1JNKFFUKQogdHlwZWRlZiBRSW1hZ2Ug
UGxhdGZvcm1JbWFnZTsKIHR5cGVkZWYgUVBhaW50ZXIqIFBsYXRmb3JtQ29udGV4dDsKICNlbHNl
Ci10eXBlZGVmIHZvaWQqIFBsYXRmb3JtSW1hZ2U7Ci10eXBlZGVmIHZvaWQqIFBsYXRmb3JtQ29u
dGV4dDsKK3R5cGVkZWYgdm9pZCBQbGF0Zm9ybUltYWdlOwordHlwZWRlZiB2b2lkIFBsYXRmb3Jt
Q29udGV4dDsKICNlbmRpZgogCiAvLyBUaGlzIGlzIHRvIHRyYWNrIGFuZCBrZWVwIHRoZSBzaGFk
b3cgc3RhdGUuIFdlIHVzZSB0aGlzIHJhdGhlciB0aGFuCkBAIC0xMTAsNyArMTExLDcgQEAgcHVi
bGljOgogICAgIC8vIG9yaWdpbmFsIGNvbnRleHQuIElmIGJsdXIgcmFkaXVzIGlzIHNwZWNpZmll
ZCwgdGhlIHNoYWRvdyB3aWxsIGJlCiAgICAgLy8gZmlsdGVyZWQgZmlyc3QuCiAKLSAgICBQbGF0
Zm9ybUNvbnRleHQgYmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGxheWVyQXJlYSk7CisgICAgUGxhdGZvcm1Db250ZXh0KiBiZWdpblNoYWRvd0xheWVy
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKTsKICAgICB2b2lk
IGVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCopOwogICAgIHN0YXRpYyB2b2lkIHB1cmdl
U2NyYXRjaEJ1ZmZlcigpOwogCkBAIC0xMjQsOCArMTI1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENBSVJPKQorICAgIFJlZlB0cjxQbGF0Zm9ybUltYWdl
PiBtX2xheWVySW1hZ2U7IC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNoYWRvdyB3
aWxsIGJlIGRyYXduIHRvLgorICAgIFJlZlB0cjxQbGF0Zm9ybUNvbnRleHQ+IG1fbGF5ZXJDb250
ZXh0OyAvLyBDb250ZXh0IHVzZWQgdG8gcGFpbnQgdGhlIHNoYWRvdyB0byB0aGUgbGF5ZXIgaW1h
Z2UuCisjZWxzZQogICAgIFBsYXRmb3JtSW1hZ2UgbV9sYXllckltYWdlOyAvLyBCdWZmZXIgdG8g
d2hlcmUgdGhlIHRlbXBvcmFyeSBzaGFkb3cgd2lsbCBiZSBkcmF3biB0by4KICAgICBQbGF0Zm9y
bUNvbnRleHQgbV9sYXllckNvbnRleHQ7IC8vIENvbnRleHQgdXNlZCB0byBwYWludCB0aGUgc2hh
ZG93IHRvIHRoZSBsYXllciBpbWFnZS4KKyNlbmRpZgogICAgIEZsb2F0UmVjdCBtX3NvdXJjZVJl
Y3Q7IC8vIFN1Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRoZSBzaGFkb3cg
cGl4ZWxzLgogICAgIEZsb2F0UG9pbnQgbV9sYXllck9yaWdpbjsgLy8gVG9wLWxlZnQgY29ybmVy
IG9mIHRoZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3IHRoZSBzaGFk
b3cgdG8uCiAgICAgRmxvYXRQb2ludCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uOyAvLyBUcmFu
c2xhdGlvbiB0byBhcHBseSB0byBtX2xheWVyQ29udGV4dCBmb3IgdGhlIHNoYWRvdyB0byBiZSBj
b3JyZWN0bHkgY2xpcHBlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9QYXRoLmgKaW5kZXggZGE3YWZmYi4uNDZmZWU5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9QYXRoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9QYXRoLmgKQEAgLTIx
LDYgKzIxLDcgQEAKICNpZm5kZWYgQ2Fpcm9QYXRoX2gKICNkZWZpbmUgQ2Fpcm9QYXRoX2gKIAor
I2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzEsMTggKzMyLDE3IEBAIHB1YmxpYzoKICAgICBDYWlyb1BhdGgoKQog
ICAgIHsKICAgICAgICAgc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogcGF0aFN1cmZhY2UgPSBjYWly
b19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQTgsIDEsIDEpOwotICAgICAgICBt
X2NyID0gY2Fpcm9fY3JlYXRlKHBhdGhTdXJmYWNlKTsKKyAgICAgICAgbV9jciA9IGFkb3B0UmVm
KGNhaXJvX2NyZWF0ZShwYXRoU3VyZmFjZSkpOwogICAgIH0KIAogICAgIH5DYWlyb1BhdGgoKQog
ICAgIHsKLSAgICAgICAgY2Fpcm9fZGVzdHJveShtX2NyKTsKICAgICB9CiAKLSAgICBjYWlyb190
KiBjb250ZXh0KCkgeyByZXR1cm4gbV9jcjsgfQorICAgIGNhaXJvX3QqIGNvbnRleHQoKSB7IHJl
dHVybiBtX2NyLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgY2Fpcm9fdCogbV9jcjsKKyAgICBS
ZWZQdHI8Y2Fpcm9fdD4gbV9jcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFk
b3dDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250
ZXh0U2hhZG93Q2Fpcm8uY3BwCmluZGV4IGIwNTg4ZDYuLmVkMTYzNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNo
YWRvd0NhaXJvLmNwcApAQCAtNDEsMTEgKzQxLDEwIEBAIHVzaW5nIFdURjo6bWF4OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjYWlyb19zdXJmYWNlX3QqIHNjcmF0Y2hCdWZmZXIg
PSAwOworc3RhdGljIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHNjcmF0Y2hCdWZmZXI7CiBzdGF0
aWMgdm9pZCBwdXJnZVNjcmF0Y2hCdWZmZXIoKQogewotICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJv
eShzY3JhdGNoQnVmZmVyKTsKLSAgICBzY3JhdGNoQnVmZmVyID0gMDsKKyAgICBzY3JhdGNoQnVm
ZmVyLmNsZWFyKCk7CiB9CiAKIC8vIENvbnRleHRTaGFkb3cgbmVlZHMgYSBzY3JhdGNoIGltYWdl
IGFzIHRoZSBidWZmZXIgZm9yIHRoZSBibHVyIGZpbHRlci4KQEAgLTY3LDIzICs2NiwyMyBAQCBz
dGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUpCiB7CiAgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBz
aXplLmhlaWdodCgpOwotICAgIGludCBzY3JhdGNoV2lkdGggPSBzY3JhdGNoQnVmZmVyID8gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc2NyYXRjaEJ1ZmZlcikgOiAwOwotICAgIGludCBz
Y3JhdGNoSGVpZ2h0ID0gc2NyYXRjaEJ1ZmZlciA/IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hl
aWdodChzY3JhdGNoQnVmZmVyKSA6IDA7CisgICAgaW50IHNjcmF0Y2hXaWR0aCA9IHNjcmF0Y2hC
dWZmZXIuZ2V0KCkgPyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzY3JhdGNoQnVmZmVy
LmdldCgpKSA6IDA7CisgICAgaW50IHNjcmF0Y2hIZWlnaHQgPSBzY3JhdGNoQnVmZmVyLmdldCgp
ID8gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHNjcmF0Y2hCdWZmZXIuZ2V0KCkpIDog
MDsKIAogICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZmZXIgaWYgdGhl
IGN1cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KLSAgICBpZiAoc2NyYXRjaEJ1ZmZlciAm
JiBzY3JhdGNoV2lkdGggPj0gd2lkdGggJiYgc2NyYXRjaEhlaWdodCA+PSBoZWlnaHQpCi0gICAg
ICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOworICAgIGlmIChzY3JhdGNoQnVmZmVyLmdldCgpICYm
IHNjcmF0Y2hXaWR0aCA+PSB3aWR0aCAmJiBzY3JhdGNoSGVpZ2h0ID49IGhlaWdodCkKKyAgICAg
ICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXIuZ2V0KCk7CiAKICAgICBwdXJnZVNjcmF0Y2hCdWZmZXIo
KTsKIAogICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFyZXN0IDMyIHBpeGVscyBzbyB3ZSBkbyBub3Qg
Z3JvdyB0aGUgYnVmZmVyIGZvciBzaW1pbGFyIHNpemVkIHJlcXVlc3RzLgogICAgIHdpZHRoID0g
KDEgKyAod2lkdGggPj4gNSkpIDw8IDU7CiAgICAgaGVpZ2h0ID0gKDEgKyAoaGVpZ2h0ID4+IDUp
KSA8PCA1OwotICAgIHNjcmF0Y2hCdWZmZXIgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShD
QUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gc2NyYXRjaEJ1
ZmZlcjsKKyAgICBzY3JhdGNoQnVmZmVyID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j
cmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybiBz
Y3JhdGNoQnVmZmVyLmdldCgpOwogfQogCi1QbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6
YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgbGF5ZXJBcmVhKQorUGxhdGZvcm1Db250ZXh0KiBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRv
d0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEpCiB7CiAgICAgYWRqdXN0Qmx1ckRpc3RhbmNlKGNvbnRleHQpOwogCkBAIC05NiwzNCArOTUs
MzMgQEAgUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1f
bGF5ZXJJbWFnZSA9IGdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7Ci0gICAgbV9s
YXllckNvbnRleHQgPSBjYWlyb19jcmVhdGUobV9sYXllckltYWdlKTsKKyAgICBtX2xheWVyQ29u
dGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2xheWVySW1hZ2UuZ2V0KCkpKTsKIAogICAg
IC8vIEFsd2F5cyBjbGVhciB0aGUgc3VyZmFjZSBmaXJzdC4KLSAgICBjYWlyb19zZXRfb3BlcmF0
b3IobV9sYXllckNvbnRleHQsIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKLSAgICBjYWlyb19wYWlu
dChtX2xheWVyQ29udGV4dCk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0
LCBDQUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNv
bnRleHQuZ2V0KCksIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKKyAgICBjYWlyb19wYWludChtX2xh
eWVyQ29udGV4dC5nZXQoKSk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0
LmdldCgpLCBDQUlST19PUEVSQVRPUl9PVkVSKTsKIAotICAgIGNhaXJvX3RyYW5zbGF0ZShtX2xh
eWVyQ29udGV4dCwgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbi54KCksIG1fbGF5ZXJDb250ZXh0
VHJhbnNsYXRpb24ueSgpKTsKLSAgICByZXR1cm4gbV9sYXllckNvbnRleHQ7CisgICAgY2Fpcm9f
dHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0LmdldCgpLCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9u
LngoKSwgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbi55KCkpOworICAgIHJldHVybiBtX2xheWVy
Q29udGV4dC5nZXQoKTsKIH0KIAogdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgY2Fpcm9fZGVzdHJveShtX2xheWVyQ29u
dGV4dCk7Ci0gICAgbV9sYXllckNvbnRleHQgPSAwOworICAgIG1fbGF5ZXJDb250ZXh0LmNsZWFy
KCk7CiAKICAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpIHsKLSAgICAgICAgY2Fpcm9fc3Vy
ZmFjZV9mbHVzaChtX2xheWVySW1hZ2UpOwotICAgICAgICBibHVyTGF5ZXJJbWFnZShjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fbGF5ZXJJbWFnZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEludFNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgobV9sYXllckltYWdlKSwg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KG1fbGF5ZXJJbWFnZSkpLAotICAgICAgICAg
ICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9sYXllckltYWdl
KSk7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX2xheWVySW1hZ2UpOworICAg
ICAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fbGF5ZXJJbWFnZS5nZXQoKSk7CisgICAgICAgIGJs
dXJMYXllckltYWdlKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9sYXllckltYWdlLmdl
dCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF93aWR0aChtX2xheWVySW1hZ2UuZ2V0KCkpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9o
ZWlnaHQobV9sYXllckltYWdlLmdldCgpKSksCisgICAgICAgICAgICAgICAgICAgICAgIGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX2xheWVySW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAg
Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZS5nZXQoKSk7CiAgICAgfQogCiAg
ICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBjYWlyb19z
YXZlKGNyKTsKICAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBtX2NvbG9yKTsKLSAgICBj
YWlyb19tYXNrX3N1cmZhY2UoY3IsIG1fbGF5ZXJJbWFnZSwgbV9sYXllck9yaWdpbi54KCksIG1f
bGF5ZXJPcmlnaW4ueSgpKTsKKyAgICBjYWlyb19tYXNrX3N1cmZhY2UoY3IsIG1fbGF5ZXJJbWFn
ZS5nZXQoKSwgbV9sYXllck9yaWdpbi54KCksIG1fbGF5ZXJPcmlnaW4ueSgpKTsKICAgICBjYWly
b19yZXN0b3JlKGNyKTsKIAogICAgIC8vIFNjaGVkdWxlIGEgcHVyZ2Ugb2YgdGhlIHNjcmF0Y2gg
YnVmZmVyLiBXZSBkbyBub3QgbmVlZCB0byBkZXN0cm95IHRoZSBzdXJmYWNlLgpAQCAtMTQwLDkg
KzEzOCw5IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0
aC5hZGRSb3VuZGVkUmVjdChzaGFkb3dSZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1
cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwogCi0gICAgYXBwZW5kV2Vi
Q29yZVBhdGhUb0NhaXJvQ29udGV4dChtX2xheWVyQ29udGV4dCwgcGF0aCk7Ci0gICAgY2Fpcm9f
c2V0X3NvdXJjZV9yZ2JhKG1fbGF5ZXJDb250ZXh0LCAwLCAwLCAwLCBhbHBoYSk7Ci0gICAgY2Fp
cm9fZmlsbChtX2xheWVyQ29udGV4dCk7CisgICAgYXBwZW5kV2ViQ29yZVBhdGhUb0NhaXJvQ29u
dGV4dChtX2xheWVyQ29udGV4dC5nZXQoKSwgcGF0aCk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9y
Z2JhKG1fbGF5ZXJDb250ZXh0LmdldCgpLCAwLCAwLCAwLCBhbHBoYSk7CisgICAgY2Fpcm9fZmls
bChtX2xheWVyQ29udGV4dC5nZXQoKSk7CiAKICAgICBlbmRTaGFkb3dMYXllcihjb250ZXh0KTsK
IH0KQEAgLTIzOCwzNCArMjM2LDMzIEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgbV9s
YXllckltYWdlID0gZ2V0U2NyYXRjaEJ1ZmZlcihzaGFkb3dUZW1wbGF0ZVNpemUpOwogCiAgICAg
Ly8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlci4KLSAgICBtX2xheWVyQ29udGV4
dCA9IGNhaXJvX2NyZWF0ZShtX2xheWVySW1hZ2UpOworICAgIG1fbGF5ZXJDb250ZXh0ID0gYWRv
cHRSZWYoY2Fpcm9fY3JlYXRlKG1fbGF5ZXJJbWFnZS5nZXQoKSkpOwogCiAgICAgLy8gQ2xlYXIg
dGhlIHN1cmZhY2UgZmlyc3QuCi0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0
LCBDQUlST19PUEVSQVRPUl9DTEVBUik7Ci0gICAgY2Fpcm9fcGFpbnQobV9sYXllckNvbnRleHQp
OwotICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29udGV4dCwgQ0FJUk9fT1BFUkFUT1Jf
T1ZFUik7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LmdldCgpLCBDQUlS
T19PUEVSQVRPUl9DTEVBUik7CisgICAgY2Fpcm9fcGFpbnQobV9sYXllckNvbnRleHQuZ2V0KCkp
OworICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29udGV4dC5nZXQoKSwgQ0FJUk9fT1BF
UkFUT1JfT1ZFUik7CiAKICAgICAvLyBEcmF3IHRoZSByZWN0YW5nbGUuCiAgICAgSW50UmVjdCB0
ZW1wbGF0ZVJlY3QgPSBJbnRSZWN0KG1fYmx1ckRpc3RhbmNlLCBtX2JsdXJEaXN0YW5jZSwgc2hh
ZG93VGVtcGxhdGVTaXplLndpZHRoKCkgLSByYWRpdXNUd2ljZSwgc2hhZG93VGVtcGxhdGVTaXpl
LmhlaWdodCgpIC0gcmFkaXVzVHdpY2UpOwogICAgIFBhdGggcGF0aDsKICAgICBwYXRoLmFkZFJv
dW5kZWRSZWN0KHRlbXBsYXRlUmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJv
dHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKLSAgICBhcHBlbmRXZWJDb3JlUGF0
aFRvQ2Fpcm9Db250ZXh0KG1fbGF5ZXJDb250ZXh0LCBwYXRoKTsKKyAgICBhcHBlbmRXZWJDb3Jl
UGF0aFRvQ2Fpcm9Db250ZXh0KG1fbGF5ZXJDb250ZXh0LmdldCgpLCBwYXRoKTsKIAotICAgIGNh
aXJvX3NldF9zb3VyY2VfcmdiYShtX2xheWVyQ29udGV4dCwgMCwgMCwgMCwgY29udGV4dC0+Z2V0
QWxwaGEoKSk7Ci0gICAgY2Fpcm9fZmlsbChtX2xheWVyQ29udGV4dCk7CisgICAgY2Fpcm9fc2V0
X3NvdXJjZV9yZ2JhKG1fbGF5ZXJDb250ZXh0LmdldCgpLCAwLCAwLCAwLCBjb250ZXh0LT5nZXRB
bHBoYSgpKTsKKyAgICBjYWlyb19maWxsKG1fbGF5ZXJDb250ZXh0LmdldCgpKTsKIAogICAgIC8v
IEJsdXIgdGhlIGltYWdlLgotICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9sYXllckltYWdlKTsK
LSAgICBibHVyTGF5ZXJJbWFnZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fbGF5ZXJJ
bWFnZSksIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KG1fbGF5ZXJJbWFnZSkpOwotICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX2xheWVySW1h
Z2UpOworICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9sYXllckltYWdlLmdldCgpKTsKKyAgICBi
bHVyTGF5ZXJJbWFnZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fbGF5ZXJJbWFnZS5n
ZXQoKSksIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KG1fbGF5ZXJJbWFnZS5nZXQoKSkpOworICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX2xh
eWVySW1hZ2UuZ2V0KCkpOwogCiAgICAgLy8gTWFzayB0aGUgaW1hZ2Ugd2l0aCB0aGUgc2hhZG93
IGNvbG9yLgotICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29udGV4dCwgQ0FJUk9fT1BF
UkFUT1JfSU4pOwotICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IobV9sYXllckNvbnRleHQsIG1f
Y29sb3IpOwotICAgIGNhaXJvX3BhaW50KG1fbGF5ZXJDb250ZXh0KTsKKyAgICBjYWlyb19zZXRf
b3BlcmF0b3IobV9sYXllckNvbnRleHQuZ2V0KCksIENBSVJPX09QRVJBVE9SX0lOKTsKKyAgICBz
ZXRTb3VyY2VSR0JBRnJvbUNvbG9yKG1fbGF5ZXJDb250ZXh0LmdldCgpLCBtX2NvbG9yKTsKKyAg
ICBjYWlyb19wYWludChtX2xheWVyQ29udGV4dC5nZXQoKSk7CiAKLSAgICBjYWlyb19kZXN0cm95
KG1fbGF5ZXJDb250ZXh0KTsKLSAgICBtX2xheWVyQ29udGV4dCA9IDA7CisgICAgbV9sYXllckNv
bnRleHQuY2xlYXIoKTsKIAogICAgIC8vIEZpbGwgdGhlIGludGVybmFsIHBhcnQgb2YgdGhlIHNo
YWRvdy4KICAgICBzaGFkb3dSZWN0LmluZmxhdGUoLXJhZGl1c1R3aWNlKTsKQEAgLTI4OCw3ICsy
ODUsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIEZsb2F0UG9pbnQgcGhhc2UgPSBn
ZXRQaGFzZShkZXN0UmVjdCwgdGlsZVJlY3QpOwogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJu
VHJhbnNmb3JtOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7Ci0gICAgZHJh
d1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNp
emUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZF
UiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJ
bWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcg
dGhlIGJvdHRvbSBzaWRlLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHJhZGl1c1R3aWNlICsg
Ym90dG9tTGVmdFJhZGl1cy53aWR0aCgpLCBzaGFkb3dUZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBy
YWRpdXNUd2ljZSwgc2lkZVRpbGVXaWR0aCwgcmFkaXVzVHdpY2UpOwpAQCAtMjk2LDcgKzI5Myw3
IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0
LngoKSwgc2hhZG93UmVjdC55KCkgKyByYWRpdXNUd2ljZSArIHJlY3QuaGVpZ2h0KCkgLSBzaGFk
b3dUZW1wbGF0ZVNpemUuaGVpZ2h0KCkpOwogICAgIGRlc3RSZWN0LnNldFdpZHRoKHNoYWRvd1Jl
Y3Qud2lkdGgoKSAtIGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSAtIGJvdHRvbVJpZ2h0UmFkaXVz
LndpZHRoKCkgLSBtX2JsdXJEaXN0YW5jZSAqIDQpOwogICAgIHBoYXNlID0gZ2V0UGhhc2UoZGVz
dFJlY3QsIHRpbGVSZWN0KTsKLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xh
eWVySW1hZ2UsIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5U
b0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLmdldCgpLCBzaGFkb3dUZW1wbGF0ZVNpemUs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwg
ZGVzdFJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgcmlnaHQgc2lkZS4KICAgICB0aWxlUmVjdCA9
IEZsb2F0UmVjdChzaGFkb3dUZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJhZGl1c1R3aWNlLCByYWRp
dXNUd2ljZSArIHRvcFJpZ2h0UmFkaXVzLmhlaWdodCgpLCByYWRpdXNUd2ljZSwgc2lkZVRpbGVX
aWR0aCk7CkBAIC0zMDQsNyArMzAxLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNo
YWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBk
ZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpICsgcmFkaXVzVHdpY2UgKyByZWN0LndpZHRoKCkg
LSBzaGFkb3dUZW1wbGF0ZVNpemUud2lkdGgoKSwgc2hhZG93UmVjdC55KCkpOwogICAgIGRlc3RS
ZWN0LnNldEhlaWdodChzaGFkb3dSZWN0LmhlaWdodCgpIC0gdG9wUmlnaHRSYWRpdXMuaGVpZ2h0
KCkgLSBib3R0b21SaWdodFJhZGl1cy5oZWlnaHQoKSAtIG1fYmx1ckRpc3RhbmNlICogNCk7CiAg
ICAgcGhhc2UgPSBnZXRQaGFzZShkZXN0UmVjdCwgdGlsZVJlY3QpOwotICAgIGRyYXdQYXR0ZXJu
VG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxl
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RS
ZWN0KTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UuZ2V0
KCksIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBsZWZ0
IHNpZGUuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgcmFkaXVzVHdpY2UgKyB0b3BMZWZ0
UmFkaXVzLmhlaWdodCgpLCByYWRpdXNUd2ljZSwgc2lkZVRpbGVXaWR0aCk7CkBAIC0zMTIsMTQg
KzMwOSwxNCBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGRlc3RSZWN0Lm1vdmUoc2hh
ZG93UmVjdC54KCksIHNoYWRvd1JlY3QueSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoc2hh
ZG93UmVjdC5oZWlnaHQoKSAtIHRvcExlZnRSYWRpdXMuaGVpZ2h0KCkgLSBib3R0b21MZWZ0UmFk
aXVzLmhlaWdodCgpIC0gbV9ibHVyRGlzdGFuY2UgKiA0KTsKICAgICBwaGFzZSA9IEZsb2F0UG9p
bnQoZGVzdFJlY3QueCgpIC0gdGlsZVJlY3QueCgpLCBkZXN0UmVjdC55KCkgLSB0aWxlUmVjdC55
KCkpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZSwgc2hh
ZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJP
X09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0
KGNyLCBtX2xheWVySW1hZ2UuZ2V0KCksIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CiAK
ICAgICAvLyBEcmF3IHRoZSB0b3AgbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJl
Y3QoMCwgMCwgcmFkaXVzVHdpY2UgKyB0b3BMZWZ0UmFkaXVzLndpZHRoKCksIHJhZGl1c1R3aWNl
ICsgdG9wTGVmdFJhZGl1cy5oZWlnaHQoKSk7CiAgICAgZGVzdFJlY3QgPSB0aWxlUmVjdDsKICAg
ICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpLCBzaGFkb3dSZWN0LnkoKSk7CiAgICAgcGhh
c2UgPSBnZXRQaGFzZShkZXN0UmVjdCwgdGlsZVJlY3QpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWly
b0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsK
KyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UuZ2V0KCksIHNo
YWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlS
T19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSB0b3AgcmlnaHQg
Y29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0
aCgpIC0gcmFkaXVzVHdpY2UgLSB0b3BSaWdodFJhZGl1cy53aWR0aCgpLCAwLCByYWRpdXNUd2lj
ZSArIHRvcFJpZ2h0UmFkaXVzLndpZHRoKCksCkBAIC0zMjcsNyArMzI0LDcgQEAgdm9pZCBDb250
ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIHJlY3QKICAgICBkZXN0UmVjdCA9IHRpbGVSZWN0OwogICAgIGRlc3RSZWN0Lm1v
dmUoc2hhZG93UmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBzaGFkb3dUZW1wbGF0ZVNpemUud2lk
dGgoKSArIHJhZGl1c1R3aWNlLCBzaGFkb3dSZWN0LnkoKSk7CiAgICAgcGhhc2UgPSBnZXRQaGFz
ZShkZXN0UmVjdCwgdGlsZVJlY3QpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3Is
IG1fbGF5ZXJJbWFnZSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0
dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UuZ2V0KCksIHNoYWRvd1RlbXBsYXRl
U2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9P
VkVSLCBkZXN0UmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gcmlnaHQgY29ybmVyLgog
ICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmFk
aXVzVHdpY2UgLSBib3R0b21SaWdodFJhZGl1cy53aWR0aCgpLApAQCAtMzM3LDcgKzMzNCw3IEBA
IHZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0Lngo
KSArIHJlY3Qud2lkdGgoKSAtIHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpICsgcmFkaXVzVHdp
Y2UsCiAgICAgICAgICAgICAgICAgICBzaGFkb3dSZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLSBz
aGFkb3dUZW1wbGF0ZVNpemUuaGVpZ2h0KCkgKyByYWRpdXNUd2ljZSk7CiAgICAgcGhhc2UgPSBn
ZXRQaGFzZShkZXN0UmVjdCwgdGlsZVJlY3QpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRl
eHQoY3IsIG1fbGF5ZXJJbWFnZSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKKyAgICBk
cmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UuZ2V0KCksIHNoYWRvd1Rl
bXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVS
QVRPUl9PVkVSLCBkZXN0UmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gbGVmdCBjb3Ju
ZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgc2hhZG93VGVtcGxhdGVTaXplLmhlaWdo
dCgpIC0gcmFkaXVzVHdpY2UgLSBib3R0b21MZWZ0UmFkaXVzLmhlaWdodCgpLApAQCAtMzQ1LDcg
KzM0Miw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgZGVzdFJlY3QgPSB0aWxlUmVj
dDsKICAgICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpLCBzaGFkb3dSZWN0LnkoKSArIHJl
Y3QuaGVpZ2h0KCkgLSBzaGFkb3dUZW1wbGF0ZVNpemUuaGVpZ2h0KCkgKyByYWRpdXNUd2ljZSk7
CiAgICAgcGhhc2UgPSBnZXRQaGFzZShkZXN0UmVjdCwgdGlsZVJlY3QpOwotICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZSwgc2hhZG93VGVtcGxhdGVTaXplLCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRl
c3RSZWN0KTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2Uu
Z2V0KCksIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CiAKICAgICAvLyBTY2hlZHVsZSBh
IHB1cmdlIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlci4KICAgICBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQ
dXJnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA5ZWU4YTk0Li4wMWY1ZGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTIsMTIgKzUzLDEwIEBAIHN0YXRpYyBpbmxpbmUgY2Fp
cm9fc3VyZmFjZV90KiBjb3B5U3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAgICAg
aW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7CiAgICAg
aW50IGhlaWdodCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsKICAg
ICBjYWlyb19zdXJmYWNlX3QqIG5ld3N1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0
ZShmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVh
dGUobmV3c3VyZmFjZSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNl
LCAwLCAwKTsKLSAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJD
RSk7Ci0gICAgY2Fpcm9fcGFpbnQoY3IpOwotICAgIGNhaXJvX2Rlc3Ryb3koY3IpOworICAgIFJl
ZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShuZXdzdXJmYWNlKSk7Cisg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLCAwLCAwKTsKKyAg
ICBjYWlyb19zZXRfb3BlcmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Cisg
ICAgY2Fpcm9fcGFpbnQoY3IuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG5ld3N1cmZhY2U7CiB9CkBA
IC04MCw5ICs3OSw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBz
aXplLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBib29sJiBzCiAgICAgaWYgKGNhaXJvX3N1
cmZhY2Vfc3RhdHVzKG1fZGF0YS5tX3N1cmZhY2UpICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKQog
ICAgICAgICByZXR1cm47ICAvLyBjcmVhdGUgd2lsbCBub3RpY2Ugd2UgZGlkbid0IHNldCBtX2lu
aXRpYWxpemVkIGFuZCBmYWlsLgogCi0gICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUobV9k
YXRhLm1fc3VyZmFjZSk7Ci0gICAgbV9jb250ZXh0LnNldChuZXcgR3JhcGhpY3NDb250ZXh0KGNy
KSk7Ci0gICAgY2Fpcm9fZGVzdHJveShjcik7ICAvLyBUaGUgY29udGV4dCBpcyBub3cgb3duZWQg
YnkgdGhlIEdyYXBoaWNzQ29udGV4dC4KKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJl
ZihjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFjZSkpOworICAgIG1fY29udGV4dC5zZXQobmV3
IEdyYXBoaWNzQ29udGV4dChjci5nZXQoKSkpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hh
ZG93UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNo
YWRvd1F0LmNwcAppbmRleCA5ZWIzMWE3Li40MTNmODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKQEAgLTEw
NSw3ICsxMDUsNyBAQCB2b2lkIFNoYWRvd0J1ZmZlcjo6dGltZXJFdmVudChRVGltZXJFdmVudCog
ZXZlbnQpCiAKIFFfR0xPQkFMX1NUQVRJQyhTaGFkb3dCdWZmZXIsIHNjcmF0Y2hTaGFkb3dCdWZm
ZXIpCiAKLVBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCitQbGF0
Zm9ybUNvbnRleHQqIENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKIHsKICAgICAvLyBTZXQg
bV9ibHVyRGlzdGFuY2UuCiAgICAgYWRqdXN0Qmx1ckRpc3RhbmNlKGNvbnRleHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88011</attachid>
            <date>2011-04-03 09:20:41 -0700</date>
            <delta_ts>2011-04-03 11:00:27 -0700</delta_ts>
            <desc>Proposed Patch2</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>20661</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOTQzNmJlLi4yOGVhNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTEtMDQtMDMgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCB1
c2Ugb2YgcmF3IHBvaW50ZXJzIHRvIFJlZlB0ciBpbiB1c2luZyBDYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3MTcKKworICAgICAgICBObyBu
ZXcgdGVzdHMgYWRkZWQgYmVjYXVlIG9mIGp1c3QgcmVwbGFjaW5nIHJhdyBwb3JpbnRlcnMgd2l0
aCBzbWFydCBwb2ludGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuaDogVXNlIFJlZlB0cnMgb2YgdGhlIFBsYXRmb3JtSW1hZ2UgYW5kIFBsYXRmb3JtQ29u
dGV4dCBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb1BhdGguaDogVXNlIGEgUmVmUHRyIG9mIGNhaXJvX3QgaW5zdGVhZCBvZiBy
YXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6Q2Fpcm9QYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6fkNhaXJvUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWlyb1BhdGg6OmNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NvbnRleHRTaGFkb3dDYWlyby5jcHA6IFVzZSBhIFJlZlB0ciBvZiBjYWlyb19zdXJmYWNlX3Qg
aW5zdGVhZCBvZiByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OnB1cmdlU2NyYXRjaEJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOiBSZXR1cm5zIFBsYXRmb3Jt
Q29udGV4dCogaW5zdGVhZCBvZiBQbGF0Zm9ybUNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
U2hhZG93OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOiBVc2UgYSBSZWZQdHIgb2YgY2Fpcm9fdCBp
bnN0ZWFkIG9mIHJhdyBwb2ludGVyLgorICAgICAgICAoY29weVN1cmZhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOiBSZXR1cm5zIFBsYXRmb3JtQ29udGV4dCogaW5z
dGVhZCBvZiBQbGF0Zm9ybUNvbnRleHQuCisKIDIwMTEtMDQtMDIgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IDg1
MGQ0ODkuLjBiNWIxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZXh0U2hhZG93LmgKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlICJDb2xvci5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpZiBQTEFURk9S
TShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKENBSVJPKQpAQCAtNTAsMTQgKzUzLDE0IEBA
IGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogI2lmIFBM
QVRGT1JNKENBSVJPKQotdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3JtSW1hZ2U7Ci10
eXBlZGVmIGNhaXJvX3QqIFBsYXRmb3JtQ29udGV4dDsKK3R5cGVkZWYgY2Fpcm9fc3VyZmFjZV90
IFBsYXRmb3JtSW1hZ2U7Cit0eXBlZGVmIGNhaXJvX3QgUGxhdGZvcm1Db250ZXh0OwogI2VsaWYg
UExBVEZPUk0oUVQpCiB0eXBlZGVmIFFJbWFnZSBQbGF0Zm9ybUltYWdlOwotdHlwZWRlZiBRUGFp
bnRlciogUGxhdGZvcm1Db250ZXh0OwordHlwZWRlZiBRUGFpbnRlciBQbGF0Zm9ybUNvbnRleHQ7
CiAjZWxzZQotdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUltYWdlOwotdHlwZWRlZiB2b2lkKiBQbGF0
Zm9ybUNvbnRleHQ7Cit0eXBlZGVmIHZvaWQgUGxhdGZvcm1JbWFnZTsKK3R5cGVkZWYgdm9pZCBQ
bGF0Zm9ybUNvbnRleHQ7CiAjZW5kaWYKIAogLy8gVGhpcyBpcyB0byB0cmFjayBhbmQga2VlcCB0
aGUgc2hhZG93IHN0YXRlLiBXZSB1c2UgdGhpcyByYXRoZXIgdGhhbgpAQCAtMTEwLDcgKzExMyw3
IEBAIHB1YmxpYzoKICAgICAvLyBvcmlnaW5hbCBjb250ZXh0LiBJZiBibHVyIHJhZGl1cyBpcyBz
cGVjaWZpZWQsIHRoZSBzaGFkb3cgd2lsbCBiZQogICAgIC8vIGZpbHRlcmVkIGZpcnN0LgogCi0g
ICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBsYXllckFyZWEpOworICAgIFBsYXRmb3JtQ29udGV4dCogYmVnaW5TaGFk
b3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAg
ICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKICAgICBzdGF0aWMgdm9p
ZCBwdXJnZVNjcmF0Y2hCdWZmZXIoKTsKIApAQCAtMTI0LDggKzEyNywxMyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDQUlSTykKKyAgICBSZWZQdHI8UGxhdGZv
cm1JbWFnZT4gbV9sYXllckltYWdlOyAvLyBCdWZmZXIgdG8gd2hlcmUgdGhlIHRlbXBvcmFyeSBz
aGFkb3cgd2lsbCBiZSBkcmF3biB0by4KKyAgICBSZWZQdHI8UGxhdGZvcm1Db250ZXh0PiBtX2xh
eWVyQ29udGV4dDsgLy8gQ29udGV4dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxh
eWVyIGltYWdlLgorI2Vsc2UKICAgICBQbGF0Zm9ybUltYWdlIG1fbGF5ZXJJbWFnZTsgLy8gQnVm
ZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93IHdpbGwgYmUgZHJhd24gdG8uCi0gICAg
UGxhdGZvcm1Db250ZXh0IG1fbGF5ZXJDb250ZXh0OyAvLyBDb250ZXh0IHVzZWQgdG8gcGFpbnQg
dGhlIHNoYWRvdyB0byB0aGUgbGF5ZXIgaW1hZ2UuCisgICAgUGxhdGZvcm1Db250ZXh0KiBtX2xh
eWVyQ29udGV4dDsgLy8gQ29udGV4dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxh
eWVyIGltYWdlLgorI2VuZGlmCiAgICAgRmxvYXRSZWN0IG1fc291cmNlUmVjdDsgLy8gU3ViLXJl
Y3Qgb2YgbV9sYXllckltYWdlIHRoYXQgY29udGFpbnMgdGhlIHNoYWRvdyBwaXhlbHMuCiAgICAg
RmxvYXRQb2ludCBtX2xheWVyT3JpZ2luOyAvLyBUb3AtbGVmdCBjb3JuZXIgb2YgdGhlIChwb3Nz
aWJseSBjbGlwcGVkKSBib3VuZGluZyByZWN0IHRvIGRyYXcgdGhlIHNoYWRvdyB0by4KICAgICBG
bG9hdFBvaW50IG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb247IC8vIFRyYW5zbGF0aW9uIHRvIGFw
cGx5IHRvIG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlw
cGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1BhdGguaAppbmRleCBkYTdhZmZiLi40NmZlZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaApAQCAtMjEsNiArMjEsNyBAQAog
I2lmbmRlZiBDYWlyb1BhdGhfaAogI2RlZmluZSBDYWlyb1BhdGhfaAogCisjaW5jbHVkZSAiUmVm
UHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zMSwxOCArMzIsMTcgQEAgcHVibGljOgogICAgIENhaXJvUGF0aCgpCiAgICAgewogICAgICAg
ICBzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBwYXRoU3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BOCwgMSwgMSk7Ci0gICAgICAgIG1fY3IgPSBjYWlyb19j
cmVhdGUocGF0aFN1cmZhY2UpOworICAgICAgICBtX2NyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRl
KHBhdGhTdXJmYWNlKSk7CiAgICAgfQogCiAgICAgfkNhaXJvUGF0aCgpCiAgICAgewotICAgICAg
ICBjYWlyb19kZXN0cm95KG1fY3IpOwogICAgIH0KIAotICAgIGNhaXJvX3QqIGNvbnRleHQoKSB7
IHJldHVybiBtX2NyOyB9CisgICAgY2Fpcm9fdCogY29udGV4dCgpIHsgcmV0dXJuIG1fY3IuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBjYWlyb190KiBtX2NyOworICAgIFJlZlB0cjxjYWlyb190
PiBtX2NyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWly
by5jcHAKaW5kZXggYjA1ODhkNi4uZWQxNjM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3Bw
CkBAIC00MSwxMSArNDEsMTAgQEAgdXNpbmcgV1RGOjptYXg7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogc2NyYXRjaEJ1ZmZlciA9IDA7CitzdGF0aWMg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc2NyYXRjaEJ1ZmZlcjsKIHN0YXRpYyB2b2lkIHB1cmdl
U2NyYXRjaEJ1ZmZlcigpCiB7Ci0gICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHNjcmF0Y2hCdWZm
ZXIpOwotICAgIHNjcmF0Y2hCdWZmZXIgPSAwOworICAgIHNjcmF0Y2hCdWZmZXIuY2xlYXIoKTsK
IH0KIAogLy8gQ29udGV4dFNoYWRvdyBuZWVkcyBhIHNjcmF0Y2ggaW1hZ2UgYXMgdGhlIGJ1ZmZl
ciBmb3IgdGhlIGJsdXIgZmlsdGVyLgpAQCAtNjcsMjMgKzY2LDIzIEBAIHN0YXRpYyBjYWlyb19z
dXJmYWNlX3QqIGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBp
bnQgd2lkdGggPSBzaXplLndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHNpemUuaGVpZ2h0KCk7
Ci0gICAgaW50IHNjcmF0Y2hXaWR0aCA9IHNjcmF0Y2hCdWZmZXIgPyBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzY3JhdGNoQnVmZmVyKSA6IDA7Ci0gICAgaW50IHNjcmF0Y2hIZWlnaHQg
PSBzY3JhdGNoQnVmZmVyID8gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHNjcmF0Y2hC
dWZmZXIpIDogMDsKKyAgICBpbnQgc2NyYXRjaFdpZHRoID0gc2NyYXRjaEJ1ZmZlci5nZXQoKSA/
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHNjcmF0Y2hCdWZmZXIuZ2V0KCkpIDogMDsK
KyAgICBpbnQgc2NyYXRjaEhlaWdodCA9IHNjcmF0Y2hCdWZmZXIuZ2V0KCkgPyBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9oZWlnaHQoc2NyYXRjaEJ1ZmZlci5nZXQoKSkgOiAwOwogCiAgICAgLy8g
V2UgZG8gbm90IG5lZWQgdG8gcmVjcmVhdGUgdGhlIGJ1ZmZlciBpZiB0aGUgY3VycmVudCBidWZm
ZXIgaXMgbGFyZ2UgZW5vdWdoLgotICAgIGlmIChzY3JhdGNoQnVmZmVyICYmIHNjcmF0Y2hXaWR0
aCA+PSB3aWR0aCAmJiBzY3JhdGNoSGVpZ2h0ID49IGhlaWdodCkKLSAgICAgICAgcmV0dXJuIHNj
cmF0Y2hCdWZmZXI7CisgICAgaWYgKHNjcmF0Y2hCdWZmZXIuZ2V0KCkgJiYgc2NyYXRjaFdpZHRo
ID49IHdpZHRoICYmIHNjcmF0Y2hIZWlnaHQgPj0gaGVpZ2h0KQorICAgICAgICByZXR1cm4gc2Ny
YXRjaEJ1ZmZlci5nZXQoKTsKIAogICAgIHB1cmdlU2NyYXRjaEJ1ZmZlcigpOwogCiAgICAgLy8g
Um91bmQgdG8gdGhlIG5lYXJlc3QgMzIgcGl4ZWxzIHNvIHdlIGRvIG5vdCBncm93IHRoZSBidWZm
ZXIgZm9yIHNpbWlsYXIgc2l6ZWQgcmVxdWVzdHMuCiAgICAgd2lkdGggPSAoMSArICh3aWR0aCA+
PiA1KSkgPDwgNTsKICAgICBoZWlnaHQgPSAoMSArIChoZWlnaHQgPj4gNSkpIDw8IDU7Ci0gICAg
c2NyYXRjaEJ1ZmZlciA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9B
UkdCMzIsIHdpZHRoLCBoZWlnaHQpOwotICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOworICAgIHNj
cmF0Y2hCdWZmZXIgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19G
T1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXIu
Z2V0KCk7CiB9CiAKLVBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xh
eWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEp
CitQbGF0Zm9ybUNvbnRleHQqIENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKIHsKICAgICBh
ZGp1c3RCbHVyRGlzdGFuY2UoY29udGV4dCk7CiAKQEAgLTk2LDM0ICs5NSwzMyBAQCBQbGF0Zm9y
bUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9sYXllckltYWdlID0g
Z2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKLSAgICBtX2xheWVyQ29udGV4dCA9
IGNhaXJvX2NyZWF0ZShtX2xheWVySW1hZ2UpOworICAgIG1fbGF5ZXJDb250ZXh0ID0gYWRvcHRS
ZWYoY2Fpcm9fY3JlYXRlKG1fbGF5ZXJJbWFnZS5nZXQoKSkpOwogCiAgICAgLy8gQWx3YXlzIGNs
ZWFyIHRoZSBzdXJmYWNlIGZpcnN0LgotICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29u
dGV4dCwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAgIGNhaXJvX3BhaW50KG1fbGF5ZXJDb250
ZXh0KTsKLSAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQsIENBSVJPX09QRVJB
VE9SX09WRVIpOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29udGV4dC5nZXQoKSwg
Q0FJUk9fT1BFUkFUT1JfQ0xFQVIpOworICAgIGNhaXJvX3BhaW50KG1fbGF5ZXJDb250ZXh0Lmdl
dCgpKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQuZ2V0KCksIENBSVJP
X09QRVJBVE9SX09WRVIpOwogCi0gICAgY2Fpcm9fdHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0LCBt
X2xheWVyQ29udGV4dFRyYW5zbGF0aW9uLngoKSwgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbi55
KCkpOwotICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKKyAgICBjYWlyb190cmFuc2xhdGUobV9s
YXllckNvbnRleHQuZ2V0KCksIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24ueCgpLCBtX2xheWVy
Q29udGV4dFRyYW5zbGF0aW9uLnkoKSk7CisgICAgcmV0dXJuIG1fbGF5ZXJDb250ZXh0LmdldCgp
OwogfQogCiB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKLSAgICBjYWlyb19kZXN0cm95KG1fbGF5ZXJDb250ZXh0KTsKLSAgICBt
X2xheWVyQ29udGV4dCA9IDA7CisgICAgbV9sYXllckNvbnRleHQuY2xlYXIoKTsKIAogICAgIGlm
IChtX3R5cGUgPT0gQmx1clNoYWRvdykgewotICAgICAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1f
bGF5ZXJJbWFnZSk7Ci0gICAgICAgIGJsdXJMYXllckltYWdlKGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X2RhdGEobV9sYXllckltYWdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChtX2xheWVySW1hZ2UpLCBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQobV9sYXllckltYWdlKSksCi0gICAgICAgICAgICAgICAgICAgICAg
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX2xheWVySW1hZ2UpKTsKLSAgICAgICAg
Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZSk7CisgICAgICAgIGNhaXJvX3N1
cmZhY2VfZmx1c2gobV9sYXllckltYWdlLmdldCgpKTsKKyAgICAgICAgYmx1ckxheWVySW1hZ2Uo
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2xheWVySW1hZ2UuZ2V0KCkpLAorICAgICAg
ICAgICAgICAgICAgICAgICBJbnRTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1f
bGF5ZXJJbWFnZS5nZXQoKSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX2xheWVy
SW1hZ2UuZ2V0KCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfc3RyaWRlKG1fbGF5ZXJJbWFnZS5nZXQoKSkpOworICAgICAgICBjYWlyb19zdXJmYWNl
X21hcmtfZGlydHkobV9sYXllckltYWdlLmdldCgpKTsKICAgICB9CiAKICAgICBjYWlyb190KiBj
ciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAg
IHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIG1fY29sb3IpOwotICAgIGNhaXJvX21hc2tfc3Vy
ZmFjZShjciwgbV9sYXllckltYWdlLCBtX2xheWVyT3JpZ2luLngoKSwgbV9sYXllck9yaWdpbi55
KCkpOworICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwgbV9sYXllckltYWdlLmdldCgpLCBtX2xh
eWVyT3JpZ2luLngoKSwgbV9sYXllck9yaWdpbi55KCkpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3Ip
OwogCiAgICAgLy8gU2NoZWR1bGUgYSBwdXJnZSBvZiB0aGUgc2NyYXRjaCBidWZmZXIuIFdlIGRv
IG5vdCBuZWVkIHRvIGRlc3Ryb3kgdGhlIHN1cmZhY2UuCkBAIC0xNDAsOSArMTM4LDkgQEAgdm9p
ZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIFBhdGggcGF0aDsKICAgICBwYXRoLmFkZFJvdW5kZWRS
ZWN0KHNoYWRvd1JlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0
UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CiAKLSAgICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fp
cm9Db250ZXh0KG1fbGF5ZXJDb250ZXh0LCBwYXRoKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3Jn
YmEobV9sYXllckNvbnRleHQsIDAsIDAsIDAsIGFscGhhKTsKLSAgICBjYWlyb19maWxsKG1fbGF5
ZXJDb250ZXh0KTsKKyAgICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KG1fbGF5ZXJD
b250ZXh0LmdldCgpLCBwYXRoKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEobV9sYXllckNv
bnRleHQuZ2V0KCksIDAsIDAsIDAsIGFscGhhKTsKKyAgICBjYWlyb19maWxsKG1fbGF5ZXJDb250
ZXh0LmdldCgpKTsKIAogICAgIGVuZFNoYWRvd0xheWVyKGNvbnRleHQpOwogfQpAQCAtMjM4LDM0
ICsyMzYsMzMgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBtX2xheWVySW1hZ2UgPSBn
ZXRTY3JhdGNoQnVmZmVyKHNoYWRvd1RlbXBsYXRlU2l6ZSk7CiAKICAgICAvLyBEcmF3IHNoYWRv
dyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgIG1fbGF5ZXJDb250ZXh0ID0gY2Fpcm9fY3Jl
YXRlKG1fbGF5ZXJJbWFnZSk7CisgICAgbV9sYXllckNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19j
cmVhdGUobV9sYXllckltYWdlLmdldCgpKSk7CiAKICAgICAvLyBDbGVhciB0aGUgc3VyZmFjZSBm
aXJzdC4KLSAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQsIENBSVJPX09QRVJB
VE9SX0NMRUFSKTsKLSAgICBjYWlyb19wYWludChtX2xheWVyQ29udGV4dCk7Ci0gICAgY2Fpcm9f
c2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LCBDQUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBj
YWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQuZ2V0KCksIENBSVJPX09QRVJBVE9SX0NM
RUFSKTsKKyAgICBjYWlyb19wYWludChtX2xheWVyQ29udGV4dC5nZXQoKSk7CisgICAgY2Fpcm9f
c2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LmdldCgpLCBDQUlST19PUEVSQVRPUl9PVkVSKTsK
IAogICAgIC8vIERyYXcgdGhlIHJlY3RhbmdsZS4KICAgICBJbnRSZWN0IHRlbXBsYXRlUmVjdCA9
IEludFJlY3QobV9ibHVyRGlzdGFuY2UsIG1fYmx1ckRpc3RhbmNlLCBzaGFkb3dUZW1wbGF0ZVNp
emUud2lkdGgoKSAtIHJhZGl1c1R3aWNlLCBzaGFkb3dUZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBy
YWRpdXNUd2ljZSk7CiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUm91bmRlZFJlY3QodGVt
cGxhdGVSZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1
cywgYm90dG9tUmlnaHRSYWRpdXMpOwotICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRl
eHQobV9sYXllckNvbnRleHQsIHBhdGgpOworICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0Nv
bnRleHQobV9sYXllckNvbnRleHQuZ2V0KCksIHBhdGgpOwogCi0gICAgY2Fpcm9fc2V0X3NvdXJj
ZV9yZ2JhKG1fbGF5ZXJDb250ZXh0LCAwLCAwLCAwLCBjb250ZXh0LT5nZXRBbHBoYSgpKTsKLSAg
ICBjYWlyb19maWxsKG1fbGF5ZXJDb250ZXh0KTsKKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEo
bV9sYXllckNvbnRleHQuZ2V0KCksIDAsIDAsIDAsIGNvbnRleHQtPmdldEFscGhhKCkpOworICAg
IGNhaXJvX2ZpbGwobV9sYXllckNvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8gQmx1ciB0aGUgaW1h
Z2UuCi0gICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX2xheWVySW1hZ2UpOwotICAgIGJsdXJMYXll
ckltYWdlKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9sYXllckltYWdlKSwgc2hhZG93
VGVtcGxhdGVTaXplLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9sYXllckltYWdl
KSk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZSk7CisgICAgY2Fp
cm9fc3VyZmFjZV9mbHVzaChtX2xheWVySW1hZ2UuZ2V0KCkpOworICAgIGJsdXJMYXllckltYWdl
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9sYXllckltYWdlLmdldCgpKSwgc2hhZG93
VGVtcGxhdGVTaXplLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9sYXllckltYWdl
LmdldCgpKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZS5nZXQo
KSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAg
Y2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LCBDQUlST19PUEVSQVRPUl9JTik7Ci0g
ICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihtX2xheWVyQ29udGV4dCwgbV9jb2xvcik7Ci0gICAg
Y2Fpcm9fcGFpbnQobV9sYXllckNvbnRleHQpOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xh
eWVyQ29udGV4dC5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfSU4pOworICAgIHNldFNvdXJjZVJHQkFG
cm9tQ29sb3IobV9sYXllckNvbnRleHQuZ2V0KCksIG1fY29sb3IpOworICAgIGNhaXJvX3BhaW50
KG1fbGF5ZXJDb250ZXh0LmdldCgpKTsKIAotICAgIGNhaXJvX2Rlc3Ryb3kobV9sYXllckNvbnRl
eHQpOwotICAgIG1fbGF5ZXJDb250ZXh0ID0gMDsKKyAgICBtX2xheWVyQ29udGV4dC5jbGVhcigp
OwogCiAgICAgLy8gRmlsbCB0aGUgaW50ZXJuYWwgcGFydCBvZiB0aGUgc2hhZG93LgogICAgIHNo
YWRvd1JlY3QuaW5mbGF0ZSgtcmFkaXVzVHdpY2UpOwpAQCAtMjg4LDcgKzI4NSw3IEBAIHZvaWQg
Q29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiByZWN0CiAgICAgRmxvYXRQb2ludCBwaGFzZSA9IGdldFBoYXNlKGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAg
ICAgcGF0dGVyblRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKLSAgICBkcmF3UGF0dGVyblRvQ2Fp
cm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UsIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7
CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLmdldCgpLCBz
aGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNp
ZGUuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QocmFkaXVzVHdpY2UgKyBib3R0b21MZWZ0UmFk
aXVzLndpZHRoKCksIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIHJhZGl1c1R3aWNlLCBz
aWRlVGlsZVdpZHRoLCByYWRpdXNUd2ljZSk7CkBAIC0yOTYsNyArMjkzLDcgQEAgdm9pZCBDb250
ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIHJlY3QKICAgICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpLCBzaGFkb3dS
ZWN0LnkoKSArIHJhZGl1c1R3aWNlICsgcmVjdC5oZWlnaHQoKSAtIHNoYWRvd1RlbXBsYXRlU2l6
ZS5oZWlnaHQoKSk7CiAgICAgZGVzdFJlY3Quc2V0V2lkdGgoc2hhZG93UmVjdC53aWR0aCgpIC0g
Ym90dG9tTGVmdFJhZGl1cy53aWR0aCgpIC0gYm90dG9tUmlnaHRSYWRpdXMud2lkdGgoKSAtIG1f
Ymx1ckRpc3RhbmNlICogNCk7CiAgICAgcGhhc2UgPSBnZXRQaGFzZShkZXN0UmVjdCwgdGlsZVJl
Y3QpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZSwgc2hh
ZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJP
X09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0
KGNyLCBtX2xheWVySW1hZ2UuZ2V0KCksIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CiAK
ICAgICAvLyBEcmF3IHRoZSByaWdodCBzaWRlLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHNo
YWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmFkaXVzVHdpY2UsIHJhZGl1c1R3aWNlICsgdG9w
UmlnaHRSYWRpdXMuaGVpZ2h0KCksIHJhZGl1c1R3aWNlLCBzaWRlVGlsZVdpZHRoKTsKQEAgLTMw
NCw3ICszMDEsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGRlc3RSZWN0Lm1vdmUo
c2hhZG93UmVjdC54KCkgKyByYWRpdXNUd2ljZSArIHJlY3Qud2lkdGgoKSAtIHNoYWRvd1RlbXBs
YXRlU2l6ZS53aWR0aCgpLCBzaGFkb3dSZWN0LnkoKSk7CiAgICAgZGVzdFJlY3Quc2V0SGVpZ2h0
KHNoYWRvd1JlY3QuaGVpZ2h0KCkgLSB0b3BSaWdodFJhZGl1cy5oZWlnaHQoKSAtIGJvdHRvbVJp
Z2h0UmFkaXVzLmhlaWdodCgpIC0gbV9ibHVyRGlzdGFuY2UgKiA0KTsKICAgICBwaGFzZSA9IGdl
dFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4
dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVt
cGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJB
VE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIGxlZnQgc2lkZS4KICAgICB0
aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCByYWRpdXNUd2ljZSArIHRvcExlZnRSYWRpdXMuaGVpZ2h0
KCksIHJhZGl1c1R3aWNlLCBzaWRlVGlsZVdpZHRoKTsKQEAgLTMxMiwxNCArMzA5LDE0IEBAIHZv
aWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0LngoKSwg
c2hhZG93UmVjdC55KCkpOwogICAgIGRlc3RSZWN0LnNldEhlaWdodChzaGFkb3dSZWN0LmhlaWdo
dCgpIC0gdG9wTGVmdFJhZGl1cy5oZWlnaHQoKSAtIGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCkg
LSBtX2JsdXJEaXN0YW5jZSAqIDQpOwogICAgIHBoYXNlID0gRmxvYXRQb2ludChkZXN0UmVjdC54
KCkgLSB0aWxlUmVjdC54KCksIGRlc3RSZWN0LnkoKSAtIHRpbGVSZWN0LnkoKSk7Ci0gICAgZHJh
d1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNp
emUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZF
UiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJ
bWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcg
dGhlIHRvcCBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCByYWRp
dXNUd2ljZSArIHRvcExlZnRSYWRpdXMud2lkdGgoKSwgcmFkaXVzVHdpY2UgKyB0b3BMZWZ0UmFk
aXVzLmhlaWdodCgpKTsKICAgICBkZXN0UmVjdCA9IHRpbGVSZWN0OwogICAgIGRlc3RSZWN0Lm1v
dmUoc2hhZG93UmVjdC54KCksIHNoYWRvd1JlY3QueSgpKTsKICAgICBwaGFzZSA9IGdldFBoYXNl
KGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwg
bV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVT
aXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09W
RVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIHRvcCByaWdodCBjb3JuZXIuCiAgICAg
dGlsZVJlY3QgPSBGbG9hdFJlY3Qoc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCkgLSByYWRpdXNU
d2ljZSAtIHRvcFJpZ2h0UmFkaXVzLndpZHRoKCksIDAsIHJhZGl1c1R3aWNlICsgdG9wUmlnaHRS
YWRpdXMud2lkdGgoKSwKQEAgLTMyNyw3ICszMjQsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVj
dAogICAgIGRlc3RSZWN0ID0gdGlsZVJlY3Q7CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0
LngoKSArIHJlY3Qud2lkdGgoKSAtIHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpICsgcmFkaXVz
VHdpY2UsIHNoYWRvd1JlY3QueSgpKTsKICAgICBwaGFzZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0
aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdl
LCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
Q0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0Nv
bnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0
KTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3Qg
PSBGbG9hdFJlY3Qoc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCkgLSByYWRpdXNUd2ljZSAtIGJv
dHRvbVJpZ2h0UmFkaXVzLndpZHRoKCksCkBAIC0zMzcsNyArMzM0LDcgQEAgdm9pZCBDb250ZXh0
U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QKICAgICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpICsgcmVjdC53aWR0
aCgpIC0gc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCkgKyByYWRpdXNUd2ljZSwKICAgICAgICAg
ICAgICAgICAgIHNoYWRvd1JlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAtIHNoYWRvd1RlbXBsYXRl
U2l6ZS5oZWlnaHQoKSArIHJhZGl1c1R3aWNlKTsKICAgICBwaGFzZSA9IGdldFBoYXNlKGRlc3RS
ZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXll
ckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9D
YWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRl
c3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSBsZWZ0IGNvcm5lci4KICAgICB0aWxl
UmVjdCA9IEZsb2F0UmVjdCgwLCBzaGFkb3dUZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSByYWRpdXNU
d2ljZSAtIGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCksCkBAIC0zNDUsNyArMzQyLDcgQEAgdm9p
ZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBkZXN0UmVjdCA9IHRpbGVSZWN0OwogICAgIGRlc3RS
ZWN0Lm1vdmUoc2hhZG93UmVjdC54KCksIHNoYWRvd1JlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAt
IHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSArIHJhZGl1c1R3aWNlKTsKICAgICBwaGFzZSA9
IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29u
dGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAg
IGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93
VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09Q
RVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIFNjaGVkdWxlIGEgcHVyZ2Ugb2YgdGhl
IHNjcmF0Y2ggYnVmZmVyLgogICAgIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDllZThhOTQuLjAxZjVkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
ICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCkBAIC01MiwxMiArNTMsMTAgQEAgc3RhdGljIGlubGluZSBjYWlyb19zdXJmYWNlX3Qq
IGNvcHlTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKICAgICBpbnQgd2lkdGggPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKICAgICBpbnQgaGVpZ2h0ID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOwogICAgIGNhaXJvX3N1cmZh
Y2VfdCogbmV3c3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7Ci0KLSAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShuZXdzdXJmYWNl
KTsKLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwotICAg
IGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICBjYWly
b19wYWludChjcik7Ci0gICAgY2Fpcm9fZGVzdHJveShjcik7CisgICAgUmVmUHRyPGNhaXJvX3Q+
IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG5ld3N1cmZhY2UpKTsKKyAgICBjYWlyb19zZXRf
c291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIHN1cmZhY2UsIDAsIDApOworICAgIGNhaXJvX3NldF9v
cGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBjYWlyb19wYWlu
dChjci5nZXQoKSk7CiAKICAgICByZXR1cm4gbmV3c3VyZmFjZTsKIH0KQEAgLTgwLDkgKzc5LDgg
QEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbG9yU3Bh
Y2UsIFJlbmRlcmluZ01vZGUsIGJvb2wmIHMKICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9zdGF0dXMo
bV9kYXRhLm1fc3VyZmFjZSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCiAgICAgICAgIHJldHVy
bjsgIC8vIGNyZWF0ZSB3aWxsIG5vdGljZSB3ZSBkaWRuJ3Qgc2V0IG1faW5pdGlhbGl6ZWQgYW5k
IGZhaWwuCiAKLSAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShtX2RhdGEubV9zdXJmYWNl
KTsKLSAgICBtX2NvbnRleHQuc2V0KG5ldyBHcmFwaGljc0NvbnRleHQoY3IpKTsKLSAgICBjYWly
b19kZXN0cm95KGNyKTsgIC8vIFRoZSBjb250ZXh0IGlzIG5vdyBvd25lZCBieSB0aGUgR3JhcGhp
Y3NDb250ZXh0LgorICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0
ZShtX2RhdGEubV9zdXJmYWNlKSk7CisgICAgbV9jb250ZXh0LnNldChuZXcgR3JhcGhpY3NDb250
ZXh0KGNyLmdldCgpKSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmlu
ZGV4IDllYjMxYTcuLjA3MTMwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcApAQCAtMTA1LDEyICsxMDUsMTIg
QEAgdm9pZCBTaGFkb3dCdWZmZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2ZW50KQogCiBR
X0dMT0JBTF9TVEFUSUMoU2hhZG93QnVmZmVyLCBzY3JhdGNoU2hhZG93QnVmZmVyKQogCi1QbGF0
Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKQorUGxhdGZvcm1Db250ZXh0
KiBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCiB7CiAgICAgLy8gU2V0IG1fYmx1ckRpc3Rh
bmNlLgogICAgIGFkanVzdEJsdXJEaXN0YW5jZShjb250ZXh0KTsKIAotICAgIFBsYXRmb3JtQ29u
dGV4dCBwID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgUGxhdGZvcm1Db250ZXh0
KiBwID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBRUmVjdCBjbGlwUmVjdDsK
ICAgICBpZiAocC0+aGFzQ2xpcHBpbmcoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88012</attachid>
            <date>2011-04-03 11:00:27 -0700</date>
            <delta_ts>2011-04-05 06:00:30 -0700</delta_ts>
            <desc>Proposed Patch3</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>18408</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOTQzNmJlLi5jYzBjZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDQtMDMgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCB1
c2Ugb2YgcmF3IHBvaW50ZXJzIHRvIFJlZlB0ciBpbiB1c2luZyBDYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3MTcKKworICAgICAgICBObyBu
ZXcgdGVzdHMgYWRkZWQgYmVjYXVlIG9mIGp1c3QgcmVwbGFjaW5nIHJhdyBwb3JpbnRlcnMgd2l0
aCBzbWFydCBwb2ludGVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuaDogVXNlIFJlZlB0cnMgb2YgdGhlIFBsYXRmb3JtSW1hZ2UgYW5kIFBsYXRmb3JtQ29u
dGV4dCBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb1BhdGguaDogVXNlIGEgUmVmUHRyIG9mIGNhaXJvX3QgaW5zdGVhZCBvZiBy
YXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6Q2Fpcm9QYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6fkNhaXJvUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWlyb1BhdGg6OmNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NvbnRleHRTaGFkb3dDYWlyby5jcHA6IFVzZSBhIFJlZlB0ciBvZiBjYWlyb19zdXJmYWNlX3Qg
aW5zdGVhZCBvZiByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OnB1cmdlU2NyYXRjaEJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDogVXNlIGEgUmVmUHRyIG9mIGNhaXJv
X3QgaW5zdGVhZCBvZiByYXcgcG9pbnRlci4KKyAgICAgICAgKGNvcHlTdXJmYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisKIDIwMTEtMDQtMDIgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZl
IEh5YXR0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dFNoYWRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5oCmluZGV4IDg1MGQ0ODkuLjg1NTdmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3Qu
aCIKKyNpZiBQTEFURk9STShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2VuZGlm
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKENBSVJPKQpAQCAt
MTI0LDggKzEyNywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9S
TShDQUlSTykKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2xheWVySW1hZ2U7IC8vIEJ1
ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNoYWRvdyB3aWxsIGJlIGRyYXduIHRvLgorICAg
IFJlZlB0cjxjYWlyb190PiBtX2xheWVyQ29udGV4dDsgLy8gQ29udGV4dCB1c2VkIHRvIHBhaW50
IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdlLgorI2Vsc2UKICAgICBQbGF0Zm9ybUltYWdl
IG1fbGF5ZXJJbWFnZTsgLy8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93IHdp
bGwgYmUgZHJhd24gdG8uCiAgICAgUGxhdGZvcm1Db250ZXh0IG1fbGF5ZXJDb250ZXh0OyAvLyBD
b250ZXh0IHVzZWQgdG8gcGFpbnQgdGhlIHNoYWRvdyB0byB0aGUgbGF5ZXIgaW1hZ2UuCisjZW5k
aWYKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VSZWN0OyAvLyBTdWItcmVjdCBvZiBtX2xheWVySW1h
Z2UgdGhhdCBjb250YWlucyB0aGUgc2hhZG93IHBpeGVscy4KICAgICBGbG9hdFBvaW50IG1fbGF5
ZXJPcmlnaW47IC8vIFRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgKHBvc3NpYmx5IGNsaXBwZWQpIGJv
dW5kaW5nIHJlY3QgdG8gZHJhdyB0aGUgc2hhZG93IHRvLgogICAgIEZsb2F0UG9pbnQgbV9sYXll
ckNvbnRleHRUcmFuc2xhdGlvbjsgLy8gVHJhbnNsYXRpb24gdG8gYXBwbHkgdG8gbV9sYXllckNv
bnRleHQgZm9yIHRoZSBzaGFkb3cgdG8gYmUgY29ycmVjdGx5IGNsaXBwZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oCmluZGV4IGRh
N2FmZmIuLjQ2ZmVlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvUGF0aC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIENhaXJvUGF0
aF9oCiAjZGVmaW5lIENhaXJvUGF0aF9oCiAKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2lu
Y2x1ZGUgPGNhaXJvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMxLDE4ICszMiwxNyBA
QCBwdWJsaWM6CiAgICAgQ2Fpcm9QYXRoKCkKICAgICB7CiAgICAgICAgIHN0YXRpYyBjYWlyb19z
dXJmYWNlX3QqIHBhdGhTdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9f
Rk9STUFUX0E4LCAxLCAxKTsKLSAgICAgICAgbV9jciA9IGNhaXJvX2NyZWF0ZShwYXRoU3VyZmFj
ZSk7CisgICAgICAgIG1fY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUocGF0aFN1cmZhY2UpKTsK
ICAgICB9CiAKICAgICB+Q2Fpcm9QYXRoKCkKICAgICB7Ci0gICAgICAgIGNhaXJvX2Rlc3Ryb3ko
bV9jcik7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY29udGV4dCgpIHsgcmV0dXJuIG1fY3I7IH0K
KyAgICBjYWlyb190KiBjb250ZXh0KCkgeyByZXR1cm4gbV9jci5nZXQoKTsgfQogCiBwcml2YXRl
OgotICAgIGNhaXJvX3QqIG1fY3I7CisgICAgUmVmUHRyPGNhaXJvX3Q+IG1fY3I7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAppbmRleCBiMDU4
OGQ2Li4wNzcxYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKQEAgLTQxLDExICs0MSwx
MCBAQCB1c2luZyBXVEY6Om1heDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY2Fp
cm9fc3VyZmFjZV90KiBzY3JhdGNoQnVmZmVyID0gMDsKK3N0YXRpYyBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBzY3JhdGNoQnVmZmVyOwogc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCkK
IHsKLSAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc2NyYXRjaEJ1ZmZlcik7Ci0gICAgc2NyYXRj
aEJ1ZmZlciA9IDA7CisgICAgc2NyYXRjaEJ1ZmZlci5jbGVhcigpOwogfQogCiAvLyBDb250ZXh0
U2hhZG93IG5lZWRzIGEgc2NyYXRjaCBpbWFnZSBhcyB0aGUgYnVmZmVyIGZvciB0aGUgYmx1ciBm
aWx0ZXIuCkBAIC02NywyMCArNjYsMjAgQEAgc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogZ2V0U2Ny
YXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGludCB3aWR0aCA9IHNpemUu
d2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKLSAgICBpbnQgc2NyYXRj
aFdpZHRoID0gc2NyYXRjaEJ1ZmZlciA/IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHNj
cmF0Y2hCdWZmZXIpIDogMDsKLSAgICBpbnQgc2NyYXRjaEhlaWdodCA9IHNjcmF0Y2hCdWZmZXIg
PyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc2NyYXRjaEJ1ZmZlcikgOiAwOworICAg
IGludCBzY3JhdGNoV2lkdGggPSBzY3JhdGNoQnVmZmVyLmdldCgpID8gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfd2lkdGgoc2NyYXRjaEJ1ZmZlci5nZXQoKSkgOiAwOworICAgIGludCBzY3JhdGNo
SGVpZ2h0ID0gc2NyYXRjaEJ1ZmZlci5nZXQoKSA/IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hl
aWdodChzY3JhdGNoQnVmZmVyLmdldCgpKSA6IDA7CiAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0
byByZWNyZWF0ZSB0aGUgYnVmZmVyIGlmIHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBsYXJnZSBlbm91
Z2guCi0gICAgaWYgKHNjcmF0Y2hCdWZmZXIgJiYgc2NyYXRjaFdpZHRoID49IHdpZHRoICYmIHNj
cmF0Y2hIZWlnaHQgPj0gaGVpZ2h0KQotICAgICAgICByZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKKyAg
ICBpZiAoc2NyYXRjaEJ1ZmZlci5nZXQoKSAmJiBzY3JhdGNoV2lkdGggPj0gd2lkdGggJiYgc2Ny
YXRjaEhlaWdodCA+PSBoZWlnaHQpCisgICAgICAgIHJldHVybiBzY3JhdGNoQnVmZmVyLmdldCgp
OwogCiAgICAgcHVyZ2VTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAvLyBSb3VuZCB0byB0aGUgbmVh
cmVzdCAzMiBwaXhlbHMgc28gd2UgZG8gbm90IGdyb3cgdGhlIGJ1ZmZlciBmb3Igc2ltaWxhciBz
aXplZCByZXF1ZXN0cy4KICAgICB3aWR0aCA9ICgxICsgKHdpZHRoID4+IDUpKSA8PCA1OwogICAg
IGhlaWdodCA9ICgxICsgKGhlaWdodCA+PiA1KSkgPDwgNTsKLSAgICBzY3JhdGNoQnVmZmVyID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhl
aWdodCk7Ci0gICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXI7CisgICAgc2NyYXRjaEJ1ZmZlciA9IGFk
b3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdp
ZHRoLCBoZWlnaHQpKTsKKyAgICByZXR1cm4gc2NyYXRjaEJ1ZmZlci5nZXQoKTsKIH0KIAogUGxh
dGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKQEAgLTk2LDM0ICs5NSwz
MyBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9s
YXllckltYWdlID0gZ2V0U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKLSAgICBtX2xh
eWVyQ29udGV4dCA9IGNhaXJvX2NyZWF0ZShtX2xheWVySW1hZ2UpOworICAgIG1fbGF5ZXJDb250
ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fbGF5ZXJJbWFnZS5nZXQoKSkpOwogCiAgICAg
Ly8gQWx3YXlzIGNsZWFyIHRoZSBzdXJmYWNlIGZpcnN0LgotICAgIGNhaXJvX3NldF9vcGVyYXRv
cihtX2xheWVyQ29udGV4dCwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAgIGNhaXJvX3BhaW50
KG1fbGF5ZXJDb250ZXh0KTsKLSAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQs
IENBSVJPX09QRVJBVE9SX09WRVIpOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29u
dGV4dC5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOworICAgIGNhaXJvX3BhaW50KG1fbGF5
ZXJDb250ZXh0LmdldCgpKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQu
Z2V0KCksIENBSVJPX09QRVJBVE9SX09WRVIpOwogCi0gICAgY2Fpcm9fdHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0LCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uLngoKSwgbV9sYXllckNvbnRleHRU
cmFuc2xhdGlvbi55KCkpOwotICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKKyAgICBjYWlyb190
cmFuc2xhdGUobV9sYXllckNvbnRleHQuZ2V0KCksIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24u
eCgpLCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uLnkoKSk7CisgICAgcmV0dXJuIG1fbGF5ZXJD
b250ZXh0LmdldCgpOwogfQogCiB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBjYWlyb19kZXN0cm95KG1fbGF5ZXJDb250
ZXh0KTsKLSAgICBtX2xheWVyQ29udGV4dCA9IDA7CisgICAgbV9sYXllckNvbnRleHQuY2xlYXIo
KTsKIAogICAgIGlmIChtX3R5cGUgPT0gQmx1clNoYWRvdykgewotICAgICAgICBjYWlyb19zdXJm
YWNlX2ZsdXNoKG1fbGF5ZXJJbWFnZSk7Ci0gICAgICAgIGJsdXJMYXllckltYWdlKGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9sYXllckltYWdlKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgSW50U2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChtX2xheWVySW1hZ2UpLCBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9sYXllckltYWdlKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShtX2xheWVySW1hZ2Up
KTsKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZSk7CisgICAg
ICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9sYXllckltYWdlLmdldCgpKTsKKyAgICAgICAgYmx1
ckxheWVySW1hZ2UoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2xheWVySW1hZ2UuZ2V0
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3dpZHRoKG1fbGF5ZXJJbWFnZS5nZXQoKSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hl
aWdodChtX2xheWVySW1hZ2UuZ2V0KCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fbGF5ZXJJbWFnZS5nZXQoKSkpOworICAgICAgICBj
YWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9sYXllckltYWdlLmdldCgpKTsKICAgICB9CiAKICAg
ICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGNhaXJvX3Nh
dmUoY3IpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIG1fY29sb3IpOwotICAgIGNh
aXJvX21hc2tfc3VyZmFjZShjciwgbV9sYXllckltYWdlLCBtX2xheWVyT3JpZ2luLngoKSwgbV9s
YXllck9yaWdpbi55KCkpOworICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwgbV9sYXllckltYWdl
LmdldCgpLCBtX2xheWVyT3JpZ2luLngoKSwgbV9sYXllck9yaWdpbi55KCkpOwogICAgIGNhaXJv
X3Jlc3RvcmUoY3IpOwogCiAgICAgLy8gU2NoZWR1bGUgYSBwdXJnZSBvZiB0aGUgc2NyYXRjaCBi
dWZmZXIuIFdlIGRvIG5vdCBuZWVkIHRvIGRlc3Ryb3kgdGhlIHN1cmZhY2UuCkBAIC0xNDAsOSAr
MTM4LDkgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIFBhdGggcGF0aDsKICAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KHNoYWRvd1JlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVz
LCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CiAKLSAgICBhcHBlbmRXZWJD
b3JlUGF0aFRvQ2Fpcm9Db250ZXh0KG1fbGF5ZXJDb250ZXh0LCBwYXRoKTsKLSAgICBjYWlyb19z
ZXRfc291cmNlX3JnYmEobV9sYXllckNvbnRleHQsIDAsIDAsIDAsIGFscGhhKTsKLSAgICBjYWly
b19maWxsKG1fbGF5ZXJDb250ZXh0KTsKKyAgICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250
ZXh0KG1fbGF5ZXJDb250ZXh0LmdldCgpLCBwYXRoKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3Jn
YmEobV9sYXllckNvbnRleHQuZ2V0KCksIDAsIDAsIDAsIGFscGhhKTsKKyAgICBjYWlyb19maWxs
KG1fbGF5ZXJDb250ZXh0LmdldCgpKTsKIAogICAgIGVuZFNoYWRvd0xheWVyKGNvbnRleHQpOwog
fQpAQCAtMjM4LDM0ICsyMzYsMzMgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBtX2xh
eWVySW1hZ2UgPSBnZXRTY3JhdGNoQnVmZmVyKHNoYWRvd1RlbXBsYXRlU2l6ZSk7CiAKICAgICAv
LyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgIG1fbGF5ZXJDb250ZXh0
ID0gY2Fpcm9fY3JlYXRlKG1fbGF5ZXJJbWFnZSk7CisgICAgbV9sYXllckNvbnRleHQgPSBhZG9w
dFJlZihjYWlyb19jcmVhdGUobV9sYXllckltYWdlLmdldCgpKSk7CiAKICAgICAvLyBDbGVhciB0
aGUgc3VyZmFjZSBmaXJzdC4KLSAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQs
IENBSVJPX09QRVJBVE9SX0NMRUFSKTsKLSAgICBjYWlyb19wYWludChtX2xheWVyQ29udGV4dCk7
Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LCBDQUlST19PUEVSQVRPUl9P
VkVSKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQuZ2V0KCksIENBSVJP
X09QRVJBVE9SX0NMRUFSKTsKKyAgICBjYWlyb19wYWludChtX2xheWVyQ29udGV4dC5nZXQoKSk7
CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LmdldCgpLCBDQUlST19PUEVS
QVRPUl9PVkVSKTsKIAogICAgIC8vIERyYXcgdGhlIHJlY3RhbmdsZS4KICAgICBJbnRSZWN0IHRl
bXBsYXRlUmVjdCA9IEludFJlY3QobV9ibHVyRGlzdGFuY2UsIG1fYmx1ckRpc3RhbmNlLCBzaGFk
b3dUZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJhZGl1c1R3aWNlLCBzaGFkb3dUZW1wbGF0ZVNpemUu
aGVpZ2h0KCkgLSByYWRpdXNUd2ljZSk7CiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUm91
bmRlZFJlY3QodGVtcGxhdGVSZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90
dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwotICAgIGFwcGVuZFdlYkNvcmVQYXRo
VG9DYWlyb0NvbnRleHQobV9sYXllckNvbnRleHQsIHBhdGgpOworICAgIGFwcGVuZFdlYkNvcmVQ
YXRoVG9DYWlyb0NvbnRleHQobV9sYXllckNvbnRleHQuZ2V0KCksIHBhdGgpOwogCi0gICAgY2Fp
cm9fc2V0X3NvdXJjZV9yZ2JhKG1fbGF5ZXJDb250ZXh0LCAwLCAwLCAwLCBjb250ZXh0LT5nZXRB
bHBoYSgpKTsKLSAgICBjYWlyb19maWxsKG1fbGF5ZXJDb250ZXh0KTsKKyAgICBjYWlyb19zZXRf
c291cmNlX3JnYmEobV9sYXllckNvbnRleHQuZ2V0KCksIDAsIDAsIDAsIGNvbnRleHQtPmdldEFs
cGhhKCkpOworICAgIGNhaXJvX2ZpbGwobV9sYXllckNvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8g
Qmx1ciB0aGUgaW1hZ2UuCi0gICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX2xheWVySW1hZ2UpOwot
ICAgIGJsdXJMYXllckltYWdlKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9sYXllcklt
YWdlKSwgc2hhZG93VGVtcGxhdGVTaXplLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUo
bV9sYXllckltYWdlKSk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFn
ZSk7CisgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX2xheWVySW1hZ2UuZ2V0KCkpOworICAgIGJs
dXJMYXllckltYWdlKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9sYXllckltYWdlLmdl
dCgpKSwgc2hhZG93VGVtcGxhdGVTaXplLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUo
bV9sYXllckltYWdlLmdldCgpKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5
ZXJJbWFnZS5nZXQoKSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cg
Y29sb3IuCi0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LCBDQUlST19PUEVS
QVRPUl9JTik7Ci0gICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihtX2xheWVyQ29udGV4dCwgbV9j
b2xvcik7Ci0gICAgY2Fpcm9fcGFpbnQobV9sYXllckNvbnRleHQpOworICAgIGNhaXJvX3NldF9v
cGVyYXRvcihtX2xheWVyQ29udGV4dC5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfSU4pOworICAgIHNl
dFNvdXJjZVJHQkFGcm9tQ29sb3IobV9sYXllckNvbnRleHQuZ2V0KCksIG1fY29sb3IpOworICAg
IGNhaXJvX3BhaW50KG1fbGF5ZXJDb250ZXh0LmdldCgpKTsKIAotICAgIGNhaXJvX2Rlc3Ryb3ko
bV9sYXllckNvbnRleHQpOwotICAgIG1fbGF5ZXJDb250ZXh0ID0gMDsKKyAgICBtX2xheWVyQ29u
dGV4dC5jbGVhcigpOwogCiAgICAgLy8gRmlsbCB0aGUgaW50ZXJuYWwgcGFydCBvZiB0aGUgc2hh
ZG93LgogICAgIHNoYWRvd1JlY3QuaW5mbGF0ZSgtcmFkaXVzVHdpY2UpOwpAQCAtMjg4LDcgKzI4
NSw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgRmxvYXRQb2ludCBwaGFzZSA9IGdl
dFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5U
cmFuc2Zvcm07CiAgICAgcGF0dGVyblRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKLSAgICBkcmF3
UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UsIHNoYWRvd1RlbXBsYXRlU2l6
ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVS
LCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllcklt
YWdlLmdldCgpLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwogCiAgICAgLy8gRHJhdyB0
aGUgYm90dG9tIHNpZGUuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QocmFkaXVzVHdpY2UgKyBi
b3R0b21MZWZ0UmFkaXVzLndpZHRoKCksIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIHJh
ZGl1c1R3aWNlLCBzaWRlVGlsZVdpZHRoLCByYWRpdXNUd2ljZSk7CkBAIC0yOTYsNyArMjkzLDcg
QEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3Qu
eCgpLCBzaGFkb3dSZWN0LnkoKSArIHJhZGl1c1R3aWNlICsgcmVjdC5oZWlnaHQoKSAtIHNoYWRv
d1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSk7CiAgICAgZGVzdFJlY3Quc2V0V2lkdGgoc2hhZG93UmVj
dC53aWR0aCgpIC0gYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpIC0gYm90dG9tUmlnaHRSYWRpdXMu
d2lkdGgoKSAtIG1fYmx1ckRpc3RhbmNlICogNCk7CiAgICAgcGhhc2UgPSBnZXRQaGFzZShkZXN0
UmVjdCwgdGlsZVJlY3QpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5
ZXJJbWFnZSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVyblRv
Q2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UuZ2V0KCksIHNoYWRvd1RlbXBsYXRlU2l6ZSwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBk
ZXN0UmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSByaWdodCBzaWRlLgogICAgIHRpbGVSZWN0ID0g
RmxvYXRSZWN0KHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmFkaXVzVHdpY2UsIHJhZGl1
c1R3aWNlICsgdG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCksIHJhZGl1c1R3aWNlLCBzaWRlVGlsZVdp
ZHRoKTsKQEAgLTMwNCw3ICszMDEsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hh
ZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGRl
c3RSZWN0Lm1vdmUoc2hhZG93UmVjdC54KCkgKyByYWRpdXNUd2ljZSArIHJlY3Qud2lkdGgoKSAt
IHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpLCBzaGFkb3dSZWN0LnkoKSk7CiAgICAgZGVzdFJl
Y3Quc2V0SGVpZ2h0KHNoYWRvd1JlY3QuaGVpZ2h0KCkgLSB0b3BSaWdodFJhZGl1cy5oZWlnaHQo
KSAtIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgpIC0gbV9ibHVyRGlzdGFuY2UgKiA0KTsKICAg
ICBwaGFzZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5U
b0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJl
Y3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQo
KSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIGxlZnQg
c2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCByYWRpdXNUd2ljZSArIHRvcExlZnRS
YWRpdXMuaGVpZ2h0KCksIHJhZGl1c1R3aWNlLCBzaWRlVGlsZVdpZHRoKTsKQEAgLTMxMiwxNCAr
MzA5LDE0IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgZGVzdFJlY3QubW92ZShzaGFk
b3dSZWN0LngoKSwgc2hhZG93UmVjdC55KCkpOwogICAgIGRlc3RSZWN0LnNldEhlaWdodChzaGFk
b3dSZWN0LmhlaWdodCgpIC0gdG9wTGVmdFJhZGl1cy5oZWlnaHQoKSAtIGJvdHRvbUxlZnRSYWRp
dXMuaGVpZ2h0KCkgLSBtX2JsdXJEaXN0YW5jZSAqIDQpOwogICAgIHBoYXNlID0gRmxvYXRQb2lu
dChkZXN0UmVjdC54KCkgLSB0aWxlUmVjdC54KCksIGRlc3RSZWN0LnkoKSAtIHRpbGVSZWN0Lnko
KSk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFk
b3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9f
T1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQo
Y3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAog
ICAgIC8vIERyYXcgdGhlIHRvcCBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCByYWRpdXNUd2ljZSArIHRvcExlZnRSYWRpdXMud2lkdGgoKSwgcmFkaXVzVHdpY2Ug
KyB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpKTsKICAgICBkZXN0UmVjdCA9IHRpbGVSZWN0OwogICAg
IGRlc3RSZWN0Lm1vdmUoc2hhZG93UmVjdC54KCksIHNoYWRvd1JlY3QueSgpKTsKICAgICBwaGFz
ZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJv
Q29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwor
ICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hh
ZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJP
X09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIHRvcCByaWdodCBj
b3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qoc2hhZG93VGVtcGxhdGVTaXplLndpZHRo
KCkgLSByYWRpdXNUd2ljZSAtIHRvcFJpZ2h0UmFkaXVzLndpZHRoKCksIDAsIHJhZGl1c1R3aWNl
ICsgdG9wUmlnaHRSYWRpdXMud2lkdGgoKSwKQEAgLTMyNyw3ICszMjQsNyBAQCB2b2lkIENvbnRl
eHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdAogICAgIGRlc3RSZWN0ID0gdGlsZVJlY3Q7CiAgICAgZGVzdFJlY3QubW92
ZShzaGFkb3dSZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0
aCgpICsgcmFkaXVzVHdpY2UsIHNoYWRvd1JlY3QueSgpKTsKICAgICBwaGFzZSA9IGdldFBoYXNl
KGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwg
bV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVT
aXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09W
RVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSByaWdodCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qoc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCkgLSByYWRp
dXNUd2ljZSAtIGJvdHRvbVJpZ2h0UmFkaXVzLndpZHRoKCksCkBAIC0zMzcsNyArMzM0LDcgQEAg
dm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgp
ICsgcmVjdC53aWR0aCgpIC0gc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCkgKyByYWRpdXNUd2lj
ZSwKICAgICAgICAgICAgICAgICAgIHNoYWRvd1JlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAtIHNo
YWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSArIHJhZGl1c1R3aWNlKTsKICAgICBwaGFzZSA9IGdl
dFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4
dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVt
cGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJB
VE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSBsZWZ0IGNvcm5l
ci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCBzaGFkb3dUZW1wbGF0ZVNpemUuaGVpZ2h0
KCkgLSByYWRpdXNUd2ljZSAtIGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCksCkBAIC0zNDUsNyAr
MzQyLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBkZXN0UmVjdCA9IHRpbGVSZWN0
OwogICAgIGRlc3RSZWN0Lm1vdmUoc2hhZG93UmVjdC54KCksIHNoYWRvd1JlY3QueSgpICsgcmVj
dC5oZWlnaHQoKSAtIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSArIHJhZGl1c1R3aWNlKTsK
ICAgICBwaGFzZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRl
cm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVz
dFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5n
ZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIFNjaGVkdWxlIGEg
cHVyZ2Ugb2YgdGhlIHNjcmF0Y2ggYnVmZmVyLgogICAgIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1
cmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDllZThhOTQuLjAxZjVkYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC01MiwxMiArNTMsMTAgQEAgc3RhdGljIGlubGluZSBjYWly
b19zdXJmYWNlX3QqIGNvcHlTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKICAgICBp
bnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKICAgICBp
bnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOwogICAg
IGNhaXJvX3N1cmZhY2VfdCogbmV3c3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRl
KGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0
ZShuZXdzdXJmYWNlKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2Us
IDAsIDApOwotICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNF
KTsKLSAgICBjYWlyb19wYWludChjcik7Ci0gICAgY2Fpcm9fZGVzdHJveShjcik7CisgICAgUmVm
UHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG5ld3N1cmZhY2UpKTsKKyAg
ICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIHN1cmZhY2UsIDAsIDApOworICAg
IGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAg
ICBjYWlyb19wYWludChjci5nZXQoKSk7CiAKICAgICByZXR1cm4gbmV3c3VyZmFjZTsKIH0KQEAg
LTgwLDkgKzc5LDggQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGJvb2wmIHMKICAgICBpZiAoY2Fpcm9fc3Vy
ZmFjZV9zdGF0dXMobV9kYXRhLm1fc3VyZmFjZSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCiAg
ICAgICAgIHJldHVybjsgIC8vIGNyZWF0ZSB3aWxsIG5vdGljZSB3ZSBkaWRuJ3Qgc2V0IG1faW5p
dGlhbGl6ZWQgYW5kIGZhaWwuCiAKLSAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShtX2Rh
dGEubV9zdXJmYWNlKTsKLSAgICBtX2NvbnRleHQuc2V0KG5ldyBHcmFwaGljc0NvbnRleHQoY3Ip
KTsKLSAgICBjYWlyb19kZXN0cm95KGNyKTsgIC8vIFRoZSBjb250ZXh0IGlzIG5vdyBvd25lZCBi
eSB0aGUgR3JhcGhpY3NDb250ZXh0LgorICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVm
KGNhaXJvX2NyZWF0ZShtX2RhdGEubV9zdXJmYWNlKSk7CisgICAgbV9jb250ZXh0LnNldChuZXcg
R3JhcGhpY3NDb250ZXh0KGNyLmdldCgpKSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAK
</data>
<flag name="review"
          id="80477"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88212</attachid>
            <date>2011-04-05 06:00:30 -0700</date>
            <delta_ts>2011-04-06 20:16:04 -0700</delta_ts>
            <desc>Proposed Patch4</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>18425</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZDgzNTI2Li45MjVkYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDQtMDUgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCB1
c2Ugb2YgcmF3IHBvaW50ZXJzIHRvIFJlZlB0ciBpbiB1c2luZyBDYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3MTcKKworICAgICAgICBObyBu
ZXcgdGVzdHMgYWRkZWQgYmVjYXVlIG9mIGp1c3QgcmVwbGFjaW5nIHJhdyBwb2ludGVycyB3aXRo
IHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5oOiBVc2UgUmVmUHRycyBvZiB0aGUgUGxhdGZvcm1JbWFnZSBhbmQgUGxhdGZvcm1Db250
ZXh0IGluc3RlYWQgb2YgcmF3IHBvaW50ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvUGF0aC5oOiBVc2UgYSBSZWZQdHIgb2YgY2Fpcm9fdCBpbnN0ZWFkIG9mIHJh
dyBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9QYXRoOjpDYWlyb1BhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm9QYXRoOjp+Q2Fpcm9QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhaXJvUGF0aDo6Y29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q29udGV4dFNoYWRvd0NhaXJvLmNwcDogVXNlIGEgUmVmUHRyIG9mIGNhaXJvX3N1cmZhY2VfdCBp
bnN0ZWFkIG9mIHJhdyBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6cHVyZ2VTY3JhdGNoQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOiBVc2UgYSBSZWZQdHIgb2YgY2Fpcm9f
dCBpbnN0ZWFkIG9mIHJhdyBwb2ludGVyLgorICAgICAgICAoY29weVN1cmZhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKwogMjAxMS0wNC0wNSAgSmFt
ZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuaAppbmRleCA4NTBkNDg5Li44NTU3Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBAIC0zMiw2ICszMiw5IEBA
CiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCisjaWYgUExBVEZPUk0oQ0FJUk8pCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIK
KyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFURk9STShDQUlS
TykKQEAgLTEyNCw4ICsxMjcsMTMgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYg
UExBVEZPUk0oQ0FJUk8pCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9sYXllckltYWdl
OyAvLyBCdWZmZXIgdG8gd2hlcmUgdGhlIHRlbXBvcmFyeSBzaGFkb3cgd2lsbCBiZSBkcmF3biB0
by4KKyAgICBSZWZQdHI8Y2Fpcm9fdD4gbV9sYXllckNvbnRleHQ7IC8vIENvbnRleHQgdXNlZCB0
byBwYWludCB0aGUgc2hhZG93IHRvIHRoZSBsYXllciBpbWFnZS4KKyNlbHNlCiAgICAgUGxhdGZv
cm1JbWFnZSBtX2xheWVySW1hZ2U7IC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNo
YWRvdyB3aWxsIGJlIGRyYXduIHRvLgogICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4
dDsgLy8gQ29udGV4dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdl
LgorI2VuZGlmCiAgICAgRmxvYXRSZWN0IG1fc291cmNlUmVjdDsgLy8gU3ViLXJlY3Qgb2YgbV9s
YXllckltYWdlIHRoYXQgY29udGFpbnMgdGhlIHNoYWRvdyBwaXhlbHMuCiAgICAgRmxvYXRQb2lu
dCBtX2xheWVyT3JpZ2luOyAvLyBUb3AtbGVmdCBjb3JuZXIgb2YgdGhlIChwb3NzaWJseSBjbGlw
cGVkKSBib3VuZGluZyByZWN0IHRvIGRyYXcgdGhlIHNoYWRvdyB0by4KICAgICBGbG9hdFBvaW50
IG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb247IC8vIFRyYW5zbGF0aW9uIHRvIGFwcGx5IHRvIG1f
bGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9QYXRo
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaApp
bmRleCBkYTdhZmZiLi40NmZlZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBD
YWlyb1BhdGhfaAogI2RlZmluZSBDYWlyb1BhdGhfaAogCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8u
aCIKICNpbmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMSwxOCAr
MzIsMTcgQEAgcHVibGljOgogICAgIENhaXJvUGF0aCgpCiAgICAgewogICAgICAgICBzdGF0aWMg
Y2Fpcm9fc3VyZmFjZV90KiBwYXRoU3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRl
KENBSVJPX0ZPUk1BVF9BOCwgMSwgMSk7Ci0gICAgICAgIG1fY3IgPSBjYWlyb19jcmVhdGUocGF0
aFN1cmZhY2UpOworICAgICAgICBtX2NyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHBhdGhTdXJm
YWNlKSk7CiAgICAgfQogCiAgICAgfkNhaXJvUGF0aCgpCiAgICAgewotICAgICAgICBjYWlyb19k
ZXN0cm95KG1fY3IpOwogICAgIH0KIAotICAgIGNhaXJvX3QqIGNvbnRleHQoKSB7IHJldHVybiBt
X2NyOyB9CisgICAgY2Fpcm9fdCogY29udGV4dCgpIHsgcmV0dXJuIG1fY3IuZ2V0KCk7IH0KIAog
cHJpdmF0ZToKLSAgICBjYWlyb190KiBtX2NyOworICAgIFJlZlB0cjxjYWlyb190PiBtX2NyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKaW5k
ZXggYjA1ODhkNi4uMTA3MjM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCkBAIC00MSwx
MSArNDEsMTAgQEAgdXNpbmcgV1RGOjptYXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGNhaXJvX3N1cmZhY2VfdCogc2NyYXRjaEJ1ZmZlciA9IDA7CitzdGF0aWMgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gZ1NjcmF0Y2hCdWZmZXI7CiBzdGF0aWMgdm9pZCBwdXJnZVNjcmF0Y2hC
dWZmZXIoKQogewotICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzY3JhdGNoQnVmZmVyKTsKLSAg
ICBzY3JhdGNoQnVmZmVyID0gMDsKKyAgICBnU2NyYXRjaEJ1ZmZlci5jbGVhcigpOwogfQogCiAv
LyBDb250ZXh0U2hhZG93IG5lZWRzIGEgc2NyYXRjaCBpbWFnZSBhcyB0aGUgYnVmZmVyIGZvciB0
aGUgYmx1ciBmaWx0ZXIuCkBAIC02NywyMCArNjYsMjAgQEAgc3RhdGljIGNhaXJvX3N1cmZhY2Vf
dCogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGludCB3aWR0
aCA9IHNpemUud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKLSAgICBp
bnQgc2NyYXRjaFdpZHRoID0gc2NyYXRjaEJ1ZmZlciA/IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3dpZHRoKHNjcmF0Y2hCdWZmZXIpIDogMDsKLSAgICBpbnQgc2NyYXRjaEhlaWdodCA9IHNjcmF0
Y2hCdWZmZXIgPyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc2NyYXRjaEJ1ZmZlcikg
OiAwOworICAgIGludCBzY3JhdGNoV2lkdGggPSBnU2NyYXRjaEJ1ZmZlci5nZXQoKSA/IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKGdTY3JhdGNoQnVmZmVyLmdldCgpKSA6IDA7CisgICAg
aW50IHNjcmF0Y2hIZWlnaHQgPSBnU2NyYXRjaEJ1ZmZlci5nZXQoKSA/IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2hlaWdodChnU2NyYXRjaEJ1ZmZlci5nZXQoKSkgOiAwOwogCiAgICAgLy8gV2Ug
ZG8gbm90IG5lZWQgdG8gcmVjcmVhdGUgdGhlIGJ1ZmZlciBpZiB0aGUgY3VycmVudCBidWZmZXIg
aXMgbGFyZ2UgZW5vdWdoLgotICAgIGlmIChzY3JhdGNoQnVmZmVyICYmIHNjcmF0Y2hXaWR0aCA+
PSB3aWR0aCAmJiBzY3JhdGNoSGVpZ2h0ID49IGhlaWdodCkKLSAgICAgICAgcmV0dXJuIHNjcmF0
Y2hCdWZmZXI7CisgICAgaWYgKGdTY3JhdGNoQnVmZmVyLmdldCgpICYmIHNjcmF0Y2hXaWR0aCA+
PSB3aWR0aCAmJiBzY3JhdGNoSGVpZ2h0ID49IGhlaWdodCkKKyAgICAgICAgcmV0dXJuIGdTY3Jh
dGNoQnVmZmVyLmdldCgpOwogCiAgICAgcHVyZ2VTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAvLyBS
b3VuZCB0byB0aGUgbmVhcmVzdCAzMiBwaXhlbHMgc28gd2UgZG8gbm90IGdyb3cgdGhlIGJ1ZmZl
ciBmb3Igc2ltaWxhciBzaXplZCByZXF1ZXN0cy4KICAgICB3aWR0aCA9ICgxICsgKHdpZHRoID4+
IDUpKSA8PCA1OwogICAgIGhlaWdodCA9ICgxICsgKGhlaWdodCA+PiA1KSkgPDwgNTsKLSAgICBz
Y3JhdGNoQnVmZmVyID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FS
R0IzMiwgd2lkdGgsIGhlaWdodCk7Ci0gICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXI7CisgICAgZ1Nj
cmF0Y2hCdWZmZXIgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19G
T1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJuIGdTY3JhdGNoQnVmZmVy
LmdldCgpOwogfQogCiBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dM
YXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVh
KQpAQCAtOTYsMzQgKzk1LDMzIEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdp
blNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBtX2xheWVySW1hZ2UgPSBnZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwotICAgIG1fbGF5ZXJDb250ZXh0ID0gY2Fpcm9fY3JlYXRlKG1fbGF5ZXJJbWFnZSk7
CisgICAgbV9sYXllckNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9sYXllckltYWdl
LmdldCgpKSk7CiAKICAgICAvLyBBbHdheXMgY2xlYXIgdGhlIHN1cmZhY2UgZmlyc3QuCi0gICAg
Y2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LCBDQUlST19PUEVSQVRPUl9DTEVBUik7
Ci0gICAgY2Fpcm9fcGFpbnQobV9sYXllckNvbnRleHQpOwotICAgIGNhaXJvX3NldF9vcGVyYXRv
cihtX2xheWVyQ29udGV4dCwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CisgICAgY2Fpcm9fc2V0X29w
ZXJhdG9yKG1fbGF5ZXJDb250ZXh0LmdldCgpLCBDQUlST19PUEVSQVRPUl9DTEVBUik7CisgICAg
Y2Fpcm9fcGFpbnQobV9sYXllckNvbnRleHQuZ2V0KCkpOworICAgIGNhaXJvX3NldF9vcGVyYXRv
cihtX2xheWVyQ29udGV4dC5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CiAKLSAgICBjYWly
b190cmFuc2xhdGUobV9sYXllckNvbnRleHQsIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24ueCgp
LCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uLnkoKSk7Ci0gICAgcmV0dXJuIG1fbGF5ZXJDb250
ZXh0OworICAgIGNhaXJvX3RyYW5zbGF0ZShtX2xheWVyQ29udGV4dC5nZXQoKSwgbV9sYXllckNv
bnRleHRUcmFuc2xhdGlvbi54KCksIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24ueSgpKTsKKyAg
ICByZXR1cm4gbV9sYXllckNvbnRleHQuZ2V0KCk7CiB9CiAKIHZvaWQgQ29udGV4dFNoYWRvdzo6
ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewotICAgIGNhaXJvX2Rl
c3Ryb3kobV9sYXllckNvbnRleHQpOwotICAgIG1fbGF5ZXJDb250ZXh0ID0gMDsKKyAgICBtX2xh
eWVyQ29udGV4dC5jbGVhcigpOwogCiAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7Ci0g
ICAgICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9sYXllckltYWdlKTsKLSAgICAgICAgYmx1ckxh
eWVySW1hZ2UoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2xheWVySW1hZ2UpLAotICAg
ICAgICAgICAgICAgICAgICAgICBJbnRTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRo
KG1fbGF5ZXJJbWFnZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX2xheWVySW1h
Z2UpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3Ry
aWRlKG1fbGF5ZXJJbWFnZSkpOwotICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9s
YXllckltYWdlKTsKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX2xheWVySW1hZ2UuZ2V0
KCkpOworICAgICAgICBibHVyTGF5ZXJJbWFnZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRh
KG1fbGF5ZXJJbWFnZS5nZXQoKSksCisgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgobV9sYXllckltYWdlLmdldCgpKSwgY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KG1fbGF5ZXJJbWFnZS5nZXQoKSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9sYXllckltYWdlLmdl
dCgpKSk7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX2xheWVySW1hZ2UuZ2V0
KCkpOwogICAgIH0KIAogICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwg
bV9jb2xvcik7Ci0gICAgY2Fpcm9fbWFza19zdXJmYWNlKGNyLCBtX2xheWVySW1hZ2UsIG1fbGF5
ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2luLnkoKSk7CisgICAgY2Fpcm9fbWFza19zdXJmYWNl
KGNyLCBtX2xheWVySW1hZ2UuZ2V0KCksIG1fbGF5ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2lu
LnkoKSk7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiAKICAgICAvLyBTY2hlZHVsZSBhIHB1cmdl
IG9mIHRoZSBzY3JhdGNoIGJ1ZmZlci4gV2UgZG8gbm90IG5lZWQgdG8gZGVzdHJveSB0aGUgc3Vy
ZmFjZS4KQEAgLTE0MCw5ICsxMzgsOSBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hh
ZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgUGF0
aCBwYXRoOwogICAgIHBhdGguYWRkUm91bmRlZFJlY3Qoc2hhZG93UmVjdCwgdG9wTGVmdFJhZGl1
cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsK
IAotICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQobV9sYXllckNvbnRleHQsIHBh
dGgpOwotICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShtX2xheWVyQ29udGV4dCwgMCwgMCwgMCwg
YWxwaGEpOwotICAgIGNhaXJvX2ZpbGwobV9sYXllckNvbnRleHQpOworICAgIGFwcGVuZFdlYkNv
cmVQYXRoVG9DYWlyb0NvbnRleHQobV9sYXllckNvbnRleHQuZ2V0KCksIHBhdGgpOworICAgIGNh
aXJvX3NldF9zb3VyY2VfcmdiYShtX2xheWVyQ29udGV4dC5nZXQoKSwgMCwgMCwgMCwgYWxwaGEp
OworICAgIGNhaXJvX2ZpbGwobV9sYXllckNvbnRleHQuZ2V0KCkpOwogCiAgICAgZW5kU2hhZG93
TGF5ZXIoY29udGV4dCk7CiB9CkBAIC0yMzgsMzQgKzIzNiwzMyBAQCB2b2lkIENvbnRleHRTaGFk
b3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdAogICAgIG1fbGF5ZXJJbWFnZSA9IGdldFNjcmF0Y2hCdWZmZXIoc2hhZG93VGVtcGxh
dGVTaXplKTsKIAogICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIuCi0g
ICAgbV9sYXllckNvbnRleHQgPSBjYWlyb19jcmVhdGUobV9sYXllckltYWdlKTsKKyAgICBtX2xh
eWVyQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2xheWVySW1hZ2UuZ2V0KCkpKTsK
IAogICAgIC8vIENsZWFyIHRoZSBzdXJmYWNlIGZpcnN0LgotICAgIGNhaXJvX3NldF9vcGVyYXRv
cihtX2xheWVyQ29udGV4dCwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOwotICAgIGNhaXJvX3BhaW50
KG1fbGF5ZXJDb250ZXh0KTsKLSAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQs
IENBSVJPX09QRVJBVE9SX09WRVIpOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29u
dGV4dC5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOworICAgIGNhaXJvX3BhaW50KG1fbGF5
ZXJDb250ZXh0LmdldCgpKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQu
Z2V0KCksIENBSVJPX09QRVJBVE9SX09WRVIpOwogCiAgICAgLy8gRHJhdyB0aGUgcmVjdGFuZ2xl
LgogICAgIEludFJlY3QgdGVtcGxhdGVSZWN0ID0gSW50UmVjdChtX2JsdXJEaXN0YW5jZSwgbV9i
bHVyRGlzdGFuY2UsIHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmFkaXVzVHdpY2UsIHNo
YWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIHJhZGl1c1R3aWNlKTsKICAgICBQYXRoIHBhdGg7
CiAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVJlY3QsIHRvcExlZnRSYWRpdXMsIHRv
cFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7Ci0gICAg
YXBwZW5kV2ViQ29yZVBhdGhUb0NhaXJvQ29udGV4dChtX2xheWVyQ29udGV4dCwgcGF0aCk7Cisg
ICAgYXBwZW5kV2ViQ29yZVBhdGhUb0NhaXJvQ29udGV4dChtX2xheWVyQ29udGV4dC5nZXQoKSwg
cGF0aCk7CiAKLSAgICBjYWlyb19zZXRfc291cmNlX3JnYmEobV9sYXllckNvbnRleHQsIDAsIDAs
IDAsIGNvbnRleHQtPmdldEFscGhhKCkpOwotICAgIGNhaXJvX2ZpbGwobV9sYXllckNvbnRleHQp
OworICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShtX2xheWVyQ29udGV4dC5nZXQoKSwgMCwgMCwg
MCwgY29udGV4dC0+Z2V0QWxwaGEoKSk7CisgICAgY2Fpcm9fZmlsbChtX2xheWVyQ29udGV4dC5n
ZXQoKSk7CiAKICAgICAvLyBCbHVyIHRoZSBpbWFnZS4KLSAgICBjYWlyb19zdXJmYWNlX2ZsdXNo
KG1fbGF5ZXJJbWFnZSk7Ci0gICAgYmx1ckxheWVySW1hZ2UoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShtX2xheWVySW1hZ2UpLCBzaGFkb3dUZW1wbGF0ZVNpemUsIGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3N0cmlkZShtX2xheWVySW1hZ2UpKTsKLSAgICBjYWlyb19zdXJmYWNlX21hcmtf
ZGlydHkobV9sYXllckltYWdlKTsKKyAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fbGF5ZXJJbWFn
ZS5nZXQoKSk7CisgICAgYmx1ckxheWVySW1hZ2UoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShtX2xheWVySW1hZ2UuZ2V0KCkpLCBzaGFkb3dUZW1wbGF0ZVNpemUsIGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3N0cmlkZShtX2xheWVySW1hZ2UuZ2V0KCkpKTsKKyAgICBjYWlyb19zdXJmYWNl
X21hcmtfZGlydHkobV9sYXllckltYWdlLmdldCgpKTsKIAogICAgIC8vIE1hc2sgdGhlIGltYWdl
IHdpdGggdGhlIHNoYWRvdyBjb2xvci4KLSAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNv
bnRleHQsIENBSVJPX09QRVJBVE9SX0lOKTsKLSAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKG1f
bGF5ZXJDb250ZXh0LCBtX2NvbG9yKTsKLSAgICBjYWlyb19wYWludChtX2xheWVyQ29udGV4dCk7
CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0LmdldCgpLCBDQUlST19PUEVS
QVRPUl9JTik7CisgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihtX2xheWVyQ29udGV4dC5nZXQo
KSwgbV9jb2xvcik7CisgICAgY2Fpcm9fcGFpbnQobV9sYXllckNvbnRleHQuZ2V0KCkpOwogCi0g
ICAgY2Fpcm9fZGVzdHJveShtX2xheWVyQ29udGV4dCk7Ci0gICAgbV9sYXllckNvbnRleHQgPSAw
OworICAgIG1fbGF5ZXJDb250ZXh0LmNsZWFyKCk7CiAKICAgICAvLyBGaWxsIHRoZSBpbnRlcm5h
bCBwYXJ0IG9mIHRoZSBzaGFkb3cuCiAgICAgc2hhZG93UmVjdC5pbmZsYXRlKC1yYWRpdXNUd2lj
ZSk7CkBAIC0yODgsNyArMjg1LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBGbG9h
dFBvaW50IHBoYXNlID0gZ2V0UGhhc2UoZGVzdFJlY3QsIHRpbGVSZWN0KTsKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLm1ha2VJZGVu
dGl0eSgpOwotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZSwg
c2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENB
SVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250
ZXh0KGNyLCBtX2xheWVySW1hZ2UuZ2V0KCksIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7
CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dChyYWRpdXNUd2ljZSArIGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSwgc2hhZG93VGVtcGxhdGVT
aXplLmhlaWdodCgpIC0gcmFkaXVzVHdpY2UsIHNpZGVUaWxlV2lkdGgsIHJhZGl1c1R3aWNlKTsK
QEAgLTI5Niw3ICsyOTMsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGRlc3RSZWN0
Lm1vdmUoc2hhZG93UmVjdC54KCksIHNoYWRvd1JlY3QueSgpICsgcmFkaXVzVHdpY2UgKyByZWN0
LmhlaWdodCgpIC0gc2hhZG93VGVtcGxhdGVTaXplLmhlaWdodCgpKTsKICAgICBkZXN0UmVjdC5z
ZXRXaWR0aChzaGFkb3dSZWN0LndpZHRoKCkgLSBib3R0b21MZWZ0UmFkaXVzLndpZHRoKCkgLSBi
b3R0b21SaWdodFJhZGl1cy53aWR0aCgpIC0gbV9ibHVyRGlzdGFuY2UgKiA0KTsKICAgICBwaGFz
ZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJv
Q29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwor
ICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hh
ZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJP
X09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIHJpZ2h0IHNpZGUu
CiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qoc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCkgLSBy
YWRpdXNUd2ljZSwgcmFkaXVzVHdpY2UgKyB0b3BSaWdodFJhZGl1cy5oZWlnaHQoKSwgcmFkaXVz
VHdpY2UsIHNpZGVUaWxlV2lkdGgpOwpAQCAtMzA0LDcgKzMwMSw3IEBAIHZvaWQgQ29udGV4dFNo
YWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiByZWN0CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0LngoKSArIHJhZGl1c1R3aWNl
ICsgcmVjdC53aWR0aCgpIC0gc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCksIHNoYWRvd1JlY3Qu
eSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoc2hhZG93UmVjdC5oZWlnaHQoKSAtIHRvcFJp
Z2h0UmFkaXVzLmhlaWdodCgpIC0gYm90dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkgLSBtX2JsdXJE
aXN0YW5jZSAqIDQpOwogICAgIHBoYXNlID0gZ2V0UGhhc2UoZGVzdFJlY3QsIHRpbGVSZWN0KTsK
LSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UsIHNoYWRvd1Rl
bXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVS
QVRPUl9PVkVSLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwg
bV9sYXllckltYWdlLmdldCgpLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwogCiAgICAg
Ly8gRHJhdyB0aGUgbGVmdCBzaWRlLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIHJhZGl1
c1R3aWNlICsgdG9wTGVmdFJhZGl1cy5oZWlnaHQoKSwgcmFkaXVzVHdpY2UsIHNpZGVUaWxlV2lk
dGgpOwpAQCAtMzEyLDE0ICszMDksMTQgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNo
YWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBk
ZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpLCBzaGFkb3dSZWN0LnkoKSk7CiAgICAgZGVzdFJl
Y3Quc2V0SGVpZ2h0KHNoYWRvd1JlY3QuaGVpZ2h0KCkgLSB0b3BMZWZ0UmFkaXVzLmhlaWdodCgp
IC0gYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSAtIG1fYmx1ckRpc3RhbmNlICogNCk7CiAgICAg
cGhhc2UgPSBGbG9hdFBvaW50KGRlc3RSZWN0LngoKSAtIHRpbGVSZWN0LngoKSwgZGVzdFJlY3Qu
eSgpIC0gdGlsZVJlY3QueSgpKTsKLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBt
X2xheWVySW1hZ2UsIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRl
cm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLmdldCgpLCBzaGFkb3dUZW1wbGF0ZVNp
emUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZF
UiwgZGVzdFJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgdG9wIGxlZnQgY29ybmVyLgogICAgIHRp
bGVSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIHJhZGl1c1R3aWNlICsgdG9wTGVmdFJhZGl1cy53aWR0
aCgpLCByYWRpdXNUd2ljZSArIHRvcExlZnRSYWRpdXMuaGVpZ2h0KCkpOwogICAgIGRlc3RSZWN0
ID0gdGlsZVJlY3Q7CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0LngoKSwgc2hhZG93UmVj
dC55KCkpOwogICAgIHBoYXNlID0gZ2V0UGhhc2UoZGVzdFJlY3QsIHRpbGVSZWN0KTsKLSAgICBk
cmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UsIHNoYWRvd1RlbXBsYXRl
U2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9P
VkVSLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXll
ckltYWdlLmdldCgpLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwogCiAgICAgLy8gRHJh
dyB0aGUgdG9wIHJpZ2h0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdChzaGFkb3dU
ZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJhZGl1c1R3aWNlIC0gdG9wUmlnaHRSYWRpdXMud2lkdGgo
KSwgMCwgcmFkaXVzVHdpY2UgKyB0b3BSaWdodFJhZGl1cy53aWR0aCgpLApAQCAtMzI3LDcgKzMy
NCw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgZGVzdFJlY3QgPSB0aWxlUmVjdDsK
ICAgICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gc2hhZG93
VGVtcGxhdGVTaXplLndpZHRoKCkgKyByYWRpdXNUd2ljZSwgc2hhZG93UmVjdC55KCkpOwogICAg
IHBoYXNlID0gZ2V0UGhhc2UoZGVzdFJlY3QsIHRpbGVSZWN0KTsKLSAgICBkcmF3UGF0dGVyblRv
Q2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UsIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVj
dCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLmdldCgp
LCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
Q0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9t
IHJpZ2h0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdChzaGFkb3dUZW1wbGF0ZVNp
emUud2lkdGgoKSAtIHJhZGl1c1R3aWNlIC0gYm90dG9tUmlnaHRSYWRpdXMud2lkdGgoKSwKQEAg
LTMzNyw3ICszMzQsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGRlc3RSZWN0Lm1v
dmUoc2hhZG93UmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBzaGFkb3dUZW1wbGF0ZVNpemUud2lk
dGgoKSArIHJhZGl1c1R3aWNlLAogICAgICAgICAgICAgICAgICAgc2hhZG93UmVjdC55KCkgKyBy
ZWN0LmhlaWdodCgpIC0gc2hhZG93VGVtcGxhdGVTaXplLmhlaWdodCgpICsgcmFkaXVzVHdpY2Up
OwogICAgIHBoYXNlID0gZ2V0UGhhc2UoZGVzdFJlY3QsIHRpbGVSZWN0KTsKLSAgICBkcmF3UGF0
dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UsIHNoYWRvd1RlbXBsYXRlU2l6ZSwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBk
ZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdl
LmdldCgpLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUg
Ym90dG9tIGxlZnQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KDAsIHNoYWRvd1Rl
bXBsYXRlU2l6ZS5oZWlnaHQoKSAtIHJhZGl1c1R3aWNlIC0gYm90dG9tTGVmdFJhZGl1cy5oZWln
aHQoKSwKQEAgLTM0NSw3ICszNDIsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hh
ZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGRl
c3RSZWN0ID0gdGlsZVJlY3Q7CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0LngoKSwgc2hh
ZG93UmVjdC55KCkgKyByZWN0LmhlaWdodCgpIC0gc2hhZG93VGVtcGxhdGVTaXplLmhlaWdodCgp
ICsgcmFkaXVzVHdpY2UpOwogICAgIHBoYXNlID0gZ2V0UGhhc2UoZGVzdFJlY3QsIHRpbGVSZWN0
KTsKLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1hZ2UsIHNoYWRv
d1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBDQUlST19P
UEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChj
ciwgbV9sYXllckltYWdlLmdldCgpLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwogCiAg
ICAgLy8gU2NoZWR1bGUgYSBwdXJnZSBvZiB0aGUgc2NyYXRjaCBidWZmZXIuCiAgICAgc2NoZWR1
bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggOWVlOGE5
NC4uMDFmNWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8
Y2Fpcm8uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTUyLDEyICs1MywxMCBAQCBz
dGF0aWMgaW5saW5lIGNhaXJvX3N1cmZhY2VfdCogY29weVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlKQogICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRo
KHN1cmZhY2UpOwogICAgIGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWln
aHQoc3VyZmFjZSk7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBuZXdzdXJmYWNlID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9jcmVhdGUoZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIGNhaXJvX3Qq
IGNyID0gY2Fpcm9fY3JlYXRlKG5ld3N1cmZhY2UpOwotICAgIGNhaXJvX3NldF9zb3VyY2Vfc3Vy
ZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlS
T19PUEVSQVRPUl9TT1VSQ0UpOwotICAgIGNhaXJvX3BhaW50KGNyKTsKLSAgICBjYWlyb19kZXN0
cm95KGNyKTsKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUo
bmV3c3VyZmFjZSkpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgc3Vy
ZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVS
QVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKIAogICAgIHJldHVybiBu
ZXdzdXJmYWNlOwogfQpAQCAtODAsOSArNzksOCBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgYm9vbCYgcwog
ICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX2RhdGEubV9zdXJmYWNlKSAhPSBDQUlST19T
VEFUVVNfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuOyAgLy8gY3JlYXRlIHdpbGwgbm90aWNlIHdl
IGRpZG4ndCBzZXQgbV9pbml0aWFsaXplZCBhbmQgZmFpbC4KIAotICAgIGNhaXJvX3QqIGNyID0g
Y2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UpOwotICAgIG1fY29udGV4dC5zZXQobmV3IEdy
YXBoaWNzQ29udGV4dChjcikpOwotICAgIGNhaXJvX2Rlc3Ryb3koY3IpOyAgLy8gVGhlIGNvbnRl
eHQgaXMgbm93IG93bmVkIGJ5IHRoZSBHcmFwaGljc0NvbnRleHQuCisgICAgUmVmUHRyPGNhaXJv
X3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UpKTsKKyAgICBt
X2NvbnRleHQuc2V0KG5ldyBHcmFwaGljc0NvbnRleHQoY3IuZ2V0KCkpKTsKICAgICBzdWNjZXNz
ID0gdHJ1ZTsKIH0KIAo=
</data>
<flag name="review"
          id="80684"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88561</attachid>
            <date>2011-04-06 20:16:04 -0700</date>
            <delta_ts>2011-04-12 03:34:02 -0700</delta_ts>
            <desc>Proposed Patch5</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>22701</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNjIwOTljLi5lMjhiNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMDQtMDcgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCB1
c2Ugb2YgcmF3IHBvaW50ZXJzIHRvIFJlZlB0ciBpbiB1c2luZyBDYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3MTcKKworICAgICAgICBObyBu
ZXcgdGVzdHMgYWRkZWQgYmVjYXVlIG9mIGp1c3QgcmVwbGFjaW5nIHJhdyBwb2ludGVycyB3aXRo
IHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5oOiBEZWZpbmUgdGhlIFBsYXRmb3JtSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KSBhbmQgUGxh
dGZvcm1Db250ZXh0KGNhaXJvX3QpIHR5cGUgdXNpbmcgUmVmUHRyLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oOiBVc2UgYSBSZWZQdHI8Y2Fpcm9fdD4gaW5z
dGVhZCBvZiByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6Q2Fpcm9Q
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6fkNhaXJvUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWlyb1BhdGg6OmNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHA6IFVzZSBhIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IGluc3RlYWQgb2YgcmF3IHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpwdXJnZVNj
cmF0Y2hCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRy
YXdHbHlwaHNTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcDogVXNlIGEgUmVmUHRyPGNhaXJvX3Q+IGluc3RlYWQgb2YgcmF3
IHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpkcmF3UGF0aFNoYWRvdyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6IERpdHRvLgorICAg
ICAgICAoY29weVN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQ2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHA6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0dseXBoc1NoYWRvdyk6CisKIDIwMTEtMDQtMDYgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCA4NTBkNDg5Li45ZDE4NDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBAIC0zMiw2ICsz
MiwxMCBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgorI2lmIFBMQVRGT1JNKENBSVJPKQorI2luY2x1ZGUgIlJlZlB0ckNh
aXJvLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBQTEFU
Rk9STShDQUlSTykKQEAgLTUwLDggKzU0LDggQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwogCiAjaWYgUExBVEZPUk0oQ0FJUk8pCi10eXBlZGVmIGNhaXJv
X3N1cmZhY2VfdCogUGxhdGZvcm1JbWFnZTsKLXR5cGVkZWYgY2Fpcm9fdCogUGxhdGZvcm1Db250
ZXh0OwordHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBQbGF0Zm9ybUltYWdlOwordHlw
ZWRlZiBSZWZQdHI8Y2Fpcm9fdD4gUGxhdGZvcm1Db250ZXh0OwogI2VsaWYgUExBVEZPUk0oUVQp
CiB0eXBlZGVmIFFJbWFnZSBQbGF0Zm9ybUltYWdlOwogdHlwZWRlZiBRUGFpbnRlciogUGxhdGZv
cm1Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb1BhdGguaAppbmRleCBkYTdhZmZiLi5lNDc5MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaApAQCAtMjEsNiArMjEs
NyBAQAogI2lmbmRlZiBDYWlyb1BhdGhfaAogI2RlZmluZSBDYWlyb1BhdGhfaAogCisjaW5jbHVk
ZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zMCwxOSArMzEsMTggQEAgY2xhc3MgQ2Fpcm9QYXRoIHsKIHB1YmxpYzoKICAgICBD
YWlyb1BhdGgoKQogICAgIHsKLSAgICAgICAgc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogcGF0aFN1
cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQTgsIDEsIDEp
OwotICAgICAgICBtX2NyID0gY2Fpcm9fY3JlYXRlKHBhdGhTdXJmYWNlKTsKKyAgICAgICAgc3Rh
dGljIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHBhdGhTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0E4LCAxLCAxKSk7CisgICAgICAgIG1f
Y3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUocGF0aFN1cmZhY2UuZ2V0KCkpKTsKICAgICB9CiAK
ICAgICB+Q2Fpcm9QYXRoKCkKICAgICB7Ci0gICAgICAgIGNhaXJvX2Rlc3Ryb3kobV9jcik7CiAg
ICAgfQogCi0gICAgY2Fpcm9fdCogY29udGV4dCgpIHsgcmV0dXJuIG1fY3I7IH0KKyAgICBjYWly
b190KiBjb250ZXh0KCkgeyByZXR1cm4gbV9jci5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIGNh
aXJvX3QqIG1fY3I7CisgICAgUmVmUHRyPGNhaXJvX3Q+IG1fY3I7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAppbmRleCAwZjkwY2U0Li4xMzJl
ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
b250ZXh0U2hhZG93Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKQEAgLTQyLDExICs0MiwxMCBAQCB1c2lu
ZyBXVEY6Om1heDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY2Fpcm9fc3VyZmFj
ZV90KiBzY3JhdGNoQnVmZmVyID0gMDsKK3N0YXRpYyBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBn
U2NyYXRjaEJ1ZmZlcjsKIHN0YXRpYyB2b2lkIHB1cmdlU2NyYXRjaEJ1ZmZlcigpCiB7Ci0gICAg
Y2Fpcm9fc3VyZmFjZV9kZXN0cm95KHNjcmF0Y2hCdWZmZXIpOwotICAgIHNjcmF0Y2hCdWZmZXIg
PSAwOworICAgIGdTY3JhdGNoQnVmZmVyLmNsZWFyKCk7CiB9CiAKIC8vIENvbnRleHRTaGFkb3cg
bmVlZHMgYSBzY3JhdGNoIGltYWdlIGFzIHRoZSBidWZmZXIgZm9yIHRoZSBibHVyIGZpbHRlci4K
QEAgLTY4LDIwICs2NywyMCBAQCBzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBnZXRTY3JhdGNoQnVm
ZmVyKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgp
OwogICAgIGludCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOwotICAgIGludCBzY3JhdGNoV2lkdGgg
PSBzY3JhdGNoQnVmZmVyID8gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc2NyYXRjaEJ1
ZmZlcikgOiAwOwotICAgIGludCBzY3JhdGNoSGVpZ2h0ID0gc2NyYXRjaEJ1ZmZlciA/IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzY3JhdGNoQnVmZmVyKSA6IDA7CisgICAgaW50IHNj
cmF0Y2hXaWR0aCA9IGdTY3JhdGNoQnVmZmVyLmdldCgpID8gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgoZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkpIDogMDsKKyAgICBpbnQgc2NyYXRjaEhlaWdo
dCA9IGdTY3JhdGNoQnVmZmVyLmdldCgpID8gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0
KGdTY3JhdGNoQnVmZmVyLmdldCgpKSA6IDA7CiAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBy
ZWNyZWF0ZSB0aGUgYnVmZmVyIGlmIHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2gu
Ci0gICAgaWYgKHNjcmF0Y2hCdWZmZXIgJiYgc2NyYXRjaFdpZHRoID49IHdpZHRoICYmIHNjcmF0
Y2hIZWlnaHQgPj0gaGVpZ2h0KQotICAgICAgICByZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKKyAgICBp
ZiAoZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkgJiYgc2NyYXRjaFdpZHRoID49IHdpZHRoICYmIHNjcmF0
Y2hIZWlnaHQgPj0gaGVpZ2h0KQorICAgICAgICByZXR1cm4gZ1NjcmF0Y2hCdWZmZXIuZ2V0KCk7
CiAKICAgICBwdXJnZVNjcmF0Y2hCdWZmZXIoKTsKIAogICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFy
ZXN0IDMyIHBpeGVscyBzbyB3ZSBkbyBub3QgZ3JvdyB0aGUgYnVmZmVyIGZvciBzaW1pbGFyIHNp
emVkIHJlcXVlc3RzLgogICAgIHdpZHRoID0gKDEgKyAod2lkdGggPj4gNSkpIDw8IDU7CiAgICAg
aGVpZ2h0ID0gKDEgKyAoaGVpZ2h0ID4+IDUpKSA8PCA1OwotICAgIHNjcmF0Y2hCdWZmZXIgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCB3aWR0aCwgaGVp
Z2h0KTsKLSAgICByZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKKyAgICBnU2NyYXRjaEJ1ZmZlciA9IGFk
b3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdp
ZHRoLCBoZWlnaHQpKTsKKyAgICByZXR1cm4gZ1NjcmF0Y2hCdWZmZXIuZ2V0KCk7CiB9CiAKIFBs
YXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCkBAIC05NywzNCArOTYs
MzMgQEAgUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1f
bGF5ZXJJbWFnZSA9IGdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7Ci0gICAgbV9s
YXllckNvbnRleHQgPSBjYWlyb19jcmVhdGUobV9sYXllckltYWdlKTsKKyAgICBtX2xheWVyQ29u
dGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2xheWVySW1hZ2UuZ2V0KCkpKTsKIAogICAg
IC8vIEFsd2F5cyBjbGVhciB0aGUgc3VyZmFjZSBmaXJzdC4KLSAgICBjYWlyb19zZXRfb3BlcmF0
b3IobV9sYXllckNvbnRleHQsIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKLSAgICBjYWlyb19wYWlu
dChtX2xheWVyQ29udGV4dCk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0
LCBDQUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IobV9sYXllckNv
bnRleHQuZ2V0KCksIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKKyAgICBjYWlyb19wYWludChtX2xh
eWVyQ29udGV4dC5nZXQoKSk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1fbGF5ZXJDb250ZXh0
LmdldCgpLCBDQUlST19PUEVSQVRPUl9PVkVSKTsKIAotICAgIGNhaXJvX3RyYW5zbGF0ZShtX2xh
eWVyQ29udGV4dCwgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbi54KCksIG1fbGF5ZXJDb250ZXh0
VHJhbnNsYXRpb24ueSgpKTsKKyAgICBjYWlyb190cmFuc2xhdGUobV9sYXllckNvbnRleHQuZ2V0
KCksIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24ueCgpLCBtX2xheWVyQ29udGV4dFRyYW5zbGF0
aW9uLnkoKSk7CiAgICAgcmV0dXJuIG1fbGF5ZXJDb250ZXh0OwogfQogCiB2b2lkIENvbnRleHRT
aGFkb3c6OmVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBj
YWlyb19kZXN0cm95KG1fbGF5ZXJDb250ZXh0KTsKLSAgICBtX2xheWVyQ29udGV4dCA9IDA7Cisg
ICAgbV9sYXllckNvbnRleHQuY2xlYXIoKTsKIAogICAgIGlmIChtX3R5cGUgPT0gQmx1clNoYWRv
dykgewotICAgICAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fbGF5ZXJJbWFnZSk7Ci0gICAgICAg
IGJsdXJMYXllckltYWdlKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9sYXllckltYWdl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChtX2xheWVySW1hZ2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQobV9s
YXllckltYWdlKSksCi0gICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3N0cmlkZShtX2xheWVySW1hZ2UpKTsKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2Rp
cnR5KG1fbGF5ZXJJbWFnZSk7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9sYXllcklt
YWdlLmdldCgpKTsKKyAgICAgICAgYmx1ckxheWVySW1hZ2UoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShtX2xheWVySW1hZ2UuZ2V0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICBJbnRT
aXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1fbGF5ZXJJbWFnZS5nZXQoKSksIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX2xheWVySW1hZ2UuZ2V0KCkpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKG1fbGF5ZXJJ
bWFnZS5nZXQoKSkpOworICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9sYXllcklt
YWdlLmdldCgpKTsKICAgICB9CiAKICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIHNldFNvdXJjZVJHQkFG
cm9tQ29sb3IoY3IsIG1fY29sb3IpOwotICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwgbV9sYXll
ckltYWdlLCBtX2xheWVyT3JpZ2luLngoKSwgbV9sYXllck9yaWdpbi55KCkpOworICAgIGNhaXJv
X21hc2tfc3VyZmFjZShjciwgbV9sYXllckltYWdlLmdldCgpLCBtX2xheWVyT3JpZ2luLngoKSwg
bV9sYXllck9yaWdpbi55KCkpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCiAgICAgLy8gU2No
ZWR1bGUgYSBwdXJnZSBvZiB0aGUgc2NyYXRjaCBidWZmZXIuIFdlIGRvIG5vdCBuZWVkIHRvIGRl
c3Ryb3kgdGhlIHN1cmZhY2UuCkBAIC0xNDEsOSArMTM5LDkgQEAgdm9pZCBDb250ZXh0U2hhZG93
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdAogICAgIFBhdGggcGF0aDsKICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRvd1JlY3Qs
IHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21S
aWdodFJhZGl1cyk7CiAKLSAgICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KG1fbGF5
ZXJDb250ZXh0LCBwYXRoKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3JnYmEobV9sYXllckNvbnRl
eHQsIDAsIDAsIDAsIGFscGhhKTsKLSAgICBjYWlyb19maWxsKG1fbGF5ZXJDb250ZXh0KTsKKyAg
ICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KG1fbGF5ZXJDb250ZXh0LmdldCgpLCBw
YXRoKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEobV9sYXllckNvbnRleHQuZ2V0KCksIDAs
IDAsIDAsIGFscGhhKTsKKyAgICBjYWlyb19maWxsKG1fbGF5ZXJDb250ZXh0LmdldCgpKTsKIAog
ICAgIGVuZFNoYWRvd0xheWVyKGNvbnRleHQpOwogfQpAQCAtMjM5LDM0ICsyMzcsMzMgQEAgdm9p
ZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBtX2xheWVySW1hZ2UgPSBnZXRTY3JhdGNoQnVmZmVy
KHNoYWRvd1RlbXBsYXRlU2l6ZSk7CiAKICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IElt
YWdlQnVmZmVyLgotICAgIG1fbGF5ZXJDb250ZXh0ID0gY2Fpcm9fY3JlYXRlKG1fbGF5ZXJJbWFn
ZSk7CisgICAgbV9sYXllckNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9sYXllcklt
YWdlLmdldCgpKSk7CiAKICAgICAvLyBDbGVhciB0aGUgc3VyZmFjZSBmaXJzdC4KLSAgICBjYWly
b19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQsIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKLSAg
ICBjYWlyb19wYWludChtX2xheWVyQ29udGV4dCk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1f
bGF5ZXJDb250ZXh0LCBDQUlST19PUEVSQVRPUl9PVkVSKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0
b3IobV9sYXllckNvbnRleHQuZ2V0KCksIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKKyAgICBjYWly
b19wYWludChtX2xheWVyQ29udGV4dC5nZXQoKSk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKG1f
bGF5ZXJDb250ZXh0LmdldCgpLCBDQUlST19PUEVSQVRPUl9PVkVSKTsKIAogICAgIC8vIERyYXcg
dGhlIHJlY3RhbmdsZS4KICAgICBJbnRSZWN0IHRlbXBsYXRlUmVjdCA9IEludFJlY3QobV9ibHVy
RGlzdGFuY2UsIG1fYmx1ckRpc3RhbmNlLCBzaGFkb3dUZW1wbGF0ZVNpemUud2lkdGgoKSAtIHJh
ZGl1c1R3aWNlLCBzaGFkb3dUZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSByYWRpdXNUd2ljZSk7CiAg
ICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUm91bmRlZFJlY3QodGVtcGxhdGVSZWN0LCB0b3BM
ZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRS
YWRpdXMpOwotICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQobV9sYXllckNvbnRl
eHQsIHBhdGgpOworICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQobV9sYXllckNv
bnRleHQuZ2V0KCksIHBhdGgpOwogCi0gICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKG1fbGF5ZXJD
b250ZXh0LCAwLCAwLCAwLCBjb250ZXh0LT5nZXRBbHBoYSgpKTsKLSAgICBjYWlyb19maWxsKG1f
bGF5ZXJDb250ZXh0KTsKKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEobV9sYXllckNvbnRleHQu
Z2V0KCksIDAsIDAsIDAsIGNvbnRleHQtPmdldEFscGhhKCkpOworICAgIGNhaXJvX2ZpbGwobV9s
YXllckNvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8gQmx1ciB0aGUgaW1hZ2UuCi0gICAgY2Fpcm9f
c3VyZmFjZV9mbHVzaChtX2xheWVySW1hZ2UpOwotICAgIGJsdXJMYXllckltYWdlKGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9sYXllckltYWdlKSwgc2hhZG93VGVtcGxhdGVTaXplLCBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9sYXllckltYWdlKSk7Ci0gICAgY2Fpcm9f
c3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZSk7CisgICAgY2Fpcm9fc3VyZmFjZV9mbHVz
aChtX2xheWVySW1hZ2UuZ2V0KCkpOworICAgIGJsdXJMYXllckltYWdlKGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEobV9sYXllckltYWdlLmdldCgpKSwgc2hhZG93VGVtcGxhdGVTaXplLCBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9sYXllckltYWdlLmdldCgpKSk7CisgICAg
Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZS5nZXQoKSk7CiAKICAgICAvLyBN
YXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAgY2Fpcm9fc2V0X29wZXJh
dG9yKG1fbGF5ZXJDb250ZXh0LCBDQUlST19PUEVSQVRPUl9JTik7Ci0gICAgc2V0U291cmNlUkdC
QUZyb21Db2xvcihtX2xheWVyQ29udGV4dCwgbV9jb2xvcik7Ci0gICAgY2Fpcm9fcGFpbnQobV9s
YXllckNvbnRleHQpOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29udGV4dC5nZXQo
KSwgQ0FJUk9fT1BFUkFUT1JfSU4pOworICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IobV9sYXll
ckNvbnRleHQuZ2V0KCksIG1fY29sb3IpOworICAgIGNhaXJvX3BhaW50KG1fbGF5ZXJDb250ZXh0
LmdldCgpKTsKIAotICAgIGNhaXJvX2Rlc3Ryb3kobV9sYXllckNvbnRleHQpOwotICAgIG1fbGF5
ZXJDb250ZXh0ID0gMDsKKyAgICBtX2xheWVyQ29udGV4dC5jbGVhcigpOwogCiAgICAgLy8gRmls
bCB0aGUgaW50ZXJuYWwgcGFydCBvZiB0aGUgc2hhZG93LgogICAgIHNoYWRvd1JlY3QuaW5mbGF0
ZSgtcmFkaXVzVHdpY2UpOwpAQCAtMjg5LDcgKzI4Niw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6
ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0CiAgICAgRmxvYXRQb2ludCBwaGFzZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0dGVyblRyYW5z
Zm9ybS5tYWtlSWRlbnRpdHkoKTsKLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBt
X2xheWVySW1hZ2UsIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRl
cm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLmdldCgpLCBzaGFkb3dUZW1wbGF0ZVNp
emUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZF
UiwgZGVzdFJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAgdGlsZVJl
Y3QgPSBGbG9hdFJlY3QocmFkaXVzVHdpY2UgKyBib3R0b21MZWZ0UmFkaXVzLndpZHRoKCksIHNo
YWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSAtIHJhZGl1c1R3aWNlLCBzaWRlVGlsZVdpZHRoLCBy
YWRpdXNUd2ljZSk7CkBAIC0yOTcsNyArMjk0LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3
UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QK
ICAgICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpLCBzaGFkb3dSZWN0LnkoKSArIHJhZGl1
c1R3aWNlICsgcmVjdC5oZWlnaHQoKSAtIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSk7CiAg
ICAgZGVzdFJlY3Quc2V0V2lkdGgoc2hhZG93UmVjdC53aWR0aCgpIC0gYm90dG9tTGVmdFJhZGl1
cy53aWR0aCgpIC0gYm90dG9tUmlnaHRSYWRpdXMud2lkdGgoKSAtIG1fYmx1ckRpc3RhbmNlICog
NCk7CiAgICAgcGhhc2UgPSBnZXRQaGFzZShkZXN0UmVjdCwgdGlsZVJlY3QpOwotICAgIGRyYXdQ
YXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZSwgc2hhZG93VGVtcGxhdGVTaXpl
LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIs
IGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNyLCBtX2xheWVySW1h
Z2UuZ2V0KCksIHNoYWRvd1RlbXBsYXRlU2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBDQUlST19PUEVSQVRPUl9PVkVSLCBkZXN0UmVjdCk7CiAKICAgICAvLyBEcmF3IHRo
ZSByaWdodCBzaWRlLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHNoYWRvd1RlbXBsYXRlU2l6
ZS53aWR0aCgpIC0gcmFkaXVzVHdpY2UsIHJhZGl1c1R3aWNlICsgdG9wUmlnaHRSYWRpdXMuaGVp
Z2h0KCksIHJhZGl1c1R3aWNlLCBzaWRlVGlsZVdpZHRoKTsKQEAgLTMwNSw3ICszMDIsNyBAQCB2
b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGRlc3RSZWN0Lm1vdmUoc2hhZG93UmVjdC54KCkg
KyByYWRpdXNUd2ljZSArIHJlY3Qud2lkdGgoKSAtIHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgp
LCBzaGFkb3dSZWN0LnkoKSk7CiAgICAgZGVzdFJlY3Quc2V0SGVpZ2h0KHNoYWRvd1JlY3QuaGVp
Z2h0KCkgLSB0b3BSaWdodFJhZGl1cy5oZWlnaHQoKSAtIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdo
dCgpIC0gbV9ibHVyRGlzdGFuY2UgKiA0KTsKICAgICBwaGFzZSA9IGdldFBoYXNlKGRlc3RSZWN0
LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllcklt
YWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWly
b0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxl
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RS
ZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIGxlZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0
UmVjdCgwLCByYWRpdXNUd2ljZSArIHRvcExlZnRSYWRpdXMuaGVpZ2h0KCksIHJhZGl1c1R3aWNl
LCBzaWRlVGlsZVdpZHRoKTsKQEAgLTMxMywxNCArMzEwLDE0IEBAIHZvaWQgQ29udGV4dFNoYWRv
dzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0LngoKSwgc2hhZG93UmVjdC55KCkp
OwogICAgIGRlc3RSZWN0LnNldEhlaWdodChzaGFkb3dSZWN0LmhlaWdodCgpIC0gdG9wTGVmdFJh
ZGl1cy5oZWlnaHQoKSAtIGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCkgLSBtX2JsdXJEaXN0YW5j
ZSAqIDQpOwogICAgIHBoYXNlID0gRmxvYXRQb2ludChkZXN0UmVjdC54KCkgLSB0aWxlUmVjdC54
KCksIGRlc3RSZWN0LnkoKSAtIHRpbGVSZWN0LnkoKSk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJv
Q29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOwor
ICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hh
ZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJP
X09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERyYXcgdGhlIHRvcCBsZWZ0IGNv
cm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCByYWRpdXNUd2ljZSArIHRvcExl
ZnRSYWRpdXMud2lkdGgoKSwgcmFkaXVzVHdpY2UgKyB0b3BMZWZ0UmFkaXVzLmhlaWdodCgpKTsK
ICAgICBkZXN0UmVjdCA9IHRpbGVSZWN0OwogICAgIGRlc3RSZWN0Lm1vdmUoc2hhZG93UmVjdC54
KCksIHNoYWRvd1JlY3QueSgpKTsKICAgICBwaGFzZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxl
UmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLCBz
aGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRl
eHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsK
IAogICAgIC8vIERyYXcgdGhlIHRvcCByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9h
dFJlY3Qoc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCkgLSByYWRpdXNUd2ljZSAtIHRvcFJpZ2h0
UmFkaXVzLndpZHRoKCksIDAsIHJhZGl1c1R3aWNlICsgdG9wUmlnaHRSYWRpdXMud2lkdGgoKSwK
QEAgLTMyOCw3ICszMjUsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGRlc3RSZWN0
ID0gdGlsZVJlY3Q7CiAgICAgZGVzdFJlY3QubW92ZShzaGFkb3dSZWN0LngoKSArIHJlY3Qud2lk
dGgoKSAtIHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpICsgcmFkaXVzVHdpY2UsIHNoYWRvd1Jl
Y3QueSgpKTsKICAgICBwaGFzZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7Ci0gICAg
ZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dUZW1wbGF0
ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BFUkFUT1Jf
T1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIG1fbGF5
ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAgIC8vIERy
YXcgdGhlIGJvdHRvbSByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qoc2hh
ZG93VGVtcGxhdGVTaXplLndpZHRoKCkgLSByYWRpdXNUd2ljZSAtIGJvdHRvbVJpZ2h0UmFkaXVz
LndpZHRoKCksCkBAIC0zMzgsNyArMzM1LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVj
dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAg
ICBkZXN0UmVjdC5tb3ZlKHNoYWRvd1JlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gc2hhZG93VGVt
cGxhdGVTaXplLndpZHRoKCkgKyByYWRpdXNUd2ljZSwKICAgICAgICAgICAgICAgICAgIHNoYWRv
d1JlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAtIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSAr
IHJhZGl1c1R3aWNlKTsKICAgICBwaGFzZSA9IGdldFBoYXNlKGRlc3RSZWN0LCB0aWxlUmVjdCk7
Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXllckltYWdlLCBzaGFkb3dU
ZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgQ0FJUk9fT1BF
UkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3Is
IG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRlc3RSZWN0KTsKIAogICAg
IC8vIERyYXcgdGhlIGJvdHRvbSBsZWZ0IGNvcm5lci4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCBzaGFkb3dUZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSByYWRpdXNUd2ljZSAtIGJvdHRvbUxl
ZnRSYWRpdXMuaGVpZ2h0KCksCkBAIC0zNDYsNyArMzQzLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93
OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHJlY3QKICAgICBkZXN0UmVjdCA9IHRpbGVSZWN0OwogICAgIGRlc3RSZWN0Lm1vdmUoc2hhZG93
UmVjdC54KCksIHNoYWRvd1JlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAtIHNoYWRvd1RlbXBsYXRl
U2l6ZS5oZWlnaHQoKSArIHJhZGl1c1R3aWNlKTsKICAgICBwaGFzZSA9IGdldFBoYXNlKGRlc3RS
ZWN0LCB0aWxlUmVjdCk7Ci0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgbV9sYXll
ckltYWdlLCBzaGFkb3dUZW1wbGF0ZVNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgQ0FJUk9fT1BFUkFUT1JfT1ZFUiwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9D
YWlyb0NvbnRleHQoY3IsIG1fbGF5ZXJJbWFnZS5nZXQoKSwgc2hhZG93VGVtcGxhdGVTaXplLCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIENBSVJPX09QRVJBVE9SX09WRVIsIGRl
c3RSZWN0KTsKIAogICAgIC8vIFNjaGVkdWxlIGEgcHVyZ2Ugb2YgdGhlIHNjcmF0Y2ggYnVmZmVy
LgogICAgIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCA1OGE3ZmQy
Li5hZjYyYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTg4LDEwICs4OCwxMCBAQCBzdGF0aWMgdm9pZCBkcmF3
R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFBvaW50JgogICAgIGNhaXJvX3RleHRfZXh0ZW50c190IGV4dGVudHM7CiAgICAgY2Fpcm9fc2Nh
bGVkX2ZvbnRfZ2x5cGhfZXh0ZW50cyhmb250LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCks
IGdseXBocywgbnVtR2x5cGhzLCAmZXh0ZW50cyk7CiAgICAgRmxvYXRSZWN0IGZvbnRFeHRlbnRz
UmVjdChwb2ludC54KCksIHBvaW50LnkoKSAtIGV4dGVudHMuaGVpZ2h0LCBleHRlbnRzLndpZHRo
LCBleHRlbnRzLmhlaWdodCk7Ci0gICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCk7Ci0gICAg
aWYgKHNoYWRvd0NvbnRleHQpIHsKLSAgICAgICAgcHJlcGFyZUNvbnRleHRGb3JHbHlwaERyYXdp
bmcoc2hhZG93Q29udGV4dCwgZm9udCwgcG9pbnQpOwotICAgICAgICBkcmF3R2x5cGhzVG9Db250
ZXh0KHNoYWRvd0NvbnRleHQsIGZvbnQsIGdseXBocywgbnVtR2x5cGhzKTsKKyAgICBSZWZQdHI8
Y2Fpcm9fdD4gc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihncmFwaGlj
c0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCk7CisgICAgaWYgKHNoYWRvd0NvbnRleHQuZ2V0KCkp
IHsKKyAgICAgICAgcHJlcGFyZUNvbnRleHRGb3JHbHlwaERyYXdpbmcoc2hhZG93Q29udGV4dC5n
ZXQoKSwgZm9udCwgcG9pbnQpOworICAgICAgICBkcmF3R2x5cGhzVG9Db250ZXh0KHNoYWRvd0Nv
bnRleHQuZ2V0KCksIGZvbnQsIGdseXBocywgbnVtR2x5cGhzKTsKICAgICAgICAgc2hhZG93LT5l
bmRTaGFkb3dMYXllcihncmFwaGljc0NvbnRleHQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAppbmRleCA3NTdlNDc3Li5lN2RlMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC0xNjcsMTkgKzE2NywxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJh
d1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYXRoRHJhd2luZ1N0eWxlIGRy
YQogICAgICAgICBzb2xpZEZpZ3VyZUV4dGVudHMudW5pdGUoZmlsbEV4dGVudHMpOwogICAgIH0K
IAotICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIo
Y29udGV4dCwgc29saWRGaWd1cmVFeHRlbnRzKTsKLSAgICBpZiAoIXNoYWRvd0NvbnRleHQpCisg
ICAgUmVmUHRyPGNhaXJvX3Q+IHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIoY29udGV4dCwgc29saWRGaWd1cmVFeHRlbnRzKTsKKyAgICBpZiAoIXNoYWRvd0NvbnRleHQu
Z2V0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNvcHkg
dGhlIGNvbnRleHQgcHJvcGVydGllcyB0byB0aGUgbmV3IHNoYWRvdwogICAgIC8vIGNvbnRleHQg
dG8gcHJlc2VydmUgdGhpbmdzIHN1Y2ggYXMgdGhlIGZpbGwgcnVsZSBhbmQgc3Ryb2tlIHdpZHRo
LgotICAgIGNvcHlDb250ZXh0UHJvcGVydGllcyhjYWlyb0NvbnRleHQsIHNoYWRvd0NvbnRleHQp
OwotICAgIGNhaXJvX2FwcGVuZF9wYXRoKHNoYWRvd0NvbnRleHQsIHBhdGguZ2V0KCkpOworICAg
IGNvcHlDb250ZXh0UHJvcGVydGllcyhjYWlyb0NvbnRleHQsIHNoYWRvd0NvbnRleHQuZ2V0KCkp
OworICAgIGNhaXJvX2FwcGVuZF9wYXRoKHNoYWRvd0NvbnRleHQuZ2V0KCksIHBhdGguZ2V0KCkp
OwogCiAgICAgaWYgKGRyYXdpbmdTdHlsZSAmIEZpbGwpCi0gICAgICAgIHNldFBsYXRmb3JtRmls
bChjb250ZXh0LCBzaGFkb3dDb250ZXh0KTsKKyAgICAgICAgc2V0UGxhdGZvcm1GaWxsKGNvbnRl
eHQsIHNoYWRvd0NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChkcmF3aW5nU3R5bGUgJiBTdHJva2Up
Ci0gICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlKGNvbnRleHQsIHNoYWRvd0NvbnRleHQpOworICAg
ICAgICBzZXRQbGF0Zm9ybVN0cm9rZShjb250ZXh0LCBzaGFkb3dDb250ZXh0LmdldCgpKTsKIAog
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCmluZGV4IDRmNGIyYjUuLjhhYTY1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC01
NSwxMSArNTUsMTAgQEAgc3RhdGljIGlubGluZSBjYWlyb19zdXJmYWNlX3QqIGNvcHlTdXJmYWNl
KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKICAgICBpbnQgaGVpZ2h0ID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOwogICAgIGNhaXJvX3N1cmZhY2VfdCogbmV3c3Vy
ZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7
CiAKLSAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShuZXdzdXJmYWNlKTsKLSAgICBjYWly
b19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwotICAgIGNhaXJvX3NldF9v
cGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICBjYWlyb19wYWludChjcik7
Ci0gICAgY2Fpcm9fZGVzdHJveShjcik7CisgICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRS
ZWYoY2Fpcm9fY3JlYXRlKG5ld3N1cmZhY2UpKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZh
Y2UoY3IuZ2V0KCksIHN1cmZhY2UsIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5n
ZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBjYWlyb19wYWludChjci5nZXQoKSk7
CiAKICAgICByZXR1cm4gbmV3c3VyZmFjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggZDNhNTJjZS4uY2I0
YzNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VDYWlyby5jcHAKQEAgLTEzOSwxMiArMTM5LDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29u
c3QgRmxvCiAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dC0+Y29udGV4dFNoYWRv
dygpOwogICAgIEFTU0VSVChzaGFkb3cpOwogICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250
ZXh0U2hhZG93OjpOb1NoYWRvdykgewotICAgICAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0g
c2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIGRzdFJlY3QpOworICAgICAgICBSZWZQ
dHI8Y2Fpcm9fdD4gc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjb250
ZXh0LCBkc3RSZWN0KTsKICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKLSAgICAgICAgICAg
IGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDb250ZXh0LCBkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkp
OwotICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZShzaGFkb3dDb250ZXh0LCBwYXR0ZXJuKTsK
LSAgICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShzaGFkb3dDb250ZXh0LCAwLCAwLCBkc3RSZWN0
LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgY2Fpcm9fZmlsbChzaGFk
b3dDb250ZXh0KTsKKyAgICAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDb250ZXh0Lmdl
dCgpLCBkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOworICAgICAgICAgICAgY2Fpcm9fc2V0X3Nv
dXJjZShzaGFkb3dDb250ZXh0LmdldCgpLCBwYXR0ZXJuKTsKKyAgICAgICAgICAgIGNhaXJvX3Jl
Y3RhbmdsZShzaGFkb3dDb250ZXh0LmdldCgpLCAwLCAwLCBkc3RSZWN0LndpZHRoKCksIGRzdFJl
Y3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgY2Fpcm9fZmlsbChzaGFkb3dDb250ZXh0LmdldCgp
KTsKICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvRm9udEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9u
dEd0ay5jcHAKaW5kZXggOTc3YWE2Mi4uNmRhOGIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcApAQCAtMjQ1LDEwICsyNDUsMTAgQEAg
c3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRQb2ludCYKIAogICAgIEZsb2F0UmVjdCBleHRlbnRzKGdldFBhbmdv
UmVnaW9uRXh0ZW50cyhyZW5kZXJSZWdpb24pKTsKICAgICBleHRlbnRzLnNldExvY2F0aW9uKEZs
b2F0UG9pbnQocG9pbnQueCgpLCBwb2ludC55KCkgLSBleHRlbnRzLmhlaWdodCgpKSk7Ci0gICAg
Y2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihncmFwaGlj
c0NvbnRleHQsIGV4dGVudHMpOworICAgIFJlZlB0cjxjYWlyb190PiBzaGFkb3dDb250ZXh0ID0g
c2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGdyYXBoaWNzQ29udGV4dCwgZXh0ZW50cyk7CiAgICAg
aWYgKHNoYWRvd0NvbnRleHQpIHsKLSAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRl
eHQsIHBvaW50LngoKSwgcG9pbnQueSgpKTsKLSAgICAgICAgcGFuZ29fY2Fpcm9fc2hvd19sYXlv
dXRfbGluZShzaGFkb3dDb250ZXh0LCBsYXlvdXRMaW5lKTsKKyAgICAgICAgY2Fpcm9fdHJhbnNs
YXRlKHNoYWRvd0NvbnRleHQuZ2V0KCksIHBvaW50LngoKSwgcG9pbnQueSgpKTsKKyAgICAgICAg
cGFuZ29fY2Fpcm9fc2hvd19sYXlvdXRfbGluZShzaGFkb3dDb250ZXh0LmdldCgpLCBsYXlvdXRM
aW5lKTsKIAogICAgICAgICAvLyBXZSBuZWVkIHRoZSBjbGlwcGluZyByZWdpb24gdG8gYmUgYWN0
aXZlIHdoZW4gd2UgYmxpdCB0aGUgYmx1cnJlZCBzaGFkb3cgYmFjaywKICAgICAgICAgLy8gYmVj
YXVzZSB3ZSBkb24ndCB3YW50IGFueSBiaXRzIGFuZCBwaWVjZXMgb2YgY2hhcmFjdGVycyBvdXQg
b2YgcmFuZ2UgdG8gYmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89184</attachid>
            <date>2011-04-12 03:34:02 -0700</date>
            <delta_ts>2011-04-13 11:12:25 -0700</delta_ts>
            <desc>Proposed Patch6</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>5861</size>
            <attacher name="Joone Hur">joone.hur</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNWY2NmRlLi43NjQ5ODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDQtMTIgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCB1
c2Ugb2YgcmF3IHBvaW50ZXJzIHRvIFJlZlB0ciBpbiB1c2luZyBDYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3MTcKKworICAgICAgICBObyBu
ZXcgdGVzdHMgYWRkZWQgYmVjYXVlIG9mIGp1c3QgcmVwbGFjaW5nIHJhdyBwb2ludGVycyB3aXRo
IHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgcGF0aFN1cmZhY2Ug
ZnVuY3Rpb24gaXMgbmV3bHkgYWRkZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGljIHZhcmlhYmxl
LAorICAgICAgICB3aGljaCBhbGxvd3MgdG8gYmUgdGhyZWFkc2FmZS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oOiBVc2UgYSBSZWZQdHI8Y2Fpcm9fdD4g
aW5zdGVhZCBvZiByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OnBhdGhTdXJmYWNlKTog
QWRkZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGljIGNhaXJvX3N1cmZhY2VfdC4KKyAgICAgICAg
KFdlYkNvcmU6OkNhaXJvUGF0aDo6Q2Fpcm9QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
UGF0aDo6fkNhaXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlyb1BhdGg6OmNvbnRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5j
cHA6IFVzZSBhIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGluc3RlYWQgb2YgcmF3IHBvaW50ZXIu
CisgICAgICAgIChXZWJDb3JlOjpwdXJnZVNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHA6IFVzZSBhIFJlZlB0cjxjYWlyb190PiBpbnN0ZWFkIG9mIHJh
dyBwb2ludGVyLgorICAgICAgICAoY29weVN1cmZhY2UpOgorCiAyMDExLTA0LTA2ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBN
YXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvUGF0aC5oCmluZGV4IGRhN2FmZmIuLjA4ZDQyNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJA
Y29sbGFib3JhLmNvLnVrPgogICAgIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICAg
IENvcHlyaWdodCAoQykgMjAxMSBDb2xsYWJvcmEgTHRkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yMSwyOCArMjIsMzggQEAKICNpZm5kZWYgQ2Fpcm9QYXRoX2gKICNkZWZpbmUgQ2Fpcm9QYXRo
X2gKIAorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBwYXRoU3VyZmFjZSgp
Cit7CisgICAgc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IDA7CisgICAgaWYgKHN1
cmZhY2UpCisgICAgICAgIHJldHVybiBzdXJmYWNlOworCisgICAgc3VyZmFjZSA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BOCwgMSwgMSk7CisgCisgICAgcmV0dXJu
IHN1cmZhY2U7Cit9CisKIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHNpbmNlIGNhaXJvX3BhdGhfZml4
ZWRfdCBpc24ndCBleHBvc2VkIGluIENhaXJvJ3MgcHVibGljIEFQSS4KIGNsYXNzIENhaXJvUGF0
aCB7CiBwdWJsaWM6CiAgICAgQ2Fpcm9QYXRoKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBjYWly
b19zdXJmYWNlX3QqIHBhdGhTdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJ
Uk9fRk9STUFUX0E4LCAxLCAxKTsKLSAgICAgICAgbV9jciA9IGNhaXJvX2NyZWF0ZShwYXRoU3Vy
ZmFjZSk7CisgICAgICAgIG1fY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUocGF0aFN1cmZhY2Uo
KSkpOwogICAgIH0KIAogICAgIH5DYWlyb1BhdGgoKQogICAgIHsKLSAgICAgICAgY2Fpcm9fZGVz
dHJveShtX2NyKTsKICAgICB9CiAKLSAgICBjYWlyb190KiBjb250ZXh0KCkgeyByZXR1cm4gbV9j
cjsgfQorICAgIGNhaXJvX3QqIGNvbnRleHQoKSB7IHJldHVybiBtX2NyLmdldCgpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgY2Fpcm9fdCogbV9jcjsKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gbV9jcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCmluZGV4
IDBmOTBjZTQuLmQ5NjhlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcApAQCAtNDIsMTEg
KzQyLDEwIEBAIHVzaW5nIFdURjo6bWF4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBjYWlyb19zdXJmYWNlX3QqIHNjcmF0Y2hCdWZmZXIgPSAwOworc3RhdGljIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGdTY3JhdGNoQnVmZmVyOwogc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVm
ZmVyKCkKIHsKLSAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc2NyYXRjaEJ1ZmZlcik7Ci0gICAg
c2NyYXRjaEJ1ZmZlciA9IDA7CisgICAgZ1NjcmF0Y2hCdWZmZXIuY2xlYXIoKTsKIH0KIAogLy8g
Q29udGV4dFNoYWRvdyBuZWVkcyBhIHNjcmF0Y2ggaW1hZ2UgYXMgdGhlIGJ1ZmZlciBmb3IgdGhl
IGJsdXIgZmlsdGVyLgpAQCAtNjgsMjAgKzY3LDIwIEBAIHN0YXRpYyBjYWlyb19zdXJmYWNlX3Qq
IGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpbnQgd2lkdGgg
PSBzaXplLndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgaW50
IHNjcmF0Y2hXaWR0aCA9IHNjcmF0Y2hCdWZmZXIgPyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93
aWR0aChzY3JhdGNoQnVmZmVyKSA6IDA7Ci0gICAgaW50IHNjcmF0Y2hIZWlnaHQgPSBzY3JhdGNo
QnVmZmVyID8gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHNjcmF0Y2hCdWZmZXIpIDog
MDsKKyAgICBpbnQgc2NyYXRjaFdpZHRoID0gZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkgPyBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF93aWR0aChnU2NyYXRjaEJ1ZmZlci5nZXQoKSkgOiAwOworICAgIGlu
dCBzY3JhdGNoSGVpZ2h0ID0gZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkgPyBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9oZWlnaHQoZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkpIDogMDsKIAogICAgIC8vIFdlIGRv
IG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZmZXIgaWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlz
IGxhcmdlIGVub3VnaC4KLSAgICBpZiAoc2NyYXRjaEJ1ZmZlciAmJiBzY3JhdGNoV2lkdGggPj0g
d2lkdGggJiYgc2NyYXRjaEhlaWdodCA+PSBoZWlnaHQpCi0gICAgICAgIHJldHVybiBzY3JhdGNo
QnVmZmVyOworICAgIGlmIChnU2NyYXRjaEJ1ZmZlci5nZXQoKSAmJiBzY3JhdGNoV2lkdGggPj0g
d2lkdGggJiYgc2NyYXRjaEhlaWdodCA+PSBoZWlnaHQpCisgICAgICAgIHJldHVybiBnU2NyYXRj
aEJ1ZmZlci5nZXQoKTsKIAogICAgIHB1cmdlU2NyYXRjaEJ1ZmZlcigpOwogCiAgICAgLy8gUm91
bmQgdG8gdGhlIG5lYXJlc3QgMzIgcGl4ZWxzIHNvIHdlIGRvIG5vdCBncm93IHRoZSBidWZmZXIg
Zm9yIHNpbWlsYXIgc2l6ZWQgcmVxdWVzdHMuCiAgICAgd2lkdGggPSAoMSArICh3aWR0aCA+PiA1
KSkgPDwgNTsKICAgICBoZWlnaHQgPSAoMSArIChoZWlnaHQgPj4gNSkpIDw8IDU7Ci0gICAgc2Ny
YXRjaEJ1ZmZlciA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdC
MzIsIHdpZHRoLCBoZWlnaHQpOwotICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOworICAgIGdTY3Jh
dGNoQnVmZmVyID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9S
TUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybiBnU2NyYXRjaEJ1ZmZlci5n
ZXQoKTsKIH0KIAogUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggNGY0YjJiNS4uOGFhNjUzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKQEAgLTU1LDExICs1NSwxMCBAQCBzdGF0aWMgaW5saW5lIGNhaXJvX3N1cmZh
Y2VfdCogY29weVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogICAgIGludCBoZWln
aHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSk7CiAgICAgY2Fpcm9f
c3VyZmFjZV90KiBuZXdzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKG5ld3N1
cmZhY2UpOwotICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7
Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwotICAg
IGNhaXJvX3BhaW50KGNyKTsKLSAgICBjYWlyb19kZXN0cm95KGNyKTsKKyAgICBSZWZQdHI8Y2Fp
cm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobmV3c3VyZmFjZSkpOworICAgIGNhaXJv
X3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9f
c2V0X29wZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJv
X3BhaW50KGNyLmdldCgpKTsKIAogICAgIHJldHVybiBuZXdzdXJmYWNlOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89407</attachid>
            <date>2011-04-13 11:12:25 -0700</date>
            <delta_ts>2011-04-14 00:38:57 -0700</delta_ts>
            <desc>Proposed Patch7</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>7262</size>
            <attacher name="Joone Hur">joone.hur</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNWY2NmRlLi5iMDdlNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDQtMTMgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCB1
c2Ugb2YgcmF3IHBvaW50ZXJzIHRvIFJlZlB0ciBpbiB1c2luZyBDYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3MTcKKworICAgICAgICBObyBu
ZXcgdGVzdHMgYWRkZWQgYmVjYXVlIG9mIGp1c3QgcmVwbGFjaW5nIHJhdyBwb2ludGVycyB3aXRo
IHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgc3RhdGljIGluaXRp
YWlsaXplciBpcyBhZGRlZCBmb3IgdGhlIHBhdGhTdXJmYWNlLCB3aGljaCBndWFyYW50ZWVzIHRo
cmVhZCBzYWZldHkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZCBDYWly
b1BhdGguY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5j
cHA6IEFkZGVkIHRvIGluaXRpdGFsaXplIHRoZSBzdGF0aWMgY2xhc3MgbWVtYmVyLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oOiBVc2UgYSBSZWZQdHI8Y2Fp
cm9fdD4gaW5zdGVhZCBvZiByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0
aDo6Q2Fpcm9QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvUGF0aDo6fkNhaXJvUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWlyb1BhdGg6OmNvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHA6IFVzZSBhIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IGluc3RlYWQgb2YgcmF3IHBvaW50ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpwdXJnZVNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2NyYXRjaEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHA6IFVzZSBhIFJlZlB0cjxjYWlyb190PiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVyLgorICAgICAg
ICAoY29weVN1cmZhY2UpOgorCiAyMDExLTA0LTA2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ZmJiMTIxLi4zMGYzZjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM2ODIsNiArMzY4Miw3IEBAIHdlYmNvcmVndGtf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRnJhbWVHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1BhdGguaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9QYXRoLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1BhdGguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMDU2YTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb1BhdGguY3BwCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEx
IENvbGxhYm9yYSBMdGQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2Fpcm9Q
YXRoLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2Fpcm9fc3VyZmFjZV90KiBDYWlyb1Bh
dGg6Om1fcGF0aFN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JN
QVRfQTgsIDEsIDEpOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvUGF0aC5oCmluZGV4IGRhN2FmZmIuLjQwOGI2M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvUGF0aC5oCkBAIC0y
MSw2ICsyMSw3IEBACiAjaWZuZGVmIENhaXJvUGF0aF9oCiAjZGVmaW5lIENhaXJvUGF0aF9oCiAK
KyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTMwLDE5ICszMSwxOCBAQCBjbGFzcyBDYWlyb1BhdGggewogcHVibGlj
OgogICAgIENhaXJvUGF0aCgpCiAgICAgewotICAgICAgICBzdGF0aWMgY2Fpcm9fc3VyZmFjZV90
KiBwYXRoU3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9B
OCwgMSwgMSk7Ci0gICAgICAgIG1fY3IgPSBjYWlyb19jcmVhdGUocGF0aFN1cmZhY2UpOworICAg
ICAgICBtX2NyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fcGF0aFN1cmZhY2UpKTsKICAgICB9
CiAKICAgICB+Q2Fpcm9QYXRoKCkKICAgICB7Ci0gICAgICAgIGNhaXJvX2Rlc3Ryb3kobV9jcik7
CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY29udGV4dCgpIHsgcmV0dXJuIG1fY3I7IH0KKyAgICBj
YWlyb190KiBjb250ZXh0KCkgeyByZXR1cm4gbV9jci5nZXQoKTsgfQogCiBwcml2YXRlOgotICAg
IGNhaXJvX3QqIG1fY3I7CisgICAgUmVmUHRyPGNhaXJvX3Q+IG1fY3I7CisgICAgc3RhdGljIGNh
aXJvX3N1cmZhY2VfdCogbV9wYXRoU3VyZmFjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nv
bnRleHRTaGFkb3dDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCmluZGV4IDBmOTBjZTQuLmQ5NjhlZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFk
b3dDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q29udGV4dFNoYWRvd0NhaXJvLmNwcApAQCAtNDIsMTEgKzQyLDEwIEBAIHVzaW5nIFdURjo6bWF4
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjYWlyb19zdXJmYWNlX3QqIHNjcmF0
Y2hCdWZmZXIgPSAwOworc3RhdGljIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGdTY3JhdGNoQnVm
ZmVyOwogc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCkKIHsKLSAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3koc2NyYXRjaEJ1ZmZlcik7Ci0gICAgc2NyYXRjaEJ1ZmZlciA9IDA7CisgICAg
Z1NjcmF0Y2hCdWZmZXIuY2xlYXIoKTsKIH0KIAogLy8gQ29udGV4dFNoYWRvdyBuZWVkcyBhIHNj
cmF0Y2ggaW1hZ2UgYXMgdGhlIGJ1ZmZlciBmb3IgdGhlIGJsdXIgZmlsdGVyLgpAQCAtNjgsMjAg
KzY3LDIwIEBAIHN0YXRpYyBjYWlyb19zdXJmYWNlX3QqIGdldFNjcmF0Y2hCdWZmZXIoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpbnQgd2lkdGggPSBzaXplLndpZHRoKCk7CiAgICAgaW50
IGhlaWdodCA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgaW50IHNjcmF0Y2hXaWR0aCA9IHNjcmF0Y2hC
dWZmZXIgPyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzY3JhdGNoQnVmZmVyKSA6IDA7
Ci0gICAgaW50IHNjcmF0Y2hIZWlnaHQgPSBzY3JhdGNoQnVmZmVyID8gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfaGVpZ2h0KHNjcmF0Y2hCdWZmZXIpIDogMDsKKyAgICBpbnQgc2NyYXRjaFdpZHRo
ID0gZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkgPyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChn
U2NyYXRjaEJ1ZmZlci5nZXQoKSkgOiAwOworICAgIGludCBzY3JhdGNoSGVpZ2h0ID0gZ1NjcmF0
Y2hCdWZmZXIuZ2V0KCkgPyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoZ1NjcmF0Y2hC
dWZmZXIuZ2V0KCkpIDogMDsKIAogICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRo
ZSBidWZmZXIgaWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KLSAgICBpZiAo
c2NyYXRjaEJ1ZmZlciAmJiBzY3JhdGNoV2lkdGggPj0gd2lkdGggJiYgc2NyYXRjaEhlaWdodCA+
PSBoZWlnaHQpCi0gICAgICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOworICAgIGlmIChnU2NyYXRj
aEJ1ZmZlci5nZXQoKSAmJiBzY3JhdGNoV2lkdGggPj0gd2lkdGggJiYgc2NyYXRjaEhlaWdodCA+
PSBoZWlnaHQpCisgICAgICAgIHJldHVybiBnU2NyYXRjaEJ1ZmZlci5nZXQoKTsKIAogICAgIHB1
cmdlU2NyYXRjaEJ1ZmZlcigpOwogCiAgICAgLy8gUm91bmQgdG8gdGhlIG5lYXJlc3QgMzIgcGl4
ZWxzIHNvIHdlIGRvIG5vdCBncm93IHRoZSBidWZmZXIgZm9yIHNpbWlsYXIgc2l6ZWQgcmVxdWVz
dHMuCiAgICAgd2lkdGggPSAoMSArICh3aWR0aCA+PiA1KSkgPDwgNTsKICAgICBoZWlnaHQgPSAo
MSArIChoZWlnaHQgPj4gNSkpIDw8IDU7Ci0gICAgc2NyYXRjaEJ1ZmZlciA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoLCBoZWlnaHQpOwotICAg
IHJldHVybiBzY3JhdGNoQnVmZmVyOworICAgIGdTY3JhdGNoQnVmZmVyID0gYWRvcHRSZWYoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdo
dCkpOworICAgIHJldHVybiBnU2NyYXRjaEJ1ZmZlci5nZXQoKTsKIH0KIAogUGxhdGZvcm1Db250
ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5k
ZXggNGY0YjJiNS4uOGFhNjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTU1LDExICs1
NSwxMCBAQCBzdGF0aWMgaW5saW5lIGNhaXJvX3N1cmZhY2VfdCogY29weVN1cmZhY2UoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlKQogICAgIGludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9oZWlnaHQoc3VyZmFjZSk7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBuZXdzdXJmYWNlID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIAotICAg
IGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKG5ld3N1cmZhY2UpOwotICAgIGNhaXJvX3NldF9z
b3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9y
KGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwotICAgIGNhaXJvX3BhaW50KGNyKTsKLSAgICBj
YWlyb19kZXN0cm95KGNyKTsKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWly
b19jcmVhdGUobmV3c3VyZmFjZSkpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5n
ZXQoKSwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdldCgpLCBD
QUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKIAogICAg
IHJldHVybiBuZXdzdXJmYWNlOwogfQo=
</data>
<flag name="review"
          id="82073"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89545</attachid>
            <date>2011-04-14 00:38:57 -0700</date>
            <delta_ts>2011-04-14 19:12:43 -0700</delta_ts>
            <desc>Proposed Patch8</desc>
            <filename>cairo.patch</filename>
            <type>text/plain</type>
            <size>3917</size>
            <attacher name="Joone Hur">joone.hur</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZWNmNWU5Li44NTY4OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDQtMTMgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCB1
c2Ugb2YgcmF3IHBvaW50ZXJzIHRvIFJlZlB0ciBpbiB1c2luZyBDYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3MTcKKworICAgICAgICBObyBu
ZXcgdGVzdHMgYWRkZWQgYmVjYXVlIG9mIGp1c3QgcmVwbGFjaW5nIHJhdyBwb2ludGVycyB3aXRo
IHNtYXJ0IHBvaW50ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29u
dGV4dFNoYWRvd0NhaXJvLmNwcDogVXNlIGEgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW5zdGVh
ZCBvZiByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OnB1cmdlU2NyYXRjaEJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDogVXNlIGEgUmVmUHRyPGNhaXJv
X3Q+IGluc3RlYWQgb2YgcmF3IHBvaW50ZXIuCisgICAgICAgIChjb3B5U3VyZmFjZSk6CisKIDIw
MTEtMDQtMTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZiBHYXJlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCmluZGV4IDBmOTBj
ZTQuLmQ5NjhlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcApAQCAtNDIsMTEgKzQyLDEw
IEBAIHVzaW5nIFdURjo6bWF4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjYWly
b19zdXJmYWNlX3QqIHNjcmF0Y2hCdWZmZXIgPSAwOworc3RhdGljIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IGdTY3JhdGNoQnVmZmVyOwogc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCkK
IHsKLSAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc2NyYXRjaEJ1ZmZlcik7Ci0gICAgc2NyYXRj
aEJ1ZmZlciA9IDA7CisgICAgZ1NjcmF0Y2hCdWZmZXIuY2xlYXIoKTsKIH0KIAogLy8gQ29udGV4
dFNoYWRvdyBuZWVkcyBhIHNjcmF0Y2ggaW1hZ2UgYXMgdGhlIGJ1ZmZlciBmb3IgdGhlIGJsdXIg
ZmlsdGVyLgpAQCAtNjgsMjAgKzY3LDIwIEBAIHN0YXRpYyBjYWlyb19zdXJmYWNlX3QqIGdldFNj
cmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpbnQgd2lkdGggPSBzaXpl
LndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgaW50IHNjcmF0
Y2hXaWR0aCA9IHNjcmF0Y2hCdWZmZXIgPyBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChz
Y3JhdGNoQnVmZmVyKSA6IDA7Ci0gICAgaW50IHNjcmF0Y2hIZWlnaHQgPSBzY3JhdGNoQnVmZmVy
ID8gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHNjcmF0Y2hCdWZmZXIpIDogMDsKKyAg
ICBpbnQgc2NyYXRjaFdpZHRoID0gZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkgPyBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF93aWR0aChnU2NyYXRjaEJ1ZmZlci5nZXQoKSkgOiAwOworICAgIGludCBzY3Jh
dGNoSGVpZ2h0ID0gZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkgPyBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoZ1NjcmF0Y2hCdWZmZXIuZ2V0KCkpIDogMDsKIAogICAgIC8vIFdlIGRvIG5vdCBu
ZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZmZXIgaWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGxhcmdl
IGVub3VnaC4KLSAgICBpZiAoc2NyYXRjaEJ1ZmZlciAmJiBzY3JhdGNoV2lkdGggPj0gd2lkdGgg
JiYgc2NyYXRjaEhlaWdodCA+PSBoZWlnaHQpCi0gICAgICAgIHJldHVybiBzY3JhdGNoQnVmZmVy
OworICAgIGlmIChnU2NyYXRjaEJ1ZmZlci5nZXQoKSAmJiBzY3JhdGNoV2lkdGggPj0gd2lkdGgg
JiYgc2NyYXRjaEhlaWdodCA+PSBoZWlnaHQpCisgICAgICAgIHJldHVybiBnU2NyYXRjaEJ1ZmZl
ci5nZXQoKTsKIAogICAgIHB1cmdlU2NyYXRjaEJ1ZmZlcigpOwogCiAgICAgLy8gUm91bmQgdG8g
dGhlIG5lYXJlc3QgMzIgcGl4ZWxzIHNvIHdlIGRvIG5vdCBncm93IHRoZSBidWZmZXIgZm9yIHNp
bWlsYXIgc2l6ZWQgcmVxdWVzdHMuCiAgICAgd2lkdGggPSAoMSArICh3aWR0aCA+PiA1KSkgPDwg
NTsKICAgICBoZWlnaHQgPSAoMSArIChoZWlnaHQgPj4gNSkpIDw8IDU7Ci0gICAgc2NyYXRjaEJ1
ZmZlciA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdp
ZHRoLCBoZWlnaHQpOwotICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOworICAgIGdTY3JhdGNoQnVm
ZmVyID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FS
R0IzMiwgd2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybiBnU2NyYXRjaEJ1ZmZlci5nZXQoKTsK
IH0KIAogUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAKaW5kZXggNGY0YjJiNS4uOGFhNjUzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHAKQEAgLTU1LDExICs1NSwxMCBAQCBzdGF0aWMgaW5saW5lIGNhaXJvX3N1cmZhY2VfdCog
Y29weVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogICAgIGludCBoZWlnaHQgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSk7CiAgICAgY2Fpcm9fc3VyZmFj
ZV90KiBuZXdzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKIAotICAgIGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKG5ld3N1cmZhY2Up
OwotICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7Ci0gICAg
Y2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwotICAgIGNhaXJv
X3BhaW50KGNyKTsKLSAgICBjYWlyb19kZXN0cm95KGNyKTsKKyAgICBSZWZQdHI8Y2Fpcm9fdD4g
Y3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobmV3c3VyZmFjZSkpOworICAgIGNhaXJvX3NldF9z
b3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29w
ZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3BhaW50
KGNyLmdldCgpKTsKIAogICAgIHJldHVybiBuZXdzdXJmYWNlOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>