<?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>80400</bug_id>
          
          <creation_ts>2012-03-06 01:58:01 -0800</creation_ts>
          <short_desc>[Qt] Set WebCore imagedecoders as default, add fallback to QImageDecoder</short_desc>
          <delta_ts>2012-05-30 23:45:39 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>Qt</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>32410</dependson>
    
    <dependson>80398</dependson>
    
    <dependson>85628</dependson>
    
    <dependson>85882</dependson>
    
    <dependson>86346</dependson>
    
    <dependson>87849</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Horvath">zoltan</reporter>
          <assigned_to name="Zoltan Horvath">zoltan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hausmann</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>ossy</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>571658</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-06 01:58:01 -0800</bug_when>
    <thetext>Set WebCore imagedecoders as default, add fallback option to QImageDecoder if WebCore imagedecoder doesn&apos;t support the image format.

Comparison about imagedecoders: bug #71555.
Mail thread: https://lists.webkit.org/pipermail/webkit-qt/2012-February/002470.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572879</commentid>
    <comment_count>1</comment_count>
      <attachid>130624</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-07 07:41:27 -0800</bug_when>
    <thetext>Created attachment 130624
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572880</commentid>
    <comment_count>2</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-07 07:42:03 -0800</bug_when>
    <thetext>The details are in the changelog of the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572900</commentid>
    <comment_count>3</comment_count>
      <attachid>130624</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-07 08:29:27 -0800</bug_when>
    <thetext>Comment on attachment 130624
proposed patch

Attachment 130624 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11856076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572910</commentid>
    <comment_count>4</comment_count>
      <attachid>130624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 08:38:08 -0800</bug_when>
    <thetext>Comment on attachment 130624
proposed patch

Attachment 130624 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11851114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572918</commentid>
    <comment_count>5</comment_count>
      <attachid>130632</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-07 08:47:08 -0800</bug_when>
    <thetext>Created attachment 130632
proposed patch, chrome-ews fix

I need to check some jpeg library on our EWS, please don&apos;t send the patch to EWS until that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572946</commentid>
    <comment_count>6</comment_count>
      <attachid>130632</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-07 09:15:53 -0800</bug_when>
    <thetext>Comment on attachment 130632
proposed patch, chrome-ews fix

Attachment 130632 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11853122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573032</commentid>
    <comment_count>7</comment_count>
      <attachid>130632</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-03-07 11:16:42 -0800</bug_when>
    <thetext>Comment on attachment 130632
proposed patch, chrome-ews fix

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

This is a good start :) A few comments, in general I think there&apos;s a possibility of reducing the complexity of this patch a lot.

&gt; Source/WebCore/ChangeLog:7
&gt; +        however I add a new macro (called WTF_USE_FALLBACK_TO_QT_IMAGE_DECODER) which allows you to compile with

I think it should be our goal for the Qt port to reduce the number of configurations of features we have to maintain. In this case I don&apos;t think we do need this as another option and I suggest that we simply do image decoding this way #if PLATFORM(QT). This should also make your patch slightly simpler.

&gt; Source/WebCore/platform/image-decoders/ImageDecoder.cpp:149
&gt; +#if PLATFORM(QT)
&gt; +    m_pixmap = QPixmap();
&gt; +    m_image = QImage();
&gt; +#endif

I don&apos;t think that this block of code is needed, given that this is a constructor and that m_pixmap and m_image already have proper default constructors.

&gt; Source/WebCore/platform/image-decoders/ImageDecoder.h:338
&gt; +        virtual bool isImageDecoderQt() { return false; }

This should be const, but another option would be to simply take the existing booleans in the class, compress them into a bitfield and add another bit indicating if the constructed decoder is a Qt decoder or not, removing the need for a virtual function.

In an ideal world however the Qt image decoder would simply be _another_ ImageDecoder subclass that is instantiated, just like the png/jpeg/bmp/ico/etc. decoders, with as few #ifdefs in ImageDecoder.cpp as they are needed for the others (i.e. zero).

I suspect that one reason for this used to be that we had this _need_ to load images into QPixmaps, where pixmaps used to be potentially server-side objects. Since this &quot;constraint&quot; has gone, perhaps it is possible to operate on the same data structures like the other decoders and avoid extra #ifdefs here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576148</commentid>
    <comment_count>8</comment_count>
      <attachid>131330</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-12 08:42:37 -0700</bug_when>
    <thetext>Created attachment 131330
proposed patch

(In reply to comment #7)
&gt; I think it should be our goal for the Qt port to reduce the number of configurations of features we have to maintain. In this case I don&apos;t think we do need this as another option and I suggest that we simply do image decoding this way #if PLATFORM(QT). This should also make your patch slightly simpler.

I totally agree with you, I removed the newly added (FALLBACK) and the old (WTF_USE_QT_IMAGE_DECODER) macro.
 
&gt; &gt; Source/WebCore/platform/image-decoders/ImageDecoder.cpp:149
&gt; &gt; +#if PLATFORM(QT)
&gt; &gt; +    m_pixmap = QPixmap();
&gt; &gt; +    m_image = QImage();
&gt; &gt; +#endif
&gt; 
&gt; I don&apos;t think that this block of code is needed, given that this is a constructor and that m_pixmap and m_image already have proper default constructors.

Yes, you&apos;re right. I removed these.

&gt; &gt; Source/WebCore/platform/image-decoders/ImageDecoder.h:338
&gt; &gt; +        virtual bool isImageDecoderQt() { return false; }
&gt; 
&gt; This should be const, but another option would be to simply take the existing booleans in the class, compress them into a bitfield and add another bit indicating if the constructed decoder is a Qt decoder or not, removing the need for a virtual function.

I find a simpler way to solve this. Do you like it?

&gt; In an ideal world however the Qt image decoder would simply be _another_ ImageDecoder subclass that is instantiated, just like the png/jpeg/bmp/ico/etc. decoders, with as few #ifdefs in ImageDecoder.cpp as they are needed for the others (i.e. zero).

I try to reduce the number of ifdefs, but I left some, so this patch may need further iterations.

&gt; I suspect that one reason for this used to be that we had this _need_ to load images into QPixmaps, where pixmaps used to be potentially server-side objects. Since this &quot;constraint&quot; has gone, perhaps it is possible to operate on the same data structures like the other decoders and avoid extra #ifdefs here?

I removed the qpixmap from ImageDecoder, so currently we use only qimage for QImageDecoder. asNewNativeImage() still returns with NativeImagePtr. Modifying NativeImagePtr from QPixmap* to QImage* would be a bigger task. What do you think of it?

Notice: this patch adds build depedency for libpng-dev and libjpeg-dev, which has been installed on our EWS by Ossy already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576154</commentid>
    <comment_count>9</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-12 08:47:35 -0700</bug_when>
    <thetext>I used http://zoltan.sed.hu/WebKit/imgdec/formats.htm as a test site.
WebCoreImageDecoder decodes only: jpeg, png, gif, bmp, ico. (svg, but it&apos;s not from imagedecoder)
QImageDecoder decodes all others, depends on your Qt build, and system libraries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576162</commentid>
    <comment_count>10</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-12 08:53:31 -0700</bug_when>
    <thetext>Is it correct that the ImageDecoderQt.cpp is in platform/graphics/qt/? Because other ports store this file in platform/image-decoders/portname/.

Related question: should I delete platform/image-decoders/qt directory as well? Because it&apos;ll be empty (depends on the first question) :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576180</commentid>
    <comment_count>11</comment_count>
      <attachid>131330</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-03-12 09:27:05 -0700</bug_when>
    <thetext>Comment on attachment 131330
proposed patch

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

Nice, this is a lot simpler. I think only the image storage is left as an issue. A few comments below.

&gt; Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp:238
&gt; +// The image must not have format 8888 pre multiplied...

It is unfortunately not very clear from this comment what the problem is. Could you elaborate a bit more? Is there an ASSERT we should use in the function below?

&gt; Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp:244
&gt; +void ImageFrame::setImage(const QImage&amp; image)
&gt; +{
&gt; +    m_image = image;
&gt; +    m_size = image.size();
&gt; +    m_hasAlpha = image.hasAlphaChannel();
&gt; +}

I suppose the answer to my m_bytes question lies here. Perhaps we can make m_bytes point to the image&apos;s data and somehow make sure the vector doesn&apos;t take ownership? Alternatively perhaps we can make m_bytes our _real_ storage, get rid of m_image as a member and when using the QImageReader construct a temporary QImage around the m_bytes data that we pass to the QImageReader::read(QImage*) function.

&gt; Source/WebCore/platform/image-decoders/ImageDecoder.h:143
&gt; -#elif PLATFORM(QT) &amp;&amp; USE(QT_IMAGE_DECODER)
&gt; -            m_image = m_pixmap.toImage();
&gt; -            m_pixmap = QPixmap();
&gt; -            return reinterpret_cast_ptr&lt;QRgb*&gt;(m_image.scanLine(y)) + x;
&gt;  #else
&gt;              return m_bytes + (y * width()) + x;

Hmm, what about the qt image decoder case? Won&apos;t this break if m_image is set but m_bytes isn&apos;t?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582885</commentid>
    <comment_count>12</comment_count>
      <attachid>132784</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-20 03:00:14 -0700</bug_when>
    <thetext>Created attachment 132784
proposed patch without Changelog update

I haven&apos;t updated changelog yet, so I didn&apos;t mark it for review. I&apos;ll update the changelog in the next iteration.

(In reply to comment #11)
&gt; (From update of attachment 131330 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131330&amp;action=review
&gt; 
&gt; Nice, this is a lot simpler. I think only the image storage is left as an issue. A few comments below.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp:238
&gt; &gt; +// The image must not have format 8888 pre multiplied...
&gt; 
&gt; It is unfortunately not very clear from this comment what the problem is. Could you elaborate a bit more? Is there an ASSERT we should use in the function below?

Neither for me. I just copied it with the function, it was added by you or zecke; but I removed setImage now, so it doesn&apos;t matter.
 
&gt; &gt; Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp:244
&gt; &gt; +void ImageFrame::setImage(const QImage&amp; image)
&gt; &gt; +{
&gt; &gt; +    m_image = image;
&gt; &gt; +    m_size = image.size();
&gt; &gt; +    m_hasAlpha = image.hasAlphaChannel();
&gt; &gt; +}
&gt; 
&gt; I suppose the answer to my m_bytes question lies here. Perhaps we can make m_bytes point to the image&apos;s data and somehow make sure the vector doesn&apos;t take ownership? Alternatively perhaps we can make m_bytes our _real_ storage, get rid of m_image as a member and when using the QImageReader construct a temporary QImage around the m_bytes data that we pass to the QImageReader::read(QImage*) function.

I made m_bytes our real storage and I removed the usage of m_image. Check ImageDecoderQt.cpp::internalHandleCurrentImage(...)

&gt; &gt; Source/WebCore/platform/image-decoders/ImageDecoder.h:143
&gt; &gt; -#elif PLATFORM(QT) &amp;&amp; USE(QT_IMAGE_DECODER)
&gt; &gt; -            m_image = m_pixmap.toImage();
&gt; &gt; -            m_pixmap = QPixmap();
&gt; &gt; -            return reinterpret_cast_ptr&lt;QRgb*&gt;(m_image.scanLine(y)) + x;
&gt; &gt;  #else
&gt; &gt;              return m_bytes + (y * width()) + x;
&gt; 
&gt; Hmm, what about the qt image decoder case? Won&apos;t this break if m_image is set but m_bytes isn&apos;t?

getAddr was never called, so it was safe to remove.


If I used m_image member I could display xpm format image, but if I tried to reproduce it from m_bytes (in asNewNativeImage) I couldn&apos;t. It displays a black rectangle only. Its type is Format_Indexed8, I couldn&apos;t display it neither when I tried to use Format_Indexed8 for it (in asNewNativeImage). Do you have any idea what can be the problem?

I found this in QImage documentation btw: Warning: Painting on a QImage with the format QImage::Format_Indexed8 is not supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582886</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 03:03:03 -0700</bug_when>
    <thetext>Attachment 132784 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp:192:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599238</commentid>
    <comment_count>14</comment_count>
      <attachid>136448</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-04-10 07:06:33 -0700</bug_when>
    <thetext>Created attachment 136448
proposed patch with proper changelog

I updated the patch to TOT and I modified the changelog.

Questions from https://bugs.webkit.org/show_bug.cgi?id=80400#c12 still stand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599242</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 07:09:56 -0700</bug_when>
    <thetext>Attachment 136448 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp:192:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602979</commentid>
    <comment_count>16</comment_count>
      <attachid>136448</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-04-16 01:39:39 -0700</bug_when>
    <thetext>Comment on attachment 136448
proposed patch with proper changelog

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

r=me. There&apos;s a style nitpick to fix before landing and the diff in bugzilla also shows &quot;new mode 100755&quot; for Source/WebCore/platform/graphics/qt/ImageDecoderQt.h, which would an incorrect mode for the file (should remain 100644).

&gt;&gt; Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp:192
&gt;&gt; +    QImage image(reinterpret_cast&lt;uchar*&gt;(buffer-&gt;getAddr(0,0)), imageSize.width(), imageSize.height(), sizeof(ImageFrame::PixelData) * imageSize.width(), m_reader-&gt;imageFormat());
&gt; 
&gt; Missing space after ,  [whitespace/comma] [3]

The style bot is right here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611421</commentid>
    <comment_count>17</comment_count>
      <attachid>139180</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-04-27 06:02:06 -0700</bug_when>
    <thetext>Created attachment 139180
same as last + MIMETypeRegistry.cpp

(In reply to comment #16)
&gt; (From update of attachment 136448 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136448&amp;action=review
&gt; 
&gt; r=me. There&apos;s a style nitpick to fix before landing and the diff in bugzilla also shows &quot;new mode 100755&quot; for Source/WebCore/platform/graphics/qt/ImageDecoderQt.h, which would an incorrect mode for the file (should remain 100644).

Thanks, fixed!

&gt; &gt;&gt; Source/WebCore/platform/graphics/qt/ImageDecoderQt.cpp:192
&gt; &gt;&gt; +    QImage image(reinterpret_cast&lt;uchar*&gt;(buffer-&gt;getAddr(0,0)), imageSize.width(), imageSize.height(), sizeof(ImageFrame::PixelData) * imageSize.width(), m_reader-&gt;imageFormat());
&gt; &gt; 
&gt; &gt; Missing space after ,  [whitespace/comma] [3]
&gt; 
&gt; The style bot is right here :)

Fixed!

Since I removed the QT_IMAGE_DECODER macro I needed to edit MIMETypeRegistry.cpp and Source/WebKit/blackberry/WebCoreSupport/AboutDataEnableFeatures.in (+changelogs) also. 
Please you have a look at these, after that we will be ready to commit the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614165</commentid>
    <comment_count>18</comment_count>
      <attachid>139180</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-05-02 04:04:41 -0700</bug_when>
    <thetext>Comment on attachment 139180
same as last + MIMETypeRegistry.cpp

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

&gt; Tools/qmake/mkspecs/features/features.prf:117
&gt;  # Policy decisions: for using a particular third-party library or optional OS service

Maybe changing the preceding comment or removing it would be nice, I suppose it is related to the line you just removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614169</commentid>
    <comment_count>19</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-02 04:08:39 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 139180 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139180&amp;action=review
&gt; 
&gt; &gt; Tools/qmake/mkspecs/features/features.prf:117
&gt; &gt;  # Policy decisions: for using a particular third-party library or optional OS service
&gt; 
&gt; Maybe changing the preceding comment or removing it would be nice, I suppose it is related to the line you just removed.

Yeap, I can remove it when I land, since it&apos;s not needed temporarily.
We have to wait a little bit with the landing, since the guys need to install the new dependencies on the ARM bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626475</commentid>
    <comment_count>20</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-17 05:18:19 -0700</bug_when>
    <thetext>We have a compile problem on MAC, because of JPEG lib dependency. 
- Chromium uses its own copy in their 3rdparty directory
- Apple port uses it through ImageIO.framework

We have the required headers in Qt5&apos;s 3rdparty dir, but Qt5 source is not required for WK build.

- we require jpeglib to be installed
 -&gt; how do detect the path?
  -&gt; pkgconfig
  -&gt; other possibility?

We discussed about using the ImageDecoderCG thing. Yes, we can use the CG image containers, but it still not resolves the jpeglib.h dependency, so I think it doesn&apos;t makes sense.

What should be the direction now? Any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626954</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-17 14:08:39 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; We have a compile problem on MAC, because of JPEG lib dependency. 
&gt; - Chromium uses its own copy in their 3rdparty directory
&gt; - Apple port uses it through ImageIO.framework

Is that accessible for us? (I see it referenced in KB articles, but it seems it disappeared from the developer docs?)

&gt; We have the required headers in Qt5&apos;s 3rdparty dir, but Qt5 source is not required for WK build.
&gt; 
&gt; - we require jpeglib to be installed
&gt;  -&gt; how do detect the path?
&gt;   -&gt; pkgconfig
&gt;   -&gt; other possibility?
&gt; 
&gt; We discussed about using the ImageDecoderCG thing. Yes, we can use the CG image containers, but it still not resolves the jpeglib.h dependency, so I think it doesn&apos;t makes sense.
&gt; 
&gt; What should be the direction now? Any idea?

In principle I think that we should do what Apple is doing here. If we cannot do that (*), then I don&apos;t see any way other than disabling the use of the webcore image decoders on Qt/Mac builds and falling back to QImageDecoder.



(*) It could for example be that the frameworks in question are semi-public, meaning that we could use them and WebKit would work. But if an application is submitted to the Mac App Store that uses QtWebKit and thus such a semi-public framework, then there&apos;s a high risk of the app getting rejected. So that&apos;s an example of &quot;cannot do&quot; :)


The more problems like these pop up, the more it looks like we should try to take a slightly &quot;softer&quot; approach:

    (1) Use WebCore decoders if we can find the external libraries in question
    (2) Fall back to the Qt image decoders at run-time
    (3) Skip (1) altogether if the libraries are not available and print a message (config tests can do that) indicating that the developer is missing out here.


What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627560</commentid>
    <comment_count>22</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-18 04:22:54 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; We have a compile problem on MAC, because of JPEG lib dependency. 
&gt; &gt; - Chromium uses its own copy in their 3rdparty directory
&gt; &gt; - Apple port uses it through ImageIO.framework
&gt; 
&gt; Is that accessible for us? (I see it referenced in KB articles, but it seems it disappeared from the developer docs?)

I&apos;m examining it now. It seems we can use it, because I found examples for Qt-Mac usage. It (ApplicationServices) sounds cool.

&gt; In principle I think that we should do what Apple is doing here. If we cannot do that (*), then I don&apos;t see any way other than disabling the use of the webcore image decoders on Qt/Mac builds and falling back to QImageDecoder.
&gt; 
&gt; 
&gt; (*) It could for example be that the frameworks in question are semi-public, meaning that we could use them and WebKit would work. But if an application is submitted to the Mac App Store that uses QtWebKit and thus such a semi-public framework, then there&apos;s a high risk of the app getting rejected. So that&apos;s an example of &quot;cannot do&quot; :)

I got it now, so this way is unacceptable. Let&apos;s consider the others. :)

&gt; The more problems like these pop up, the more it looks like we should try to take a slightly &quot;softer&quot; approach:
&gt; 
&gt;     (1) Use WebCore decoders if we can find the external libraries in question
&gt;     (2) Fall back to the Qt image decoders at run-time
&gt;     (3) Skip (1) altogether if the libraries are not available and print a message (config tests can do that) indicating that the developer is missing out here.

If we couldn&apos;t use the ApplicationServices approach, then this way can work.
 
&gt; What do you think?

1-2-3 should be the almost the last chance, since it adds extra complexity both to build and to code files.

I&apos;ll write soon if I managed to do something with the AS. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630440</commentid>
    <comment_count>23</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-22 09:21:56 -0700</bug_when>
    <thetext>(In reply to comment #22)

&gt; I&apos;m examining it now. It seems we can use it, because I found examples for Qt-Mac usage. It (ApplicationServices) sounds cool.

From Qt5 we don&apos;t have QPixmap::fromMacCGImageRef function. It might be a problem, because it may increases the complexity. Do you know the reason why it has been removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631500</commentid>
    <comment_count>24</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-23 04:40:27 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; We have a compile problem on MAC, because of JPEG lib dependency. 
&gt; &gt; &gt; - Chromium uses its own copy in their 3rdparty directory
&gt; &gt; &gt; - Apple port uses it through ImageIO.framework
&gt; &gt; 
&gt; &gt; Is that accessible for us? (I see it referenced in KB articles, but it seems it disappeared from the developer docs?)
&gt; 
&gt; I&apos;m examining it now. It seems we can use it, because I found examples for Qt-Mac usage. It (ApplicationServices) sounds cool.

Unfortunately, this approach requires too much modification, since (e.g.) we need to modify NativeImagePtr in ImageSource.h, but we use that type in several other codes than just in ImageDecoder. This still could be a good approach, but later.

(In reply to comment #21)
&gt; The more problems like these pop up, the more it looks like we should try to take a slightly &quot;softer&quot; approach:
&gt; 
&gt;     (1) Use WebCore decoders if we can find the external libraries in question
&gt;     (2) Fall back to the Qt image decoders at run-time
&gt;     (3) Skip (1) altogether if the libraries are not available and print a message (config tests can do that) indicating that the developer is missing out here.

For fire-fighting, I&apos;m going to come up with a solution to build only with the fallback case on qtmac, if we don&apos;t have the required libraries (+warning message); and build normally if we have. How does this sound?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631519</commentid>
    <comment_count>25</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-23 05:00:28 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; The more problems like these pop up, the more it looks like we should try to take a slightly &quot;softer&quot; approach:
&gt; &gt; 
&gt; &gt;     (1) Use WebCore decoders if we can find the external libraries in question
&gt; &gt;     (2) Fall back to the Qt image decoders at run-time
&gt; &gt;     (3) Skip (1) altogether if the libraries are not available and print a message (config tests can do that) indicating that the developer is missing out here.
&gt; 
&gt; For fire-fighting, I&apos;m going to come up with a solution to build only with the fallback case on qtmac, if we don&apos;t have the required libraries (+warning message); and build normally if we have. How does this sound?

Sounds good and like a safe approach that might come in handy on other platforms, too. (Like Windows) Hence time well spent :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633817</commentid>
    <comment_count>26</comment_count>
      <attachid>144042</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-25 04:15:31 -0700</bug_when>
    <thetext>Created attachment 144042
proposed patch

Well... :)

I found another solution to the problem:

- we don&apos;t compile jpeg, png, ico (uses png) imagedecoders if we compile on mac or win
 - in these cases we fallback to QImageDecoder
- every other platform and case uses WebCoreImageDecoder

With this solution we can get rid of QT_IMAGE_DECODER macro, and a lots of platform specific code from common files.

In ImageDecoder.cpp I used OS(MAC_OS_X) to determine whether the platform is mac or not, since PLATFORM(MAC) didn&apos;t work for me. Do somebody know the reason for it?

Let&apos;s give a shot for the EWSs!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633818</commentid>
    <comment_count>27</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-25 04:17:30 -0700</bug_when>
    <thetext>If you like this approach then we can improve on library checking side later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633851</commentid>
    <comment_count>28</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-25 05:31:19 -0700</bug_when>
    <thetext>Tor Arne enlightened me about PLATFORM macros, so I need to modify PLATFORM(WIN) to OS(WINDOWS) in the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633916</commentid>
    <comment_count>29</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-25 07:45:20 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Created an attachment (id=144042) [details]
&gt; proposed patch
&gt; 
&gt; Well... :)
&gt; 
&gt; I found another solution to the problem:
&gt; 
&gt; - we don&apos;t compile jpeg, png, ico (uses png) imagedecoders if we compile on mac or win
&gt;  - in these cases we fallback to QImageDecoder
&gt; - every other platform and case uses WebCoreImageDecoder
&gt; 
&gt; With this solution we can get rid of QT_IMAGE_DECODER macro, and a lots of platform specific code from common files.

Sounds good, but isn&apos;t it a very short distance from here to taking the result from the configure test, turning it into a HAVE(LIBPNG) (or something) and use that instead of #if OS(WIN)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636976</commentid>
    <comment_count>30</comment_count>
      <attachid>144737</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-30 00:46:05 -0700</bug_when>
    <thetext>Created attachment 144737
proposed patch

(In reply to comment #29)

&gt; Sounds good, but isn&apos;t it a very short distance from here to taking the result from the configure test, turning it into a HAVE(LIBPNG) (or something) and use that instead of #if OS(WIN)?

Done. :)

Ossy tested the patch on windows for me and I tested it on mac, with qt5 and with 4.8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636978</commentid>
    <comment_count>31</comment_count>
      <attachid>144737</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-30 00:49:41 -0700</bug_when>
    <thetext>Comment on attachment 144737
proposed patch

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

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:33
&gt;  

I can remove this line before landing. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637032</commentid>
    <comment_count>32</comment_count>
      <attachid>144737</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-30 01:59:35 -0700</bug_when>
    <thetext>Comment on attachment 144737
proposed patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        becuase PNG and JPEG imagedecoders need not only these libraries, but their headers also. Qmake-config 

becuase -&gt; because

&gt; Source/WebCore/ChangeLog:18
&gt; +        Reviewed by Simon Hausmann.

Technically that shouldn&apos;t be there for patches marked as r?

&gt; Source/WebCore/WebCore.pri:234
&gt; +contains(DEFINES, WTF_USE_WEBP=1) {
&gt; +    INCLUDEPATH += $$SOURCE_DIR/platform/image-decoders/webp
&gt; +    LIBS += -lwebp
&gt; +}

The WebP support should probably also have a configure test and the use HAVE_WEBP for consistency.

&gt; Source/WebKit/blackberry/ChangeLog:6
&gt; +        Get rid off QT_IMAGE_DECODER flag.

off -&gt; of</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637035</commentid>
    <comment_count>33</comment_count>
      <attachid>144737</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-30 02:02:50 -0700</bug_when>
    <thetext>Comment on attachment 144737
proposed patch

r+ because the typos can be fixed before landing and the WebP change is kind of separate. (introducing a configure test instead of making it a have-to-enable-it-explicitly-to-use-it feature)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637047</commentid>
    <comment_count>34</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-30 02:15:57 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 144737 [details])
&gt; r+ because the typos can be fixed before landing and the WebP change is kind of separate. (introducing a configure test instead of making it a have-to-enable-it-explicitly-to-use-it feature)

Thanks for the review!

WebP conditional was in the scope of contains(DEFINES, WTF_USE_QT_IMAGE_DECODER=0), since I removed that conditional I had to leave it there. I&apos;m going to write a config-test for it after the landing! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637099</commentid>
    <comment_count>35</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-30 04:03:16 -0700</bug_when>
    <thetext>I made WEBP config tests: bug #87841</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638031</commentid>
    <comment_count>36</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-05-30 23:45:39 -0700</bug_when>
    <thetext>Intel Lion tests fixed in http://trac.webkit.org/changeset/118980.
The patch was landed in http://trac.webkit.org/changeset/118909.
Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130624</attachid>
            <date>2012-03-07 07:41:27 -0800</date>
            <delta_ts>2012-03-07 08:47:08 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>fallback0307.patchh</filename>
            <type>text/plain</type>
            <size>20475</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmQ3ZTU2Li5hZTM0ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTItMDMtMDcgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQsIGFkZCBmYWxs
YmFjayBvcHRpb24gdG8gUUltYWdlRGVjb2RlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MDAKKworICAgICAgICBUaGlzIGNoYW5nZSBtb2RpZmll
cyB0aGUgZGVmYXVsdCBJbWFnZURlY29kZXIgZm9yIFF0LXBvcnQgZnJvbSBRSW1hZ2VEZWNvZGVy
IHRvIFdlYkNvcmUgSW1hZ2VEZWNvZGVyCisgICAgICAgIGhvd2V2ZXIgSSBhZGQgYSBuZXcgbWFj
cm8gKGNhbGxlZCBXVEZfVVNFX0ZBTExCQUNLX1RPX1FUX0lNQUdFX0RFQ09ERVIpIHdoaWNoIGFs
bG93cyB5b3UgdG8gY29tcGlsZSB3aXRoCisgICAgICAgIGEgZmFsbGJhY2sgdG8gUUltYWdlRGVj
b2Rlciwgc28gdGhlIGJlaGF2aW9yIGlzIHRvIHRyeSB0byB1c2UgUUltYWdlRGVjb2RlciBvbmx5
IGlmIFdlYkNvcmUgSW1hZ2VEZWNvZGVyCisgICAgICAgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgcmVx
dWVzdGVkIHR5cGUuIFFJbWFnZURlY29kZXIgbWlnaHQgaGFuZGxlIGV4b3RpYyBpbWFnZSB0eXBl
cyB0aHJvdWdoIFF0J3MgcGx1Z2lucywgYnV0CisgICAgICAgIGl0J3MgYSBzZWN1cml0eSByaXNr
IHNpbmNlIFF0IGNhbiBjb250YWluIGN1c3RvbSBJbWFnZURlY29kZXIgcGx1Z2lucywgdGh1cyBJ
IHNldCB0aGUgdXNpbmcgb2YgdGhlIGZhbGxiYWNrIHRvCisgICAgICAgIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgSSByZWR1Y2VkIHRoZSBRSW1hZ2VEZWNvZGVyIHBhcnQgb2YgV2Vi
S2l0IHRvIGFzIG1pbmltYWxpc3RpYyAtIGJ1dCBmdWxseSBmdW5jdGlvbmFsIC0gYXMgSSBjYW4u
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIFRhcmdldC5wcmk6IE1vdmUgV2ViQ29yZSBJbWFn
ZURlY29kZXIgZmlsZXMgb3V0IG9mIGd1YXJkcy4KKyAgICAgICAgKiBXZWJDb3JlLnByaTogTW92
ZSBXZWJDb3JlIEltYWdlRGVjb2RlciBpbmNsdWRlIHBhdGhzIG91dCBvZiBndWFyZHMuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOiBSZW1vdmUgdW5uZWNlc3Nh
cnkgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVB
dEluZGV4KTogQWRkIFFJbWFnZURlY29kZXIgZmFsbGJhY2sgY2FzZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOiBSZW1vdmUgdW5uZWNlc3NhcnkgdHlwZWRlZnMu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZURlY29kZXJRdC5jcHA6CisgICAgICAgIEFkZCB0aGUgZmFsbGJhY2sgbWFjcm8gZ3VhcmQgYXJv
dW5kIFFJbWFnZURlY29kZXIuCisgICAgICAgIE1vdmVkIHRocmVlIGZ1bmN0aW9ucyBoZXJlIGZy
b20gcmVtb3ZlZCBJbWFnZUZyYW1lUXQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJRdDo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdRUGl4bWFwKTogUmVuYW1lZCBhbmQgbW92ZWQgaGVy
ZSBmcm9tIEltYWdlRnJhbWVRdC5jcHAgKEl0IHdhcyBhc05ld05hdGl2ZUltYWdlIHdoZW4gd2Ug
CisgICAgICAgIHVzZWQgdG8gaGF2ZSAxIGltYWdlZGVjb2RlciBhdCB0aGUgc2FtZSB0aW1lKQor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UGl4bWFwKTogTW92ZWQgZnJvbSBJbWFn
ZUZyYW1lUXQuY3BwCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUlt
YWdlKTogTW92ZWQgZnJvbSBJbWFnZUZyYW1lUXQuY3BwCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuaDogQWRkIHRoZSBmYWxsYmFjayBtYWNybyBndWFyZCBh
cm91bmQgSW1hZ2VEZWNvZGVyUXQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlclF0Ojppc0ltYWdlRGVjb2RlclF0KTogTmV3IG1ldGhvZC4KKyAgICAg
ICAgKEltYWdlRGVjb2RlclF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwOiBSZW9yZGVyIGFuZCBhZGQgbmV3IG5lY2Vzc2FyeSBpbmNsdWRlcy4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKTogQWRkIHRoZSBndWFyZGVk
IGZhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSk6IElu
aXRpYWxpemUgbV9zaXplLCBtX3BpeG1hcCwgbV9pbWFnZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKEltYWdlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6IFJlbW92ZSB1c2VsZXNzIFF0IHBh
cnQuCisgICAgICAgIChJbWFnZURlY29kZXIpOiBTaW1wbGlmeSBtZW1iZXJzIGFuZCBtYWNyb3Mu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzSW1hZ2VEZWNvZGVyUXQpOiBOZXcg
bWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0ltYWdlRnJhbWVR
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgIE1vc3RseSBkZWFkIGNvZGUsIG90aGVyIGNvZGUgbW92
ZWQgdG8gSW1hZ2VEZWNvZGVyUXQuY3BwCisKIDIwMTItMDMtMDcgIEFydW4gUGF0b2xlICA8Ym1m
ODM0QG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBIVE1MVHJhY2tFbGVtZW50LmlkbCBkb2Vzbid0
IGhhdmUgZGVmYXVsdCBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IDMyODQwZjguLjNjNTk3NjgKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMDY3LDcgKzEwNjcs
NiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCiAgICAgcGxh
dGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vSGlzdG9ncmFtU3Vw
cG9ydC5jcHAgXAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0ltYWdlRnJhbWVRdC5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmFtaWx5LmNwcCBcCkBAIC0xMTE1LDYgKzExMTQsMTQgQEAgU09VUkNFUyArPSBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNw
cCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmNwcCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNw
cCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAg
XAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAgXAor
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIFwKKyAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwXAorICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIFwKKyAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIFwKKyAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBcCiAgICAgcGxhdGZv
cm0vS2lsbFJpbmdOb25lLmNwcCBcCiAgICAgcGxhdGZvcm0vS1VSTC5jcHAgXAogICAgIHBsYXRm
b3JtL0xhbmd1YWdlLmNwcCBcCkBAIC0yMjQxLDYgKzIyNDgsMTMgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24u
aCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oIFwK
KyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBcCisgICAg
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaFwKKyAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nLmgg
XAogICAgIHBsYXRmb3JtL0tVUkwuaCBcCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmggXApAQCAtMjgw
OCw2ICsyODIyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JY29uUXQuY3Bw
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBcCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW50UG9pbnRR
dC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ludFJlY3RRdC5jcHAgXApAQCAtMzk0
NywzMyArMzk2MiwxMCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUhUTUw9MSkgewogICAg
ICAgICBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAogfQogCi1jb250YWlucyhERUZJTkVTLCBXVEZf
VVNFX1FUX0lNQUdFX0RFQ09ERVI9MSkgewotICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VEZWNvZGVyUXQuaAotICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VEZWNvZGVyUXQuY3BwCi19IGVsc2UgewotICAgIEhFQURFUlMgKz0gXAotICAgICAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggXAotICAgICAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBcCi0gICAgICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBcCi0gICAgICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oXAotICAgICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggXAotICAgICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBcCi0gICAgICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAotCi0gICAgU09V
UkNFUyArPSBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5j
cHAgXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRl
ci5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5jcHBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCi0KLSAgICBjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1dFQlA9MSkg
ewotICAgICAgICBIRUFERVJTICs9IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oCi0gICAgICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAotICAgIH0KK2NvbnRhaW5zKERFRklORVMsIFdURl9V
U0VfV0VCUD0xKSB7CisgICAgSU5DTFVERVBBVEggKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicAorICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmgKKyAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv
V0VCUEltYWdlRGVjb2Rlci5jcHAKIH0KIAogIXN5c3RlbS1zcWxpdGU6ZXhpc3RzKCAkJHtTUUxJ
VEUzU1JDRElSfS9zcWxpdGUzLmMgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKaW5kZXggYmRjZDEwNy4uNDRkNWJkYgotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtNjEsNiArNjEs
MTEgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAgXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
IFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMgXAorICAgICQkU09V
UkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAgXAorICAgICQkU09VUkNFX0RJUi9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYgXAorICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28gXAorICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnIFwKKyAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
IFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vbGV2ZWxkYiBcCiAgICAgJCRTT1VSQ0VfRElS
L3BsYXRmb3JtL21vY2sgXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9uZXR3b3JrIFwKQEAg
LTIwOSwyOCArMjE0LDE5IEBAIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfVEVYVFVSRV9NQVBQ
RVJfR0w9MSl8Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpCiAgICAgTElCUyArPSAt
bHNxbGl0ZTMKIH0KIAotY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9RVF9JTUFHRV9ERUNPREVS
PTApIHsKLSAgICBJTkNMVURFUEFUSCArPSBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAgXAotICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmIFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljbyBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnIFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
ZwotCi0gICAgaGF2ZVF0KDUpIHsKLSAgICAgICAgIyBRdDUgYWxsb3dzIHVzIHRvIHVzZSBjb25m
aWcgdGVzdHMgdG8gY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGVzZSBsaWJyYXJpZXMKLSAg
ICAgICAgIWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xpYmpwZWcsIHllcyk6IGVycm9yKCJKUEVHIGxp
YnJhcnkgbm90IGZvdW5kISIpCi0gICAgICAgICFjb250YWlucyhjb25maWdfdGVzdF9saWJwbmcs
IHllcyk6IGVycm9yKCJQTkcgMS4yIGxpYnJhcnkgbm90IGZvdW5kISIpCi0gICAgfQotCi0gICAg
TElCUyArPSAtbGpwZWcgLWxwbmcxMgorY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9XRUJQPTEp
IHsKKyAgICBJTkNMVURFUEFUSCArPSAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicAorICAgIExJQlMgKz0gLWx3ZWJwCit9CiAKLSAgICBjb250YWlucyhERUZJTkVTLCBX
VEZfVVNFX1dFQlA9MSkgewotICAgICAgICBJTkNMVURFUEFUSCArPSAkJFNPVVJDRV9ESVIvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicAotICAgICAgICBMSUJTICs9IC1sd2VicAotICAgIH0K
K2hhdmVRdCg1KSB7CisgICAgIyBRdDUgYWxsb3dzIHVzIHRvIHVzZSBjb25maWcgdGVzdHMgdG8g
Y2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGVzZSBsaWJyYXJpZXMKKyAgICAhY29udGFpbnMo
Y29uZmlnX3Rlc3RfbGlianBlZywgeWVzKTogZXJyb3IoIkpQRUcgbGlicmFyeSBub3QgZm91bmQh
IikKKyAgICAhY29udGFpbnMoY29uZmlnX3Rlc3RfbGlicG5nLCB5ZXMpOiBlcnJvcigiUE5HIDEu
MiBsaWJyYXJ5IG5vdCBmb3VuZCEiKQogfQogCitMSUJTICs9IC1sanBlZyAtbHBuZzEyCisKIHdp
bjMyLSp8d2luY2UqIHsKICAgICBETExERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2Jpbgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmNDQ5NWVkLi43MGU4MTkwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTI5
LDExICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2Uu
aCIKIAotI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCi0jZWxz
ZQogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTQ2LDYgKzE0MiwxMiBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKIAogICAgIC8vIFJldHVybiB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAg
ICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5j
cmVtZW50cyBpdHMgcmVmY291bnQuCisKKyNpZiBQTEFURk9STShRVCkgJiYgVVNFKEZBTExCQUNL
X1RPX1FUX0lNQUdFX0RFQ09ERVIpCisgICAgaWYgKG1fZGVjb2Rlci0+aXNJbWFnZURlY29kZXJR
dCgpKQorICAgICAgICByZXR1cm4gYnVmZmVyLT5hc05ld1FQaXhtYXAoKTsKKyNlbmRpZgorCiAg
ICAgcmV0dXJuIGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IDFkMDIyMDIuLjUzMDljNjMKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC03MywxMCArNzMsNiBAQCBjbGFzcyBJbWFn
ZURlY29kZXI7CiBjbGFzcyBUaWxlZEltYWdlT3BlblZHOwogdHlwZWRlZiBJbWFnZURlY29kZXIq
IE5hdGl2ZUltYWdlU291cmNlUHRyOwogdHlwZWRlZiBUaWxlZEltYWdlT3BlblZHKiBOYXRpdmVJ
bWFnZVB0cjsKLSNlbGlmIFBMQVRGT1JNKFFUKQotY2xhc3MgSW1hZ2VEZWNvZGVyUXQ7Ci10eXBl
ZGVmIEltYWdlRGVjb2RlclF0KiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKLXR5cGVkZWYgUVBpeG1h
cCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxzZQogY2xhc3MgSW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJ
bWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwpAQCAtOTYsNiArOTIsOCBAQCB0eXBl
ZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogY2xhc3MgSW1hZ2VEZWNv
ZGVyOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwogdHlwZWRl
ZiB2b2lkKiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFBMQVRGT1JNKFFUKQordHlwZWRlZiBRUGl4
bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDFmOTNhYTMuLjFhNmJkOGMKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApA
QCAtMzEsMjAgKzMxLDExIEBACiAKICNpbmNsdWRlIDxRdENvcmUvUUJ5dGVBcnJheT4KICNpbmNs
dWRlIDxRdENvcmUvUUJ1ZmZlcj4KLQogI2luY2x1ZGUgPFF0R3VpL1FJbWFnZVJlYWRlcj4KLSNp
bmNsdWRlIDxxZGVidWcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZURlY29kZXIq
IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3Vy
Y2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi17Ci0gICAgLy8gV2UgbmVl
ZCBhdCBsZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGltYWdlIHdlJ3Jl
IGRlYWxpbmcgd2l0aC4KLSAgICBpZiAoZGF0YS5zaXplKCkgPCA0KQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIHJldHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQoYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKLX0KKyNpZiBVU0UoRkFMTEJBQ0tfVE9fUVRfSU1BR0VfREVD
T0RFUikKIAogSW1hZ2VEZWNvZGVyUXQ6OkltYWdlRGVjb2RlclF0KEltYWdlU291cmNlOjpBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKQEAgLTEyOSw3ICsxMjAsNyBAQCBp
bnQgSW1hZ2VEZWNvZGVyUXQ6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiBTdHJpbmcgSW1hZ2VE
ZWNvZGVyUXQ6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5n
KG1fZm9ybWF0LmNvbnN0RGF0YSgpLCBtX2Zvcm1hdC5sZW5ndGgoKSk7Ci19OworfQogCiBJbWFn
ZUZyYW1lKiBJbWFnZURlY29kZXJRdDo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKQEAgLTI0NSw2ICsyMzYsNDAgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6Y2xlYXJQb2ludGVy
cygpCiAgICAgbV9yZWFkZXIuY2xlYXIoKTsKICAgICBtX2J1ZmZlci5jbGVhcigpOwogfQorCitO
YXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld1FQaXhtYXAoKSBjb25zdAoreworICAgIGlm
IChtX3BpeG1hcC5pc051bGwoKSAmJiAhbV9pbWFnZS5pc051bGwoKSkgeworICAgICAgICBtX3Bp
eG1hcCA9IFFQaXhtYXA6OmZyb21JbWFnZShtX2ltYWdlKTsKKyAgICAgICAgbV9pbWFnZSA9IFFJ
bWFnZSgpOworICAgIH0KKyAgICByZXR1cm4gbmV3IFFQaXhtYXAobV9waXhtYXApOworfQorCisv
LyBUaGUgaW1hZ2UgbXVzdCBub3QgaGF2ZSBmb3JtYXQgODg4OCBwcmUgbXVsdGlwbGllZC4uLgor
dm9pZCBJbWFnZUZyYW1lOjpzZXRQaXhtYXAoY29uc3QgUVBpeG1hcCYgcGl4bWFwKQoreworICAg
IG1fcGl4bWFwID0gcGl4bWFwOworICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKKyAgICBtX3NpemUg
PSBwaXhtYXAuc2l6ZSgpOworICAgIG1faGFzQWxwaGEgPSBwaXhtYXAuaGFzQWxwaGFDaGFubmVs
KCk7Cit9CisKKyNlbmRpZiAvLyBVU0UoRkFMTEJBQ0tfVE9fUVRfSU1BR0VfREVDT0RFUikKKwor
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0Cit7Cisg
ICAgUUltYWdlOjpGb3JtYXQgZm10OworICAgIGlmIChtX2hhc0FscGhhKQorICAgICAgICBmbXQg
PSBtX3ByZW11bHRpcGx5QWxwaGEgPyAgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxp
ZWQgOiBRSW1hZ2U6OkZvcm1hdF9BUkdCMzI7CisgICAgZWxzZQorICAgICAgICBmbXQgPSBRSW1h
Z2U6OkZvcm1hdF9SR0IzMjsKKworICAgIFFJbWFnZSBpbWcocmVpbnRlcnByZXRfY2FzdDx1Y2hh
cio+KG1fYnl0ZXMpLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBzaXplb2YoUGl4
ZWxEYXRhKSAqIG1fc2l6ZS53aWR0aCgpLCBmbXQpOworCisgICAgcmV0dXJuIG5ldyBRUGl4bWFw
KFFQaXhtYXA6OmZyb21JbWFnZShpbWcpKTsKK30KKwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVj
b2RlclF0LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAzZTQyMWMzLi5j
MzMzOWNkCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVj
b2RlclF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuaApAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNp
ZiBVU0UoRkFMTEJBQ0tfVE9fUVRfSU1BR0VfREVDT0RFUikKIAogY2xhc3MgSW1hZ2VEZWNvZGVy
UXQgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyCiB7CkBAIC01NSw2ICs1Niw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3Jl
RnJhbWUpOwogCisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VEZWNvZGVyUXQoKSB7IHJldHVybiB0
cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSW1hZ2VEZWNvZGVyUXQoY29uc3QgSW1hZ2VEZWNvZGVy
UXQmKTsKICAgICBJbWFnZURlY29kZXJRdCAmb3BlcmF0b3I9KGNvbnN0IEltYWdlRGVjb2RlclF0
Jik7CkBAIC03Myw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBpbnQgbV9yZXBldGl0
aW9uQ291bnQ7CiB9OwogCi0KKyNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZDllOTY5MC4uYThlNzNkNAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTIwLDIxICsyMCwyMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUg
IkltYWdlRGVjb2Rlci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNtYXRo
PgotCiAjaW5jbHVkZSAiQk1QSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiR0lGSW1hZ2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgiCisjaWYgUExBVEZPUk0oUVQpCisj
aW5jbHVkZSAiSW1hZ2VEZWNvZGVyUXQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkpQRUdJbWFnZURl
Y29kZXIuaCIKICNpbmNsdWRlICJQTkdJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpZiBVU0UoV0VCUCkKICNpbmNsdWRlICJXRUJQSW1hZ2VEZWNvZGVyLmgiCiAj
ZW5kaWYKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxjbWF0aD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMTI0LDE4ICsx
MjYsMjcgQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBoYU8KICAgICBpZiAobWF0Y2hlc0lDT1NpZ25h
dHVyZShjb250ZW50cykgfHwgbWF0Y2hlc0NVUlNpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAg
IHJldHVybiBuZXcgSUNPSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CiAKKyNpZiBQTEFURk9STShRVCkgJiYgVVNFKEZBTExCQUNLX1RPX1FUX0lN
QUdFX0RFQ09ERVIpCisgICAgcmV0dXJuIG5ldyBJbWFnZURlY29kZXJRdChhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworI2Vsc2UKICAgICByZXR1cm4gMDsKKyNlbmRp
ZgogfQogCiAjaWYgIVVTRShTS0lBKQogCiBJbWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKLSAgICA6
IG1faGFzQWxwaGEoZmFsc2UpCisgICAgOiBtX3NpemUoKQorICAgICwgbV9oYXNBbHBoYShmYWxz
ZSkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0aW9uKDApCiAgICAg
LCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCiAgICAgLCBtX3ByZW11bHRp
cGx5QWxwaGEodHJ1ZSkKIHsKKyNpZiBQTEFURk9STShRVCkKKyAgICBtX3BpeG1hcCA9IFFQaXht
YXAoKTsKKyAgICBtX2ltYWdlID0gUUltYWdlKCk7CisjZW5kaWYKIH0gCiAKIEltYWdlRnJhbWUm
IEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyMDEyMmZmLi4wMWE5ZGU3Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5oCkBAIC02NCw3ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERp
c3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVi
dWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMK
ICAgICAgICAgfTsKLSNpZiBVU0UoU0tJQSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1B
R0VfREVDT0RFUikpCisKKyNpZiBVU0UoU0tJQSkKICAgICAgICAgdHlwZWRlZiB1aW50MzJfdCBQ
aXhlbERhdGE7CiAjZWxzZQogICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIFBpeGVsRGF0YTsKQEAg
LTExNiw2ICsxMTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGcmFtZURh
dGE6OmNsZWFyKCkpLgogICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkg
Y29uc3Q7CiAKKyNpZiBQTEFURk9STShRVCkgJiYgVVNFKEZBTExCQUNLX1RPX1FUX0lNQUdFX0RF
Q09ERVIpCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3UVBpeG1hcCgpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldFBpeG1hcChjb25zdCBRUGl4bWFwJik7CisjZW5kaWYKKwogICAgICAgICBi
b29sIGhhc0FscGhhKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJh
bWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAgICBG
cmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQpAQCAtMTQwLDE5
ICsxNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAjaWYgVVNFKFNLSUEp
CiAgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAuYml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOwot
I2VsaWYgUExBVEZPUk0oUVQpICYmIFVTRShRVF9JTUFHRV9ERUNPREVSKQotICAgICAgICAgICAg
bV9pbWFnZSA9IG1fcGl4bWFwLnRvSW1hZ2UoKTsKLSAgICAgICAgICAgIG1fcGl4bWFwID0gUVBp
eG1hcCgpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFFSZ2IqPiht
X2ltYWdlLnNjYW5MaW5lKHkpKSArIHg7Ci0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIG1fYnl0
ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKICNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIG1fYnl0
ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKICAgICAgICAgfQogCi0jaWYgUExBVEZPUk0oUVQpICYm
IFVTRShRVF9JTUFHRV9ERUNPREVSKQotICAgICAgICB2b2lkIHNldFBpeG1hcChjb25zdCBRUGl4
bWFwJiBwaXhtYXApOwotI2VuZGlmCi0KICAgICBwcml2YXRlOgogI2lmIFVTRShDRykKICAgICAg
ICAgdHlwZWRlZiBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gTmF0aXZlQmFja2luZ1N0b3Jl
OwpAQCAtMTkwLDEyICsxODcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pCiAgICAgICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJv
ZmlsZTsKICNlbmRpZgotI2VsaWYgUExBVEZPUk0oUVQpICYmIFVTRShRVF9JTUFHRV9ERUNPREVS
KQorI2Vsc2UKKyNpZiBQTEFURk9STShRVCkKICAgICAgICAgbXV0YWJsZSBRUGl4bWFwIG1fcGl4
bWFwOwogICAgICAgICBtdXRhYmxlIFFJbWFnZSBtX2ltYWdlOwotICAgICAgICBib29sIG1faGFz
QWxwaGE7Ci0gICAgICAgIEludFNpemUgbV9zaXplOwotI2Vsc2UKKyNlbmRpZgogICAgICAgICBO
YXRpdmVCYWNraW5nU3RvcmUgbV9iYWNraW5nU3RvcmU7CiAgICAgICAgIFBpeGVsRGF0YSogbV9i
eXRlczsgLy8gVGhlIG1lbW9yeSBpcyBiYWNrZWQgYnkgbV9iYWNraW5nU3RvcmUuCiAgICAgICAg
IEludFNpemUgbV9zaXplOwpAQCAtMzM3LDYgKzMzMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc2V0TWF4TnVtUGl4ZWxzKGludCBtKSB7IG1fbWF4TnVtUGl4ZWxzID0g
bTsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkgJiYgVVNFKEZBTExCQUNLX1RPX1FUX0lN
QUdFX0RFQ09ERVIpCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlRGVjb2RlclF0KCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHBy
ZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOwogICAgICAgICBpbnQgdXBwZXJCb3VuZFNjYWxl
ZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZWM2N2ZjLi4wNjg1NTRmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMDMtMDcgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQsIGFkZCBmYWxs
YmFjayBvcHRpb24gdG8gUUltYWdlRGVjb2RlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MDAKKworICAgICAgICBUaGlzIGNoYW5nZSBtb2RpZmll
cyB0aGUgZGVmYXVsdCBJbWFnZURlY29kZXIgZm9yIFF0LXBvcnQgZnJvbSBRSW1hZ2VEZWNvZGVy
IHRvIFdlYkNvcmUgSW1hZ2VEZWNvZGVyCisgICAgICAgIGhvd2V2ZXIgSSBhZGQgYSBuZXcgbWFj
cm8gKGNhbGxlZCBXVEZfVVNFX0ZBTExCQUNLX1RPX1FUX0lNQUdFX0RFQ09ERVIpIHdoaWNoIGFs
bG93cyB5b3UgdG8gY29tcGlsZSB3aXRoCisgICAgICAgIGEgZmFsbGJhY2sgdG8gUUltYWdlRGVj
b2Rlciwgc28gdGhlIGJlaGF2aW9yIGlzIHRvIHRyeSB0byB1c2UgUUltYWdlRGVjb2RlciBvbmx5
IGlmIFdlYkNvcmUgSW1hZ2VEZWNvZGVyCisgICAgICAgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgcmVx
dWVzdGVkIHR5cGUuIFFJbWFnZURlY29kZXIgbWlnaHQgaGFuZGxlIGV4b3RpYyBpbWFnZSB0eXBl
cyB0aHJvdWdoIFF0J3MgcGx1Z2lucywgYnV0CisgICAgICAgIGl0J3MgYSBzZWN1cml0eSByaXNr
IHNpbmNlIFF0IGNhbiBjb250YWluIGN1c3RvbSBJbWFnZURlY29kZXIgcGx1Z2lucywgdGh1cyBJ
IHNldCB0aGUgdXNpbmcgb2YgdGhlIGZhbGxiYWNrIHRvCisgICAgICAgIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgSSByZWR1Y2VkIHRoZSBRSW1hZ2VEZWNvZGVyIHBhcnQgb2YgV2Vi
S2l0IHRvIGFzIG1pbmltYWxpc3RpYyAtIGJ1dCBmdWxseSBmdW5jdGlvbmFsIC0gYXMgSSBjYW4u
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBxbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjogQWRkIFdURl9VU0VfRkFMTEJBQ0tfVE9f
UVRfSU1BR0VfREVDT0RFUiBtYWNybyBhbmQgc2V0IGl0IHRvIDAKKyAgICAgICAgYnkgZGVmYXVs
dC4KKwogMjAxMi0wMy0wNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CiAKICAgICAgICAgW1F0XSBGaXggY29tcGlsYXRpb24gd2l0aG91dCBRdFF1aWNrMQpkaWZm
IC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9Ub29s
cy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IDg1ZTlhNGEuLjQxOThhNmUKLS0tIGEvVG9vbHMvcW1ha2UvbWtz
cGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy9mZWF0dXJlcy5wcmYKQEAgLTkwLDcgKzkwLDEwIEBAIGhhdmVRdCg1KSB7CiAhY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX0FOSU1BVElPTl9BUEk9Lik6IERFRklORVMgKz0gRU5BQkxFX0FO
SU1BVElPTl9BUEk9MAogCiAjIFBvbGljeSBkZWNpc2lvbnM6IGZvciB1c2luZyBhIHBhcnRpY3Vs
YXIgdGhpcmQtcGFydHkgbGlicmFyeSBvciBvcHRpb25hbCBPUyBzZXJ2aWNlCi0hY29udGFpbnMo
REVGSU5FUywgV1RGX1VTRV9RVF9JTUFHRV9ERUNPREVSPS4pOiBERUZJTkVTICs9IFdURl9VU0Vf
UVRfSU1BR0VfREVDT0RFUj0xCisKKyMgRmFsbGJhY2sgdG8gUXQncyBJbWFnZURlY29kZXIgaWYg
V2ViQ29yZSBJbWFnZURlY29kZXIgZG9lc24ndCBzdXBwb3J0IHRoZSByZXF1ZXN0ZWQgaW1hZ2Ug
Zm9ybWF0CisjIFdhcm5pbmc6IHVzaW5nIG9mIFFJbWFnZURlY29kZXIgY2FuIGJlIGEgc2VjdXJp
dHkgaXNzdWUsIGRldGFpbHM6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzM4NTU0CishY29udGFpbnMo
REVGSU5FUywgV1RGX1VTRV9GQUxMQkFDS19UT19RVF9JTUFHRV9ERUNPREVSPS4pOiBERUZJTkVT
ICs9IFdURl9VU0VfRkFMTEJBQ0tfVE9fUVRfSU1BR0VfREVDT0RFUj0wCiAKICMgRW5hYmxlZCBp
biBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggaWYgbm90IHNldAogIyBXZSBo
YXZlIHRvIGRvIHRoZSBzYW1lIHRvIGJlIGFibGUgdG8gZGlzYWJsZSB0aGUgZmVhdHVyZSBpbiBi
dWlsZC13ZWJraXQK
</data>
<flag name="commit-queue"
          id="133690"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130632</attachid>
            <date>2012-03-07 08:47:08 -0800</date>
            <delta_ts>2012-03-12 08:42:37 -0700</delta_ts>
            <desc>proposed patch, chrome-ews fix</desc>
            <filename>fallback0307.patch2</filename>
            <type>text/plain</type>
            <size>20426</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmQ3ZTU2Li5hZTM0ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTItMDMtMDcgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQsIGFkZCBmYWxs
YmFjayBvcHRpb24gdG8gUUltYWdlRGVjb2RlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MDAKKworICAgICAgICBUaGlzIGNoYW5nZSBtb2RpZmll
cyB0aGUgZGVmYXVsdCBJbWFnZURlY29kZXIgZm9yIFF0LXBvcnQgZnJvbSBRSW1hZ2VEZWNvZGVy
IHRvIFdlYkNvcmUgSW1hZ2VEZWNvZGVyCisgICAgICAgIGhvd2V2ZXIgSSBhZGQgYSBuZXcgbWFj
cm8gKGNhbGxlZCBXVEZfVVNFX0ZBTExCQUNLX1RPX1FUX0lNQUdFX0RFQ09ERVIpIHdoaWNoIGFs
bG93cyB5b3UgdG8gY29tcGlsZSB3aXRoCisgICAgICAgIGEgZmFsbGJhY2sgdG8gUUltYWdlRGVj
b2Rlciwgc28gdGhlIGJlaGF2aW9yIGlzIHRvIHRyeSB0byB1c2UgUUltYWdlRGVjb2RlciBvbmx5
IGlmIFdlYkNvcmUgSW1hZ2VEZWNvZGVyCisgICAgICAgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgcmVx
dWVzdGVkIHR5cGUuIFFJbWFnZURlY29kZXIgbWlnaHQgaGFuZGxlIGV4b3RpYyBpbWFnZSB0eXBl
cyB0aHJvdWdoIFF0J3MgcGx1Z2lucywgYnV0CisgICAgICAgIGl0J3MgYSBzZWN1cml0eSByaXNr
IHNpbmNlIFF0IGNhbiBjb250YWluIGN1c3RvbSBJbWFnZURlY29kZXIgcGx1Z2lucywgdGh1cyBJ
IHNldCB0aGUgdXNpbmcgb2YgdGhlIGZhbGxiYWNrIHRvCisgICAgICAgIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgSSByZWR1Y2VkIHRoZSBRSW1hZ2VEZWNvZGVyIHBhcnQgb2YgV2Vi
S2l0IHRvIGFzIG1pbmltYWxpc3RpYyAtIGJ1dCBmdWxseSBmdW5jdGlvbmFsIC0gYXMgSSBjYW4u
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIG5lZWRlZC4KKworICAgICAgICAqIFRhcmdldC5wcmk6IE1vdmUgV2ViQ29yZSBJbWFn
ZURlY29kZXIgZmlsZXMgb3V0IG9mIGd1YXJkcy4KKyAgICAgICAgKiBXZWJDb3JlLnByaTogTW92
ZSBXZWJDb3JlIEltYWdlRGVjb2RlciBpbmNsdWRlIHBhdGhzIG91dCBvZiBndWFyZHMuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOiBSZW1vdmUgdW5uZWNlc3Nh
cnkgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVB
dEluZGV4KTogQWRkIFFJbWFnZURlY29kZXIgZmFsbGJhY2sgY2FzZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOiBSZW1vdmUgdW5uZWNlc3NhcnkgdHlwZWRlZnMu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZURlY29kZXJRdC5jcHA6CisgICAgICAgIEFkZCB0aGUgZmFsbGJhY2sgbWFjcm8gZ3VhcmQgYXJv
dW5kIFFJbWFnZURlY29kZXIuCisgICAgICAgIE1vdmVkIHRocmVlIGZ1bmN0aW9ucyBoZXJlIGZy
b20gcmVtb3ZlZCBJbWFnZUZyYW1lUXQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXJRdDo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZTo6YXNOZXdRUGl4bWFwKTogUmVuYW1lZCBhbmQgbW92ZWQgaGVy
ZSBmcm9tIEltYWdlRnJhbWVRdC5jcHAgKEl0IHdhcyBhc05ld05hdGl2ZUltYWdlIHdoZW4gd2Ug
CisgICAgICAgIHVzZWQgdG8gaGF2ZSAxIGltYWdlZGVjb2RlciBhdCB0aGUgc2FtZSB0aW1lKQor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UGl4bWFwKTogTW92ZWQgZnJvbSBJbWFn
ZUZyYW1lUXQuY3BwCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUlt
YWdlKTogTW92ZWQgZnJvbSBJbWFnZUZyYW1lUXQuY3BwCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuaDogQWRkIHRoZSBmYWxsYmFjayBtYWNybyBndWFyZCBh
cm91bmQgSW1hZ2VEZWNvZGVyUXQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlclF0Ojppc0ltYWdlRGVjb2RlclF0KTogTmV3IG1ldGhvZC4KKyAgICAg
ICAgKEltYWdlRGVjb2RlclF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwOiBSZW9yZGVyIGFuZCBhZGQgbmV3IG5lY2Vzc2FyeSBpbmNsdWRlcy4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKTogQWRkIHRoZSBndWFyZGVk
IGZhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSk6IElu
aXRpYWxpemUgbV9zaXplLCBtX3BpeG1hcCwgbV9pbWFnZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKEltYWdlRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6IFJlbW92ZSB1c2VsZXNzIFF0IHBh
cnQuCisgICAgICAgIChJbWFnZURlY29kZXIpOiBTaW1wbGlmeSBtZW1iZXJzIGFuZCBtYWNyb3Mu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzSW1hZ2VEZWNvZGVyUXQpOiBOZXcg
bWV0aG9kLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0ltYWdlRnJhbWVR
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgIE1vc3RseSBkZWFkIGNvZGUsIG90aGVyIGNvZGUgbW92
ZWQgdG8gSW1hZ2VEZWNvZGVyUXQuY3BwCisKIDIwMTItMDMtMDcgIEFydW4gUGF0b2xlICA8Ym1m
ODM0QG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBIVE1MVHJhY2tFbGVtZW50LmlkbCBkb2Vzbid0
IGhhdmUgZGVmYXVsdCBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IDMyODQwZjguLjNjNTk3NjgKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMDY3LDcgKzEwNjcs
NiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCiAgICAgcGxh
dGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vSGlzdG9ncmFtU3Vw
cG9ydC5jcHAgXAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0ltYWdlRnJhbWVRdC5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmFtaWx5LmNwcCBcCkBAIC0xMTE1LDYgKzExMTQsMTQgQEAgU09VUkNFUyArPSBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNw
cCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uLmNwcCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNw
cCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAg
XAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAgXAor
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIFwKKyAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwXAorICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIFwKKyAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIFwKKyAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBcCiAgICAgcGxhdGZv
cm0vS2lsbFJpbmdOb25lLmNwcCBcCiAgICAgcGxhdGZvcm0vS1VSTC5jcHAgXAogICAgIHBsYXRm
b3JtL0xhbmd1YWdlLmNwcCBcCkBAIC0yMjQxLDYgKzIyNDgsMTMgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24u
aCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oIFwK
KyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBcCisgICAg
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaFwKKyAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nLmgg
XAogICAgIHBsYXRmb3JtL0tVUkwuaCBcCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmggXApAQCAtMjgw
OCw2ICsyODIyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JY29uUXQuY3Bw
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBcCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW50UG9pbnRR
dC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ludFJlY3RRdC5jcHAgXApAQCAtMzk0
NywzMyArMzk2MiwxMCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUhUTUw9MSkgewogICAg
ICAgICBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAogfQogCi1jb250YWlucyhERUZJTkVTLCBXVEZf
VVNFX1FUX0lNQUdFX0RFQ09ERVI9MSkgewotICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VEZWNvZGVyUXQuaAotICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VEZWNvZGVyUXQuY3BwCi19IGVsc2UgewotICAgIEhFQURFUlMgKz0gXAotICAgICAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggXAotICAgICAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBcCi0gICAgICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBcCi0gICAgICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oXAotICAgICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggXAotICAgICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBcCi0gICAgICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAotCi0gICAgU09V
UkNFUyArPSBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5j
cHAgXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRl
ci5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5jcHBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCi0KLSAgICBjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1dFQlA9MSkg
ewotICAgICAgICBIRUFERVJTICs9IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oCi0gICAgICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAotICAgIH0KK2NvbnRhaW5zKERFRklORVMsIFdURl9V
U0VfV0VCUD0xKSB7CisgICAgSU5DTFVERVBBVEggKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicAorICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmgKKyAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv
V0VCUEltYWdlRGVjb2Rlci5jcHAKIH0KIAogIXN5c3RlbS1zcWxpdGU6ZXhpc3RzKCAkJHtTUUxJ
VEUzU1JDRElSfS9zcWxpdGUzLmMgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKaW5kZXggYmRjZDEwNy4uNDRkNWJkYgotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtNjEsNiArNjEs
MTEgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAgXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
IFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMgXAorICAgICQkU09V
UkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAgXAorICAgICQkU09VUkNFX0RJUi9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYgXAorICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28gXAorICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnIFwKKyAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
IFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vbGV2ZWxkYiBcCiAgICAgJCRTT1VSQ0VfRElS
L3BsYXRmb3JtL21vY2sgXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9uZXR3b3JrIFwKQEAg
LTIwOSwyOCArMjE0LDE5IEBAIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfVEVYVFVSRV9NQVBQ
RVJfR0w9MSl8Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpCiAgICAgTElCUyArPSAt
bHNxbGl0ZTMKIH0KIAotY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9RVF9JTUFHRV9ERUNPREVS
PTApIHsKLSAgICBJTkNMVURFUEFUSCArPSBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAgXAotICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmIFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljbyBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnIFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
ZwotCi0gICAgaGF2ZVF0KDUpIHsKLSAgICAgICAgIyBRdDUgYWxsb3dzIHVzIHRvIHVzZSBjb25m
aWcgdGVzdHMgdG8gY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGVzZSBsaWJyYXJpZXMKLSAg
ICAgICAgIWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xpYmpwZWcsIHllcyk6IGVycm9yKCJKUEVHIGxp
YnJhcnkgbm90IGZvdW5kISIpCi0gICAgICAgICFjb250YWlucyhjb25maWdfdGVzdF9saWJwbmcs
IHllcyk6IGVycm9yKCJQTkcgMS4yIGxpYnJhcnkgbm90IGZvdW5kISIpCi0gICAgfQotCi0gICAg
TElCUyArPSAtbGpwZWcgLWxwbmcxMgorY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9XRUJQPTEp
IHsKKyAgICBJTkNMVURFUEFUSCArPSAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicAorICAgIExJQlMgKz0gLWx3ZWJwCit9CiAKLSAgICBjb250YWlucyhERUZJTkVTLCBX
VEZfVVNFX1dFQlA9MSkgewotICAgICAgICBJTkNMVURFUEFUSCArPSAkJFNPVVJDRV9ESVIvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicAotICAgICAgICBMSUJTICs9IC1sd2VicAotICAgIH0K
K2hhdmVRdCg1KSB7CisgICAgIyBRdDUgYWxsb3dzIHVzIHRvIHVzZSBjb25maWcgdGVzdHMgdG8g
Y2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGVzZSBsaWJyYXJpZXMKKyAgICAhY29udGFpbnMo
Y29uZmlnX3Rlc3RfbGlianBlZywgeWVzKTogZXJyb3IoIkpQRUcgbGlicmFyeSBub3QgZm91bmQh
IikKKyAgICAhY29udGFpbnMoY29uZmlnX3Rlc3RfbGlicG5nLCB5ZXMpOiBlcnJvcigiUE5HIDEu
MiBsaWJyYXJ5IG5vdCBmb3VuZCEiKQogfQogCitMSUJTICs9IC1sanBlZyAtbHBuZzEyCisKIHdp
bjMyLSp8d2luY2UqIHsKICAgICBETExERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2Jpbgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmNDQ5NWVkLi43MGU4MTkwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTI5
LDExICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2Uu
aCIKIAotI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCi0jZWxz
ZQogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTQ2LDYgKzE0MiwxMiBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKIAogICAgIC8vIFJldHVybiB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAg
ICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5j
cmVtZW50cyBpdHMgcmVmY291bnQuCisKKyNpZiBQTEFURk9STShRVCkgJiYgVVNFKEZBTExCQUNL
X1RPX1FUX0lNQUdFX0RFQ09ERVIpCisgICAgaWYgKG1fZGVjb2Rlci0+aXNJbWFnZURlY29kZXJR
dCgpKQorICAgICAgICByZXR1cm4gYnVmZmVyLT5hc05ld1FQaXhtYXAoKTsKKyNlbmRpZgorCiAg
ICAgcmV0dXJuIGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IDFkMDIyMDIuLjUzMDljNjMKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC03MywxMCArNzMsNiBAQCBjbGFzcyBJbWFn
ZURlY29kZXI7CiBjbGFzcyBUaWxlZEltYWdlT3BlblZHOwogdHlwZWRlZiBJbWFnZURlY29kZXIq
IE5hdGl2ZUltYWdlU291cmNlUHRyOwogdHlwZWRlZiBUaWxlZEltYWdlT3BlblZHKiBOYXRpdmVJ
bWFnZVB0cjsKLSNlbGlmIFBMQVRGT1JNKFFUKQotY2xhc3MgSW1hZ2VEZWNvZGVyUXQ7Ci10eXBl
ZGVmIEltYWdlRGVjb2RlclF0KiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKLXR5cGVkZWYgUVBpeG1h
cCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxzZQogY2xhc3MgSW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJ
bWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwpAQCAtOTYsNiArOTIsOCBAQCB0eXBl
ZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogY2xhc3MgSW1hZ2VEZWNv
ZGVyOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwogdHlwZWRl
ZiB2b2lkKiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFBMQVRGT1JNKFFUKQordHlwZWRlZiBRUGl4
bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDFmOTNhYTMuLjFhNmJkOGMKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApA
QCAtMzEsMjAgKzMxLDExIEBACiAKICNpbmNsdWRlIDxRdENvcmUvUUJ5dGVBcnJheT4KICNpbmNs
dWRlIDxRdENvcmUvUUJ1ZmZlcj4KLQogI2luY2x1ZGUgPFF0R3VpL1FJbWFnZVJlYWRlcj4KLSNp
bmNsdWRlIDxxZGVidWcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZURlY29kZXIq
IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3Vy
Y2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi17Ci0gICAgLy8gV2UgbmVl
ZCBhdCBsZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGltYWdlIHdlJ3Jl
IGRlYWxpbmcgd2l0aC4KLSAgICBpZiAoZGF0YS5zaXplKCkgPCA0KQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIHJldHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQoYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKLX0KKyNpZiBVU0UoRkFMTEJBQ0tfVE9fUVRfSU1BR0VfREVD
T0RFUikKIAogSW1hZ2VEZWNvZGVyUXQ6OkltYWdlRGVjb2RlclF0KEltYWdlU291cmNlOjpBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKQEAgLTEyOSw3ICsxMjAsNyBAQCBp
bnQgSW1hZ2VEZWNvZGVyUXQ6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiBTdHJpbmcgSW1hZ2VE
ZWNvZGVyUXQ6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5n
KG1fZm9ybWF0LmNvbnN0RGF0YSgpLCBtX2Zvcm1hdC5sZW5ndGgoKSk7Ci19OworfQogCiBJbWFn
ZUZyYW1lKiBJbWFnZURlY29kZXJRdDo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKQEAgLTI0NSw2ICsyMzYsNDAgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6Y2xlYXJQb2ludGVy
cygpCiAgICAgbV9yZWFkZXIuY2xlYXIoKTsKICAgICBtX2J1ZmZlci5jbGVhcigpOwogfQorCitO
YXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld1FQaXhtYXAoKSBjb25zdAoreworICAgIGlm
IChtX3BpeG1hcC5pc051bGwoKSAmJiAhbV9pbWFnZS5pc051bGwoKSkgeworICAgICAgICBtX3Bp
eG1hcCA9IFFQaXhtYXA6OmZyb21JbWFnZShtX2ltYWdlKTsKKyAgICAgICAgbV9pbWFnZSA9IFFJ
bWFnZSgpOworICAgIH0KKyAgICByZXR1cm4gbmV3IFFQaXhtYXAobV9waXhtYXApOworfQorCisv
LyBUaGUgaW1hZ2UgbXVzdCBub3QgaGF2ZSBmb3JtYXQgODg4OCBwcmUgbXVsdGlwbGllZC4uLgor
dm9pZCBJbWFnZUZyYW1lOjpzZXRQaXhtYXAoY29uc3QgUVBpeG1hcCYgcGl4bWFwKQoreworICAg
IG1fcGl4bWFwID0gcGl4bWFwOworICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKKyAgICBtX3NpemUg
PSBwaXhtYXAuc2l6ZSgpOworICAgIG1faGFzQWxwaGEgPSBwaXhtYXAuaGFzQWxwaGFDaGFubmVs
KCk7Cit9CisKKyNlbmRpZiAvLyBVU0UoRkFMTEJBQ0tfVE9fUVRfSU1BR0VfREVDT0RFUikKKwor
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0Cit7Cisg
ICAgUUltYWdlOjpGb3JtYXQgZm10OworICAgIGlmIChtX2hhc0FscGhhKQorICAgICAgICBmbXQg
PSBtX3ByZW11bHRpcGx5QWxwaGEgPyAgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxp
ZWQgOiBRSW1hZ2U6OkZvcm1hdF9BUkdCMzI7CisgICAgZWxzZQorICAgICAgICBmbXQgPSBRSW1h
Z2U6OkZvcm1hdF9SR0IzMjsKKworICAgIFFJbWFnZSBpbWcocmVpbnRlcnByZXRfY2FzdDx1Y2hh
cio+KG1fYnl0ZXMpLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBzaXplb2YoUGl4
ZWxEYXRhKSAqIG1fc2l6ZS53aWR0aCgpLCBmbXQpOworCisgICAgcmV0dXJuIG5ldyBRUGl4bWFw
KFFQaXhtYXA6OmZyb21JbWFnZShpbWcpKTsKK30KKwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVj
b2RlclF0LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAzZTQyMWMzLi5j
MzMzOWNkCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVj
b2RlclF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuaApAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNp
ZiBVU0UoRkFMTEJBQ0tfVE9fUVRfSU1BR0VfREVDT0RFUikKIAogY2xhc3MgSW1hZ2VEZWNvZGVy
UXQgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyCiB7CkBAIC01NSw2ICs1Niw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3Jl
RnJhbWUpOwogCisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VEZWNvZGVyUXQoKSB7IHJldHVybiB0
cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSW1hZ2VEZWNvZGVyUXQoY29uc3QgSW1hZ2VEZWNvZGVy
UXQmKTsKICAgICBJbWFnZURlY29kZXJRdCAmb3BlcmF0b3I9KGNvbnN0IEltYWdlRGVjb2RlclF0
Jik7CkBAIC03Myw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBpbnQgbV9yZXBldGl0
aW9uQ291bnQ7CiB9OwogCi0KKyNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZDllOTY5MC4uYThlNzNkNAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTIwLDIxICsyMCwyMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUg
IkltYWdlRGVjb2Rlci5oIgogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNtYXRo
PgotCiAjaW5jbHVkZSAiQk1QSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiR0lGSW1hZ2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgiCisjaWYgUExBVEZPUk0oUVQpCisj
aW5jbHVkZSAiSW1hZ2VEZWNvZGVyUXQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkpQRUdJbWFnZURl
Y29kZXIuaCIKICNpbmNsdWRlICJQTkdJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpZiBVU0UoV0VCUCkKICNpbmNsdWRlICJXRUJQSW1hZ2VEZWNvZGVyLmgiCiAj
ZW5kaWYKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxjbWF0aD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMTI0LDE4ICsx
MjYsMjcgQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBoYU8KICAgICBpZiAobWF0Y2hlc0lDT1NpZ25h
dHVyZShjb250ZW50cykgfHwgbWF0Y2hlc0NVUlNpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAg
IHJldHVybiBuZXcgSUNPSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CiAKKyNpZiBQTEFURk9STShRVCkgJiYgVVNFKEZBTExCQUNLX1RPX1FUX0lN
QUdFX0RFQ09ERVIpCisgICAgcmV0dXJuIG5ldyBJbWFnZURlY29kZXJRdChhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworI2Vsc2UKICAgICByZXR1cm4gMDsKKyNlbmRp
ZgogfQogCiAjaWYgIVVTRShTS0lBKQogCiBJbWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKLSAgICA6
IG1faGFzQWxwaGEoZmFsc2UpCisgICAgOiBtX3NpemUoKQorICAgICwgbV9oYXNBbHBoYShmYWxz
ZSkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0aW9uKDApCiAgICAg
LCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCiAgICAgLCBtX3ByZW11bHRp
cGx5QWxwaGEodHJ1ZSkKIHsKKyNpZiBQTEFURk9STShRVCkKKyAgICBtX3BpeG1hcCA9IFFQaXht
YXAoKTsKKyAgICBtX2ltYWdlID0gUUltYWdlKCk7CisjZW5kaWYKIH0gCiAKIEltYWdlRnJhbWUm
IEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyMDEyMmZmLi4yZWMzNmEzCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5oCkBAIC02NCw3ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERp
c3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVi
dWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMK
ICAgICAgICAgfTsKLSNpZiBVU0UoU0tJQSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1B
R0VfREVDT0RFUikpCisKKyNpZiBVU0UoU0tJQSkKICAgICAgICAgdHlwZWRlZiB1aW50MzJfdCBQ
aXhlbERhdGE7CiAjZWxzZQogICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIFBpeGVsRGF0YTsKQEAg
LTExNiw2ICsxMTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGcmFtZURh
dGE6OmNsZWFyKCkpLgogICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkg
Y29uc3Q7CiAKKyNpZiBQTEFURk9STShRVCkgJiYgVVNFKEZBTExCQUNLX1RPX1FUX0lNQUdFX0RF
Q09ERVIpCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGFzTmV3UVBpeG1hcCgpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldFBpeG1hcChjb25zdCBRUGl4bWFwJik7CisjZW5kaWYKKwogICAgICAgICBi
b29sIGhhc0FscGhhKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJh
bWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAgICBG
cmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQpAQCAtMTQwLDE5
ICsxNDYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAjaWYgVVNFKFNLSUEp
CiAgICAgICAgICAgICByZXR1cm4gbV9iaXRtYXAuYml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOwot
I2VsaWYgUExBVEZPUk0oUVQpICYmIFVTRShRVF9JTUFHRV9ERUNPREVSKQotICAgICAgICAgICAg
bV9pbWFnZSA9IG1fcGl4bWFwLnRvSW1hZ2UoKTsKLSAgICAgICAgICAgIG1fcGl4bWFwID0gUVBp
eG1hcCgpOwotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFFSZ2IqPiht
X2ltYWdlLnNjYW5MaW5lKHkpKSArIHg7CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIG1fYnl0
ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKICNlbmRpZgogICAgICAgICB9CiAKLSNpZiBQTEFURk9S
TShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0gICAgICAgIHZvaWQgc2V0UGl4bWFwKGNv
bnN0IFFQaXhtYXAmIHBpeG1hcCk7Ci0jZW5kaWYKLQogICAgIHByaXZhdGU6CiAjaWYgVVNFKENH
KQogICAgICAgICB0eXBlZGVmIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBOYXRpdmVCYWNr
aW5nU3RvcmU7CkBAIC0xOTAsMTIgKzE4OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
UExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikKICAgICAgICAgQ29sb3JQcm9maWxlIG1f
Y29sb3JQcm9maWxlOwogI2VuZGlmCi0jZWxpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdF
X0RFQ09ERVIpCisjZWxzZQorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBtdXRhYmxlIFFQaXht
YXAgbV9waXhtYXA7CiAgICAgICAgIG11dGFibGUgUUltYWdlIG1faW1hZ2U7Ci0gICAgICAgIGJv
b2wgbV9oYXNBbHBoYTsKLSAgICAgICAgSW50U2l6ZSBtX3NpemU7Ci0jZWxzZQorI2VuZGlmCiAg
ICAgICAgIE5hdGl2ZUJhY2tpbmdTdG9yZSBtX2JhY2tpbmdTdG9yZTsKICAgICAgICAgUGl4ZWxE
YXRhKiBtX2J5dGVzOyAvLyBUaGUgbWVtb3J5IGlzIGJhY2tlZCBieSBtX2JhY2tpbmdTdG9yZS4K
ICAgICAgICAgSW50U2l6ZSBtX3NpemU7CkBAIC0zMzcsNiArMzM0LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRNYXhOdW1QaXhlbHMoaW50IG0pIHsgbV9tYXhOdW1Q
aXhlbHMgPSBtOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKSAmJiBVU0UoRkFMTEJBQ0tf
VE9fUVRfSU1BR0VfREVDT0RFUikKKyAgICAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VEZWNvZGVy
UXQoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZvaWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgIGludCB1cHBlckJv
dW5kU2NhbGVkWChpbnQgb3JpZ1gsIGludCBzZWFyY2hTdGFydCA9IDApOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRlYzY3ZmMuLjA2ODU1NGYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxMi0wMy0wNyAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBbUXRdIFNldCBXZWJDb3JlIGltYWdlZGVjb2RlcnMgYXMgZGVmYXVsdCwg
YWRkIGZhbGxiYWNrIG9wdGlvbiB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIFRoaXMgY2hhbmdl
IG1vZGlmaWVzIHRoZSBkZWZhdWx0IEltYWdlRGVjb2RlciBmb3IgUXQtcG9ydCBmcm9tIFFJbWFn
ZURlY29kZXIgdG8gV2ViQ29yZSBJbWFnZURlY29kZXIKKyAgICAgICAgaG93ZXZlciBJIGFkZCBh
IG5ldyBtYWNybyAoY2FsbGVkIFdURl9VU0VfRkFMTEJBQ0tfVE9fUVRfSU1BR0VfREVDT0RFUikg
d2hpY2ggYWxsb3dzIHlvdSB0byBjb21waWxlIHdpdGgKKyAgICAgICAgYSBmYWxsYmFjayB0byBR
SW1hZ2VEZWNvZGVyLCBzbyB0aGUgYmVoYXZpb3IgaXMgdG8gdHJ5IHRvIHVzZSBRSW1hZ2VEZWNv
ZGVyIG9ubHkgaWYgV2ViQ29yZSBJbWFnZURlY29kZXIKKyAgICAgICAgZG9lc24ndCBzdXBwb3J0
IHRoZSByZXF1ZXN0ZWQgdHlwZS4gUUltYWdlRGVjb2RlciBtaWdodCBoYW5kbGUgZXhvdGljIGlt
YWdlIHR5cGVzIHRocm91Z2ggUXQncyBwbHVnaW5zLCBidXQKKyAgICAgICAgaXQncyBhIHNlY3Vy
aXR5IHJpc2sgc2luY2UgUXQgY2FuIGNvbnRhaW4gY3VzdG9tIEltYWdlRGVjb2RlciBwbHVnaW5z
LCB0aHVzIEkgc2V0IHRoZSB1c2luZyBvZiB0aGUgZmFsbGJhY2sgdG8KKyAgICAgICAgZGlzYWJs
ZWQgYnkgZGVmYXVsdC4KKworICAgICAgICBJIHJlZHVjZWQgdGhlIFFJbWFnZURlY29kZXIgcGFy
dCBvZiBXZWJLaXQgdG8gYXMgbWluaW1hbGlzdGljIC0gYnV0IGZ1bGx5IGZ1bmN0aW9uYWwgLSBh
cyBJIGNhbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmOiBBZGQgV1RGX1VTRV9GQUxM
QkFDS19UT19RVF9JTUFHRV9ERUNPREVSIG1hY3JvIGFuZCBzZXQgaXQgdG8gMAorICAgICAgICBi
eSBkZWZhdWx0LgorCiAyMDEyLTAzLTA3ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBjb21waWxhdGlvbiB3aXRob3V0IFF0UXVp
Y2sxCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnBy
ZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODVlOWE0YS4uNDE5OGE2ZQotLS0gYS9Ub29scy9x
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpAQCAtOTAsNyArOTAsMTAgQEAgaGF2ZVF0KDUpIHsK
ICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfQU5JTUFUSU9OX0FQST0uKTogREVGSU5FUyArPSBF
TkFCTEVfQU5JTUFUSU9OX0FQST0wCiAKICMgUG9saWN5IGRlY2lzaW9uczogZm9yIHVzaW5nIGEg
cGFydGljdWxhciB0aGlyZC1wYXJ0eSBsaWJyYXJ5IG9yIG9wdGlvbmFsIE9TIHNlcnZpY2UKLSFj
b250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9Lik6IERFRklORVMgKz0g
V1RGX1VTRV9RVF9JTUFHRV9ERUNPREVSPTEKKworIyBGYWxsYmFjayB0byBRdCdzIEltYWdlRGVj
b2RlciBpZiBXZWJDb3JlIEltYWdlRGVjb2RlciBkb2Vzbid0IHN1cHBvcnQgdGhlIHJlcXVlc3Rl
ZCBpbWFnZSBmb3JtYXQKKyMgV2FybmluZzogdXNpbmcgb2YgUUltYWdlRGVjb2RlciBjYW4gYmUg
YSBzZWN1cml0eSBpc3N1ZSwgZGV0YWlsczogaHR0cHM6Ly93ZWJraXQub3JnL2IvMzg1NTQKKyFj
b250YWlucyhERUZJTkVTLCBXVEZfVVNFX0ZBTExCQUNLX1RPX1FUX0lNQUdFX0RFQ09ERVI9Lik6
IERFRklORVMgKz0gV1RGX1VTRV9GQUxMQkFDS19UT19RVF9JTUFHRV9ERUNPREVSPTAKIAogIyBF
bmFibGVkIGluIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBpZiBub3Qgc2V0
CiAjIFdlIGhhdmUgdG8gZG8gdGhlIHNhbWUgdG8gYmUgYWJsZSB0byBkaXNhYmxlIHRoZSBmZWF0
dXJlIGluIGJ1aWxkLXdlYmtpdAo=
</data>
<flag name="review"
          id="133702"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="133703"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131330</attachid>
            <date>2012-03-12 08:42:37 -0700</date>
            <delta_ts>2012-03-20 03:00:14 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>fallback0312.patch</filename>
            <type>text/plain</type>
            <size>22157</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmQ3ZTU2Li4zMTE1NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMDMtMTIgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQgYW5kIGFkZCBm
YWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRo
ZSBkZWZhdWx0IEltYWdlRGVjb2RlciBmb3IgUXQtcG9ydCBmcm9tIFFJbWFnZURlY29kZXIgdG8g
V2ViQ29yZSBJbWFnZURlY29kZXIuCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3IgaXMgdG8gdXNl
IFFJbWFnZURlY29kZXIgaWYgV2ViQ29yZUltYWdlRGVjb2RlciBkb2Vzbid0IHN1cHBvcnQgdGhl
IHJlcXVlc3RlZAorICAgICAgICBpbWFnZSB0eXBlLgorICAgICAgICBJIHJlbW92ZWQgdGhlIFdU
Rl9VU0VfUVRfSU1BR0VfREVDT0RFUiBtYWNybywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyIG5lZWRl
ZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGJ1aWxkIGRlcGVkZW5jeSBmb3IgbGlicG5n
LWRldiBhbmQgbGlianBlZy1kZXYgcGFja2FnZXMsIGJlY3Vhc2UgUE5HIGFuZCBKUEVHIGltYWdl
ZGVjb2RlcnMKKyAgICAgICAgbmVlZCBub3Qgb25seSB0aGVzZSBsaWJyYXJpZXMsIGJ1dCB0aGVp
ciBoZWFkZXJzIGFsc28uIFFtYWtlLWNvbmZpZyB0ZXN0cyBmb3IgdGhlc2UgbGlicmFyaWVzIHdl
cmUKKyAgICAgICAgaW50cm9kdWNlZCBpbiByMTEwMDQ1LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOiBNb3ZlIFdlYkNvcmUgSW1hZ2VEZWNvZGVyIGZpbGVzIG91dCBvZiBn
dWFyZHMuIFJlbW92ZSBJbWFnZUZyYW1lUXQuY3BwIGZyb20gc291cmNlcy4KKyAgICAgICAgKiBX
ZWJDb3JlLnByaTogTW92ZSBXZWJDb3JlIEltYWdlRGVjb2RlciBpbmNsdWRlIHBhdGhzIG91dCBv
ZiBndWFyZHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOiBS
ZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaDogUmVtb3ZlIHVubmVjZXNzYXJ5IHR5cGVkZWZzLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3Bw
OiBNb3ZlIDIgZnVuY3Rpb25zIGhlcmUgZnJvbSByZW1vdmVkIEltYWdlRnJhbWVRdC5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJRdDo6ZmlsZW5hbWVFeHRlbnNpb24pOiBSZW1v
dmUgdW5uZWNlc3Nhcnkgc2VtaWNvbG9uLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
UXQ6OmludGVybmFsSGFuZGxlQ3VycmVudEltYWdlKTogUmVtb3ZlIHVzYWdlIG9mIFFQaXhtYXAu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldElt
YWdlKTogUmVuYW1lIHNldFBpeG1hcCB0byBzZXRJbWFnZS4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOiBBZGQgY29uZGl0aW9uIGZvciB1c2luZyBRSW1h
Z2VEZWNvZGVyLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHA6IFJlb3JnYW5pemUgaGVhZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6Y3JlYXRlKTogQWRkIFBMQVRGT1JNKFFUKSBtYWNybyBndWFyZGVkIGZhbGxiYWNrIGNhc2Ug
Zm9yIFFJbWFnZURlY29kZXIuCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmg6IFJlbmFtZSBhbmQgbW9kaWZ5IHNldFBpeG1hcCB0byBzZXRJbWFnZS4KKyAg
ICAgICAgKEltYWdlRnJhbWUpOiBSZW1vdmUgbV9waXhtYXAgbWVtYmVyLCBzaW5jZSBpdCBpcyBu
byBsb25nZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6
IFJlbW92ZSBRdC1yZWxhdGVkIGNhc2UsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgTW9zdGx5IGRlYWQgY29kZSwgb3RoZXIgY29kZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXJRdC5jcHAKKwogMjAxMi0wMy0wNyAgQXJ1biBQYXRvbGUgIDxibWY4MzRAbW90b3Jv
bGEuY29tPgogCiAgICAgICAgIEhUTUxUcmFja0VsZW1lbnQuaWRsIGRvZXNuJ3QgaGF2ZSBkZWZh
dWx0IGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggMzI4NDBmOC4uM2M1OTc2OAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwNjcsNyArMTA2Nyw2IEBAIFNPVVJD
RVMgKz0gXAogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIFwKICAgICBwbGF0Zm9ybS9HZW9s
b2NhdGlvblNlcnZpY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmNwcCBc
Ci0gICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEZhbGxiYWNrTGlzdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRG
YW1pbHkuY3BwIFwKQEAgLTExMTUsNiArMTExNCwxNCBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIFwKKyAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBcCisgICAgcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBcCisgICAgcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHBcCisgICAgcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9LaWxsUmlu
Z05vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS9LVVJMLmNwcCBcCiAgICAgcGxhdGZvcm0vTGFuZ3Vh
Z2UuY3BwIFwKQEAgLTIyNDEsNiArMjI0OCwxMyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKKyAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKKyAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuaCBcCiAgICAgcGxhdGZvcm0vS2lsbFJpbmcuaCBcCiAgICAgcGxh
dGZvcm0vS1VSTC5oIFwKICAgICBwbGF0Zm9ybS9MZW5ndGguaCBcCkBAIC0yODA4LDYgKzI4MjIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ljb25RdC5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbnRQb2ludFF0LmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW50UmVjdFF0LmNwcCBcCkBAIC0zOTQ3LDMzICszOTYy
LDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NSFRNTD0xKSB7CiAgICAgICAgIHBhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCiB9CiAKLWNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfUVRfSU1B
R0VfREVDT0RFUj0xKSB7Ci0gICAgSEVBREVSUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZURlY29kZXJRdC5oCi0gICAgU09VUkNFUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURl
Y29kZXJRdC5jcHAKLX0gZWxzZSB7Ci0gICAgSEVBREVSUyArPSBcCi0gICAgICAgIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBcCi0gICAgICAgIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKLSAgICAgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIFwKLSAgICAgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmhcCi0gICAgICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIFwKLSAgICAgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCi0KLSAgICBTT1VSQ0VTICs9IFwK
LSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBcCi0gICAg
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIFwKLSAg
ICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBcCi0g
ICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIFwK
LSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcFwK
LSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAg
XAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKLQotICAgIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VCUD0xKSB7Ci0gICAgICAg
IEhFQURFUlMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmgKLSAgICAgICAgU09VUkNFUyArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCi0gICAgfQorY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9XRUJQPTEp
IHsKKyAgICBJTkNMVURFUEFUSCArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCisgICAg
SEVBREVSUyArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aAorICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcAogfQogCiAhc3lzdGVtLXNxbGl0ZTpleGlzdHMoICQke1NRTElURTNTUkNESVJ9
L3NxbGl0ZTMuYyApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCBiZGNkMTA3Li40NGQ1YmRiCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC02MSw2ICs2MSwxMSBAQCBJTkNM
VURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcCBc
CiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMgXAogICAgICQk
U09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycyBcCisgICAgJCRTT1VSQ0VfRElSL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcCBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZiBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljbyBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcg
XAorICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcgXAogICAgICQk
U09VUkNFX0RJUi9wbGF0Zm9ybS9sZXZlbGRiIFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0v
bW9jayBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL25ldHdvcmsgXApAQCAtMjA5LDI4ICsy
MTQsMTkgQEAgY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9URVhUVVJFX01BUFBFUl9HTD0xKXxj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkKICAgICBMSUJTICs9IC1sc3FsaXRlMwog
fQogCi1jb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9MCkgewotICAg
IElOQ0xVREVQQVRIICs9IFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcCBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYgXAotICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
IFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcgXAot
ICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nCi0KLSAgICBo
YXZlUXQoNSkgewotICAgICAgICAjIFF0NSBhbGxvd3MgdXMgdG8gdXNlIGNvbmZpZyB0ZXN0cyB0
byBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZXNlIGxpYnJhcmllcwotICAgICAgICAhY29u
dGFpbnMoY29uZmlnX3Rlc3RfbGlianBlZywgeWVzKTogZXJyb3IoIkpQRUcgbGlicmFyeSBub3Qg
Zm91bmQhIikKLSAgICAgICAgIWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xpYnBuZywgeWVzKTogZXJy
b3IoIlBORyAxLjIgbGlicmFyeSBub3QgZm91bmQhIikKLSAgICB9Ci0KLSAgICBMSUJTICs9IC1s
anBlZyAtbHBuZzEyCitjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1dFQlA9MSkgeworICAgIElO
Q0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCisg
ICAgTElCUyArPSAtbHdlYnAKK30KIAotICAgIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VC
UD0xKSB7Ci0gICAgICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwCi0gICAgICAgIExJQlMgKz0gLWx3ZWJwCi0gICAgfQoraGF2ZVF0KDUp
IHsKKyAgICAjIFF0NSBhbGxvd3MgdXMgdG8gdXNlIGNvbmZpZyB0ZXN0cyB0byBjaGVjayBmb3Ig
dGhlIHByZXNlbmNlIG9mIHRoZXNlIGxpYnJhcmllcworICAgICFjb250YWlucyhjb25maWdfdGVz
dF9saWJqcGVnLCB5ZXMpOiBlcnJvcigiSlBFRyBsaWJyYXJ5IG5vdCBmb3VuZCEiKQorICAgICFj
b250YWlucyhjb25maWdfdGVzdF9saWJwbmcsIHllcyk6IGVycm9yKCJQTkcgMS4yIGxpYnJhcnkg
bm90IGZvdW5kISIpCiB9CiAKK0xJQlMgKz0gLWxqcGVnIC1scG5nMTIKKwogd2luMzItKnx3aW5j
ZSogewogICAgIERMTERFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGY0NDk1ZWQuLjMzMjIwYmYKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjksMTEgKzI5LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYg
UExBVEZPUk0oUVQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyUXQuaCIKLSNlbHNlCiAjaW5jbHVk
ZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDFkMDIyMDIuLjUzMDljNjMKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC03MywxMCArNzMsNiBAQCBj
bGFzcyBJbWFnZURlY29kZXI7CiBjbGFzcyBUaWxlZEltYWdlT3BlblZHOwogdHlwZWRlZiBJbWFn
ZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwogdHlwZWRlZiBUaWxlZEltYWdlT3BlblZH
KiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFBMQVRGT1JNKFFUKQotY2xhc3MgSW1hZ2VEZWNvZGVy
UXQ7Ci10eXBlZGVmIEltYWdlRGVjb2RlclF0KiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKLXR5cGVk
ZWYgUVBpeG1hcCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxzZQogY2xhc3MgSW1hZ2VEZWNvZGVyOwog
dHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwpAQCAtOTYsNiArOTIs
OCBAQCB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogY2xhc3Mg
SW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRy
OwogdHlwZWRlZiB2b2lkKiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFBMQVRGT1JNKFFUKQordHlw
ZWRlZiBRUGl4bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNw
cApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDFmOTNhYTMuLjU3NzhlNTQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcApAQCAtMzEsMjEgKzMxLDEwIEBACiAKICNpbmNsdWRlIDxRdENvcmUvUUJ5dGVBcnJh
eT4KICNpbmNsdWRlIDxRdENvcmUvUUJ1ZmZlcj4KLQogI2luY2x1ZGUgPFF0R3VpL1FJbWFnZVJl
YWRlcj4KLSNpbmNsdWRlIDxxZGVidWcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFn
ZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwg
SW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi17Ci0gICAg
Ly8gV2UgbmVlZCBhdCBsZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGlt
YWdlIHdlJ3JlIGRlYWxpbmcgd2l0aC4KLSAgICBpZiAoZGF0YS5zaXplKCkgPCA0KQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIHJldHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLX0KLQogSW1hZ2VEZWNvZGVyUXQ6OkltYWdl
RGVjb2RlclF0KEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3Vy
Y2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQpAQCAtMTI5LDcg
KzExOCw3IEBAIGludCBJbWFnZURlY29kZXJRdDo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKIFN0
cmluZyBJbWFnZURlY29kZXJRdDo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewogICAgIHJl
dHVybiBTdHJpbmcobV9mb3JtYXQuY29uc3REYXRhKCksIG1fZm9ybWF0Lmxlbmd0aCgpKTsKLX07
Cit9CiAKIEltYWdlRnJhbWUqIEltYWdlRGVjb2RlclF0OjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6
ZV90IGluZGV4KQogewpAQCAtMTk0LDkgKzE4Myw5IEBAIHZvaWQgSW1hZ2VEZWNvZGVyUXQ6Omlu
dGVybmFsUmVhZEltYWdlKHNpemVfdCBmcmFtZUluZGV4KQogCiBib29sIEltYWdlRGVjb2RlclF0
OjppbnRlcm5hbEhhbmRsZUN1cnJlbnRJbWFnZShzaXplX3QgZnJhbWVJbmRleCkKIHsKLSAgICBR
UGl4bWFwIHBpeG1hcCA9IFFQaXhtYXA6OmZyb21JbWFnZVJlYWRlcihtX3JlYWRlci5nZXQoKSk7
CisgICAgUUltYWdlIGltYWdlID0gbV9yZWFkZXItPnJlYWQoKTsKIAotICAgIGlmIChwaXhtYXAu
aXNOdWxsKCkpIHsKKyAgICBpZiAoaW1hZ2UuaXNOdWxsKCkpIHsKICAgICAgICAgZnJhbWVDb3Vu
dCgpOwogICAgICAgICByZXBldGl0aW9uQ291bnQoKTsKICAgICAgICAgY2xlYXJQb2ludGVycygp
OwpAQCAtMjA4LDcgKzE5Nyw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyUXQ6OmludGVybmFsSGFuZGxl
Q3VycmVudEltYWdlKHNpemVfdCBmcmFtZUluZGV4KQogICAgIGJ1ZmZlci0+c2V0T3JpZ2luYWxG
cmFtZVJlY3QobV9yZWFkZXItPmN1cnJlbnRJbWFnZVJlY3QoKSk7CiAgICAgYnVmZmVyLT5zZXRT
dGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7CiAgICAgYnVmZmVyLT5zZXREdXJhdGlv
bihtX3JlYWRlci0+bmV4dEltYWdlRGVsYXkoKSk7Ci0gICAgYnVmZmVyLT5zZXRQaXhtYXAocGl4
bWFwKTsKKyAgICBidWZmZXItPnNldEltYWdlKGltYWdlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMjQ1LDYgKzIzNCwzMiBAQCB2b2lkIEltYWdlRGVjb2RlclF0OjpjbGVhclBvaW50ZXJz
KCkKICAgICBtX3JlYWRlci5jbGVhcigpOwogICAgIG1fYnVmZmVyLmNsZWFyKCk7CiB9CisKKy8v
IFRoZSBpbWFnZSBtdXN0IG5vdCBoYXZlIGZvcm1hdCA4ODg4IHByZSBtdWx0aXBsaWVkLi4uCit2
b2lkIEltYWdlRnJhbWU6OnNldEltYWdlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpCit7CisgICAgbV9p
bWFnZSA9IGltYWdlOworICAgIG1fc2l6ZSA9IGltYWdlLnNpemUoKTsKKyAgICBtX2hhc0FscGhh
ID0gaW1hZ2UuaGFzQWxwaGFDaGFubmVsKCk7Cit9CisKK05hdGl2ZUltYWdlUHRyIEltYWdlRnJh
bWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAoreworICAgIC8vIFFJbWFnZURlY29kZXIgY2Fz
ZQorICAgIGlmICghbV9pbWFnZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG5ldyBRUGl4bWFw
KFFQaXhtYXA6OmZyb21JbWFnZShtX2ltYWdlKSk7CisKKyAgICBRSW1hZ2U6OkZvcm1hdCBmbXQ7
CisgICAgaWYgKG1faGFzQWxwaGEpCisgICAgICAgIGZtdCA9IG1fcHJlbXVsdGlwbHlBbHBoYSA/
ICBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCA6IFFJbWFnZTo6Rm9ybWF0X0FS
R0IzMjsKKyAgICBlbHNlCisgICAgICAgIGZtdCA9IFFJbWFnZTo6Rm9ybWF0X1JHQjMyOworCisg
ICAgUUltYWdlIGltZyhyZWludGVycHJldF9jYXN0PHVjaGFyKj4obV9ieXRlcyksIG1fc2l6ZS53
aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIHNpemVvZihQaXhlbERhdGEpICogbV9zaXplLndpZHRo
KCksIGZtdCk7CisKKyAgICByZXR1cm4gbmV3IFFQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKGlt
ZykpOworfQorCiB9CiAKIC8vIHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGQ5ZTk2OTAuLjNkYTZjNDIKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
CkBAIC0yMCwyMSArMjAsMjMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxj
bWF0aD4KLQogI2luY2x1ZGUgIkJNUEltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkdJRkltYWdl
RGVjb2Rlci5oIgogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rlci5oIgorI2lmIFBMQVRGT1JNKFFU
KQorI2luY2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCisjZW5kaWYKICNpbmNsdWRlICJKUEVHSW1h
Z2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiUE5HSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaWYgVVNFKFdFQlApCiAjaW5jbHVkZSAiV0VCUEltYWdlRGVjb2Rlci5o
IgogI2VuZGlmCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0
aG0+CisjaW5jbHVkZSA8Y21hdGg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTEyNCw2
ICsxMjYsOSBAQCBJbWFnZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFscGhhTwogICAgIGlmIChtYXRjaGVzSUNPU2ln
bmF0dXJlKGNvbnRlbnRzKSB8fCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNvbnRlbnRzKSkKICAgICAg
ICAgcmV0dXJuIG5ldyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHJldHVybiBuZXcgSW1hZ2VE
ZWNvZGVyUXQoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyNlbmRp
ZgogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAx
MDA3NTUKaW5kZXggMjAxMjJmZi4uMmQwNjU1ZAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDEsNyArNDEsNiBAQAogI2lu
Y2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgogI2luY2x1ZGUgIlNrQ29sb3JQcml2LmgiCiAjZWxp
ZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRUGl4bWFwPgogI2luY2x1ZGUgPFFJbWFnZT4KICNl
bmRpZgogCkBAIC02NCw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IERpc3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJh
bWVidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVu
dHMKICAgICAgICAgfTsKLSNpZiBVU0UoU0tJQSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRf
SU1BR0VfREVDT0RFUikpCisjaWYgVVNFKFNLSUEpCiAgICAgICAgIHR5cGVkZWYgdWludDMyX3Qg
UGl4ZWxEYXRhOwogI2Vsc2UKICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7CkBA
IC0xNDAsMTcgKzEzOSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICNpZiBV
U0UoU0tJQSkKICAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC5iaXRtYXAoKS5nZXRBZGRyMzIo
eCwgeSk7Ci0jZWxpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0gICAg
ICAgICAgICBtX2ltYWdlID0gbV9waXhtYXAudG9JbWFnZSgpOwotICAgICAgICAgICAgbV9waXht
YXAgPSBRUGl4bWFwKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8
UVJnYio+KG1faW1hZ2Uuc2NhbkxpbmUoeSkpICsgeDsKICNlbHNlCiAgICAgICAgICAgICByZXR1
cm4gbV9ieXRlcyArICh5ICogd2lkdGgoKSkgKyB4OwogI2VuZGlmCiAgICAgICAgIH0KIAotI2lm
IFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLSAgICAgICAgdm9pZCBzZXRQ
aXhtYXAoY29uc3QgUVBpeG1hcCYgcGl4bWFwKTsKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAg
dm9pZCBzZXRJbWFnZShjb25zdCBRSW1hZ2UmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKQEAg
LTE5MCwxMiArMTg1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoREFSV0lOKQogICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7
CiAjZW5kaWYKLSNlbGlmIFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLSAg
ICAgICAgbXV0YWJsZSBRUGl4bWFwIG1fcGl4bWFwOwotICAgICAgICBtdXRhYmxlIFFJbWFnZSBt
X2ltYWdlOwotICAgICAgICBib29sIG1faGFzQWxwaGE7Ci0gICAgICAgIEludFNpemUgbV9zaXpl
OwogI2Vsc2UKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgbXV0YWJsZSBRSW1hZ2UgbV9pbWFn
ZTsKKyNlbmRpZgogICAgICAgICBOYXRpdmVCYWNraW5nU3RvcmUgbV9iYWNraW5nU3RvcmU7CiAg
ICAgICAgIFBpeGVsRGF0YSogbV9ieXRlczsgLy8gVGhlIG1lbW9yeSBpcyBiYWNrZWQgYnkgbV9i
YWNraW5nU3RvcmUuCiAgICAgICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0ltYWdlRnJhbWVRdC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5OWFjMjkuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5IEdvb2dsZSwgSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdl
ciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkltYWdlRGVjb2Rlci5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0KLUltYWdlRnJh
bWU6OkltYWdlRnJhbWUoKQotICAgIDogbV9oYXNBbHBoYShmYWxzZSkgCi0gICAgLCBtX3NpemUo
KQotICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKLSAgICAsIG1fZHVyYXRpb24oMCkKLSAgICAs
IG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmllZCkKLSAgICAsIG1fcHJlbXVsdGlw
bHlBbHBoYSh0cnVlKQotewotfQotCi1JbWFnZUZyYW1lJiBJbWFnZUZyYW1lOjpvcGVyYXRvcj0o
Y29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCi17Ci0gICAgaWYgKHRoaXMgPT0gJm90aGVyKQotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICBjb3B5Qml0bWFwRGF0YShvdGhlcik7Ci0gICAgc2V0
T3JpZ2luYWxGcmFtZVJlY3Qob3RoZXIub3JpZ2luYWxGcmFtZVJlY3QoKSk7Ci0gICAgc2V0U3Rh
dHVzKG90aGVyLnN0YXR1cygpKTsKLSAgICBzZXREdXJhdGlvbihvdGhlci5kdXJhdGlvbigpKTsK
LSAgICBzZXREaXNwb3NhbE1ldGhvZChvdGhlci5kaXNwb3NhbE1ldGhvZCgpKTsKLSAgICBzZXRQ
cmVtdWx0aXBseUFscGhhKG90aGVyLnByZW11bHRpcGx5QWxwaGEoKSk7Ci0gICAgcmV0dXJuICp0
aGlzOwotfQotCi12b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKLXsKLSAgICBtX3Bp
eG1hcCA9IFFQaXhtYXAoKTsKLSAgICBtX2ltYWdlID0gUUltYWdlKCk7Ci0gICAgbV9zdGF0dXMg
PSBGcmFtZUVtcHR5OwotICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhl
cmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpCi0gICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRo
ZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCi0gICAgLy8gaW5pdEZyYW1l
QnVmZmVyKCkgYW5kIGZyYW1lQ29tcGxldGUoKSBtYXkgc3RpbGwgbmVlZCB0byByZWFkCi0gICAg
Ly8gb3RoZXIgbWV0YWRhdGEgb3V0IG9mIHRoaXMgZnJhbWUgbGF0ZXIuCi19Ci0KLXZvaWQgSW1h
Z2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEoKQotewotICAgIGlmIChtX3BpeG1hcC5pc051bGwo
KSAmJiAhbV9pbWFnZS5pc051bGwoKSkgewotICAgICAgICBtX3BpeG1hcCA9IFFQaXhtYXAobV9p
bWFnZS53aWR0aCgpLCBtX2ltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgbV9pbWFnZSA9IFFJbWFn
ZSgpOwotICAgIH0KLSAgICBtX3BpeG1hcC5maWxsKFFDb2xvcigwLCAwLCAwLCAwKSk7Ci19Ci0K
LWJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIp
Ci17Ci0gICAgaWYgKHRoaXMgPT0gJm90aGVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IG1faW1hZ2UgPSBvdGhlci5tX2ltYWdlOwotICAgIG1fcGl4bWFwID0gb3RoZXIubV9waXhtYXA7
Ci0gICAgbV9zaXplID0gb3RoZXIubV9zaXplOwotICAgIG1faGFzQWxwaGEgPSBvdGhlci5tX2hh
c0FscGhhOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEltYWdlRnJhbWU6OnNldFNpemUo
aW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQotewotICAgIC8vIHNldFNpemUoKSBzaG91bGQg
b25seSBiZSBjYWxsZWQgb25jZSwgaXQgbGVha3MgbWVtb3J5IG90aGVyd2lzZS4KLSAgICBBU1NF
UlQoIXdpZHRoKCkgJiYgIWhlaWdodCgpKTsKLQotICAgIG1fc2l6ZSA9IEludFNpemUobmV3V2lk
dGgsIG5ld0hlaWdodCk7Ci0gICAgbV9pbWFnZSA9IFFJbWFnZSgpOwotICAgIG1fcGl4bWFwID0g
UVBpeG1hcChuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKLSAgICBpZiAobV9waXhtYXAuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHplcm9GaWxsUGl4ZWxEYXRhKCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLVFQaXhtYXAqIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2Uo
KSBjb25zdAotewotICAgIGlmIChtX3BpeG1hcC5pc051bGwoKSAmJiAhbV9pbWFnZS5pc051bGwo
KSkgewotICAgICAgICBtX3BpeG1hcCA9IFFQaXhtYXA6OmZyb21JbWFnZShtX2ltYWdlKTsKLSAg
ICAgICAgbV9pbWFnZSA9IFFJbWFnZSgpOwotICAgIH0KLSAgICByZXR1cm4gbmV3IFFQaXhtYXAo
bV9waXhtYXApOwotfQotCi1ib29sIEltYWdlRnJhbWU6Omhhc0FscGhhKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9oYXNBbHBoYTsKLX0KLQotdm9pZCBJbWFnZUZyYW1lOjpzZXRIYXNBbHBoYShi
b29sIGFscGhhKQotewotICAgIG1faGFzQWxwaGEgPSBhbHBoYTsKLX0KLQotdm9pZCBJbWFnZUZy
YW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBjb2xvclByb2ZpbGUpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBJbWFnZUZyYW1lOjpzZXRTdGF0dXMo
RnJhbWVTdGF0dXMgc3RhdHVzKQotewotICAgIG1fc3RhdHVzID0gc3RhdHVzOwotfQotCi0vLyBU
aGUgaW1hZ2UgbXVzdCBub3QgaGF2ZSBmb3JtYXQgODg4OCBwcmUgbXVsdGlwbGllZC4uLgotdm9p
ZCBJbWFnZUZyYW1lOjpzZXRQaXhtYXAoY29uc3QgUVBpeG1hcCYgcGl4bWFwKQotewotICAgIG1f
cGl4bWFwID0gcGl4bWFwOwotICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKLSAgICBtX3NpemUgPSBw
aXhtYXAuc2l6ZSgpOwotICAgIG1faGFzQWxwaGEgPSBwaXhtYXAuaGFzQWxwaGFDaGFubmVsKCk7
Ci19Ci0KLWludCBJbWFnZUZyYW1lOjp3aWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6
ZS53aWR0aCgpOwotfQotCi1pbnQgSW1hZ2VGcmFtZTo6aGVpZ2h0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zaXplLmhlaWdodCgpOwotfQotCi0jZWxzZQotCi1RUGl4bWFwKiBJbWFnZUZyYW1l
Ojphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKLXsKLSAgICBRSW1hZ2U6OkZvcm1hdCBmbXQ7Ci0g
ICAgaWYgKG1faGFzQWxwaGEpCi0gICAgICAgIGZtdCA9IG1fcHJlbXVsdGlwbHlBbHBoYSA/ICBR
SW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCA6IFFJbWFnZTo6Rm9ybWF0X0FSR0Iz
MjsKLSAgICBlbHNlCi0gICAgICAgIGZtdCA9IFFJbWFnZTo6Rm9ybWF0X1JHQjMyOwotCi0gICAg
UUltYWdlIGltZyhyZWludGVycHJldF9jYXN0PHVjaGFyKj4obV9ieXRlcyksIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCksIHNpemVvZihQaXhlbERhdGEpICogbV9zaXplLndpZHRoKCks
IGZtdCk7Ci0KLSAgICByZXR1cm4gbmV3IFFQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKGltZykp
OwotfQotCi0jZW5kaWYgLy8gVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0KLX0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZWM2N2ZjLi5hMGNmMzQ3
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMDMtMTIgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQg
YW5kIGFkZCBmYWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIFJlbW92ZSBXVEZfVVNF
X1FUX0lNQUdFX0RFQ09ERVIgbWFjcm8uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjoK
KwogMjAxMi0wMy0wNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CiAKICAgICAgICAgW1F0XSBGaXggY29tcGlsYXRpb24gd2l0aG91dCBRdFF1aWNrMQpkaWZmIC0t
Z2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYgYi9Ub29scy9x
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpvbGQgbW9kZSAxMDA2NDQKbmV3IG1v
ZGUgMTAwNzU1CmluZGV4IDg1ZTlhNGEuLjg0YzNjYjkKLS0tIGEvVG9vbHMvcW1ha2UvbWtzcGVj
cy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJl
cy9mZWF0dXJlcy5wcmYKQEAgLTkwLDcgKzkwLDYgQEAgaGF2ZVF0KDUpIHsKICFjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfQU5JTUFUSU9OX0FQST0uKTogREVGSU5FUyArPSBFTkFCTEVfQU5JTUFU
SU9OX0FQST0wCiAKICMgUG9saWN5IGRlY2lzaW9uczogZm9yIHVzaW5nIGEgcGFydGljdWxhciB0
aGlyZC1wYXJ0eSBsaWJyYXJ5IG9yIG9wdGlvbmFsIE9TIHNlcnZpY2UKLSFjb250YWlucyhERUZJ
TkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9Lik6IERFRklORVMgKz0gV1RGX1VTRV9RVF9J
TUFHRV9ERUNPREVSPTEKIAogIyBFbmFibGVkIGluIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaCBpZiBub3Qgc2V0CiAjIFdlIGhhdmUgdG8gZG8gdGhlIHNhbWUgdG8gYmUgYWJs
ZSB0byBkaXNhYmxlIHRoZSBmZWF0dXJlIGluIGJ1aWxkLXdlYmtpdAo=
</data>
<flag name="review"
          id="134615"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="134616"
          type_id="3"
          status="-"
          setter="zoltan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132784</attachid>
            <date>2012-03-20 03:00:14 -0700</date>
            <delta_ts>2012-04-10 07:06:33 -0700</delta_ts>
            <desc>proposed patch without Changelog update</desc>
            <filename>marc20.patch</filename>
            <type>text/plain</type>
            <size>22543</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmQ3ZTU2Li4zMTE1NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMDMtMTIgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQgYW5kIGFkZCBm
YWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRo
ZSBkZWZhdWx0IEltYWdlRGVjb2RlciBmb3IgUXQtcG9ydCBmcm9tIFFJbWFnZURlY29kZXIgdG8g
V2ViQ29yZSBJbWFnZURlY29kZXIuCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3IgaXMgdG8gdXNl
IFFJbWFnZURlY29kZXIgaWYgV2ViQ29yZUltYWdlRGVjb2RlciBkb2Vzbid0IHN1cHBvcnQgdGhl
IHJlcXVlc3RlZAorICAgICAgICBpbWFnZSB0eXBlLgorICAgICAgICBJIHJlbW92ZWQgdGhlIFdU
Rl9VU0VfUVRfSU1BR0VfREVDT0RFUiBtYWNybywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyIG5lZWRl
ZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGJ1aWxkIGRlcGVkZW5jeSBmb3IgbGlicG5n
LWRldiBhbmQgbGlianBlZy1kZXYgcGFja2FnZXMsIGJlY3Vhc2UgUE5HIGFuZCBKUEVHIGltYWdl
ZGVjb2RlcnMKKyAgICAgICAgbmVlZCBub3Qgb25seSB0aGVzZSBsaWJyYXJpZXMsIGJ1dCB0aGVp
ciBoZWFkZXJzIGFsc28uIFFtYWtlLWNvbmZpZyB0ZXN0cyBmb3IgdGhlc2UgbGlicmFyaWVzIHdl
cmUKKyAgICAgICAgaW50cm9kdWNlZCBpbiByMTEwMDQ1LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOiBNb3ZlIFdlYkNvcmUgSW1hZ2VEZWNvZGVyIGZpbGVzIG91dCBvZiBn
dWFyZHMuIFJlbW92ZSBJbWFnZUZyYW1lUXQuY3BwIGZyb20gc291cmNlcy4KKyAgICAgICAgKiBX
ZWJDb3JlLnByaTogTW92ZSBXZWJDb3JlIEltYWdlRGVjb2RlciBpbmNsdWRlIHBhdGhzIG91dCBv
ZiBndWFyZHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOiBS
ZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaDogUmVtb3ZlIHVubmVjZXNzYXJ5IHR5cGVkZWZzLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3Bw
OiBNb3ZlIDIgZnVuY3Rpb25zIGhlcmUgZnJvbSByZW1vdmVkIEltYWdlRnJhbWVRdC5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJRdDo6ZmlsZW5hbWVFeHRlbnNpb24pOiBSZW1v
dmUgdW5uZWNlc3Nhcnkgc2VtaWNvbG9uLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
UXQ6OmludGVybmFsSGFuZGxlQ3VycmVudEltYWdlKTogUmVtb3ZlIHVzYWdlIG9mIFFQaXhtYXAu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldElt
YWdlKTogUmVuYW1lIHNldFBpeG1hcCB0byBzZXRJbWFnZS4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOiBBZGQgY29uZGl0aW9uIGZvciB1c2luZyBRSW1h
Z2VEZWNvZGVyLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHA6IFJlb3JnYW5pemUgaGVhZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6Y3JlYXRlKTogQWRkIFBMQVRGT1JNKFFUKSBtYWNybyBndWFyZGVkIGZhbGxiYWNrIGNhc2Ug
Zm9yIFFJbWFnZURlY29kZXIuCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmg6IFJlbmFtZSBhbmQgbW9kaWZ5IHNldFBpeG1hcCB0byBzZXRJbWFnZS4KKyAg
ICAgICAgKEltYWdlRnJhbWUpOiBSZW1vdmUgbV9waXhtYXAgbWVtYmVyLCBzaW5jZSBpdCBpcyBu
byBsb25nZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0QWRkcik6
IFJlbW92ZSBRdC1yZWxhdGVkIGNhc2UsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgTW9zdGx5IGRlYWQgY29kZSwgb3RoZXIgY29kZSBtb3ZlZCB0byBJbWFn
ZURlY29kZXJRdC5jcHAKKwogMjAxMi0wMy0wNyAgQXJ1biBQYXRvbGUgIDxibWY4MzRAbW90b3Jv
bGEuY29tPgogCiAgICAgICAgIEhUTUxUcmFja0VsZW1lbnQuaWRsIGRvZXNuJ3QgaGF2ZSBkZWZh
dWx0IGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggMzI4NDBmOC4uM2M1OTc2OAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwNjcsNyArMTA2Nyw2IEBAIFNPVVJD
RVMgKz0gXAogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIFwKICAgICBwbGF0Zm9ybS9HZW9s
b2NhdGlvblNlcnZpY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmNwcCBc
Ci0gICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEZhbGxiYWNrTGlzdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRG
YW1pbHkuY3BwIFwKQEAgLTExMTUsNiArMTExNCwxNCBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIFwKKyAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBcCisgICAgcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBcCisgICAgcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHBcCisgICAgcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9LaWxsUmlu
Z05vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS9LVVJMLmNwcCBcCiAgICAgcGxhdGZvcm0vTGFuZ3Vh
Z2UuY3BwIFwKQEAgLTIyNDEsNiArMjI0OCwxMyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKKyAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKKyAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuaCBcCiAgICAgcGxhdGZvcm0vS2lsbFJpbmcuaCBcCiAgICAgcGxh
dGZvcm0vS1VSTC5oIFwKICAgICBwbGF0Zm9ybS9MZW5ndGguaCBcCkBAIC0yODA4LDYgKzI4MjIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ljb25RdC5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbnRQb2ludFF0LmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW50UmVjdFF0LmNwcCBcCkBAIC0zOTQ3LDMzICszOTYy
LDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NSFRNTD0xKSB7CiAgICAgICAgIHBhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCiB9CiAKLWNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfUVRfSU1B
R0VfREVDT0RFUj0xKSB7Ci0gICAgSEVBREVSUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZURlY29kZXJRdC5oCi0gICAgU09VUkNFUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURl
Y29kZXJRdC5jcHAKLX0gZWxzZSB7Ci0gICAgSEVBREVSUyArPSBcCi0gICAgICAgIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBcCi0gICAgICAgIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKLSAgICAgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIFwKLSAgICAgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmhcCi0gICAgICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIFwKLSAgICAgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCi0KLSAgICBTT1VSQ0VTICs9IFwK
LSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBcCi0gICAg
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIFwKLSAg
ICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBcCi0g
ICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIFwK
LSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcFwK
LSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAg
XAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKLQotICAgIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VCUD0xKSB7Ci0gICAgICAg
IEhFQURFUlMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmgKLSAgICAgICAgU09VUkNFUyArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCi0gICAgfQorY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9XRUJQPTEp
IHsKKyAgICBJTkNMVURFUEFUSCArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCisgICAg
SEVBREVSUyArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aAorICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcAogfQogCiAhc3lzdGVtLXNxbGl0ZTpleGlzdHMoICQke1NRTElURTNTUkNESVJ9
L3NxbGl0ZTMuYyApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCBiZGNkMTA3Li40NGQ1YmRiCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC02MSw2ICs2MSwxMSBAQCBJTkNM
VURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcCBc
CiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMgXAogICAgICQk
U09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycyBcCisgICAgJCRTT1VSQ0VfRElSL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcCBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZiBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljbyBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcg
XAorICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcgXAogICAgICQk
U09VUkNFX0RJUi9wbGF0Zm9ybS9sZXZlbGRiIFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0v
bW9jayBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL25ldHdvcmsgXApAQCAtMjA5LDI4ICsy
MTQsMTkgQEAgY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9URVhUVVJFX01BUFBFUl9HTD0xKXxj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkKICAgICBMSUJTICs9IC1sc3FsaXRlMwog
fQogCi1jb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9MCkgewotICAg
IElOQ0xVREVQQVRIICs9IFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcCBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYgXAotICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
IFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcgXAot
ICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nCi0KLSAgICBo
YXZlUXQoNSkgewotICAgICAgICAjIFF0NSBhbGxvd3MgdXMgdG8gdXNlIGNvbmZpZyB0ZXN0cyB0
byBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZXNlIGxpYnJhcmllcwotICAgICAgICAhY29u
dGFpbnMoY29uZmlnX3Rlc3RfbGlianBlZywgeWVzKTogZXJyb3IoIkpQRUcgbGlicmFyeSBub3Qg
Zm91bmQhIikKLSAgICAgICAgIWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xpYnBuZywgeWVzKTogZXJy
b3IoIlBORyAxLjIgbGlicmFyeSBub3QgZm91bmQhIikKLSAgICB9Ci0KLSAgICBMSUJTICs9IC1s
anBlZyAtbHBuZzEyCitjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1dFQlA9MSkgeworICAgIElO
Q0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCisg
ICAgTElCUyArPSAtbHdlYnAKK30KIAotICAgIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VC
UD0xKSB7Ci0gICAgICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwCi0gICAgICAgIExJQlMgKz0gLWx3ZWJwCi0gICAgfQoraGF2ZVF0KDUp
IHsKKyAgICAjIFF0NSBhbGxvd3MgdXMgdG8gdXNlIGNvbmZpZyB0ZXN0cyB0byBjaGVjayBmb3Ig
dGhlIHByZXNlbmNlIG9mIHRoZXNlIGxpYnJhcmllcworICAgICFjb250YWlucyhjb25maWdfdGVz
dF9saWJqcGVnLCB5ZXMpOiBlcnJvcigiSlBFRyBsaWJyYXJ5IG5vdCBmb3VuZCEiKQorICAgICFj
b250YWlucyhjb25maWdfdGVzdF9saWJwbmcsIHllcyk6IGVycm9yKCJQTkcgMS4yIGxpYnJhcnkg
bm90IGZvdW5kISIpCiB9CiAKK0xJQlMgKz0gLWxqcGVnIC1scG5nMTIKKwogd2luMzItKnx3aW5j
ZSogewogICAgIERMTERFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGY0NDk1ZWQuLjMzMjIwYmYKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjksMTEgKzI5LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYg
UExBVEZPUk0oUVQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyUXQuaCIKLSNlbHNlCiAjaW5jbHVk
ZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDFkMDIyMDIuLjUzMDljNjMKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC03MywxMCArNzMsNiBAQCBj
bGFzcyBJbWFnZURlY29kZXI7CiBjbGFzcyBUaWxlZEltYWdlT3BlblZHOwogdHlwZWRlZiBJbWFn
ZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwogdHlwZWRlZiBUaWxlZEltYWdlT3BlblZH
KiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFBMQVRGT1JNKFFUKQotY2xhc3MgSW1hZ2VEZWNvZGVy
UXQ7Ci10eXBlZGVmIEltYWdlRGVjb2RlclF0KiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKLXR5cGVk
ZWYgUVBpeG1hcCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxzZQogY2xhc3MgSW1hZ2VEZWNvZGVyOwog
dHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwpAQCAtOTYsNiArOTIs
OCBAQCB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogY2xhc3Mg
SW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRy
OwogdHlwZWRlZiB2b2lkKiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFBMQVRGT1JNKFFUKQordHlw
ZWRlZiBRUGl4bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNw
cApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDFmOTNhYTMuLjQ3ZDllOWQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcApAQCAtMzEsMjEgKzMxLDEwIEBACiAKICNpbmNsdWRlIDxRdENvcmUvUUJ5dGVBcnJh
eT4KICNpbmNsdWRlIDxRdENvcmUvUUJ1ZmZlcj4KLQogI2luY2x1ZGUgPFF0R3VpL1FJbWFnZVJl
YWRlcj4KLSNpbmNsdWRlIDxxZGVidWcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFn
ZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwg
SW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi17Ci0gICAg
Ly8gV2UgbmVlZCBhdCBsZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGlt
YWdlIHdlJ3JlIGRlYWxpbmcgd2l0aC4KLSAgICBpZiAoZGF0YS5zaXplKCkgPCA0KQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIHJldHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLX0KLQogSW1hZ2VEZWNvZGVyUXQ6OkltYWdl
RGVjb2RlclF0KEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3Vy
Y2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQpAQCAtMTI5LDcg
KzExOCw3IEBAIGludCBJbWFnZURlY29kZXJRdDo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKIFN0
cmluZyBJbWFnZURlY29kZXJRdDo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewogICAgIHJl
dHVybiBTdHJpbmcobV9mb3JtYXQuY29uc3REYXRhKCksIG1fZm9ybWF0Lmxlbmd0aCgpKTsKLX07
Cit9CiAKIEltYWdlRnJhbWUqIEltYWdlRGVjb2RlclF0OjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6
ZV90IGluZGV4KQogewpAQCAtMTk0LDIxICsxODMsMjggQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6
aW50ZXJuYWxSZWFkSW1hZ2Uoc2l6ZV90IGZyYW1lSW5kZXgpCiAKIGJvb2wgSW1hZ2VEZWNvZGVy
UXQ6OmludGVybmFsSGFuZGxlQ3VycmVudEltYWdlKHNpemVfdCBmcmFtZUluZGV4KQogewotICAg
IFFQaXhtYXAgcGl4bWFwID0gUVBpeG1hcDo6ZnJvbUltYWdlUmVhZGVyKG1fcmVhZGVyLmdldCgp
KTsKKyAgICBJbWFnZUZyYW1lKiBjb25zdCBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlW2Zy
YW1lSW5kZXhdOworICAgIFFTaXplIGltYWdlU2l6ZSA9IG1fcmVhZGVyLT5zaXplKCk7CisKKyAg
ICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUUltYWdlIGltYWdlKHJlaW50ZXJw
cmV0X2Nhc3Q8dWNoYXIqPihidWZmZXItPmdldEFkZHIoMCwwKSksIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpICogaW1h
Z2VTaXplLndpZHRoKCksIG1fcmVhZGVyLT5pbWFnZUZvcm1hdCgpKTsKIAotICAgIGlmIChwaXht
YXAuaXNOdWxsKCkpIHsKKyAgICBidWZmZXItPnNldER1cmF0aW9uKG1fcmVhZGVyLT5uZXh0SW1h
Z2VEZWxheSgpKTsKKyAgICBtX3JlYWRlci0+cmVhZCgmaW1hZ2UpOworCisgICAgaWYgKGltYWdl
LmlzTnVsbCgpKSB7CiAgICAgICAgIGZyYW1lQ291bnQoKTsKICAgICAgICAgcmVwZXRpdGlvbkNv
dW50KCk7CiAgICAgICAgIGNsZWFyUG9pbnRlcnMoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIC8vIG5vdyBpbnRvIHRoZSBJbWFnZUZyYW1lIC0gZXZlbiBpZiB0aGUgaW1h
Z2UgaXMgbm90Ci0gICAgSW1hZ2VGcmFtZSogY29uc3QgYnVmZmVyID0gJm1fZnJhbWVCdWZmZXJD
YWNoZVtmcmFtZUluZGV4XTsKLSAgICBidWZmZXItPnNldE9yaWdpbmFsRnJhbWVSZWN0KG1fcmVh
ZGVyLT5jdXJyZW50SW1hZ2VSZWN0KCkpOworICAgIGJ1ZmZlci0+c2V0T3JpZ2luYWxGcmFtZVJl
Y3QoaW1hZ2UucmVjdCgpKTsKKyAgICBidWZmZXItPnNldEhhc0FscGhhKGltYWdlLmhhc0FscGhh
Q2hhbm5lbCgpKTsKICAgICBidWZmZXItPnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNvbXBs
ZXRlKTsKLSAgICBidWZmZXItPnNldER1cmF0aW9uKG1fcmVhZGVyLT5uZXh0SW1hZ2VEZWxheSgp
KTsKLSAgICBidWZmZXItPnNldFBpeG1hcChwaXhtYXApOworCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTI0NSw2ICsyNDEsMjAgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6Y2xlYXJQb2ludGVy
cygpCiAgICAgbV9yZWFkZXIuY2xlYXIoKTsKICAgICBtX2J1ZmZlci5jbGVhcigpOwogfQorCitO
YXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK3sKKyAg
ICBRSW1hZ2U6OkZvcm1hdCBmb3JtYXQ7CisgICAgaWYgKG1faGFzQWxwaGEpCisgICAgICAgIGZv
cm1hdCA9IG1fcHJlbXVsdGlwbHlBbHBoYSA/ICBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVs
dGlwbGllZCA6IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMjsKKyAgICBlbHNlCisgICAgICAgIGZvcm1h
dCA9IFFJbWFnZTo6Rm9ybWF0X1JHQjMyOworCisgICAgUUltYWdlIGltZyhyZWludGVycHJldF9j
YXN0PHVjaGFyKj4obV9ieXRlcyksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIHNp
emVvZihQaXhlbERhdGEpICogbV9zaXplLndpZHRoKCksIGZvcm1hdCk7CisKKyAgICByZXR1cm4g
bmV3IFFQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKGltZykpOworfQorCiB9CiAKIC8vIHZpbTog
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZURlY29kZXJRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VEZWNvZGVyUXQuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGQ5ZTk2OTAuLjNk
YTZjNDIKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCkBAIC0yMCwyMSArMjAsMjMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0KICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLSNpbmNsdWRlIDxjbWF0aD4KLQogI2luY2x1ZGUgIkJNUEltYWdlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgIkdJRkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rlci5oIgor
I2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCisjZW5kaWYKICNp
bmNsdWRlICJKUEVHSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiUE5HSW1hZ2VEZWNvZGVyLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaWYgVVNFKFdFQlApCiAjaW5jbHVkZSAiV0VC
UEltYWdlRGVjb2Rlci5oIgogI2VuZGlmCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y21hdGg+CiAKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKQEAgLTEyNCw2ICsxMjYsOSBAQCBJbWFnZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFscGhhTwogICAgIGlm
IChtYXRjaGVzSUNPU2lnbmF0dXJlKGNvbnRlbnRzKSB8fCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNv
bnRlbnRzKSkKICAgICAgICAgcmV0dXJuIG5ldyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHJl
dHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKKyNlbmRpZgogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMjAxMjJmZi4uMGM0MGZhNgotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDAs
OSArNDAsNiBAQAogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgog
I2luY2x1ZGUgIlNrQ29sb3JQcml2LmgiCi0jZWxpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxR
UGl4bWFwPgotI2luY2x1ZGUgPFFJbWFnZT4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC02NCw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpc3Bv
c2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVidWZm
ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMKICAg
ICAgICAgfTsKLSNpZiBVU0UoU0tJQSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1BR0Vf
REVDT0RFUikpCisjaWYgVVNFKFNLSUEpCiAgICAgICAgIHR5cGVkZWYgdWludDMyX3QgUGl4ZWxE
YXRhOwogI2Vsc2UKICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7CkBAIC0xNDAs
MTkgKzEzNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICNpZiBVU0UoU0tJ
QSkKICAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC5iaXRtYXAoKS5nZXRBZGRyMzIoeCwgeSk7
Ci0jZWxpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0gICAgICAgICAg
ICBtX2ltYWdlID0gbV9waXhtYXAudG9JbWFnZSgpOwotICAgICAgICAgICAgbV9waXhtYXAgPSBR
UGl4bWFwKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8UVJnYio+
KG1faW1hZ2Uuc2NhbkxpbmUoeSkpICsgeDsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gbV9i
eXRlcyArICh5ICogd2lkdGgoKSkgKyB4OwogI2VuZGlmCiAgICAgICAgIH0KLQotI2lmIFBMQVRG
T1JNKFFUKSAmJiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLSAgICAgICAgdm9pZCBzZXRQaXhtYXAo
Y29uc3QgUVBpeG1hcCYgcGl4bWFwKTsKLSNlbmRpZgotCiAgICAgcHJpdmF0ZToKICNpZiBVU0Uo
Q0cpCiAgICAgICAgIHR5cGVkZWYgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IE5hdGl2ZUJh
Y2tpbmdTdG9yZTsKQEAgLTE5MCwxMSArMTc4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pCiAgICAgICAgIENvbG9yUHJvZmlsZSBt
X2NvbG9yUHJvZmlsZTsKICNlbmRpZgotI2VsaWYgUExBVEZPUk0oUVQpICYmIFVTRShRVF9JTUFH
RV9ERUNPREVSKQotICAgICAgICBtdXRhYmxlIFFQaXhtYXAgbV9waXhtYXA7Ci0gICAgICAgIG11
dGFibGUgUUltYWdlIG1faW1hZ2U7Ci0gICAgICAgIGJvb2wgbV9oYXNBbHBoYTsKLSAgICAgICAg
SW50U2l6ZSBtX3NpemU7CiAjZWxzZQogICAgICAgICBOYXRpdmVCYWNraW5nU3RvcmUgbV9iYWNr
aW5nU3RvcmU7CiAgICAgICAgIFBpeGVsRGF0YSogbV9ieXRlczsgLy8gVGhlIG1lbW9yeSBpcyBi
YWNrZWQgYnkgbV9iYWNraW5nU3RvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTk5YWMyOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgR29vZ2xlLCBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLSNpZiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLQotSW1hZ2VGcmFtZTo6SW1hZ2VGcmFt
ZSgpCi0gICAgOiBtX2hhc0FscGhhKGZhbHNlKSAKLSAgICAsIG1fc2l6ZSgpCi0gICAgLCBtX3N0
YXR1cyhGcmFtZUVtcHR5KQotICAgICwgbV9kdXJhdGlvbigwKQotICAgICwgbV9kaXNwb3NhbE1l
dGhvZChEaXNwb3NlTm90U3BlY2lmaWVkKQotICAgICwgbV9wcmVtdWx0aXBseUFscGhhKHRydWUp
Ci17Ci19Ci0KLUltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZy
YW1lJiBvdGhlcikKLXsKLSAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgIHJldHVybiAq
dGhpczsKLQotICAgIGNvcHlCaXRtYXBEYXRhKG90aGVyKTsKLSAgICBzZXRPcmlnaW5hbEZyYW1l
UmVjdChvdGhlci5vcmlnaW5hbEZyYW1lUmVjdCgpKTsKLSAgICBzZXRTdGF0dXMob3RoZXIuc3Rh
dHVzKCkpOwotICAgIHNldER1cmF0aW9uKG90aGVyLmR1cmF0aW9uKCkpOwotICAgIHNldERpc3Bv
c2FsTWV0aG9kKG90aGVyLmRpc3Bvc2FsTWV0aG9kKCkpOwotICAgIHNldFByZW11bHRpcGx5QWxw
aGEob3RoZXIucHJlbXVsdGlwbHlBbHBoYSgpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXZv
aWQgSW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEoKQotewotICAgIG1fcGl4bWFwID0gUVBpeG1h
cCgpOwotICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKLSAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7
Ci0gICAgLy8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKCkKLSAgICAvLyBjYWxscyB0aGlzIHRvIGZyZWUgdGhlIGJpdG1hcCBkYXRh
LCBidXQgb3RoZXIgZnVuY3Rpb25zIGxpa2UKLSAgICAvLyBpbml0RnJhbWVCdWZmZXIoKSBhbmQg
ZnJhbWVDb21wbGV0ZSgpIG1heSBzdGlsbCBuZWVkIHRvIHJlYWQKLSAgICAvLyBvdGhlciBtZXRh
ZGF0YSBvdXQgb2YgdGhpcyBmcmFtZSBsYXRlci4KLX0KLQotdm9pZCBJbWFnZUZyYW1lOjp6ZXJv
RmlsbFBpeGVsRGF0YSgpCi17Ci0gICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgpICYmICFtX2ltYWdl
LmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fcGl4bWFwID0gUVBpeG1hcChtX2ltYWdlLndpZHRoKCks
IG1faW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBtX2ltYWdlID0gUUltYWdlKCk7Ci0gICAgfQot
ICAgIG1fcGl4bWFwLmZpbGwoUUNvbG9yKDAsIDAsIDAsIDApKTsKLX0KLQotYm9vbCBJbWFnZUZy
YW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKLXsKLSAgICBpZiAo
dGhpcyA9PSAmb3RoZXIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgbV9pbWFnZSA9IG90
aGVyLm1faW1hZ2U7Ci0gICAgbV9waXhtYXAgPSBvdGhlci5tX3BpeG1hcDsKLSAgICBtX3NpemUg
PSBvdGhlci5tX3NpemU7Ci0gICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgs
IGludCBuZXdIZWlnaHQpCi17Ci0gICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBvbmNlLCBpdCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgotICAgIEFTU0VSVCghd2lkdGgoKSAm
JiAhaGVpZ2h0KCkpOwotCi0gICAgbV9zaXplID0gSW50U2l6ZShuZXdXaWR0aCwgbmV3SGVpZ2h0
KTsKLSAgICBtX2ltYWdlID0gUUltYWdlKCk7Ci0gICAgbV9waXhtYXAgPSBRUGl4bWFwKG5ld1dp
ZHRoLCBuZXdIZWlnaHQpOwotICAgIGlmIChtX3BpeG1hcC5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotUVBpeG1hcCogSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgpICYmICFtX2ltYWdlLmlzTnVsbCgpKSB7Ci0gICAgICAg
IG1fcGl4bWFwID0gUVBpeG1hcDo6ZnJvbUltYWdlKG1faW1hZ2UpOwotICAgICAgICBtX2ltYWdl
ID0gUUltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBuZXcgUVBpeG1hcChtX3BpeG1hcCk7Ci19
Ci0KLWJvb2wgSW1hZ2VGcmFtZTo6aGFzQWxwaGEoKSBjb25zdAotewotICAgIHJldHVybiBtX2hh
c0FscGhhOwotfQotCi12b2lkIEltYWdlRnJhbWU6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEpCi17
Ci0gICAgbV9oYXNBbHBoYSA9IGFscGhhOwotfQotCi12b2lkIEltYWdlRnJhbWU6OnNldENvbG9y
UHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEltYWdlRnJhbWU6OnNldFN0YXR1cyhGcmFtZVN0YXR1cyBz
dGF0dXMpCi17Ci0gICAgbV9zdGF0dXMgPSBzdGF0dXM7Ci19Ci0KLS8vIFRoZSBpbWFnZSBtdXN0
IG5vdCBoYXZlIGZvcm1hdCA4ODg4IHByZSBtdWx0aXBsaWVkLi4uCi12b2lkIEltYWdlRnJhbWU6
OnNldFBpeG1hcChjb25zdCBRUGl4bWFwJiBwaXhtYXApCi17Ci0gICAgbV9waXhtYXAgPSBwaXht
YXA7Ci0gICAgbV9pbWFnZSA9IFFJbWFnZSgpOwotICAgIG1fc2l6ZSA9IHBpeG1hcC5zaXplKCk7
Ci0gICAgbV9oYXNBbHBoYSA9IHBpeG1hcC5oYXNBbHBoYUNoYW5uZWwoKTsKLX0KLQotaW50IElt
YWdlRnJhbWU6OndpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Ci19
Ci0KLWludCBJbWFnZUZyYW1lOjpoZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3NpemUu
aGVpZ2h0KCk7Ci19Ci0KLSNlbHNlCi0KLVFQaXhtYXAqIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZl
SW1hZ2UoKSBjb25zdAotewotICAgIFFJbWFnZTo6Rm9ybWF0IGZtdDsKLSAgICBpZiAobV9oYXNB
bHBoYSkKLSAgICAgICAgZm10ID0gbV9wcmVtdWx0aXBseUFscGhhID8gIFFJbWFnZTo6Rm9ybWF0
X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRfQVJHQjMyOwotICAgIGVsc2UK
LSAgICAgICAgZm10ID0gUUltYWdlOjpGb3JtYXRfUkdCMzI7Ci0KLSAgICBRSW1hZ2UgaW1nKHJl
aW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVzKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5o
ZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBtX3NpemUud2lkdGgoKSwgZm10KTsKLQotICAg
IHJldHVybiBuZXcgUVBpeG1hcChRUGl4bWFwOjpmcm9tSW1hZ2UoaW1nKSk7Ci19Ci0KLSNlbmRp
ZiAvLyBVU0UoUVRfSU1BR0VfREVDT0RFUikKLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRlYzY3ZmMuLmEwY2YzNDcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0wMy0xMiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBbUXRdIFNldCBXZWJDb3JlIGltYWdlZGVjb2RlcnMgYXMgZGVmYXVsdCBhbmQgYWRkIGZhbGxi
YWNrIHRvIFFJbWFnZURlY29kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwNDAwCisKKyAgICAgICAgUmVtb3ZlIFdURl9VU0VfUVRfSU1BR0VfREVD
T0RFUiBtYWNyby4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmOgorCiAyMDEyLTAzLTA3
ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBb
UXRdIEZpeCBjb21waWxhdGlvbiB3aXRob3V0IFF0UXVpY2sxCmRpZmYgLS1naXQgYS9Ub29scy9x
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3Mv
ZmVhdHVyZXMvZmVhdHVyZXMucHJmCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggODVlOWE0YS4uODRjM2NiOQotLS0gYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Zl
YXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnBy
ZgpAQCAtOTAsNyArOTAsNiBAQCBoYXZlUXQoNSkgewogIWNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9BTklNQVRJT05fQVBJPS4pOiBERUZJTkVTICs9IEVOQUJMRV9BTklNQVRJT05fQVBJPTAKIAog
IyBQb2xpY3kgZGVjaXNpb25zOiBmb3IgdXNpbmcgYSBwYXJ0aWN1bGFyIHRoaXJkLXBhcnR5IGxp
YnJhcnkgb3Igb3B0aW9uYWwgT1Mgc2VydmljZQotIWNvbnRhaW5zKERFRklORVMsIFdURl9VU0Vf
UVRfSU1BR0VfREVDT0RFUj0uKTogREVGSU5FUyArPSBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9
MQogCiAjIEVuYWJsZWQgaW4gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGlm
IG5vdCBzZXQKICMgV2UgaGF2ZSB0byBkbyB0aGUgc2FtZSB0byBiZSBhYmxlIHRvIGRpc2FibGUg
dGhlIGZlYXR1cmUgaW4gYnVpbGQtd2Via2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136448</attachid>
            <date>2012-04-10 07:06:33 -0700</date>
            <delta_ts>2012-04-27 06:02:06 -0700</delta_ts>
            <desc>proposed patch with proper changelog</desc>
            <filename>imgdecoderfallback0410.patch</filename>
            <type>text/plain</type>
            <size>22464</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhN2U2YzRkLi5kYTZjOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTItMDQtMTAgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQgYW5kIGFkZCBm
YWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRo
ZSBkZWZhdWx0IEltYWdlRGVjb2RlciBmb3IgUXQtcG9ydCBmcm9tIFFJbWFnZURlY29kZXIgdG8g
V2ViQ29yZSBJbWFnZURlY29kZXIuCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3IgaXMgdG8gdXNl
IFFJbWFnZURlY29kZXIgb25seSBpZiBXZWJDb3JlSW1hZ2VEZWNvZGVyIGRvZXNuJ3Qgc3VwcG9y
dCB0aGUgcmVxdWVzdGVkCisgICAgICAgIGltYWdlIHR5cGUuCisgICAgICAgIFRoZSBXVEZfVVNF
X1FUX0lNQUdFX0RFQ09ERVIgbWFjcm8gaGFzIGJlZW4gcmVtb3ZlZCwgc2luY2UgaXQgaXMgbm8g
bG9uZ2VyIG5lZWRlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGJ1aWxkIGRlcGVkZW5j
eSBmb3IgbGlicG5nLWRldiBhbmQgbGlianBlZy1kZXYgcGFja2FnZXMsIGJlY3Vhc2UgUE5HIGFu
ZCBKUEVHIGltYWdlZGVjb2RlcnMKKyAgICAgICAgbmVlZCBub3Qgb25seSB0aGVzZSBsaWJyYXJp
ZXMsIGJ1dCB0aGVpciBoZWFkZXJzIGFsc28uIFFtYWtlLWNvbmZpZyB0ZXN0cyBmb3IgdGhlc2Ug
bGlicmFyaWVzIHdlcmUKKyAgICAgICAgaW50cm9kdWNlZCBpbiByMTEwMDQ1LgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVk
ZWQuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBNb3ZlIFdlYkNvcmUgSW1hZ2VEZWNvZGVyIGZp
bGVzIG91dCBvZiBndWFyZHMuIFJlbW92ZSBJbWFnZUZyYW1lUXQuY3BwIGZyb20gc291cmNlcy4K
KyAgICAgICAgKiBXZWJDb3JlLnByaTogTW92ZSBXZWJDb3JlIEltYWdlRGVjb2RlciBpbmNsdWRl
IHBhdGhzIG91dCBvZiBndWFyZHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogUmVtb3ZlIHVubmVjZXNzYXJ5IHR5cGVkZWZzLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyUXQ6OmZpbGVuYW1l
RXh0ZW5zaW9uKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNlbWljb2xvbi4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlclF0OjppbnRlcm5hbEhhbmRsZUN1cnJlbnRJbWFnZSk6IFVzZSBRSW1h
Z2UgYW5kIEltYWdlRnJhbWUgaW5zdGVhZCBvZiBRUGl4bWFwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKTogTW92ZWQg
aGVyZSBmcm9tIHJlbW92ZWQgSW1hZ2VGcmFtZVF0LmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOiBSZW9yZ2FuaXplIHRoZSBpbmNsdWRlcyBv
ZiB0aGUgaGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOiBB
ZGQgcGxhdGZvcm0gbWFjcm8gZ3VhcmRlZCBmYWxsYmFjayBjYXNlIGZvciBRSW1hZ2VEZWNvZGVy
LgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOiBSZW1v
dmUgUXQtc3BlY2lmaWMgY29kZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpnZXRB
ZGRyKTogUmVtb3ZlIFF0LXNwZWNpZmljIGNhc2UsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVk
ZWQuCisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwOiBSZW1vdmVkLiBEZWFkIGNvZGUsIG90aGVyIGNvZGUg
aGFzIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgSW1hZ2VEZWNvZGVyUXQuY3BwLgorCiAyMDEyLTA0
LTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IG1ha2UgZXJyb3IgYSBzdHJpbmcgb24gdGhlIGZyb250LWVuZCBzaWRlLCBu
b3QgYW4gb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpp
bmRleCBkNDRhMDBhLi44OTZlYjNiCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTA2OSw3ICsxMDY5LDYgQEAgU09VUkNF
UyArPSBcCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVT
eXN0ZW0uY3BwIFwKICAgICBwbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmNwcCBcCi0gICAgcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEZhbGxiYWNrTGlzdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYW1pbHkuY3Bw
IFwKQEAgLTExMjAsNiArMTExOSwxNCBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIFwKKyAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBcCisgICAgcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBcCisgICAgcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3Bw
IFwKICAgICBwbGF0Zm9ybS9LVVJMLmNwcCBcCiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIFwK
QEAgLTIyNTcsNiArMjI2NCwxMyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKKyAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZVJlYWRlci5oXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuaCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuaCBcCiAgICAgcGxhdGZvcm0vS2lsbFJpbmcuaCBcCiAgICAgcGxhdGZvcm0vS1VS
TC5oIFwKICAgICBwbGF0Zm9ybS9MZW5ndGguaCBcCkBAIC0yODI5LDYgKzI4NDMsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ljb25RdC5jcHAgXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZURlY29kZXJRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3Bw
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbnRQb2ludFF0LmNwcCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW50UmVjdFF0LmNwcCBcCkBAIC0zOTg0LDMzICszOTk5LDEwIEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9NSFRNTD0xKSB7CiAgICAgICAgIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCiB9CiAKLWNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfUVRfSU1BR0VfREVDT0RF
Uj0xKSB7Ci0gICAgSEVBREVSUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJR
dC5oCi0gICAgU09VUkNFUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5j
cHAKLX0gZWxzZSB7Ci0gICAgSEVBREVSUyArPSBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmhcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCi0KLSAgICBTT1VSQ0VTICs9IFwKLSAgICAgICAg
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBcCi0gICAgICAgIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIFwKLSAgICAgICAgcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBcCi0gICAgICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIFwKLSAgICAgICAg
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcFwKLSAgICAgICAg
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgXAotICAgICAg
ICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIFwKLSAg
ICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKLQot
ICAgIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VCUD0xKSB7Ci0gICAgICAgIEhFQURFUlMg
Kz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKLSAgICAg
ICAgU09VUkNFUyArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwCi0gICAgfQorY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9XRUJQPTEpIHsKKyAgICBJ
TkNMVURFUEFUSCArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCisgICAgSEVBREVSUyAr
PSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorICAgIFNP
VVJDRVMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cAogfQogCiAhc3lzdGVtLXNxbGl0ZTpleGlzdHMoICQke1NRTElURTNTUkNESVJ9L3NxbGl0ZTMu
YyApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcmkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBm
NzYxY2U5Li44MmVmZGIzCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC02Myw2ICs2MywxMSBAQCBJTkNMVURFUEFUSCAr
PSBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcCBcCiAgICAgJCRT
T1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMgXAogICAgICQkU09VUkNFX0RJ
Ui9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycyBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcCBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZiBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljbyBc
CisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcgXAorICAgICQk
U09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcgXAogICAgICQkU09VUkNFX0RJ
Ui9wbGF0Zm9ybS9sZXZlbGRiIFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vbW9jayBcCiAg
ICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL25ldHdvcmsgXApAQCAtMjEwLDI4ICsyMTUsMTkgQEAg
Y29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9URVhUVVJFX01BUFBFUl9HTD0xKXxjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkKICAgICBMSUJTICs9IC1sc3FsaXRlMwogfQogCi1jb250
YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9MCkgewotICAgIElOQ0xVREVQ
QVRIICs9IFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cCBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYgXAot
ICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvIFwKLSAgICAg
ICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcgXAotICAgICAgICAk
JFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nCi0KLSAgICBoYXZlUXQoNSkg
ewotICAgICAgICAjIFF0NSBhbGxvd3MgdXMgdG8gdXNlIGNvbmZpZyB0ZXN0cyB0byBjaGVjayBm
b3IgdGhlIHByZXNlbmNlIG9mIHRoZXNlIGxpYnJhcmllcwotICAgICAgICAhY29udGFpbnMoY29u
ZmlnX3Rlc3RfbGlianBlZywgeWVzKTogZXJyb3IoIkpQRUcgbGlicmFyeSBub3QgZm91bmQhIikK
LSAgICAgICAgIWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xpYnBuZywgeWVzKTogZXJyb3IoIlBORyAx
LjIgbGlicmFyeSBub3QgZm91bmQhIikKLSAgICB9Ci0KLSAgICBMSUJTICs9IC1sanBlZyAtbHBu
ZzEyCitjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1dFQlA9MSkgeworICAgIElOQ0xVREVQQVRI
ICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCisgICAgTElCUyAr
PSAtbHdlYnAKK30KIAotICAgIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VCUD0xKSB7Ci0g
ICAgICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwCi0gICAgICAgIExJQlMgKz0gLWx3ZWJwCi0gICAgfQoraGF2ZVF0KDUpIHsKKyAgICAj
IFF0NSBhbGxvd3MgdXMgdG8gdXNlIGNvbmZpZyB0ZXN0cyB0byBjaGVjayBmb3IgdGhlIHByZXNl
bmNlIG9mIHRoZXNlIGxpYnJhcmllcworICAgICFjb250YWlucyhjb25maWdfdGVzdF9saWJqcGVn
LCB5ZXMpOiBlcnJvcigiSlBFRyBsaWJyYXJ5IG5vdCBmb3VuZCEiKQorICAgICFjb250YWlucyhj
b25maWdfdGVzdF9saWJwbmcsIHllcyk6IGVycm9yKCJQTkcgMS4yIGxpYnJhcnkgbm90IGZvdW5k
ISIpCiB9CiAKK0xJQlMgKz0gLWxqcGVnIC1scG5nMTIKKwogd2luMzItKnx3aW5jZSogewogICAg
IERMTERFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IGZmOWZlMGQuLjc1ZWQ1YTEKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjksMTEgKzI5LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCi0jaWYgUExBVEZPUk0o
UVQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyUXQuaCIKLSNlbHNlCiAjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyLmgiCi0jZW5kaWYKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAz
YTdmYWZjLi43ZDFkMDA3Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaApAQCAtNzYsMTAgKzc2LDYgQEAgY2xhc3MgSW1hZ2VEZWNvZGVyOwogY2xhc3MgVGls
ZWRJbWFnZU9wZW5WRzsKIHR5cGVkZWYgSW1hZ2VEZWNvZGVyKiBOYXRpdmVJbWFnZVNvdXJjZVB0
cjsKIHR5cGVkZWYgVGlsZWRJbWFnZU9wZW5WRyogTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBQTEFU
Rk9STShRVCkKLWNsYXNzIEltYWdlRGVjb2RlclF0OwotdHlwZWRlZiBJbWFnZURlY29kZXJRdCog
TmF0aXZlSW1hZ2VTb3VyY2VQdHI7Ci10eXBlZGVmIFFQaXhtYXAqIE5hdGl2ZUltYWdlUHRyOwog
I2Vsc2UKIGNsYXNzIEltYWdlRGVjb2RlcjsKIHR5cGVkZWYgSW1hZ2VEZWNvZGVyKiBOYXRpdmVJ
bWFnZVNvdXJjZVB0cjsKQEAgLTk5LDYgKzk1LDggQEAgdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0
bWFwPiBOYXRpdmVJbWFnZVB0cjsKIGNsYXNzIEltYWdlRGVjb2RlcjsKIHR5cGVkZWYgSW1hZ2VE
ZWNvZGVyKiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKIHR5cGVkZWYgdm9pZCogTmF0aXZlSW1hZ2VQ
dHI7CisjZWxpZiBQTEFURk9STShRVCkKK3R5cGVkZWYgUVBpeG1hcCogTmF0aXZlSW1hZ2VQdHI7
CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQppbmRleCAxZjkzYWEzLi40N2Q5ZTlkCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKQEAgLTMxLDIxICszMSwxMCBAQAog
CiAjaW5jbHVkZSA8UXRDb3JlL1FCeXRlQXJyYXk+CiAjaW5jbHVkZSA8UXRDb3JlL1FCdWZmZXI+
Ci0KICNpbmNsdWRlIDxRdEd1aS9RSW1hZ2VSZWFkZXI+Ci0jaW5jbHVkZSA8cWRlYnVnLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0
ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQotewotICAgIC8vIFdlIG5lZWQgYXQgbGVhc3QgNCBieXRlcyB0
byBmaWd1cmUgb3V0IHdoYXQga2luZCBvZiBpbWFnZSB3ZSdyZSBkZWFsaW5nIHdpdGguCi0gICAg
aWYgKGRhdGEuc2l6ZSgpIDwgNCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gbmV3
IEltYWdlRGVjb2RlclF0KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
Ci19Ci0KIEltYWdlRGVjb2RlclF0OjpJbWFnZURlY29kZXJRdChJbWFnZVNvdXJjZTo6QWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgLCBtX3JlcGV0aXRpb25Db3Vu
dChjQW5pbWF0aW9uTm9uZSkKQEAgLTEyOSw3ICsxMTgsNyBAQCBpbnQgSW1hZ2VEZWNvZGVyUXQ6
OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0CiBTdHJpbmcgSW1hZ2VEZWNvZGVyUXQ6OmZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKG1fZm9ybWF0LmNvbnN0RGF0
YSgpLCBtX2Zvcm1hdC5sZW5ndGgoKSk7Ci19OworfQogCiBJbWFnZUZyYW1lKiBJbWFnZURlY29k
ZXJRdDo6ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKQEAgLTE5NCwyMSArMTgz
LDI4IEBAIHZvaWQgSW1hZ2VEZWNvZGVyUXQ6OmludGVybmFsUmVhZEltYWdlKHNpemVfdCBmcmFt
ZUluZGV4KQogCiBib29sIEltYWdlRGVjb2RlclF0OjppbnRlcm5hbEhhbmRsZUN1cnJlbnRJbWFn
ZShzaXplX3QgZnJhbWVJbmRleCkKIHsKLSAgICBRUGl4bWFwIHBpeG1hcCA9IFFQaXhtYXA6OmZy
b21JbWFnZVJlYWRlcihtX3JlYWRlci5nZXQoKSk7CisgICAgSW1hZ2VGcmFtZSogY29uc3QgYnVm
ZmVyID0gJm1fZnJhbWVCdWZmZXJDYWNoZVtmcmFtZUluZGV4XTsKKyAgICBRU2l6ZSBpbWFnZVNp
emUgPSBtX3JlYWRlci0+c2l6ZSgpOworCisgICAgaWYgKCFidWZmZXItPnNldFNpemUoaW1hZ2VT
aXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFFJbWFnZSBpbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oYnVmZmVyLT5nZXRB
ZGRyKDAsMCkpLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCBzaXplb2Yo
SW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKSAqIGltYWdlU2l6ZS53aWR0aCgpLCBtX3JlYWRlci0+aW1h
Z2VGb3JtYXQoKSk7CiAKLSAgICBpZiAocGl4bWFwLmlzTnVsbCgpKSB7CisgICAgYnVmZmVyLT5z
ZXREdXJhdGlvbihtX3JlYWRlci0+bmV4dEltYWdlRGVsYXkoKSk7CisgICAgbV9yZWFkZXItPnJl
YWQoJmltYWdlKTsKKworICAgIGlmIChpbWFnZS5pc051bGwoKSkgewogICAgICAgICBmcmFtZUNv
dW50KCk7CiAgICAgICAgIHJlcGV0aXRpb25Db3VudCgpOwogICAgICAgICBjbGVhclBvaW50ZXJz
KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBub3cgaW50byB0aGUg
SW1hZ2VGcmFtZSAtIGV2ZW4gaWYgdGhlIGltYWdlIGlzIG5vdAotICAgIEltYWdlRnJhbWUqIGNv
bnN0IGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07Ci0gICAgYnVmZmVy
LT5zZXRPcmlnaW5hbEZyYW1lUmVjdChtX3JlYWRlci0+Y3VycmVudEltYWdlUmVjdCgpKTsKKyAg
ICBidWZmZXItPnNldE9yaWdpbmFsRnJhbWVSZWN0KGltYWdlLnJlY3QoKSk7CisgICAgYnVmZmVy
LT5zZXRIYXNBbHBoYShpbWFnZS5oYXNBbHBoYUNoYW5uZWwoKSk7CiAgICAgYnVmZmVyLT5zZXRT
dGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7Ci0gICAgYnVmZmVyLT5zZXREdXJhdGlv
bihtX3JlYWRlci0+bmV4dEltYWdlRGVsYXkoKSk7Ci0gICAgYnVmZmVyLT5zZXRQaXhtYXAocGl4
bWFwKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDUsNiArMjQxLDIwIEBAIHZvaWQg
SW1hZ2VEZWNvZGVyUXQ6OmNsZWFyUG9pbnRlcnMoKQogICAgIG1fcmVhZGVyLmNsZWFyKCk7CiAg
ICAgbV9idWZmZXIuY2xlYXIoKTsKIH0KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNO
ZXdOYXRpdmVJbWFnZSgpIGNvbnN0Cit7CisgICAgUUltYWdlOjpGb3JtYXQgZm9ybWF0OworICAg
IGlmIChtX2hhc0FscGhhKQorICAgICAgICBmb3JtYXQgPSBtX3ByZW11bHRpcGx5QWxwaGEgPyAg
UUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQgOiBRSW1hZ2U6OkZvcm1hdF9BUkdC
MzI7CisgICAgZWxzZQorICAgICAgICBmb3JtYXQgPSBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKKwor
ICAgIFFJbWFnZSBpbWcocmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KG1fYnl0ZXMpLCBtX3NpemUu
d2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBzaXplb2YoUGl4ZWxEYXRhKSAqIG1fc2l6ZS53aWR0
aCgpLCBmb3JtYXQpOworCisgICAgcmV0dXJuIG5ldyBRUGl4bWFwKFFQaXhtYXA6OmZyb21JbWFn
ZShpbWcpKTsKK30KKwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmgKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBt
b2RlIDEwMDc1NQppbmRleCBkOWU5NjkwLi4zZGE2YzQyCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjAsMjEgKzIw
LDIzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyLmgiCiAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0KICNpbmNs
dWRlICJCTVBJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJHSUZJbWFnZURlY29kZXIuaCIKICNp
bmNsdWRlICJJQ09JbWFnZURlY29kZXIuaCIKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJJ
bWFnZURlY29kZXJRdC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiSlBFR0ltYWdlRGVjb2Rlci5oIgog
I2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2lmIFVTRShXRUJQKQogI2luY2x1ZGUgIldFQlBJbWFnZURlY29kZXIuaCIKICNlbmRpZgotI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGNtYXRoPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0xMjQsNiArMTI2LDkgQEAgSW1h
Z2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEs
IEltYWdlU291cmNlOjpBbHBoYU8KICAgICBpZiAobWF0Y2hlc0lDT1NpZ25hdHVyZShjb250ZW50
cykgfHwgbWF0Y2hlc0NVUlNpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcg
SUNPSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICByZXR1cm4gbmV3IEltYWdlRGVjb2RlclF0KGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisjZW5kaWYKICAgICByZXR1cm4g
MDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDIw
MTIyZmYuLjBjNDBmYTYKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTQwLDkgKzQwLDYgQEAKICNpZiBVU0UoU0tJQSkKICNp
bmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJTa0NvbG9yUHJpdi5oIgotI2Vs
aWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UVBpeG1hcD4KLSNpbmNsdWRlIDxRSW1hZ2U+CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjQsNyArNjEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICBEaXNwb3NlT3ZlcndyaXRlUHJldmlvdXMgIC8vIENsZWFy
IGZyYW1lIHRvIHByZXZpb3VzIGZyYW1lYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNvbnRlbnRzCiAgICAgICAgIH07Ci0jaWYgVVNFKFNLSUEpIHx8IChQ
TEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpKQorI2lmIFVTRShTS0lBKQogICAg
ICAgICB0eXBlZGVmIHVpbnQzMl90IFBpeGVsRGF0YTsKICNlbHNlCiAgICAgICAgIHR5cGVkZWYg
dW5zaWduZWQgUGl4ZWxEYXRhOwpAQCAtMTQwLDE5ICsxMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB7CiAjaWYgVVNFKFNLSUEpCiAgICAgICAgICAgICByZXR1cm4gbV9iaXRt
YXAuYml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOwotI2VsaWYgUExBVEZPUk0oUVQpICYmIFVTRShR
VF9JTUFHRV9ERUNPREVSKQotICAgICAgICAgICAgbV9pbWFnZSA9IG1fcGl4bWFwLnRvSW1hZ2Uo
KTsKLSAgICAgICAgICAgIG1fcGl4bWFwID0gUVBpeG1hcCgpOwotICAgICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFFSZ2IqPihtX2ltYWdlLnNjYW5MaW5lKHkpKSArIHg7CiAj
ZWxzZQogICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsgeDsKICNl
bmRpZgogICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09E
RVIpCi0gICAgICAgIHZvaWQgc2V0UGl4bWFwKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCk7Ci0jZW5k
aWYKLQogICAgIHByaXZhdGU6CiAjaWYgVVNFKENHKQogICAgICAgICB0eXBlZGVmIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBOYXRpdmVCYWNraW5nU3RvcmU7CkBAIC0xOTAsMTEgKzE3OCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFS
V0lOKQogICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZW5kaWYKLSNlbGlm
IFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLSAgICAgICAgbXV0YWJsZSBR
UGl4bWFwIG1fcGl4bWFwOwotICAgICAgICBtdXRhYmxlIFFJbWFnZSBtX2ltYWdlOwotICAgICAg
ICBib29sIG1faGFzQWxwaGE7Ci0gICAgICAgIEludFNpemUgbV9zaXplOwogI2Vsc2UKICAgICAg
ICAgTmF0aXZlQmFja2luZ1N0b3JlIG1fYmFja2luZ1N0b3JlOwogICAgICAgICBQaXhlbERhdGEq
IG1fYnl0ZXM7IC8vIFRoZSBtZW1vcnkgaXMgYmFja2VkIGJ5IG1fYmFja2luZ1N0b3JlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VG
cmFtZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0lt
YWdlRnJhbWVRdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5OWFjMjkuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1h
Z2VGcmFtZVF0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSwgSW5jLgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgVVNFKFFUX0lNQUdFX0RFQ09E
RVIpCi0KLUltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQotICAgIDogbV9oYXNBbHBoYShmYWxzZSkg
Ci0gICAgLCBtX3NpemUoKQotICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKLSAgICAsIG1fZHVy
YXRpb24oMCkKLSAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmllZCkKLSAg
ICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQotewotfQotCi1JbWFnZUZyYW1lJiBJbWFnZUZy
YW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCi17Ci0gICAgaWYgKHRoaXMg
PT0gJm90aGVyKQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICBjb3B5Qml0bWFwRGF0YShv
dGhlcik7Ci0gICAgc2V0T3JpZ2luYWxGcmFtZVJlY3Qob3RoZXIub3JpZ2luYWxGcmFtZVJlY3Qo
KSk7Ci0gICAgc2V0U3RhdHVzKG90aGVyLnN0YXR1cygpKTsKLSAgICBzZXREdXJhdGlvbihvdGhl
ci5kdXJhdGlvbigpKTsKLSAgICBzZXREaXNwb3NhbE1ldGhvZChvdGhlci5kaXNwb3NhbE1ldGhv
ZCgpKTsKLSAgICBzZXRQcmVtdWx0aXBseUFscGhhKG90aGVyLnByZW11bHRpcGx5QWxwaGEoKSk7
Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi12b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRh
KCkKLXsKLSAgICBtX3BpeG1hcCA9IFFQaXhtYXAoKTsKLSAgICBtX2ltYWdlID0gUUltYWdlKCk7
Ci0gICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5OwotICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBv
dGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpCi0gICAgLy8gY2FsbHMg
dGhpcyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCi0g
ICAgLy8gaW5pdEZyYW1lQnVmZmVyKCkgYW5kIGZyYW1lQ29tcGxldGUoKSBtYXkgc3RpbGwgbmVl
ZCB0byByZWFkCi0gICAgLy8gb3RoZXIgbWV0YWRhdGEgb3V0IG9mIHRoaXMgZnJhbWUgbGF0ZXIu
Ci19Ci0KLXZvaWQgSW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEoKQotewotICAgIGlmICht
X3BpeG1hcC5pc051bGwoKSAmJiAhbV9pbWFnZS5pc051bGwoKSkgewotICAgICAgICBtX3BpeG1h
cCA9IFFQaXhtYXAobV9pbWFnZS53aWR0aCgpLCBtX2ltYWdlLmhlaWdodCgpKTsKLSAgICAgICAg
bV9pbWFnZSA9IFFJbWFnZSgpOwotICAgIH0KLSAgICBtX3BpeG1hcC5maWxsKFFDb2xvcigwLCAw
LCAwLCAwKSk7Ci19Ci0KLWJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1h
Z2VGcmFtZSYgb3RoZXIpCi17Ci0gICAgaWYgKHRoaXMgPT0gJm90aGVyKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIG1faW1hZ2UgPSBvdGhlci5tX2ltYWdlOwotICAgIG1fcGl4bWFwID0g
b3RoZXIubV9waXhtYXA7Ci0gICAgbV9zaXplID0gb3RoZXIubV9zaXplOwotICAgIG1faGFzQWxw
aGEgPSBvdGhlci5tX2hhc0FscGhhOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEltYWdl
RnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQotewotICAgIC8vIHNl
dFNpemUoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSwgaXQgbGVha3MgbWVtb3J5IG90aGVy
d2lzZS4KLSAgICBBU1NFUlQoIXdpZHRoKCkgJiYgIWhlaWdodCgpKTsKLQotICAgIG1fc2l6ZSA9
IEludFNpemUobmV3V2lkdGgsIG5ld0hlaWdodCk7Ci0gICAgbV9pbWFnZSA9IFFJbWFnZSgpOwot
ICAgIG1fcGl4bWFwID0gUVBpeG1hcChuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKLSAgICBpZiAobV9w
aXhtYXAuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHplcm9GaWxsUGl4
ZWxEYXRhKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVFQaXhtYXAqIEltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIGlmIChtX3BpeG1hcC5pc051bGwoKSAmJiAh
bV9pbWFnZS5pc051bGwoKSkgewotICAgICAgICBtX3BpeG1hcCA9IFFQaXhtYXA6OmZyb21JbWFn
ZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IFFJbWFnZSgpOwotICAgIH0KLSAgICByZXR1
cm4gbmV3IFFQaXhtYXAobV9waXhtYXApOwotfQotCi1ib29sIEltYWdlRnJhbWU6Omhhc0FscGhh
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9oYXNBbHBoYTsKLX0KLQotdm9pZCBJbWFnZUZyYW1l
OjpzZXRIYXNBbHBoYShib29sIGFscGhhKQotewotICAgIG1faGFzQWxwaGEgPSBhbHBoYTsKLX0K
LQotdm9pZCBJbWFnZUZyYW1lOjpzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJiBj
b2xvclByb2ZpbGUpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBJbWFnZUZy
YW1lOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMgc3RhdHVzKQotewotICAgIG1fc3RhdHVzID0gc3Rh
dHVzOwotfQotCi0vLyBUaGUgaW1hZ2UgbXVzdCBub3QgaGF2ZSBmb3JtYXQgODg4OCBwcmUgbXVs
dGlwbGllZC4uLgotdm9pZCBJbWFnZUZyYW1lOjpzZXRQaXhtYXAoY29uc3QgUVBpeG1hcCYgcGl4
bWFwKQotewotICAgIG1fcGl4bWFwID0gcGl4bWFwOwotICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsK
LSAgICBtX3NpemUgPSBwaXhtYXAuc2l6ZSgpOwotICAgIG1faGFzQWxwaGEgPSBwaXhtYXAuaGFz
QWxwaGFDaGFubmVsKCk7Ci19Ci0KLWludCBJbWFnZUZyYW1lOjp3aWR0aCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOwotfQotCi1pbnQgSW1hZ2VGcmFtZTo6aGVpZ2h0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXplLmhlaWdodCgpOwotfQotCi0jZWxzZQotCi1RUGl4
bWFwKiBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKLXsKLSAgICBRSW1hZ2U6
OkZvcm1hdCBmbXQ7Ci0gICAgaWYgKG1faGFzQWxwaGEpCi0gICAgICAgIGZtdCA9IG1fcHJlbXVs
dGlwbHlBbHBoYSA/ICBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCA6IFFJbWFn
ZTo6Rm9ybWF0X0FSR0IzMjsKLSAgICBlbHNlCi0gICAgICAgIGZtdCA9IFFJbWFnZTo6Rm9ybWF0
X1JHQjMyOwotCi0gICAgUUltYWdlIGltZyhyZWludGVycHJldF9jYXN0PHVjaGFyKj4obV9ieXRl
cyksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIHNpemVvZihQaXhlbERhdGEpICog
bV9zaXplLndpZHRoKCksIGZtdCk7Ci0KLSAgICByZXR1cm4gbmV3IFFQaXhtYXAoUVBpeG1hcDo6
ZnJvbUltYWdlKGltZykpOwotfQotCi0jZW5kaWYgLy8gVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0K
LX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBm
MDBkN2Q4Li4zNjUyMTY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMTAgIFpvbHRhbiBIb3J2YXRoICA8
em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29k
ZXJzIGFzIGRlZmF1bHQgYW5kIGFkZCBmYWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAg
IFJlbW92ZSBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVIgbWFjcm8uCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L2ZlYXR1cmVzLnByZjoKKwogMjAxMi0wNC0xMCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFRlc3ROZXRzY2FwZVBsdWdpbiBpcyBicm9r
ZW4KZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJm
IGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKb2xkIG1vZGUgMTAw
NjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBhNzQ0MTQ3Li5iNTU0YjRkCi0tLSBhL1Rvb2xzL3Ft
YWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtlL21rc3Bl
Y3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCkBAIC05NCw3ICs5NCw2IEBAIGhhdmVRdCg1KSB7CiAh
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEk9Lik6IERFRklORVMg
Kz0gRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEk9MQogCiAjIFBvbGljeSBkZWNpc2lvbnM6IGZv
ciB1c2luZyBhIHBhcnRpY3VsYXIgdGhpcmQtcGFydHkgbGlicmFyeSBvciBvcHRpb25hbCBPUyBz
ZXJ2aWNlCi0hY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9RVF9JTUFHRV9ERUNPREVSPS4pOiBE
RUZJTkVTICs9IFdURl9VU0VfUVRfSU1BR0VfREVDT0RFUj0xCiAKICMgRW5hYmxlZCBpbiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggaWYgbm90IHNldAogIyBXZSBoYXZlIHRv
IGRvIHRoZSBzYW1lIHRvIGJlIGFibGUgdG8gZGlzYWJsZSB0aGUgZmVhdHVyZSBpbiBidWlsZC13
ZWJraXQK
</data>
<flag name="review"
          id="141257"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139180</attachid>
            <date>2012-04-27 06:02:06 -0700</date>
            <delta_ts>2012-05-25 04:15:31 -0700</delta_ts>
            <desc>same as last + MIMETypeRegistry.cpp</desc>
            <filename>wcimg0427.patch</filename>
            <type>text/plain</type>
            <size>27188</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZjRlODU3Li4yMmVhYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMDQtMjcgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQgYW5kIGFkZCBm
YWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRo
ZSBkZWZhdWx0IEltYWdlRGVjb2RlciBmb3IgUXQtcG9ydCBmcm9tIFFJbWFnZURlY29kZXIgdG8g
V2ViQ29yZSBJbWFnZURlY29kZXIuCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3IgaXMgdG8gdXNl
IFFJbWFnZURlY29kZXIgb25seSBpZiBXZWJDb3JlSW1hZ2VEZWNvZGVyIGRvZXNuJ3Qgc3VwcG9y
dCB0aGUgcmVxdWVzdGVkCisgICAgICAgIGltYWdlIHR5cGUuCisgICAgICAgIFRoZSBXVEZfVVNF
X1FUX0lNQUdFX0RFQ09ERVIgbWFjcm8gaGFzIGJlZW4gcmVtb3ZlZCwgc2luY2UgaXQgaXMgbm8g
bG9uZ2VyIG5lZWRlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGJ1aWxkIGRlcGVkZW5j
eSBmb3IgbGlicG5nLWRldiBhbmQgbGlianBlZy1kZXYgcGFja2FnZXMsIGJlY3Vhc2UgUE5HIGFu
ZCBKUEVHIGltYWdlZGVjb2RlcnMKKyAgICAgICAgbmVlZCBub3Qgb25seSB0aGVzZSBsaWJyYXJp
ZXMsIGJ1dCB0aGVpciBoZWFkZXJzIGFsc28uIFFtYWtlLWNvbmZpZyB0ZXN0cyBmb3IgdGhlc2Ug
bGlicmFyaWVzIHdlcmUKKyAgICAgICAgaW50cm9kdWNlZCBpbiByMTEwMDQ1LgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVk
ZWQuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBNb3ZlIFdlYkNvcmUgSW1hZ2VEZWNvZGVyIGZp
bGVzIG91dCBvZiBndWFyZHMuIFJlbW92ZSBJbWFnZUZyYW1lUXQuY3BwIGZyb20gc291cmNlcy4K
KyAgICAgICAgKiBXZWJDb3JlLnByaTogTW92ZSBXZWJDb3JlIEltYWdlRGVjb2RlciBpbmNsdWRl
IHBhdGhzIG91dCBvZiBndWFyZHMuCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMpOiBBZGQgV2ViQ29yZSBzdXBwb3J0ZWQgYW5kIFF0IHN1cHBvcnRlZCBNSU1FIHR5cGVzLgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5j
b2RpbmcpOiBVc2UgUXQgc3VwcG9ydGVkIE1JTUUgdHlwZXMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogUmVtb3ZlIHVubmVjZXNz
YXJ5IHR5cGVkZWZzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyUXQ6OmZpbGVuYW1lRXh0ZW5zaW9uKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHNlbWljb2xvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlclF0OjppbnRlcm5hbEhhbmRsZUN1cnJlbnRJ
bWFnZSk6IFVzZSBRSW1hZ2UgYW5kIEltYWdlRnJhbWUgaW5zdGVhZCBvZiBRUGl4bWFwLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKTogTW92ZWQgaGVyZSBmcm9tIHJlbW92ZWQgSW1hZ2VGcmFtZVF0LmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOiBSZW9yZ2FuaXpl
IHRoZSBpbmNsdWRlcyBvZiB0aGUgaGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyOjpjcmVhdGUpOiBBZGQgcGxhdGZvcm0gbWFjcm8gZ3VhcmRlZCBmYWxsYmFjayBjYXNlIGZv
ciBRSW1hZ2VEZWNvZGVyLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oOiBSZW1vdmUgUXQtc3BlY2lmaWMgY29kZXMuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpnZXRBZGRyKTogUmVtb3ZlIFF0LXNwZWNpZmljIGNhc2UsIHNpbmNlIGl0IGlz
IG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwOiBSZW1vdmVkLiBEZWFkIGNv
ZGUsIG90aGVyIGNvZGUgaGFzIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgSW1hZ2VEZWNvZGVyUXQu
Y3BwLgorCiAyMDEyLTA0LTI2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHRoZSAiRGlzYWJsZSBKYXZh
U2NyaXB0IiBvcHRpb24gaW4gdGhlIHNldHRpbmdzIGRpYWxvZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBkYTkzNmUzLi45NjU0ODAzCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAt
MTA3Nyw3ICsxMDc3LDYgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVhbS5j
cHAgXAogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIFwKICAgICBwbGF0Zm9ybS9IaXN0b2dy
YW1TdXBwb3J0LmNwcCBcCi0gICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFt
ZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5jcHAgXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRGYW1pbHkuY3BwIFwKQEAgLTExMzAsNiArMTEyOSwxNCBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRl
LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uY3BwIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNw
cCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAg
XAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHBcCisg
ICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgXAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgXAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIFwKICAgICBw
bGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS9LVVJMLmNwcCBcCiAgICAg
cGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIFwKQEAgLTIyNzYsNiArMjI4MywxMyBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwK
KyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggXAorICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oXAorICAgIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBcCisgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCiAgICAgcGxhdGZvcm0vS2lsbFJp
bmcuaCBcCiAgICAgcGxhdGZvcm0vS1VSTC5oIFwKICAgICBwbGF0Zm9ybS9MZW5ndGguaCBcCkBA
IC0yODQ5LDYgKzI4NjMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ljb25R
dC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwIFwKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAgXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbnRQ
b2ludFF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW50UmVjdFF0LmNwcCBcCkBA
IC00MDA2LDMzICs0MDIxLDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NSFRNTD0xKSB7
CiAgICAgICAgIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCiB9CiAKLWNvbnRhaW5zKERFRklORVMs
IFdURl9VU0VfUVRfSU1BR0VfREVDT0RFUj0xKSB7Ci0gICAgSEVBREVSUyArPSBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5oCi0gICAgU09VUkNFUyArPSBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKLX0gZWxzZSB7Ci0gICAgSEVBREVSUyArPSBcCi0g
ICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBcCi0g
ICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKLSAg
ICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIFwKLSAg
ICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmhcCi0gICAg
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBcCi0gICAg
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIFwKLSAg
ICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCi0KLSAg
ICBTT1VSQ0VTICs9IFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlUmVhZGVyLmNwcFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAKLQotICAgIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VC
UD0xKSB7Ci0gICAgICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmgKLSAgICAgICAgU09VUkNFUyArPSBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCi0gICAgfQorY29udGFpbnMoREVGSU5FUywg
V1RGX1VTRV9XRUJQPTEpIHsKKyAgICBJTkNMVURFUEFUSCArPSBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwCisgICAgSEVBREVSUyArPSBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaAorICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAogfQogCiAhc3lzdGVtLXNxbGl0ZTpleGlzdHMoICQk
e1NRTElURTNTUkNESVJ9L3NxbGl0ZTMuYyApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKb2xkIG1vZGUgMTAwNjQ0
Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBiNDMwZmNiLi5lZTNjYzJjCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC02NCw2
ICs2NCwxMSBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcCBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMgXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycyBcCisgICAg
JCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcCBcCisgICAgJCRTT1VSQ0Vf
RElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZiBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljbyBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcgXAorICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcgXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9sZXZlbGRiIFwKICAgICAkJFNPVVJD
RV9ESVIvcGxhdGZvcm0vbW9jayBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL25ldHdvcmsg
XApAQCAtMjE4LDI4ICsyMjMsMTkgQEAgY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9URVhUVVJF
X01BUFBFUl9HTD0xKXxjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkKICAgICBMSUJT
ICs9IC1sc3FsaXRlMwogfQogCi1jb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RF
Q09ERVI9MCkgewotICAgIElOQ0xVREVQQVRIICs9IFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcCBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYgXAotICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvIFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcgXAotICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nCi0KLSAgICBoYXZlUXQoNSkgewotICAgICAgICAjIFF0NSBhbGxvd3MgdXMgdG8gdXNl
IGNvbmZpZyB0ZXN0cyB0byBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZXNlIGxpYnJhcmll
cwotICAgICAgICAhY29udGFpbnMoY29uZmlnX3Rlc3RfbGlianBlZywgeWVzKTogZXJyb3IoIkpQ
RUcgbGlicmFyeSBub3QgZm91bmQhIikKLSAgICAgICAgIWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xp
YnBuZywgeWVzKTogZXJyb3IoIlBORyAxLjIgbGlicmFyeSBub3QgZm91bmQhIikKLSAgICB9Ci0K
LSAgICBMSUJTICs9IC1sanBlZyAtbHBuZzEyCitjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1dF
QlA9MSkgeworICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwCisgICAgTElCUyArPSAtbHdlYnAKK30KIAotICAgIGNvbnRhaW5zKERFRklO
RVMsIFdURl9VU0VfV0VCUD0xKSB7Ci0gICAgICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJ
Ui9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCi0gICAgICAgIExJQlMgKz0gLWx3ZWJwCi0g
ICAgfQoraGF2ZVF0KDUpIHsKKyAgICAjIFF0NSBhbGxvd3MgdXMgdG8gdXNlIGNvbmZpZyB0ZXN0
cyB0byBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZXNlIGxpYnJhcmllcworICAgICFjb250
YWlucyhjb25maWdfdGVzdF9saWJqcGVnLCB5ZXMpOiBlcnJvcigiSlBFRyBsaWJyYXJ5IG5vdCBm
b3VuZCEiKQorICAgICFjb250YWlucyhjb25maWdfdGVzdF9saWJwbmcsIHllcyk6IGVycm9yKCJQ
TkcgMS4yIGxpYnJhcnkgbm90IGZvdW5kISIpCiB9CiAKK0xJQlMgKz0gLWxqcGVnIC1scG5nMTIK
Kwogd2luMzItKnx3aW5jZSogewogICAgIERMTERFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0v
YmluCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5k
ZXggYjQ4MzBjZC4uZjY2OTg2NSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNl
cnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjZW5kaWYKLSNpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0jaW5j
bHVkZSA8cWltYWdlcmVhZGVyLmg+Ci0jaW5jbHVkZSA8cWltYWdld3JpdGVyLmg+CisjaWYgUExB
VEZPUk0oUVQpCisjaW5jbHVkZSA8UUltYWdlUmVhZGVyPgorI2luY2x1ZGUgPFFJbWFnZVdyaXRl
cj4KICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCkBA
IC0yMjcsMjIgKzIyNyw2IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcygpCiAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPnJlbW92ZSgiYXBwbGljYXRp
b24vcGRmIik7CiAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPnJlbW92ZSgiYXBwbGljYXRp
b24vcG9zdHNjcmlwdCIpOwogCi0jZWxpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RF
Q09ERVIpCi0gICAgUUxpc3Q8UUJ5dGVBcnJheT4gZm9ybWF0cyA9IFFJbWFnZVJlYWRlcjo6c3Vw
cG9ydGVkSW1hZ2VGb3JtYXRzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGZvcm1hdHMuc2l6ZSgpKTsgKytpKSB7Ci0jaWYgRU5BQkxFKFNWRykKLSAg
ICAgICAgLyoKLSAgICAgICAgICogUXQgaGFzIHN1cHBvcnQgZm9yIFNWRywgYnV0IHdlIHdhbnQg
dG8gdXNlIEtTVkcyCi0gICAgICAgICAqLwotICAgICAgICBpZiAoZm9ybWF0cy5hdChpKS50b0xv
d2VyKCkuc3RhcnRzV2l0aCgic3ZnIikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSNlbmRpZgot
ICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihmb3JtYXRzLmF0KGkpLmNvbnN0RGF0YSgpKTsKLSAgICAgICAgaWYgKCFtaW1l
VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5h
ZGQobWltZVR5cGUpOwotICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBl
cy0+YWRkKG1pbWVUeXBlKTsKLSAgICAgICAgfQotICAgIH0KICNlbHNlCiAgICAgLy8gYXNzdW1l
IHRoYXQgYWxsIGltcGxlbWVudGF0aW9ucyBhdCBsZWFzdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcg
c3RhbmRhcmQKICAgICAvLyBpbWFnZSB0eXBlczoKQEAgLTI1OSw2ICsyNDMsMjEgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKICAgICAgICAgc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMtPmFkZCh0eXBlc1tpXSk7CiAgICAgICAgIHN1cHBvcnRlZEltYWdl
UmVzb3VyY2VNSU1FVHlwZXMtPmFkZCh0eXBlc1tpXSk7CiAgICAgfQorI2lmIFBMQVRGT1JNKFFU
KQorICAgIFFMaXN0PFFCeXRlQXJyYXk+IGZvcm1hdHMgPSBRSW1hZ2VSZWFkZXI6OnN1cHBvcnRl
ZEltYWdlRm9ybWF0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90Pihmb3JtYXRzLnNpemUoKSk7ICsraSkgeworI2lmIEVOQUJMRShTVkcpCisgICAgICAg
IC8vIFF0IGhhcyBzdXBwb3J0IGZvciBTVkcsIGJ1dCB3ZSB3YW50IHRvIHVzZSBLU1ZHMgorICAg
ICAgICBpZiAoZm9ybWF0cy5hdChpKS50b0xvd2VyKCkuc3RhcnRzV2l0aCgic3ZnIikpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorICAgICAgICBTdHJpbmcg
bWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihmb3Jt
YXRzLmF0KGkpLmNvbnN0RGF0YSgpKTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQobWltZVR5cGUpOwor
ICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBl
KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBQTEFURk9STShRVCkKICNpZiBQTEFURk9S
TShCTEFDS0JFUlJZKQogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQoImltYWdlL3Bq
cGVnIik7CiAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS9w
anBlZyIpOwpAQCAtMjg3LDE0ICsyODYsMTQgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBv
cnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcoKQogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvanBlZyIpOwogICAgIHN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvZ2lmIik7CiAjZW5kaWYKLSNlbGlmIFBMQVRG
T1JNKFFUKSAmJiBVU0UoUVRfSU1BR0VfREVDT0RFUikKKyNlbGlmIFBMQVRGT1JNKFFUKQogICAg
IFFMaXN0PFFCeXRlQXJyYXk+IGZvcm1hdHMgPSBRSW1hZ2VXcml0ZXI6OnN1cHBvcnRlZEltYWdl
Rm9ybWF0cygpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9ybWF0cy5zaXplKCk7ICsraSkg
ewogICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlw
ZUZvckV4dGVuc2lvbihmb3JtYXRzLmF0KGkpLmNvbnN0RGF0YSgpKTsKICAgICAgICAgaWYgKCFt
aW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0Zv
ckVuY29kaW5nLT5hZGQobWltZVR5cGUpOwogICAgIH0KLSNlbGlmIFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKFFUKSAmJiAhVVNFKFFUX0lNQUdFX0RFQ09ERVIpKQorI2VsaWYgUExBVEZPUk0o
R1RLKQogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2Uv
cG5nIik7CiAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFn
ZS9qcGVnIik7CiAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJp
bWFnZS90aWZmIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmZjlmZTBk
Li43NWVkNWExCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKQEAgLTI5LDExICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW1hZ2VTb3VyY2UuaCIKIAotI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgIkltYWdlRGVjb2Rl
clF0LmgiCi0jZWxzZQogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotI2VuZGlmCiAKICNpbmNs
dWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCm9sZCBtb2Rl
IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMzA3NzM3Zi4uODM1NjQ3MgotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTc1LDEwICs3NSw2IEBA
IGNsYXNzIEltYWdlRGVjb2RlcjsKIGNsYXNzIFRpbGVkSW1hZ2VPcGVuVkc7CiB0eXBlZGVmIElt
YWdlRGVjb2RlciogTmF0aXZlSW1hZ2VTb3VyY2VQdHI7CiB0eXBlZGVmIFRpbGVkSW1hZ2VPcGVu
VkcqIE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgUExBVEZPUk0oUVQpCi1jbGFzcyBJbWFnZURlY29k
ZXJRdDsKLXR5cGVkZWYgSW1hZ2VEZWNvZGVyUXQqIE5hdGl2ZUltYWdlU291cmNlUHRyOwotdHlw
ZWRlZiBRUGl4bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNlbHNlCiBjbGFzcyBJbWFnZURlY29kZXI7
CiB0eXBlZGVmIEltYWdlRGVjb2RlciogTmF0aXZlSW1hZ2VTb3VyY2VQdHI7CkBAIC05OCw2ICs5
NCw4IEBAIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiBjbGFz
cyBJbWFnZURlY29kZXI7CiB0eXBlZGVmIEltYWdlRGVjb2RlciogTmF0aXZlSW1hZ2VTb3VyY2VQ
dHI7CiB0eXBlZGVmIHZvaWQqIE5hdGl2ZUltYWdlUHRyOworI2VsaWYgUExBVEZPUk0oUVQpCit0
eXBlZGVmIFFQaXhtYXAqIE5hdGl2ZUltYWdlUHRyOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMWY5M2FhMy4uMTUxZTNk
MQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNv
ZGVyUXQuY3BwCkBAIC0zMSwyMSArMzEsMTAgQEAKIAogI2luY2x1ZGUgPFF0Q29yZS9RQnl0ZUFy
cmF5PgogI2luY2x1ZGUgPFF0Q29yZS9RQnVmZmVyPgotCiAjaW5jbHVkZSA8UXRHdWkvUUltYWdl
UmVhZGVyPgotI2luY2x1ZGUgPHFkZWJ1Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlt
YWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
LCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLXsKLSAg
ICAvLyBXZSBuZWVkIGF0IGxlYXN0IDQgYnl0ZXMgdG8gZmlndXJlIG91dCB3aGF0IGtpbmQgb2Yg
aW1hZ2Ugd2UncmUgZGVhbGluZyB3aXRoLgotICAgIGlmIChkYXRhLnNpemUoKSA8IDQpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIG5ldyBJbWFnZURlY29kZXJRdChhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotfQotCiBJbWFnZURlY29kZXJRdDo6SW1h
Z2VEZWNvZGVyUXQoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNv
dXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiAgICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCkBAIC0xMjks
NyArMTE4LDcgQEAgaW50IEltYWdlRGVjb2RlclF0OjpyZXBldGl0aW9uQ291bnQoKSBjb25zdAog
U3RyaW5nIEltYWdlRGVjb2RlclF0OjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFN0cmluZyhtX2Zvcm1hdC5jb25zdERhdGEoKSwgbV9mb3JtYXQubGVuZ3RoKCkpOwot
fTsKK30KIAogSW1hZ2VGcmFtZSogSW1hZ2VEZWNvZGVyUXQ6OmZyYW1lQnVmZmVyQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7CkBAIC0xOTQsMjEgKzE4MywyOCBAQCB2b2lkIEltYWdlRGVjb2RlclF0
OjppbnRlcm5hbFJlYWRJbWFnZShzaXplX3QgZnJhbWVJbmRleCkKIAogYm9vbCBJbWFnZURlY29k
ZXJRdDo6aW50ZXJuYWxIYW5kbGVDdXJyZW50SW1hZ2Uoc2l6ZV90IGZyYW1lSW5kZXgpCiB7Ci0g
ICAgUVBpeG1hcCBwaXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2VSZWFkZXIobV9yZWFkZXIuZ2V0
KCkpOworICAgIEltYWdlRnJhbWUqIGNvbnN0IGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVb
ZnJhbWVJbmRleF07CisgICAgUVNpemUgaW1hZ2VTaXplID0gbV9yZWFkZXItPnNpemUoKTsKKwor
ICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVp
Z2h0KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBRSW1hZ2UgaW1hZ2UocmVpbnRl
cnByZXRfY2FzdDx1Y2hhcio+KGJ1ZmZlci0+Z2V0QWRkcigwLCAwKSksIGltYWdlU2l6ZS53aWR0
aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpICog
aW1hZ2VTaXplLndpZHRoKCksIG1fcmVhZGVyLT5pbWFnZUZvcm1hdCgpKTsKIAotICAgIGlmIChw
aXhtYXAuaXNOdWxsKCkpIHsKKyAgICBidWZmZXItPnNldER1cmF0aW9uKG1fcmVhZGVyLT5uZXh0
SW1hZ2VEZWxheSgpKTsKKyAgICBtX3JlYWRlci0+cmVhZCgmaW1hZ2UpOworCisgICAgaWYgKGlt
YWdlLmlzTnVsbCgpKSB7CiAgICAgICAgIGZyYW1lQ291bnQoKTsKICAgICAgICAgcmVwZXRpdGlv
bkNvdW50KCk7CiAgICAgICAgIGNsZWFyUG9pbnRlcnMoKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIC8vIG5vdyBpbnRvIHRoZSBJbWFnZUZyYW1lIC0gZXZlbiBpZiB0aGUg
aW1hZ2UgaXMgbm90Ci0gICAgSW1hZ2VGcmFtZSogY29uc3QgYnVmZmVyID0gJm1fZnJhbWVCdWZm
ZXJDYWNoZVtmcmFtZUluZGV4XTsKLSAgICBidWZmZXItPnNldE9yaWdpbmFsRnJhbWVSZWN0KG1f
cmVhZGVyLT5jdXJyZW50SW1hZ2VSZWN0KCkpOworICAgIGJ1ZmZlci0+c2V0T3JpZ2luYWxGcmFt
ZVJlY3QoaW1hZ2UucmVjdCgpKTsKKyAgICBidWZmZXItPnNldEhhc0FscGhhKGltYWdlLmhhc0Fs
cGhhQ2hhbm5lbCgpKTsKICAgICBidWZmZXItPnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNv
bXBsZXRlKTsKLSAgICBidWZmZXItPnNldER1cmF0aW9uKG1fcmVhZGVyLT5uZXh0SW1hZ2VEZWxh
eSgpKTsKLSAgICBidWZmZXItPnNldFBpeG1hcChwaXhtYXApOworCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTI0NSw2ICsyNDEsMjAgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6Y2xlYXJQb2lu
dGVycygpCiAgICAgbV9yZWFkZXIuY2xlYXIoKTsKICAgICBtX2J1ZmZlci5jbGVhcigpOwogfQor
CitOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK3sK
KyAgICBRSW1hZ2U6OkZvcm1hdCBmb3JtYXQ7CisgICAgaWYgKG1faGFzQWxwaGEpCisgICAgICAg
IGZvcm1hdCA9IG1fcHJlbXVsdGlwbHlBbHBoYSA/ICBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJl
bXVsdGlwbGllZCA6IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMjsKKyAgICBlbHNlCisgICAgICAgIGZv
cm1hdCA9IFFJbWFnZTo6Rm9ybWF0X1JHQjMyOworCisgICAgUUltYWdlIGltZyhyZWludGVycHJl
dF9jYXN0PHVjaGFyKj4obV9ieXRlcyksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCks
IHNpemVvZihQaXhlbERhdGEpICogbV9zaXplLndpZHRoKCksIGZvcm1hdCk7CisKKyAgICByZXR1
cm4gbmV3IFFQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKGltZykpOworfQorCiB9CiAKIC8vIHZp
bTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VEZWNvZGVyUXQuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGQ5ZTk2OTAu
LjNkYTZjNDIKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuY3BwCkBAIC0yMCwyMSArMjAsMjMgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0KICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29y
aXRobT4KLSNpbmNsdWRlIDxjbWF0aD4KLQogI2luY2x1ZGUgIkJNUEltYWdlRGVjb2Rlci5oIgog
I2luY2x1ZGUgIkdJRkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rlci5o
IgorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCisjZW5kaWYK
ICNpbmNsdWRlICJKUEVHSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiUE5HSW1hZ2VEZWNvZGVy
LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaWYgVVNFKFdFQlApCiAjaW5jbHVkZSAi
V0VCUEltYWdlRGVjb2Rlci5oIgogI2VuZGlmCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8Y21hdGg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKQEAgLTEyNCw2ICsxMjYsOSBAQCBJbWFnZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6
Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFscGhhTwogICAg
IGlmIChtYXRjaGVzSUNPU2lnbmF0dXJlKGNvbnRlbnRzKSB8fCBtYXRjaGVzQ1VSU2lnbmF0dXJl
KGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJuIG5ldyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAg
IHJldHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKKyNlbmRpZgogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCm9sZCBtb2Rl
IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMjAxMjJmZi4uMGM0MGZhNgotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAt
NDAsOSArNDAsNiBAQAogI2lmIFVTRShTS0lBKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5o
IgogI2luY2x1ZGUgIlNrQ29sb3JQcml2LmgiCi0jZWxpZiBQTEFURk9STShRVCkKLSNpbmNsdWRl
IDxRUGl4bWFwPgotI2luY2x1ZGUgPFFJbWFnZT4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02NCw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERp
c3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVi
dWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMK
ICAgICAgICAgfTsKLSNpZiBVU0UoU0tJQSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1B
R0VfREVDT0RFUikpCisjaWYgVVNFKFNLSUEpCiAgICAgICAgIHR5cGVkZWYgdWludDMyX3QgUGl4
ZWxEYXRhOwogI2Vsc2UKICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7CkBAIC0x
NDAsMTkgKzEzNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICNpZiBVU0Uo
U0tJQSkKICAgICAgICAgICAgIHJldHVybiBtX2JpdG1hcC5iaXRtYXAoKS5nZXRBZGRyMzIoeCwg
eSk7Ci0jZWxpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0gICAgICAg
ICAgICBtX2ltYWdlID0gbV9waXhtYXAudG9JbWFnZSgpOwotICAgICAgICAgICAgbV9waXhtYXAg
PSBRUGl4bWFwKCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8UVJn
Yio+KG1faW1hZ2Uuc2NhbkxpbmUoeSkpICsgeDsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4g
bV9ieXRlcyArICh5ICogd2lkdGgoKSkgKyB4OwogI2VuZGlmCiAgICAgICAgIH0KLQotI2lmIFBM
QVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLSAgICAgICAgdm9pZCBzZXRQaXht
YXAoY29uc3QgUVBpeG1hcCYgcGl4bWFwKTsKLSNlbmRpZgotCiAgICAgcHJpdmF0ZToKICNpZiBV
U0UoQ0cpCiAgICAgICAgIHR5cGVkZWYgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IE5hdGl2
ZUJhY2tpbmdTdG9yZTsKQEAgLTE5MCwxMSArMTc4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2lmIFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pCiAgICAgICAgIENvbG9yUHJvZmls
ZSBtX2NvbG9yUHJvZmlsZTsKICNlbmRpZgotI2VsaWYgUExBVEZPUk0oUVQpICYmIFVTRShRVF9J
TUFHRV9ERUNPREVSKQotICAgICAgICBtdXRhYmxlIFFQaXhtYXAgbV9waXhtYXA7Ci0gICAgICAg
IG11dGFibGUgUUltYWdlIG1faW1hZ2U7Ci0gICAgICAgIGJvb2wgbV9oYXNBbHBoYTsKLSAgICAg
ICAgSW50U2l6ZSBtX3NpemU7CiAjZWxzZQogICAgICAgICBOYXRpdmVCYWNraW5nU3RvcmUgbV9i
YWNraW5nU3RvcmU7CiAgICAgICAgIFBpeGVsRGF0YSogbV9ieXRlczsgLy8gVGhlIG1lbW9yeSBp
cyBiYWNrZWQgYnkgbV9iYWNraW5nU3RvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTk5YWMyOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDkgR29vZ2xlLCBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLSNpZiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLQotSW1hZ2VGcmFtZTo6SW1hZ2VG
cmFtZSgpCi0gICAgOiBtX2hhc0FscGhhKGZhbHNlKSAKLSAgICAsIG1fc2l6ZSgpCi0gICAgLCBt
X3N0YXR1cyhGcmFtZUVtcHR5KQotICAgICwgbV9kdXJhdGlvbigwKQotICAgICwgbV9kaXNwb3Nh
bE1ldGhvZChEaXNwb3NlTm90U3BlY2lmaWVkKQotICAgICwgbV9wcmVtdWx0aXBseUFscGhhKHRy
dWUpCi17Ci19Ci0KLUltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFn
ZUZyYW1lJiBvdGhlcikKLXsKLSAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgIHJldHVy
biAqdGhpczsKLQotICAgIGNvcHlCaXRtYXBEYXRhKG90aGVyKTsKLSAgICBzZXRPcmlnaW5hbEZy
YW1lUmVjdChvdGhlci5vcmlnaW5hbEZyYW1lUmVjdCgpKTsKLSAgICBzZXRTdGF0dXMob3RoZXIu
c3RhdHVzKCkpOwotICAgIHNldER1cmF0aW9uKG90aGVyLmR1cmF0aW9uKCkpOwotICAgIHNldERp
c3Bvc2FsTWV0aG9kKG90aGVyLmRpc3Bvc2FsTWV0aG9kKCkpOwotICAgIHNldFByZW11bHRpcGx5
QWxwaGEob3RoZXIucHJlbXVsdGlwbHlBbHBoYSgpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0K
LXZvaWQgSW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEoKQotewotICAgIG1fcGl4bWFwID0gUVBp
eG1hcCgpOwotICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKLSAgICBtX3N0YXR1cyA9IEZyYW1lRW1w
dHk7Ci0gICAgLy8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJG
cmFtZUJ1ZmZlckNhY2hlKCkKLSAgICAvLyBjYWxscyB0aGlzIHRvIGZyZWUgdGhlIGJpdG1hcCBk
YXRhLCBidXQgb3RoZXIgZnVuY3Rpb25zIGxpa2UKLSAgICAvLyBpbml0RnJhbWVCdWZmZXIoKSBh
bmQgZnJhbWVDb21wbGV0ZSgpIG1heSBzdGlsbCBuZWVkIHRvIHJlYWQKLSAgICAvLyBvdGhlciBt
ZXRhZGF0YSBvdXQgb2YgdGhpcyBmcmFtZSBsYXRlci4KLX0KLQotdm9pZCBJbWFnZUZyYW1lOjp6
ZXJvRmlsbFBpeGVsRGF0YSgpCi17Ci0gICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgpICYmICFtX2lt
YWdlLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fcGl4bWFwID0gUVBpeG1hcChtX2ltYWdlLndpZHRo
KCksIG1faW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBtX2ltYWdlID0gUUltYWdlKCk7Ci0gICAg
fQotICAgIG1fcGl4bWFwLmZpbGwoUUNvbG9yKDAsIDAsIDAsIDApKTsKLX0KLQotYm9vbCBJbWFn
ZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKLXsKLSAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgbV9pbWFnZSA9
IG90aGVyLm1faW1hZ2U7Ci0gICAgbV9waXhtYXAgPSBvdGhlci5tX3BpeG1hcDsKLSAgICBtX3Np
emUgPSBvdGhlci5tX3NpemU7Ci0gICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFzQWxwaGE7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lk
dGgsIGludCBuZXdIZWlnaHQpCi17Ci0gICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNh
bGxlZCBvbmNlLCBpdCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgotICAgIEFTU0VSVCghd2lkdGgo
KSAmJiAhaGVpZ2h0KCkpOwotCi0gICAgbV9zaXplID0gSW50U2l6ZShuZXdXaWR0aCwgbmV3SGVp
Z2h0KTsKLSAgICBtX2ltYWdlID0gUUltYWdlKCk7Ci0gICAgbV9waXhtYXAgPSBRUGl4bWFwKG5l
d1dpZHRoLCBuZXdIZWlnaHQpOwotICAgIGlmIChtX3BpeG1hcC5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotUVBpeG1hcCogSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0Ci17
Ci0gICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgpICYmICFtX2ltYWdlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIG1fcGl4bWFwID0gUVBpeG1hcDo6ZnJvbUltYWdlKG1faW1hZ2UpOwotICAgICAgICBtX2lt
YWdlID0gUUltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBuZXcgUVBpeG1hcChtX3BpeG1hcCk7
Ci19Ci0KLWJvb2wgSW1hZ2VGcmFtZTo6aGFzQWxwaGEoKSBjb25zdAotewotICAgIHJldHVybiBt
X2hhc0FscGhhOwotfQotCi12b2lkIEltYWdlRnJhbWU6OnNldEhhc0FscGhhKGJvb2wgYWxwaGEp
Ci17Ci0gICAgbV9oYXNBbHBoYSA9IGFscGhhOwotfQotCi12b2lkIEltYWdlRnJhbWU6OnNldENv
bG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEltYWdlRnJhbWU6OnNldFN0YXR1cyhGcmFtZVN0YXR1
cyBzdGF0dXMpCi17Ci0gICAgbV9zdGF0dXMgPSBzdGF0dXM7Ci19Ci0KLS8vIFRoZSBpbWFnZSBt
dXN0IG5vdCBoYXZlIGZvcm1hdCA4ODg4IHByZSBtdWx0aXBsaWVkLi4uCi12b2lkIEltYWdlRnJh
bWU6OnNldFBpeG1hcChjb25zdCBRUGl4bWFwJiBwaXhtYXApCi17Ci0gICAgbV9waXhtYXAgPSBw
aXhtYXA7Ci0gICAgbV9pbWFnZSA9IFFJbWFnZSgpOwotICAgIG1fc2l6ZSA9IHBpeG1hcC5zaXpl
KCk7Ci0gICAgbV9oYXNBbHBoYSA9IHBpeG1hcC5oYXNBbHBoYUNoYW5uZWwoKTsKLX0KLQotaW50
IEltYWdlRnJhbWU6OndpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7
Ci19Ci0KLWludCBJbWFnZUZyYW1lOjpoZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3Np
emUuaGVpZ2h0KCk7Ci19Ci0KLSNlbHNlCi0KLVFQaXhtYXAqIEltYWdlRnJhbWU6OmFzTmV3TmF0
aXZlSW1hZ2UoKSBjb25zdAotewotICAgIFFJbWFnZTo6Rm9ybWF0IGZtdDsKLSAgICBpZiAobV9o
YXNBbHBoYSkKLSAgICAgICAgZm10ID0gbV9wcmVtdWx0aXBseUFscGhhID8gIFFJbWFnZTo6Rm9y
bWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRfQVJHQjMyOwotICAgIGVs
c2UKLSAgICAgICAgZm10ID0gUUltYWdlOjpGb3JtYXRfUkdCMzI7Ci0KLSAgICBRSW1hZ2UgaW1n
KHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVzKSwgbV9zaXplLndpZHRoKCksIG1fc2l6
ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBtX3NpemUud2lkdGgoKSwgZm10KTsKLQot
ICAgIHJldHVybiBuZXcgUVBpeG1hcChRUGl4bWFwOjpmcm9tSW1hZ2UoaW1nKSk7Ci19Ci0KLSNl
bmRpZiAvLyBVU0UoUVRfSU1BR0VfREVDT0RFUikKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKaW5kZXggNjA0ZTE4ZC4uOGE1NDMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMjcgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFz
IGRlZmF1bHQgYW5kIGFkZCBmYWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIEdldCBy
aWQgb2ZmIFFUX0lNQUdFX0RFQ09ERVIgZmxhZy4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YUVuYWJsZUZl
YXR1cmVzLmluOgorCiAyMDEyLTA0LTI2ICBZb25nIExpICA8eW9saUByaW0uY29tPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBBIHF1aWNrIGZpeCB0byB0aGUgcHJldmlvdXMgcGF0Y2ggcjExNTI0
NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9B
Ym91dERhdGFFbmFibGVGZWF0dXJlcy5pbiBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9BYm91dERhdGFFbmFibGVGZWF0dXJlcy5pbgppbmRleCAzMmU5NzM4Li44YTBh
ZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
QWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YUVuYWJsZUZlYXR1cmVzLmluCkBAIC0xMDcsNyArMTA3
LDYgQEAgUExVR0lOX1BST1hZX0ZPUl9WSURFTwogUE9JTlRFUl9MT0NLCiBQUk9HUkVTU19UQUcK
IFBVUkdFQUJMRV9NRU1PUlkKLVFUX0lNQUdFX0RFQ09ERVIKIFFVT1RBCiBSRUdFWFBfVFJBQ0lO
RwogUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdiODVmZjUuLjkyODNkNGQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Mi0wNC0yNyAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdIFNldCBXZWJDb3JlIGltYWdlZGVjb2RlcnMgYXMgZGVmYXVsdCBhbmQgYWRkIGZhbGxiYWNr
IHRvIFFJbWFnZURlY29kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgwNDAwCisKKyAgICAgICAgUmVtb3ZlIFdURl9VU0VfUVRfSU1BR0VfREVDT0RF
UiBtYWNyby4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmOgorCiAyMDEyLTA0LTI3ICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAg
W0VGTF0gRFJUIHNob3VsZCBzdXBwb3J0IExheW91dFRlc3RDb250cm9sbGVyJ3MgZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrcygpCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMu
cHJmCmluZGV4IDRlMWFjMzcuLmNiNjY3NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21rc3Bl
Y3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVy
ZXMvZmVhdHVyZXMucHJmCkBAIC0xMTUsNyArMTE1LDYgQEAgaGF2ZVF0KDUpIHsKICFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQST0uKTogREVGSU5FUyArPSBFTkFC
TEVfUEFHRV9WSVNJQklMSVRZX0FQST0xCiAKICMgUG9saWN5IGRlY2lzaW9uczogZm9yIHVzaW5n
IGEgcGFydGljdWxhciB0aGlyZC1wYXJ0eSBsaWJyYXJ5IG9yIG9wdGlvbmFsIE9TIHNlcnZpY2UK
LSFjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9Lik6IERFRklORVMg
Kz0gV1RGX1VTRV9RVF9JTUFHRV9ERUNPREVSPTEKIAogIyBFbmFibGVkIGluIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBpZiBub3Qgc2V0CiAjIFdlIGhhdmUgdG8gZG8gdGhl
IHNhbWUgdG8gYmUgYWJsZSB0byBkaXNhYmxlIHRoZSBmZWF0dXJlIGluIGJ1aWxkLXdlYmtpdAo=
</data>
<flag name="review"
          id="144751"
          type_id="1"
          status="+"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="144752"
          type_id="3"
          status="-"
          setter="zoltan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144042</attachid>
            <date>2012-05-25 04:15:31 -0700</date>
            <delta_ts>2012-05-30 00:46:05 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>imgdec_05252.patch</filename>
            <type>text/plain</type>
            <size>25949</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMTk1MTBkLi5jY2Y5NTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTItMDUtMjUgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQgYW5kIGFkZCBm
YWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRo
ZSBkZWZhdWx0IEltYWdlRGVjb2RlciBmb3IgUXQtcG9ydCBmcm9tIFFJbWFnZURlY29kZXIgdG8g
V2ViQ29yZSBJbWFnZURlY29kZXIuCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3IgaXMgdG8gdXNl
IFFJbWFnZURlY29kZXIgb25seSBpZiBXZWJDb3JlSW1hZ2VEZWNvZGVyIC0gYW5kIHRoZSBwbGF0
Zm9ybSAtIGRvZXNuJ3Qgc3VwcG9ydCAKKyAgICAgICAgdGhlIHJlcXVlc3RlZCBpbWFnZSB0eXBl
LgorICAgICAgICBUaGUgV1RGX1VTRV9RVF9JTUFHRV9ERUNPREVSIG1hY3JvIGhhcyBiZWVuIHJl
bW92ZWQsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgYWRkcyBidWlsZCBkZXBlZGVuY3kgKGV4Y2VwdCBRdC1NQUMgYW5kIFF0LVdJTiBwbGF0Zm9y
bSkgZm9yIGxpYnBuZy1kZXYgYW5kIGxpYmpwZWctZGV2IHBhY2thZ2VzLCAKKyAgICAgICAgYmVj
dWFzZSBQTkcgYW5kIEpQRUcgaW1hZ2VkZWNvZGVycyBuZWVkIG5vdCBvbmx5IHRoZXNlIGxpYnJh
cmllcywgYnV0IHRoZWlyIGhlYWRlcnMgYWxzby4gUW1ha2UtY29uZmlnIAorICAgICAgICB0ZXN0
cyBmb3IgdGhlc2UgbGlicmFyaWVzIHdlcmUgaW50cm9kdWNlZCBpbiByMTEwMDQ1LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBu
ZWVkZWQuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBNb3ZlIFdlYkNvcmUgSW1hZ2VEZWNvZGVy
IGZpbGVzIG91dCBvZiBndWFyZHMuIFJlbW92ZSBJbWFnZUZyYW1lUXQuY3BwIGZyb20gc291cmNl
cy4KKyAgICAgICAgKiBXZWJDb3JlLnByaTogTW92ZSBXZWJDb3JlIEltYWdlRGVjb2RlciBpbmNs
dWRlIHBhdGhzIG91dCBvZiBndWFyZHMuCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXMpOiBBZGQgV2ViQ29yZSBzdXBwb3J0ZWQgYW5kIFF0IHN1cHBvcnRlZCBNSU1FIHR5cGVz
LgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9y
RW5jb2RpbmcpOiBVc2UgUXQgc3VwcG9ydGVkIE1JTUUgdHlwZXMuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZXMu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDogUmVtb3ZlIHVubmVj
ZXNzYXJ5IHR5cGVkZWZzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwOiBSZW1vdmUgSW1hZ2VEZWNvZGVyOjpjcmVh
dGUsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJRdDo6ZmlsZW5hbWVFeHRlbnNpb24pOiBSZW1vdmUgdW5uZWNlc3Nhcnkgc2VtaWNv
bG9uLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyUXQ6OmludGVybmFsSGFuZGxlQ3Vy
cmVudEltYWdlKTogVXNlIFFJbWFnZSBhbmQgSW1hZ2VGcmFtZSBpbnN0ZWFkIG9mIFFQaXhtYXAu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UpOiBNb3ZlZCBoZXJlIGZyb20gcmVtb3ZlZCBJbWFnZUZyYW1lUXQuY3BwLgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6IFJlb3Jn
YW5pemUgdGhlIGluY2x1ZGVzIG9mIHRoZSBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmNyZWF0ZSk6IEFkZCBwbGF0Zm9ybSBtYWNybyBndWFyZGVkIGZhbGxiYWNrIGNh
c2UgZm9yIFFJbWFnZURlY29kZXIuIEFkZCBndWFyZHMKKyAgICAgICAgZm9yIEpQRUcsIFBORywg
SUNPIGRlY29kZXIgZm9yIFF0LU1BQyBhbmQgUXQtV0lOIHBsYXRmb3JtLgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOiBSZW1vdmUgUXQtc3BlY2lmaWMg
Y29kZXMuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpnZXRBZGRyKTogUmVtb3ZlIFF0
LXNwZWNpZmljIGNhc2UsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChJ
bWFnZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZy
YW1lUXQuY3BwOiBSZW1vdmVkLiBEZWFkIGNvZGUsIG90aGVyIGNvZGUgaGFzIGJlZW4gbW92ZWQg
dG8KKyAgICAgICAgSW1hZ2VEZWNvZGVyUXQuY3BwLgorCiAyMDEyLTA1LTIzICBBbGVjIEZsZXR0
ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgRE9NNCBET01F
cnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggNWE4MGFlMS4uZDkwOWFlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0x
MDg5LDcgKzEwODksNiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNw
cCBcCiAgICAgcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgXAogICAgIHBsYXRmb3JtL0hpc3RvZ3Jh
bVN1cHBvcnQuY3BwIFwKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1l
UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmNwcCBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEZhbWlseS5jcHAgXApAQCAtMTE0Miw2ICsxMTQxLDExIEBAIFNPVVJDRVMg
Kz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
cy5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUu
Y3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
Y3BwIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3Bw
IFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBc
CisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcFwKICAg
ICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS9LVVJMLmNwcCBcCiAg
ICAgcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIFwKQEAgLTIyOTUsNiArMjI5OSwxMyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5o
IFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggXAor
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBcCisgICAg
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggXAorICAgIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAogICAgIHBsYXRmb3JtL0tp
bGxSaW5nLmggXAogICAgIHBsYXRmb3JtL0tVUkwuaCBcCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmgg
XApAQCAtMjg3Miw2ICsyODgzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9J
Y29uUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBc
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW50UG9pbnRRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ludFJlY3RRdC5jcHAg
XApAQCAtNDA0MywzMyArNDA1NSwxNiBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUhUTUw9
MSkgewogICAgICAgICBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAogfQogCi1jb250YWlucyhERUZJ
TkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9MSkgewotICAgIEhFQURFUlMgKz0gcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuaAotICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCi19IGVsc2UgewotICAgIEhFQURFUlMgKz0g
XAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgg
XAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBc
Ci0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBc
Ci0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oXAot
ICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggXAot
ICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBc
Ci0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAot
Ci0gICAgU09VUkNFUyArPSBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCishd2luMzI6IW1hYyB7CisgICAgU09VUkNFUyArPSBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBcCisgICAgICAg
ICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
IFwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwCit9CiAKLSAgICBjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1dFQlA9MSkgewot
ICAgICAgICBIRUFERVJTICs9IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5oCi0gICAgICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAotICAgIH0KK2NvbnRhaW5zKERFRklORVMsIFdURl9VU0Vf
V0VCUD0xKSB7CisgICAgSU5DTFVERVBBVEggKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cAorICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmgKKyAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VC
UEltYWdlRGVjb2Rlci5jcHAKIH0KIAogIXN5c3RlbS1zcWxpdGU6ZXhpc3RzKCAkJHtTUUxJVEUz
U1JDRElSfS9zcWxpdGUzLmMgKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDA1MTY5YTcuLmJlYjQ5MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJpCkBAIC02NCw2ICs2NCwxMSBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAg
JCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcCBcCiAgICAgJCRTT1VSQ0VfRElS
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMgXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycyBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcCBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljbyBc
CisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZiBcCisgICAgJCRT
T1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcgXAorICAgICQkU09VUkNFX0RJ
Ui9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcgXAogICAgICQkU09VUkNFX0RJUi9wbGF0Zm9y
bS9sZXZlbGRiIFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vbW9jayBcCiAgICAgJCRTT1VS
Q0VfRElSL3BsYXRmb3JtL25ldHdvcmsgXApAQCAtMjIyLDI4ICsyMjcsMTkgQEAgY29udGFpbnMo
REVGSU5FUywgV1RGX1VTRV9URVhUVVJFX01BUFBFUl9HTD0xKXxjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV0VCR0w9MSkKICAgICBMSUJTICs9IC1sc3FsaXRlMwogfQogCi1jb250YWlucyhERUZJ
TkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9MCkgewotICAgIElOQ0xVREVQQVRIICs9IFwK
LSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcCBcCi0gICAg
ICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYgXAotICAgICAgICAk
JFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvIFwKLSAgICAgICAgJCRTT1VS
Q0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcgXAotICAgICAgICAkJFNPVVJDRV9E
SVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nCi0KLSAgICBoYXZlUXQoNSkgewotICAgICAg
ICAjIFF0NSBhbGxvd3MgdXMgdG8gdXNlIGNvbmZpZyB0ZXN0cyB0byBjaGVjayBmb3IgdGhlIHBy
ZXNlbmNlIG9mIHRoZXNlIGxpYnJhcmllcwotICAgICAgICAhY29udGFpbnMoY29uZmlnX3Rlc3Rf
bGlianBlZywgeWVzKTogZXJyb3IoIkpQRUcgbGlicmFyeSBub3QgZm91bmQhIikKLSAgICAgICAg
IWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xpYnBuZywgeWVzKTogZXJyb3IoIlBORyBsaWJyYXJ5IG5v
dCBmb3VuZCEiKQotICAgIH0KLQotICAgIExJQlMgKz0gLWxqcGVnIC1scG5nCitjb250YWlucyhE
RUZJTkVTLCBXVEZfVVNFX1dFQlA9MSkgeworICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJ
Ui9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCisgICAgTElCUyArPSAtbHdlYnAKK30KIAot
ICAgIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VCUD0xKSB7Ci0gICAgICAgIElOQ0xVREVQ
QVRIICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCi0gICAgICAg
IExJQlMgKz0gLWx3ZWJwCi0gICAgfQoraGF2ZVF0KDUpIHsKKyAgICAjIFF0NSBhbGxvd3MgdXMg
dG8gdXNlIGNvbmZpZyB0ZXN0cyB0byBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZXNlIGxp
YnJhcmllcworICAgICFjb250YWlucyhjb25maWdfdGVzdF9saWJqcGVnLCB5ZXMpOiB3YXJuaW5n
KCJKUEVHIGxpYnJhcnkgbm90IGZvdW5kISIpCisgICAgIWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xp
YnBuZywgeWVzKTogd2FybmluZygiUE5HIGxpYnJhcnkgbm90IGZvdW5kISIpCiB9CiAKKyF3aW4z
MnwhbWFjOiBMSUJTICs9IC1sanBlZyAtbHBuZworCiB3aW4zMi0qfHdpbmNlKiB7CiAgICAgRExM
REVTVERJUiA9ICQke1JPT1RfQlVJTERfRElSfS9iaW4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCBkZTJhY2E2Li4xOTJjNjhiIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMzksOSArMzks
OSBAQAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgotI2lmIFBMQVRGT1JNKFFUKSAm
JiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLSNpbmNsdWRlIDxxaW1hZ2VyZWFkZXIuaD4KLSNpbmNs
dWRlIDxxaW1hZ2V3cml0ZXIuaD4KKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRSW1hZ2VS
ZWFkZXI+CisjaW5jbHVkZSA8UUltYWdlV3JpdGVyPgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTIyNywyMyArMjI3LDIyIEBAIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCiAgICAgc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMtPnJlbW92ZSgiYXBwbGljYXRpb24vcGRmIik7CiAgICAgc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMtPnJlbW92ZSgiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwogCi0jZWxpZiBQ
TEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCisjZWxzZQorI2lmIFBMQVRGT1JN
KFFUKQogICAgIFFMaXN0PFFCeXRlQXJyYXk+IGZvcm1hdHMgPSBRSW1hZ2VSZWFkZXI6OnN1cHBv
cnRlZEltYWdlRm9ybWF0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihmb3JtYXRzLnNpemUoKSk7ICsraSkgewogI2lmIEVOQUJMRShTVkcpCi0gICAg
ICAgIC8qCi0gICAgICAgICAqIFF0IGhhcyBzdXBwb3J0IGZvciBTVkcsIGJ1dCB3ZSB3YW50IHRv
IHVzZSBLU1ZHMgotICAgICAgICAgKi8KKyAgICAgICAgLy8gUXQgaGFzIHN1cHBvcnQgZm9yIFNW
RywgYnV0IHdlIHdhbnQgdG8gdXNlIEtTVkcyCiAgICAgICAgIGlmIChmb3JtYXRzLmF0KGkpLnRv
TG93ZXIoKS5zdGFydHNXaXRoKCJzdmciKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKFNWRykKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZm9ybWF0cy5hdChpKS5jb25zdERh
dGEoKSk7CiAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKICAgICAgICAgICAgIHN1cHBv
cnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7CiAgICAgICAgIH0KLSAg
ICB9Ci0jZWxzZQorICAgICB9CisjZW5kaWYgLy8gUExBVEZPUk0oUVQpCiAgICAgLy8gYXNzdW1l
IHRoYXQgYWxsIGltcGxlbWVudGF0aW9ucyBhdCBsZWFzdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcg
c3RhbmRhcmQKICAgICAvLyBpbWFnZSB0eXBlczoKICAgICBzdGF0aWMgY29uc3QgY2hhciogdHlw
ZXNbXSA9IHsKQEAgLTI4MywxNCArMjgyLDE0IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nKCkKICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL2pwZWciKTsKICAgICBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL2dpZiIpOwogI2VuZGlmCi0jZWxpZiBQTEFU
Rk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCisjZWxpZiBQTEFURk9STShRVCkKICAg
ICBRTGlzdDxRQnl0ZUFycmF5PiBmb3JtYXRzID0gUUltYWdlV3JpdGVyOjpzdXBwb3J0ZWRJbWFn
ZUZvcm1hdHMoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvcm1hdHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5
cGVGb3JFeHRlbnNpb24oZm9ybWF0cy5hdChpKS5jb25zdERhdGEoKSk7CiAgICAgICAgIGlmICgh
bWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNG
b3JFbmNvZGluZy0+YWRkKG1pbWVUeXBlKTsKICAgICB9Ci0jZWxpZiBQTEFURk9STShHVEspIHx8
IChQTEFURk9STShRVCkgJiYgIVVTRShRVF9JTUFHRV9ERUNPREVSKSkKKyNlbGlmIFBMQVRGT1JN
KEdUSykKICAgICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdl
L3BuZyIpOwogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1h
Z2UvanBlZyIpOwogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgi
aW1hZ2UvdGlmZiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCmluZGV4IGZmOWZlMGQuLjc1ZWQ1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTI5LDExICsyOSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKIAotI2lmIFBM
QVRGT1JNKFFUKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCi0jZWxzZQogI2luY2x1ZGUg
IkltYWdlRGVjb2Rlci5oIgotI2VuZGlmCiAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDZkMDFjODYuLmVkNjI1YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNzAsMTAg
KzcwLDYgQEAgY2xhc3MgSW1hZ2VEZWNvZGVyOwogY2xhc3MgVGlsZWRJbWFnZU9wZW5WRzsKIHR5
cGVkZWYgSW1hZ2VEZWNvZGVyKiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKIHR5cGVkZWYgVGlsZWRJ
bWFnZU9wZW5WRyogTmF0aXZlSW1hZ2VQdHI7Ci0jZWxpZiBQTEFURk9STShRVCkKLWNsYXNzIElt
YWdlRGVjb2RlclF0OwotdHlwZWRlZiBJbWFnZURlY29kZXJRdCogTmF0aXZlSW1hZ2VTb3VyY2VQ
dHI7Ci10eXBlZGVmIFFQaXhtYXAqIE5hdGl2ZUltYWdlUHRyOwogI2Vsc2UKIGNsYXNzIEltYWdl
RGVjb2RlcjsKIHR5cGVkZWYgSW1hZ2VEZWNvZGVyKiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKQEAg
LTkzLDYgKzg5LDggQEAgdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0
cjsKIGNsYXNzIEltYWdlRGVjb2RlcjsKIHR5cGVkZWYgSW1hZ2VEZWNvZGVyKiBOYXRpdmVJbWFn
ZVNvdXJjZVB0cjsKIHR5cGVkZWYgdm9pZCogTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBQTEFURk9S
TShRVCkKK3R5cGVkZWYgUVBpeG1hcCogTmF0aXZlSW1hZ2VQdHI7CiAjZW5kaWYKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURl
Y29kZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURl
Y29kZXJRdC5jcHAKaW5kZXggMWY5M2FhMy4uMTUxZTNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApAQCAtMzEs
MjEgKzMxLDEwIEBACiAKICNpbmNsdWRlIDxRdENvcmUvUUJ5dGVBcnJheT4KICNpbmNsdWRlIDxR
dENvcmUvUUJ1ZmZlcj4KLQogI2luY2x1ZGUgPFF0R3VpL1FJbWFnZVJlYWRlcj4KLSNpbmNsdWRl
IDxxZGVidWcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZURlY29kZXIqIEltYWdl
RGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi17Ci0gICAgLy8gV2UgbmVlZCBhdCBs
ZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGltYWdlIHdlJ3JlIGRlYWxp
bmcgd2l0aC4KLSAgICBpZiAoZGF0YS5zaXplKCkgPCA0KQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIHJldHVybiBuZXcgSW1hZ2VEZWNvZGVyUXQoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKLX0KLQogSW1hZ2VEZWNvZGVyUXQ6OkltYWdlRGVjb2RlclF0KEltYWdl
U291cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VE
ZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1f
cmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQpAQCAtMTI5LDcgKzExOCw3IEBAIGludCBJ
bWFnZURlY29kZXJRdDo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKIFN0cmluZyBJbWFnZURlY29k
ZXJRdDo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcobV9m
b3JtYXQuY29uc3REYXRhKCksIG1fZm9ybWF0Lmxlbmd0aCgpKTsKLX07Cit9CiAKIEltYWdlRnJh
bWUqIEltYWdlRGVjb2RlclF0OjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogewpA
QCAtMTk0LDIxICsxODMsMjggQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6aW50ZXJuYWxSZWFkSW1h
Z2Uoc2l6ZV90IGZyYW1lSW5kZXgpCiAKIGJvb2wgSW1hZ2VEZWNvZGVyUXQ6OmludGVybmFsSGFu
ZGxlQ3VycmVudEltYWdlKHNpemVfdCBmcmFtZUluZGV4KQogewotICAgIFFQaXhtYXAgcGl4bWFw
ID0gUVBpeG1hcDo6ZnJvbUltYWdlUmVhZGVyKG1fcmVhZGVyLmdldCgpKTsKKyAgICBJbWFnZUZy
YW1lKiBjb25zdCBidWZmZXIgPSAmbV9mcmFtZUJ1ZmZlckNhY2hlW2ZyYW1lSW5kZXhdOworICAg
IFFTaXplIGltYWdlU2l6ZSA9IG1fcmVhZGVyLT5zaXplKCk7CisKKyAgICBpZiAoIWJ1ZmZlci0+
c2V0U2l6ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgUUltYWdlIGltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIq
PihidWZmZXItPmdldEFkZHIoMCwgMCkpLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhl
aWdodCgpLCBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKSAqIGltYWdlU2l6ZS53aWR0aCgp
LCBtX3JlYWRlci0+aW1hZ2VGb3JtYXQoKSk7CiAKLSAgICBpZiAocGl4bWFwLmlzTnVsbCgpKSB7
CisgICAgYnVmZmVyLT5zZXREdXJhdGlvbihtX3JlYWRlci0+bmV4dEltYWdlRGVsYXkoKSk7Cisg
ICAgbV9yZWFkZXItPnJlYWQoJmltYWdlKTsKKworICAgIGlmIChpbWFnZS5pc051bGwoKSkgewog
ICAgICAgICBmcmFtZUNvdW50KCk7CiAgICAgICAgIHJlcGV0aXRpb25Db3VudCgpOwogICAgICAg
ICBjbGVhclBvaW50ZXJzKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAv
LyBub3cgaW50byB0aGUgSW1hZ2VGcmFtZSAtIGV2ZW4gaWYgdGhlIGltYWdlIGlzIG5vdAotICAg
IEltYWdlRnJhbWUqIGNvbnN0IGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRl
eF07Ci0gICAgYnVmZmVyLT5zZXRPcmlnaW5hbEZyYW1lUmVjdChtX3JlYWRlci0+Y3VycmVudElt
YWdlUmVjdCgpKTsKKyAgICBidWZmZXItPnNldE9yaWdpbmFsRnJhbWVSZWN0KGltYWdlLnJlY3Qo
KSk7CisgICAgYnVmZmVyLT5zZXRIYXNBbHBoYShpbWFnZS5oYXNBbHBoYUNoYW5uZWwoKSk7CiAg
ICAgYnVmZmVyLT5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSk7Ci0gICAgYnVm
ZmVyLT5zZXREdXJhdGlvbihtX3JlYWRlci0+bmV4dEltYWdlRGVsYXkoKSk7Ci0gICAgYnVmZmVy
LT5zZXRQaXhtYXAocGl4bWFwKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDUsNiAr
MjQxLDIwIEBAIHZvaWQgSW1hZ2VEZWNvZGVyUXQ6OmNsZWFyUG9pbnRlcnMoKQogICAgIG1fcmVh
ZGVyLmNsZWFyKCk7CiAgICAgbV9idWZmZXIuY2xlYXIoKTsKIH0KKworTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0Cit7CisgICAgUUltYWdlOjpGb3Jt
YXQgZm9ybWF0OworICAgIGlmIChtX2hhc0FscGhhKQorICAgICAgICBmb3JtYXQgPSBtX3ByZW11
bHRpcGx5QWxwaGEgPyAgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQgOiBRSW1h
Z2U6OkZvcm1hdF9BUkdCMzI7CisgICAgZWxzZQorICAgICAgICBmb3JtYXQgPSBRSW1hZ2U6OkZv
cm1hdF9SR0IzMjsKKworICAgIFFJbWFnZSBpbWcocmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KG1f
Ynl0ZXMpLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBzaXplb2YoUGl4ZWxEYXRh
KSAqIG1fc2l6ZS53aWR0aCgpLCBmb3JtYXQpOworCisgICAgcmV0dXJuIG5ldyBRUGl4bWFwKFFQ
aXhtYXA6OmZyb21JbWFnZShpbWcpKTsKK30KKwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggM2RiMzkzYS4uZGE0YTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0y
MCwyMSArMjAsMjMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJJ
bWFnZURlY29kZXIuaCIKIAotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjbWF0aD4K
LQogI2luY2x1ZGUgIkJNUEltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkdJRkltYWdlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rlci5oIgorI2lmIFBMQVRGT1JNKFFUKQorI2lu
Y2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCisjZW5kaWYKICNpbmNsdWRlICJKUEVHSW1hZ2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiUE5HSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaWYgVVNFKFdFQlApCiAjaW5jbHVkZSAiV0VCUEltYWdlRGVjb2Rlci5oIgogI2Vu
ZGlmCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+Cisj
aW5jbHVkZSA8Y21hdGg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTEwNywxMiArMTA5
LDE2IEBAIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPCiAgICAgaWYgKG1hdGNoZXNHSUZTaWduYXR1
cmUoY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IEdJRkltYWdlRGVjb2RlcihhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCisjaWYgIShQTEFURk9STShRVCkg
JiYgKE9TKE1BQ19PU19YKSB8fCBQTEFURk9STShXSU4pKSkKICAgICBpZiAobWF0Y2hlc1BOR1Np
Z25hdHVyZShjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcgUE5HSW1hZ2VEZWNvZGVyKGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBpZiAobWF0Y2hl
c0pQRUdTaWduYXR1cmUoY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IEpQRUdJbWFnZURl
Y29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAorICAgIGlm
IChtYXRjaGVzSUNPU2lnbmF0dXJlKGNvbnRlbnRzKSB8fCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNv
bnRlbnRzKSkKKyAgICAgICAgcmV0dXJuIG5ldyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyNlbmRpZgogI2lmIFVTRShXRUJQKQogICAg
IGlmIChtYXRjaGVzV2ViUFNpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcg
V0VCUEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwpAQCAtMTIxLDkgKzEyNyw5IEBAIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPCiAgICAgaWYgKG1h
dGNoZXNCTVBTaWduYXR1cmUoY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IEJNUEltYWdl
RGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAg
aWYgKG1hdGNoZXNJQ09TaWduYXR1cmUoY29udGVudHMpIHx8IG1hdGNoZXNDVVJTaWduYXR1cmUo
Y29udGVudHMpKQotICAgICAgICByZXR1cm4gbmV3IElDT0ltYWdlRGVjb2RlcihhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCisjaWYgUExBVEZPUk0oUVQpCisgICAg
cmV0dXJuIG5ldyBJbWFnZURlY29kZXJRdChhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworI2VuZGlmCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggNmFl
NzM4YS4uYTZiYzE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTQwLDkgKzQwLDYgQEAKICNpZiBVU0UoU0tJ
QSkKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJTa0NvbG9yUHJpdi5o
IgotI2VsaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UVBpeG1hcD4KLSNpbmNsdWRlIDxRSW1h
Z2U+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjQsNyArNjEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBEaXNwb3NlT3ZlcndyaXRlUHJldmlvdXMgIC8v
IENsZWFyIGZyYW1lIHRvIHByZXZpb3VzIGZyYW1lYnVmZmVyCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNvbnRlbnRzCiAgICAgICAgIH07Ci0jaWYgVVNFKFNLSUEp
IHx8IChQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpKQorI2lmIFVTRShTS0lB
KQogICAgICAgICB0eXBlZGVmIHVpbnQzMl90IFBpeGVsRGF0YTsKICNlbHNlCiAgICAgICAgIHR5
cGVkZWYgdW5zaWduZWQgUGl4ZWxEYXRhOwpAQCAtMTM2LDE5ICsxMzMsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB7CiAjaWYgVVNFKFNLSUEpCiAgICAgICAgICAgICByZXR1cm4g
bV9iaXRtYXAuYml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpOwotI2VsaWYgUExBVEZPUk0oUVQpICYm
IFVTRShRVF9JTUFHRV9ERUNPREVSKQotICAgICAgICAgICAgbV9pbWFnZSA9IG1fcGl4bWFwLnRv
SW1hZ2UoKTsKLSAgICAgICAgICAgIG1fcGl4bWFwID0gUVBpeG1hcCgpOwotICAgICAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFFSZ2IqPihtX2ltYWdlLnNjYW5MaW5lKHkpKSAr
IHg7CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsg
eDsKICNlbmRpZgogICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUX0lNQUdF
X0RFQ09ERVIpCi0gICAgICAgIHZvaWQgc2V0UGl4bWFwKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCk7
Ci0jZW5kaWYKLQogICAgIHByaXZhdGU6CiAgICAgICAgIGludCB3aWR0aCgpIGNvbnN0OwogICAg
ICAgICBpbnQgaGVpZ2h0KCkgY29uc3Q7CkBAIC0xODAsMTEgKzE2OCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQogICAgICAgICBD
b2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZW5kaWYKLSNlbGlmIFBMQVRGT1JNKFFUKSAm
JiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLSAgICAgICAgbXV0YWJsZSBRUGl4bWFwIG1fcGl4bWFw
OwotICAgICAgICBtdXRhYmxlIFFJbWFnZSBtX2ltYWdlOwotICAgICAgICBib29sIG1faGFzQWxw
aGE7Ci0gICAgICAgIEludFNpemUgbV9zaXplOwogI2Vsc2UKICAgICAgICAgVmVjdG9yPFBpeGVs
RGF0YT4gbV9iYWNraW5nU3RvcmU7CiAgICAgICAgIFBpeGVsRGF0YSogbV9ieXRlczsgLy8gVGhl
IG1lbW9yeSBpcyBiYWNrZWQgYnkgbV9iYWNraW5nU3RvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvSW1hZ2VGcmFtZVF0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk5YWMyOS4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSW1hZ2VEZWNvZGVyLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBVU0UoUVRfSU1BR0VfREVDT0RFUikKLQotSW1hZ2VGcmFt
ZTo6SW1hZ2VGcmFtZSgpCi0gICAgOiBtX2hhc0FscGhhKGZhbHNlKSAKLSAgICAsIG1fc2l6ZSgp
Ci0gICAgLCBtX3N0YXR1cyhGcmFtZUVtcHR5KQotICAgICwgbV9kdXJhdGlvbigwKQotICAgICwg
bV9kaXNwb3NhbE1ldGhvZChEaXNwb3NlTm90U3BlY2lmaWVkKQotICAgICwgbV9wcmVtdWx0aXBs
eUFscGhhKHRydWUpCi17Ci19Ci0KLUltYWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShj
b25zdCBJbWFnZUZyYW1lJiBvdGhlcikKLXsKLSAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAg
ICAgIHJldHVybiAqdGhpczsKLQotICAgIGNvcHlCaXRtYXBEYXRhKG90aGVyKTsKLSAgICBzZXRP
cmlnaW5hbEZyYW1lUmVjdChvdGhlci5vcmlnaW5hbEZyYW1lUmVjdCgpKTsKLSAgICBzZXRTdGF0
dXMob3RoZXIuc3RhdHVzKCkpOwotICAgIHNldER1cmF0aW9uKG90aGVyLmR1cmF0aW9uKCkpOwot
ICAgIHNldERpc3Bvc2FsTWV0aG9kKG90aGVyLmRpc3Bvc2FsTWV0aG9kKCkpOwotICAgIHNldFBy
ZW11bHRpcGx5QWxwaGEob3RoZXIucHJlbXVsdGlwbHlBbHBoYSgpKTsKLSAgICByZXR1cm4gKnRo
aXM7Ci19Ci0KLXZvaWQgSW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEoKQotewotICAgIG1fcGl4
bWFwID0gUVBpeG1hcCgpOwotICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKLSAgICBtX3N0YXR1cyA9
IEZyYW1lRW1wdHk7Ci0gICAgLy8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVy
ZTsgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkKLSAgICAvLyBjYWxscyB0aGlzIHRvIGZyZWUgdGhl
IGJpdG1hcCBkYXRhLCBidXQgb3RoZXIgZnVuY3Rpb25zIGxpa2UKLSAgICAvLyBpbml0RnJhbWVC
dWZmZXIoKSBhbmQgZnJhbWVDb21wbGV0ZSgpIG1heSBzdGlsbCBuZWVkIHRvIHJlYWQKLSAgICAv
LyBvdGhlciBtZXRhZGF0YSBvdXQgb2YgdGhpcyBmcmFtZSBsYXRlci4KLX0KLQotdm9pZCBJbWFn
ZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSgpCi17Ci0gICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgp
ICYmICFtX2ltYWdlLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fcGl4bWFwID0gUVBpeG1hcChtX2lt
YWdlLndpZHRoKCksIG1faW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBtX2ltYWdlID0gUUltYWdl
KCk7Ci0gICAgfQotICAgIG1fcGl4bWFwLmZpbGwoUUNvbG9yKDAsIDAsIDAsIDApKTsKLX0KLQot
Ym9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikK
LXsKLSAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
bV9pbWFnZSA9IG90aGVyLm1faW1hZ2U7Ci0gICAgbV9waXhtYXAgPSBvdGhlci5tX3BpeG1hcDsK
LSAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7Ci0gICAgbV9oYXNBbHBoYSA9IG90aGVyLm1faGFz
QWxwaGE7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShp
bnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCi17Ci0gICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBvbmNlLCBpdCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgotICAgIEFTU0VS
VCghd2lkdGgoKSAmJiAhaGVpZ2h0KCkpOwotCi0gICAgbV9zaXplID0gSW50U2l6ZShuZXdXaWR0
aCwgbmV3SGVpZ2h0KTsKLSAgICBtX2ltYWdlID0gUUltYWdlKCk7Ci0gICAgbV9waXhtYXAgPSBR
UGl4bWFwKG5ld1dpZHRoLCBuZXdIZWlnaHQpOwotICAgIGlmIChtX3BpeG1hcC5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotUVBpeG1hcCogSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgpICYmICFtX2ltYWdlLmlzTnVsbCgp
KSB7Ci0gICAgICAgIG1fcGl4bWFwID0gUVBpeG1hcDo6ZnJvbUltYWdlKG1faW1hZ2UpOwotICAg
ICAgICBtX2ltYWdlID0gUUltYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBuZXcgUVBpeG1hcCht
X3BpeG1hcCk7Ci19Ci0KLWJvb2wgSW1hZ2VGcmFtZTo6aGFzQWxwaGEoKSBjb25zdAotewotICAg
IHJldHVybiBtX2hhc0FscGhhOwotfQotCi12b2lkIEltYWdlRnJhbWU6OnNldEhhc0FscGhhKGJv
b2wgYWxwaGEpCi17Ci0gICAgbV9oYXNBbHBoYSA9IGFscGhhOwotfQotCi12b2lkIEltYWdlRnJh
bWU6OnNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEltYWdlRnJhbWU6OnNldFN0YXR1cyhG
cmFtZVN0YXR1cyBzdGF0dXMpCi17Ci0gICAgbV9zdGF0dXMgPSBzdGF0dXM7Ci19Ci0KLS8vIFRo
ZSBpbWFnZSBtdXN0IG5vdCBoYXZlIGZvcm1hdCA4ODg4IHByZSBtdWx0aXBsaWVkLi4uCi12b2lk
IEltYWdlRnJhbWU6OnNldFBpeG1hcChjb25zdCBRUGl4bWFwJiBwaXhtYXApCi17Ci0gICAgbV9w
aXhtYXAgPSBwaXhtYXA7Ci0gICAgbV9pbWFnZSA9IFFJbWFnZSgpOwotICAgIG1fc2l6ZSA9IHBp
eG1hcC5zaXplKCk7Ci0gICAgbV9oYXNBbHBoYSA9IHBpeG1hcC5oYXNBbHBoYUNoYW5uZWwoKTsK
LX0KLQotaW50IEltYWdlRnJhbWU6OndpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXpl
LndpZHRoKCk7Ci19Ci0KLWludCBJbWFnZUZyYW1lOjpoZWlnaHQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3NpemUuaGVpZ2h0KCk7Ci19Ci0KLSNlbHNlCi0KLVFQaXhtYXAqIEltYWdlRnJhbWU6
OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIFFJbWFnZTo6Rm9ybWF0IGZtdDsKLSAg
ICBpZiAobV9oYXNBbHBoYSkKLSAgICAgICAgZm10ID0gbV9wcmVtdWx0aXBseUFscGhhID8gIFFJ
bWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRfQVJHQjMy
OwotICAgIGVsc2UKLSAgICAgICAgZm10ID0gUUltYWdlOjpGb3JtYXRfUkdCMzI7Ci0KLSAgICBR
SW1hZ2UgaW1nKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVzKSwgbV9zaXplLndpZHRo
KCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBtX3NpemUud2lkdGgoKSwg
Zm10KTsKLQotICAgIHJldHVybiBuZXcgUVBpeG1hcChRUGl4bWFwOjpmcm9tSW1hZ2UoaW1nKSk7
Ci19Ci0KLSNlbmRpZiAvLyBVU0UoUVRfSU1BR0VfREVDT0RFUikKLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKaW5kZXggODAzNjdmOS4uYzdjNDI4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDUtMjUgIFpvbHRhbiBIb3J2YXRo
ICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRl
Y29kZXJzIGFzIGRlZmF1bHQgYW5kIGFkZCBmYWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAg
ICAgIEdldCByaWQgb2ZmIFFUX0lNQUdFX0RFQ09ERVIgZmxhZy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Fib3V0RGF0
YUVuYWJsZUZlYXR1cmVzLmluOgorCiAyMDEyLTA1LTIyICBDaHJpcyBHdWFuICA8Y2hyaXMuZ3Vh
bkB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrYmVycnldUGFnZXMgY29udGFp
biB2aWRlbyBvciBhdWRpbyB0YWdzIHNob3VsZCBiZSBpbiBwYWdlQ2FjaGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFFbmFibGVG
ZWF0dXJlcy5pbiBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91
dERhdGFFbmFibGVGZWF0dXJlcy5pbgppbmRleCAzMmU5NzM4Li44YTBhZGY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxl
RmVhdHVyZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0Fib3V0RGF0YUVuYWJsZUZlYXR1cmVzLmluCkBAIC0xMDcsNyArMTA3LDYgQEAgUExVR0lOX1BS
T1hZX0ZPUl9WSURFTwogUE9JTlRFUl9MT0NLCiBQUk9HUkVTU19UQUcKIFBVUkdFQUJMRV9NRU1P
UlkKLVFUX0lNQUdFX0RFQ09ERVIKIFFVT1RBCiBSRUdFWFBfVFJBQ0lORwogUkVHSVNURVJfUFJP
VE9DT0xfSEFORExFUgo=
</data>
<flag name="commit-queue"
          id="150761"
          type_id="3"
          status="-"
          setter="zoltan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144737</attachid>
            <date>2012-05-30 00:46:05 -0700</date>
            <delta_ts>2012-05-30 02:02:49 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>imgdec_may30.patch</filename>
            <type>text/plain</type>
            <size>27180</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxN2U5NzM5Li5lZjEyOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTItMDUtMjkgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSBTZXQgV2ViQ29yZSBpbWFnZWRlY29kZXJzIGFzIGRlZmF1bHQgYW5kIGFkZCBm
YWxsYmFjayB0byBRSW1hZ2VEZWNvZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MDQwMAorCisgICAgICAgIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRo
ZSBkZWZhdWx0IEltYWdlRGVjb2RlciBmb3IgUXQtcG9ydCBmcm9tIFFJbWFnZURlY29kZXIgdG8g
V2ViQ29yZSBJbWFnZURlY29kZXIuCisgICAgICAgIFRoZSBuZXcgYmVoYXZpb3IgaXMgdG8gdXNl
IFFJbWFnZURlY29kZXIgb25seSBpZiBXZWJDb3JlSW1hZ2VEZWNvZGVyIC0gYW5kIHRoZSBwbGF0
Zm9ybSAtIGRvZXNuJ3Qgc3VwcG9ydCAKKyAgICAgICAgdGhlIHJlcXVlc3RlZCBpbWFnZSB0eXBl
LgorICAgICAgICBUaGUgV1RGX1VTRV9RVF9JTUFHRV9ERUNPREVSIG1hY3JvIGhhcyBiZWVuIHJl
bW92ZWQsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgYWRkcyBidWlsZCBkZXBlZGVuY3kgKGV4Y2VwdCBRdC1NQUMgYW5kIFF0LVdJTiBwbGF0Zm9y
bSkgZm9yIGxpYnBuZy1kZXYgYW5kIGxpYmpwZWctZGV2IHBhY2thZ2VzLCAKKyAgICAgICAgYmVj
dWFzZSBQTkcgYW5kIEpQRUcgaW1hZ2VkZWNvZGVycyBuZWVkIG5vdCBvbmx5IHRoZXNlIGxpYnJh
cmllcywgYnV0IHRoZWlyIGhlYWRlcnMgYWxzby4gUW1ha2UtY29uZmlnIAorICAgICAgICB0ZXN0
cyBmb3IgdGhlc2UgbGlicmFyaWVzIHdlcmUgaW50cm9kdWNlZCBpbiByMTEwMDQ1LgorCisgICAg
ICAgIE5vdGljZTogd2l0aCB1c2luZyBsaWJqcGVnLXR1cmJvIGFzIGEgc3lzdGVtIGxpYnJhcnkg
SSBtZWFzdXJlZCAxMCUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb24gTWV0aGFub2wgYmVuY2ht
YXJrCisgICAgICAgIChwb3B1bGFyIHNpdGUgY29sbGVjdGlvbiwgcGFnZS1sb2FkaW5nIGJlbmNo
bWFyaykgd2l0aCB0aGlzIHBhdGNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBUYXJnZXQu
cHJpOiBNb3ZlIFdlYkNvcmUgSW1hZ2VEZWNvZGVyIGZpbGVzIG91dCBvZiBndWFyZHMuIFJlbW92
ZSBJbWFnZUZyYW1lUXQuY3BwIGZyb20gc291cmNlcy4KKyAgICAgICAgKiBXZWJDb3JlLnByaTog
TW92ZSBXZWJDb3JlIEltYWdlRGVjb2RlciBpbmNsdWRlIHBhdGhzIG91dCBvZiBndWFyZHMuCisg
ICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMpOiBBZGQgV2ViQ29yZSBzdXBwb3J0
ZWQgYW5kIFF0IHN1cHBvcnRlZCBNSU1FIHR5cGVzLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlh
bGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcpOiBVc2UgUXQgc3VwcG9ydGVk
IE1JTUUgdHlwZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
OiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaDogUmVtb3ZlIHVubmVjZXNzYXJ5IHR5cGVkZWZzLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwOiBSZW1vdmUgSW1hZ2VEZWNvZGVyOjpjcmVhdGUsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBu
ZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJRdDo6ZmlsZW5hbWVFeHRlbnNp
b24pOiBSZW1vdmUgdW5uZWNlc3Nhcnkgc2VtaWNvbG9uLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyUXQ6OmludGVybmFsSGFuZGxlQ3VycmVudEltYWdlKTogVXNlIFFJbWFnZSBhbmQg
SW1hZ2VGcmFtZSBpbnN0ZWFkIG9mIFFQaXhtYXAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOiBNb3ZlZCBoZXJlIGZy
b20gcmVtb3ZlZCBJbWFnZUZyYW1lUXQuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6IFJlb3JnYW5pemUgdGhlIGluY2x1ZGVzIG9mIHRoZSBo
ZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6IEFkZCBwbGF0
Zm9ybSBtYWNybyBndWFyZGVkIGZhbGxiYWNrIGNhc2UgZm9yIFFJbWFnZURlY29kZXIuIEFkZCBn
dWFyZHMKKyAgICAgICAgZm9yIEpQRUcsIFBORywgSUNPIGRlY29kZXIgZm9yIFF0LU1BQyBhbmQg
UXQtV0lOIHBsYXRmb3JtLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oOiBSZW1vdmUgUXQtc3BlY2lmaWMgY29kZXMuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpnZXRBZGRyKTogUmVtb3ZlIFF0LXNwZWNpZmljIGNhc2UsIHNpbmNlIGl0IGlz
IG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwOiBSZW1vdmVkLiBEZWFkIGNv
ZGUsIG90aGVyIGNvZGUgaGFzIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgSW1hZ2VEZWNvZGVyUXQu
Y3BwLgorCiAyMDEyLTA1LTI4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbVjhdIEltcGxlbWVudCBWOEJpbmRpbmc6OnY4TnVsbChpc29sYXRlKSBhbmQg
dXNlIGl0IGluIENvZGVHZW5lcmF0b3JWOC5wbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZDM5MWFmZS4uYzM1
NzhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMDkxLDcgKzEwOTEsNiBAQCBTT1VSQ0VTICs9IFwKICAg
ICBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBcCiAgICAgcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAg
XAogICAgIHBsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuY3BwIFwKLSAgICBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9G
b250RGVzY3JpcHRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tM
aXN0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbWlseS5jcHAgXApAQCAtMTE0
NCw2ICsxMTQzLDExIEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgXAorICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlUmVhZGVyLmNwcFwKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwIFwKICAg
ICBwbGF0Zm9ybS9LVVJMLmNwcCBcCiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIFwKQEAgLTIz
MDAsNiArMjMwNCwxMyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuaCBcCisgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlUmVhZGVyLmggXAorICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmggXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nLmggXAogICAgIHBsYXRmb3JtL0tVUkwuaCBc
CiAgICAgcGxhdGZvcm0vTGVuZ3RoLmggXApAQCAtMjg3OCw2ICsyODg5LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JY29uUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VE
ZWNvZGVyUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW50UG9pbnRRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0ludFJlY3RRdC5jcHAgXApAQCAtNDA1MywzMyArNDA2NSwxOSBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfTUhUTUw9MSkgewogICAgICAgICBwYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcAogfQogCi1jb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX0lNQUdFX0RFQ09ERVI9MSkg
ewotICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuaAot
ICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCi19
IGVsc2UgewotICAgIEhFQURFUlMgKz0gXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZVJlYWRlci5oXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmggXAotICAgICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuaAorY29udGFpbnMoREVGSU5FUywgSEFWRV9MSUJQTkc9MSkg
eworICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAgXAorICAgICAgICAgICAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKK30KIAotICAgIFNPVVJDRVMgKz0gXAotICAgICAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIFwKLSAgICAgICAgcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgXAotICAgICAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwXAotICAgICAgICBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBcCi0gICAgICAgIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgXAotICAgICAgICBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorY29udGFpbnMo
REVGSU5FUywgSEFWRV9MSUJKUEVHPTEpIHsKKyAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKK30KIAotICAgIGNvbnRhaW5zKERF
RklORVMsIFdURl9VU0VfV0VCUD0xKSB7Ci0gICAgICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKLSAgICAgICAgU09VUkNFUyArPSBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCi0gICAgfQor
Y29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9XRUJQPTEpIHsKKyAgICBJTkNMVURFUEFUSCArPSBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwCisgICAgSEVBREVSUyArPSBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorICAgIFNPVVJDRVMgKz0gcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAogfQogCiAhc3lzdGVt
LXNxbGl0ZTpleGlzdHMoICQke1NRTElURTNTUkNESVJ9L3NxbGl0ZTMuYyApIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cmkKaW5kZXggOTg0NDRjNi4uMDhkYjY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTY1LDYgKzY1LDEx
IEBAIElOQ0xVREVQQVRIICs9IFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwIFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcyBc
CiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzIFwKKyAgICAkJFNPVVJD
RV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wIFwKKyAgICAkJFNPVVJDRV9ESVIvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvIFwKKyAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmIFwKKyAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZyBcCisgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZyBc
CiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2xldmVsZGIgXAogICAgICQkU09VUkNFX0RJUi9w
bGF0Zm9ybS9tb2NrIFwKICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vbmV0d29yayBcCkBAIC0y
MjMsMjUgKzIyOCwyOSBAQCBjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1RFWFRVUkVfTUFQUEVS
X0dMPTEpfGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKQogICAgIExJQlMgKz0gLWxz
cWxpdGUzCiB9CiAKLWNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfUVRfSU1BR0VfREVDT0RFUj0w
KSB7Ci0gICAgSU5DTFVERVBBVEggKz0gXAotICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wIFwKLSAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZiBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28gXAotICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZyBcCi0gICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcK
K2NvbnRhaW5zKERFRklORVMsIFdURl9VU0VfV0VCUD0xKSB7CisgICAgSU5DTFVERVBBVEggKz0g
JCRTT1VSQ0VfRElSL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAKKyAgICBMSUJTICs9IC1s
d2VicAorfQogCi0gICAgaGF2ZVF0KDUpIHsKLSAgICAgICAgIyBRdDUgYWxsb3dzIHVzIHRvIHVz
ZSBjb25maWcgdGVzdHMgdG8gY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGVzZSBsaWJyYXJp
ZXMKLSAgICAgICAgIWNvbnRhaW5zKGNvbmZpZ190ZXN0X2xpYmpwZWcsIHllcyk6IGVycm9yKCJK
UEVHIGxpYnJhcnkgbm90IGZvdW5kISIpCi0gICAgICAgICFjb250YWlucyhjb25maWdfdGVzdF9s
aWJwbmcsIHllcyk6IGVycm9yKCJQTkcgbGlicmFyeSBub3QgZm91bmQhIikKK2hhdmVRdCg1KSB7
CisgICAgIyBRdDUgYWxsb3dzIHVzIHRvIHVzZSBjb25maWcgdGVzdHMgdG8gY2hlY2sgZm9yIHRo
ZSBwcmVzZW5jZSBvZiB0aGVzZSBsaWJyYXJpZXMKKyAgICBjb250YWlucyhjb25maWdfdGVzdF9s
aWJqcGVnLCB5ZXMpIHsKKyAgICAgICAgREVGSU5FUyArPSBIQVZFX0xJQkpQRUc9MQorICAgICAg
ICBMSUJTICs9IC1sanBlZworICAgIH0gZWxzZSB7CisgICAgICAgIHdhcm5pbmcoIkpQRUcgbGli
cmFyeSBub3QgZm91bmQhIFFJbWFnZURlY29kZXIgd2lsbCBkZWNvZGUgSlBFRyBpbWFnZXMuIikK
ICAgICB9Ci0KLSAgICBMSUJTICs9IC1sanBlZyAtbHBuZwotCi0gICAgY29udGFpbnMoREVGSU5F
UywgV1RGX1VTRV9XRUJQPTEpIHsKLSAgICAgICAgSU5DTFVERVBBVEggKz0gJCRTT1VSQ0VfRElS
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAKLSAgICAgICAgTElCUyArPSAtbHdlYnAKKyAg
ICBjb250YWlucyhjb25maWdfdGVzdF9saWJwbmcsIHllcykgeworICAgICAgICBERUZJTkVTICs9
IEhBVkVfTElCUE5HPTEKKyAgICAgICAgTElCUyArPSAtbHBuZworICAgIH0gZWxzZSB7CisgICAg
ICAgIHdhcm5pbmcoIlBORyBsaWJyYXJ5IG5vdCBmb3VuZCEgUUltYWdlRGVjb2RlciB3aWxsIGRl
Y29kZSBQTkcgaW1hZ2VzLiIpCisgICAgfQorfSBlbHNlIHsKKyAgICAhd2luMzItKjohbWFjIHsK
KyAgICAgICAgREVGSU5FUyArPSBIQVZFX0xJQkpQRUc9MSBIQVZFX0xJQlBORz0xCisgICAgICAg
IExJQlMgKz0gLWxqcGVnIC1scG5nCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmluZGV4IGRlMmFjYTYuLjI4OWM2NjkgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0zOSw5ICszOSw5
IEBACiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCi0jaWYgUExBVEZPUk0oUVQpICYm
IFVTRShRVF9JTUFHRV9ERUNPREVSKQotI2luY2x1ZGUgPHFpbWFnZXJlYWRlci5oPgotI2luY2x1
ZGUgPHFpbWFnZXdyaXRlci5oPgorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFJbWFnZVJl
YWRlcj4KKyNpbmNsdWRlIDxRSW1hZ2VXcml0ZXI+CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
QVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQpAQCAtMjI3LDIyICsyMjcsNiBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQogICAgIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzLT5yZW1vdmUoImFwcGxpY2F0aW9uL3BkZiIpOwogICAgIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzLT5yZW1vdmUoImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKTsKIAotI2VsaWYgUExB
VEZPUk0oUVQpICYmIFVTRShRVF9JTUFHRV9ERUNPREVSKQotICAgIFFMaXN0PFFCeXRlQXJyYXk+
IGZvcm1hdHMgPSBRSW1hZ2VSZWFkZXI6OnN1cHBvcnRlZEltYWdlRm9ybWF0cygpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihmb3JtYXRzLnNpemUoKSk7
ICsraSkgewotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIC8qCi0gICAgICAgICAqIFF0IGhhcyBz
dXBwb3J0IGZvciBTVkcsIGJ1dCB3ZSB3YW50IHRvIHVzZSBLU1ZHMgotICAgICAgICAgKi8KLSAg
ICAgICAgaWYgKGZvcm1hdHMuYXQoaSkudG9Mb3dlcigpLnN0YXJ0c1dpdGgoInN2ZyIpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0jZW5kaWYKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZm9ybWF0cy5hdChpKS5jb25z
dERhdGEoKSk7Ci0gICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKLSAgICAgICAgICAgIHN1
cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7Ci0gICAgICAgIH0K
LSAgICB9CiAjZWxzZQogICAgIC8vIGFzc3VtZSB0aGF0IGFsbCBpbXBsZW1lbnRhdGlvbnMgYXQg
bGVhc3Qgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHN0YW5kYXJkCiAgICAgLy8gaW1hZ2UgdHlwZXM6
CkBAIC0yNTksNiArMjQzLDIyIEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlcygpCiAgICAgICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQodHlwZXNb
aV0pOwogICAgICAgICBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQodHlwZXNb
aV0pOwogICAgIH0KKworI2lmIFBMQVRGT1JNKFFUKQorICAgIFFMaXN0PFFCeXRlQXJyYXk+IGZv
cm1hdHMgPSBRSW1hZ2VSZWFkZXI6OnN1cHBvcnRlZEltYWdlRm9ybWF0cygpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihmb3JtYXRzLnNpemUoKSk7ICsr
aSkgeworI2lmIEVOQUJMRShTVkcpCisgICAgICAgIC8vIFF0IGhhcyBzdXBwb3J0IGZvciBTVkcs
IGJ1dCB3ZSB3YW50IHRvIHVzZSBLU1ZHMgorICAgICAgICBpZiAoZm9ybWF0cy5hdChpKS50b0xv
d2VyKCkuc3RhcnRzV2l0aCgic3ZnIikpCisgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQorICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihmb3JtYXRzLmF0KGkpLmNvbnN0RGF0YSgpKTsKKyAg
ICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzLT5hZGQobWltZVR5cGUpOworICAgICAgICAgICAgc3VwcG9ydGVkSW1hZ2VS
ZXNvdXJjZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKKyAgICAgICAgfQorICAgICB9CisjZW5k
aWYgLy8gUExBVEZPUk0oUVQpCiAjZW5kaWYKIH0KIApAQCAtMjgzLDE0ICsyODMsMTQgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmcoKQog
ICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvanBlZyIp
OwogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvZ2lm
Iik7CiAjZW5kaWYKLSNlbGlmIFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1BR0VfREVDT0RFUikK
KyNlbGlmIFBMQVRGT1JNKFFUKQogICAgIFFMaXN0PFFCeXRlQXJyYXk+IGZvcm1hdHMgPSBRSW1h
Z2VXcml0ZXI6OnN1cHBvcnRlZEltYWdlRm9ybWF0cygpOwogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgZm9ybWF0cy5zaXplKCk7ICsraSkgewogICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihmb3JtYXRzLmF0KGkpLmNvbnN0
RGF0YSgpKTsKICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQobWltZVR5cGUpOwogICAgIH0K
LSNlbGlmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKFFUKSAmJiAhVVNFKFFUX0lNQUdFX0RF
Q09ERVIpKQorI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
Rm9yRW5jb2RpbmctPmFkZCgiaW1hZ2UvcG5nIik7CiAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9qcGVnIik7CiAgICAgc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS90aWZmIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZmY5ZmUwZC4uNzVlZDVh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcApAQCAtMjksMTEgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bWFnZVNvdXJjZS5oIgogCi0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVy
UXQuaCIKLSNlbHNlCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKIAogI2luY2x1
ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggNmQw
MWM4Ni4uZWQ2MjViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCkBAIC03MCwxMCArNzAsNiBAQCBjbGFzcyBJbWFnZURlY29kZXI7CiBjbGFz
cyBUaWxlZEltYWdlT3BlblZHOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291
cmNlUHRyOwogdHlwZWRlZiBUaWxlZEltYWdlT3BlblZHKiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlm
IFBMQVRGT1JNKFFUKQotY2xhc3MgSW1hZ2VEZWNvZGVyUXQ7Ci10eXBlZGVmIEltYWdlRGVjb2Rl
clF0KiBOYXRpdmVJbWFnZVNvdXJjZVB0cjsKLXR5cGVkZWYgUVBpeG1hcCogTmF0aXZlSW1hZ2VQ
dHI7CiAjZWxzZQogY2xhc3MgSW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5h
dGl2ZUltYWdlU291cmNlUHRyOwpAQCAtOTMsNiArODksOCBAQCB0eXBlZGVmIFJlZlB0cjxTaGFy
ZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogY2xhc3MgSW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJ
bWFnZURlY29kZXIqIE5hdGl2ZUltYWdlU291cmNlUHRyOwogdHlwZWRlZiB2b2lkKiBOYXRpdmVJ
bWFnZVB0cjsKKyNlbGlmIFBMQVRGT1JNKFFUKQordHlwZWRlZiBRUGl4bWFwKiBOYXRpdmVJbWFn
ZVB0cjsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAppbmRleCAxZjkzYWEzLi4xNTFlM2Qx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURl
Y29kZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VEZWNvZGVyUXQuY3BwCkBAIC0zMSwyMSArMzEsMTAgQEAKIAogI2luY2x1ZGUgPFF0Q29yZS9R
Qnl0ZUFycmF5PgogI2luY2x1ZGUgPFF0Q29yZS9RQnVmZmVyPgotCiAjaW5jbHVkZSA8UXRHdWkv
UUltYWdlUmVhZGVyPgotI2luY2x1ZGUgPHFkZWJ1Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEltYWdlU291cmNl
OjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
LXsKLSAgICAvLyBXZSBuZWVkIGF0IGxlYXN0IDQgYnl0ZXMgdG8gZmlndXJlIG91dCB3aGF0IGtp
bmQgb2YgaW1hZ2Ugd2UncmUgZGVhbGluZyB3aXRoLgotICAgIGlmIChkYXRhLnNpemUoKSA8IDQp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIG5ldyBJbWFnZURlY29kZXJRdChhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotfQotCiBJbWFnZURlY29kZXJR
dDo6SW1hZ2VEZWNvZGVyUXQoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJ
bWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiAgICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCkBA
IC0xMjksNyArMTE4LDcgQEAgaW50IEltYWdlRGVjb2RlclF0OjpyZXBldGl0aW9uQ291bnQoKSBj
b25zdAogU3RyaW5nIEltYWdlRGVjb2RlclF0OjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFN0cmluZyhtX2Zvcm1hdC5jb25zdERhdGEoKSwgbV9mb3JtYXQubGVuZ3Ro
KCkpOwotfTsKK30KIAogSW1hZ2VGcmFtZSogSW1hZ2VEZWNvZGVyUXQ6OmZyYW1lQnVmZmVyQXRJ
bmRleChzaXplX3QgaW5kZXgpCiB7CkBAIC0xOTQsMjEgKzE4MywyOCBAQCB2b2lkIEltYWdlRGVj
b2RlclF0OjppbnRlcm5hbFJlYWRJbWFnZShzaXplX3QgZnJhbWVJbmRleCkKIAogYm9vbCBJbWFn
ZURlY29kZXJRdDo6aW50ZXJuYWxIYW5kbGVDdXJyZW50SW1hZ2Uoc2l6ZV90IGZyYW1lSW5kZXgp
CiB7Ci0gICAgUVBpeG1hcCBwaXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2VSZWFkZXIobV9yZWFk
ZXIuZ2V0KCkpOworICAgIEltYWdlRnJhbWUqIGNvbnN0IGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVy
Q2FjaGVbZnJhbWVJbmRleF07CisgICAgUVNpemUgaW1hZ2VTaXplID0gbV9yZWFkZXItPnNpemUo
KTsKKworICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBRSW1hZ2UgaW1hZ2Uo
cmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KGJ1ZmZlci0+Z2V0QWRkcigwLCAwKSksIGltYWdlU2l6
ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERh
dGEpICogaW1hZ2VTaXplLndpZHRoKCksIG1fcmVhZGVyLT5pbWFnZUZvcm1hdCgpKTsKIAotICAg
IGlmIChwaXhtYXAuaXNOdWxsKCkpIHsKKyAgICBidWZmZXItPnNldER1cmF0aW9uKG1fcmVhZGVy
LT5uZXh0SW1hZ2VEZWxheSgpKTsKKyAgICBtX3JlYWRlci0+cmVhZCgmaW1hZ2UpOworCisgICAg
aWYgKGltYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgIGZyYW1lQ291bnQoKTsKICAgICAgICAgcmVw
ZXRpdGlvbkNvdW50KCk7CiAgICAgICAgIGNsZWFyUG9pbnRlcnMoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIC8vIG5vdyBpbnRvIHRoZSBJbWFnZUZyYW1lIC0gZXZlbiBp
ZiB0aGUgaW1hZ2UgaXMgbm90Ci0gICAgSW1hZ2VGcmFtZSogY29uc3QgYnVmZmVyID0gJm1fZnJh
bWVCdWZmZXJDYWNoZVtmcmFtZUluZGV4XTsKLSAgICBidWZmZXItPnNldE9yaWdpbmFsRnJhbWVS
ZWN0KG1fcmVhZGVyLT5jdXJyZW50SW1hZ2VSZWN0KCkpOworICAgIGJ1ZmZlci0+c2V0T3JpZ2lu
YWxGcmFtZVJlY3QoaW1hZ2UucmVjdCgpKTsKKyAgICBidWZmZXItPnNldEhhc0FscGhhKGltYWdl
Lmhhc0FscGhhQ2hhbm5lbCgpKTsKICAgICBidWZmZXItPnNldFN0YXR1cyhJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlKTsKLSAgICBidWZmZXItPnNldER1cmF0aW9uKG1fcmVhZGVyLT5uZXh0SW1h
Z2VEZWxheSgpKTsKLSAgICBidWZmZXItPnNldFBpeG1hcChwaXhtYXApOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTI0NSw2ICsyNDEsMjAgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6Y2xl
YXJQb2ludGVycygpCiAgICAgbV9yZWFkZXIuY2xlYXIoKTsKICAgICBtX2J1ZmZlci5jbGVhcigp
OwogfQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29u
c3QKK3sKKyAgICBRSW1hZ2U6OkZvcm1hdCBmb3JtYXQ7CisgICAgaWYgKG1faGFzQWxwaGEpCisg
ICAgICAgIGZvcm1hdCA9IG1fcHJlbXVsdGlwbHlBbHBoYSA/ICBRSW1hZ2U6OkZvcm1hdF9BUkdC
MzJfUHJlbXVsdGlwbGllZCA6IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMjsKKyAgICBlbHNlCisgICAg
ICAgIGZvcm1hdCA9IFFJbWFnZTo6Rm9ybWF0X1JHQjMyOworCisgICAgUUltYWdlIGltZyhyZWlu
dGVycHJldF9jYXN0PHVjaGFyKj4obV9ieXRlcyksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVp
Z2h0KCksIHNpemVvZihQaXhlbERhdGEpICogbV9zaXplLndpZHRoKCksIGZvcm1hdCk7CisKKyAg
ICByZXR1cm4gbmV3IFFQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKGltZykpOworfQorCiB9CiAK
IC8vIHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzZGIzOTNhLi4wMmFhNjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIwLDIxICsyMCwyMyBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLQogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogCi0jaW5jbHVkZSA8YWxnb3Jp
dGhtPgotI2luY2x1ZGUgPGNtYXRoPgotCiAjaW5jbHVkZSAiQk1QSW1hZ2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiR0lGSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgi
CisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyUXQuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIkpQRUdJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJQTkdJbWFnZURlY29kZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpZiBVU0UoV0VCUCkKICNpbmNsdWRlICJX
RUJQSW1hZ2VEZWNvZGVyLmgiCiAjZW5kaWYKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKwor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjbWF0aD4KIAogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIApAQCAtMTA3LDExICsxMDksMTggQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6
OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBoYU8KICAg
ICBpZiAobWF0Y2hlc0dJRlNpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcg
R0lGSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CiAKKyNpZiAhUExBVEZPUk0oUVQpIHx8IChQTEFURk9STShRVCkgJiYgSEFWRShMSUJQTkcpKQog
ICAgIGlmIChtYXRjaGVzUE5HU2lnbmF0dXJlKGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJuIG5l
dyBQTkdJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKIAorICAgIGlmIChtYXRjaGVzSUNPU2lnbmF0dXJlKGNvbnRlbnRzKSB8fCBtYXRjaGVzQ1VS
U2lnbmF0dXJlKGNvbnRlbnRzKSkKKyAgICAgICAgcmV0dXJuIG5ldyBJQ09JbWFnZURlY29kZXIo
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyNlbmRpZgorCisjaWYg
IVBMQVRGT1JNKFFUKSB8fCAoUExBVEZPUk0oUVQpICYmIEhBVkUoTElCSlBFRykpCiAgICAgaWYg
KG1hdGNoZXNKUEVHU2lnbmF0dXJlKGNvbnRlbnRzKSkKICAgICAgICAgcmV0dXJuIG5ldyBKUEVH
SW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Cisj
ZW5kaWYKIAogI2lmIFVTRShXRUJQKQogICAgIGlmIChtYXRjaGVzV2ViUFNpZ25hdHVyZShjb250
ZW50cykpCkBAIC0xMjEsOSArMTMwLDkgQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNy
ZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBoYU8KICAgICBp
ZiAobWF0Y2hlc0JNUFNpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcgQk1Q
SW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAK
LSAgICBpZiAobWF0Y2hlc0lDT1NpZ25hdHVyZShjb250ZW50cykgfHwgbWF0Y2hlc0NVUlNpZ25h
dHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBuZXcgSUNPSW1hZ2VEZWNvZGVyKGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0KKyNpZiBQTEFURk9STShRVCkK
KyAgICByZXR1cm4gbmV3IEltYWdlRGVjb2RlclF0KGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CisjZW5kaWYKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRl
eCA2YWU3MzhhLi5hNmJjMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtNDAsOSArNDAsNiBAQAogI2lmIFVT
RShTS0lBKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgogI2luY2x1ZGUgIlNrQ29sb3JQ
cml2LmgiCi0jZWxpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRUGl4bWFwPgotI2luY2x1ZGUg
PFFJbWFnZT4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpc3Bvc2VPdmVyd3JpdGVQcmV2aW91
cyAgLy8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVidWZmZXIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMKICAgICAgICAgfTsKLSNpZiBVU0Uo
U0tJQSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRfSU1BR0VfREVDT0RFUikpCisjaWYgVVNF
KFNLSUEpCiAgICAgICAgIHR5cGVkZWYgdWludDMyX3QgUGl4ZWxEYXRhOwogI2Vsc2UKICAgICAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7CkBAIC0xMzYsMTkgKzEzMywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICNpZiBVU0UoU0tJQSkKICAgICAgICAgICAgIHJl
dHVybiBtX2JpdG1hcC5iaXRtYXAoKS5nZXRBZGRyMzIoeCwgeSk7Ci0jZWxpZiBQTEFURk9STShR
VCkgJiYgVVNFKFFUX0lNQUdFX0RFQ09ERVIpCi0gICAgICAgICAgICBtX2ltYWdlID0gbV9waXht
YXAudG9JbWFnZSgpOwotICAgICAgICAgICAgbV9waXhtYXAgPSBRUGl4bWFwKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdF9wdHI8UVJnYio+KG1faW1hZ2Uuc2NhbkxpbmUo
eSkpICsgeDsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gbV9ieXRlcyArICh5ICogd2lkdGgo
KSkgKyB4OwogI2VuZGlmCiAgICAgICAgIH0KLQotI2lmIFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRf
SU1BR0VfREVDT0RFUikKLSAgICAgICAgdm9pZCBzZXRQaXhtYXAoY29uc3QgUVBpeG1hcCYgcGl4
bWFwKTsKLSNlbmRpZgotCiAgICAgcHJpdmF0ZToKICAgICAgICAgaW50IHdpZHRoKCkgY29uc3Q7
CiAgICAgICAgIGludCBoZWlnaHQoKSBjb25zdDsKQEAgLTE4MCwxMSArMTY4LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pCiAgICAg
ICAgIENvbG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKICNlbmRpZgotI2VsaWYgUExBVEZPUk0o
UVQpICYmIFVTRShRVF9JTUFHRV9ERUNPREVSKQotICAgICAgICBtdXRhYmxlIFFQaXhtYXAgbV9w
aXhtYXA7Ci0gICAgICAgIG11dGFibGUgUUltYWdlIG1faW1hZ2U7Ci0gICAgICAgIGJvb2wgbV9o
YXNBbHBoYTsKLSAgICAgICAgSW50U2l6ZSBtX3NpemU7CiAjZWxzZQogICAgICAgICBWZWN0b3I8
UGl4ZWxEYXRhPiBtX2JhY2tpbmdTdG9yZTsKICAgICAgICAgUGl4ZWxEYXRhKiBtX2J5dGVzOyAv
LyBUaGUgbWVtb3J5IGlzIGJhY2tlZCBieSBtX2JhY2tpbmdTdG9yZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0ltYWdlRnJhbWVRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9xdC9JbWFnZUZyYW1lUXQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTlhYzI5Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L0ltYWdlRnJhbWVRdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUsIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJJbWFnZURlY29kZXIuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShRVF9JTUFHRV9ERUNPREVSKQotCi1JbWFn
ZUZyYW1lOjpJbWFnZUZyYW1lKCkKLSAgICA6IG1faGFzQWxwaGEoZmFsc2UpIAotICAgICwgbV9z
aXplKCkKLSAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCi0gICAgLCBtX2R1cmF0aW9uKDApCi0g
ICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCi0gICAgLCBtX3ByZW11
bHRpcGx5QWxwaGEodHJ1ZSkKLXsKLX0KLQotSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3BlcmF0
b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQotewotICAgIGlmICh0aGlzID09ICZvdGhlcikK
LSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgY29weUJpdG1hcERhdGEob3RoZXIpOwotICAg
IHNldE9yaWdpbmFsRnJhbWVSZWN0KG90aGVyLm9yaWdpbmFsRnJhbWVSZWN0KCkpOwotICAgIHNl
dFN0YXR1cyhvdGhlci5zdGF0dXMoKSk7Ci0gICAgc2V0RHVyYXRpb24ob3RoZXIuZHVyYXRpb24o
KSk7Ci0gICAgc2V0RGlzcG9zYWxNZXRob2Qob3RoZXIuZGlzcG9zYWxNZXRob2QoKSk7Ci0gICAg
c2V0UHJlbXVsdGlwbHlBbHBoYShvdGhlci5wcmVtdWx0aXBseUFscGhhKCkpOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQotdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCi17Ci0gICAg
bV9waXhtYXAgPSBRUGl4bWFwKCk7Ci0gICAgbV9pbWFnZSA9IFFJbWFnZSgpOwotICAgIG1fc3Rh
dHVzID0gRnJhbWVFbXB0eTsKLSAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVy
cyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoKQotICAgIC8vIGNhbGxzIHRoaXMgdG8gZnJl
ZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBmdW5jdGlvbnMgbGlrZQotICAgIC8vIGluaXRG
cmFtZUJ1ZmZlcigpIGFuZCBmcmFtZUNvbXBsZXRlKCkgbWF5IHN0aWxsIG5lZWQgdG8gcmVhZAot
ICAgIC8vIG90aGVyIG1ldGFkYXRhIG91dCBvZiB0aGlzIGZyYW1lIGxhdGVyLgotfQotCi12b2lk
IEltYWdlRnJhbWU6Onplcm9GaWxsUGl4ZWxEYXRhKCkKLXsKLSAgICBpZiAobV9waXhtYXAuaXNO
dWxsKCkgJiYgIW1faW1hZ2UuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9waXhtYXAgPSBRUGl4bWFw
KG1faW1hZ2Uud2lkdGgoKSwgbV9pbWFnZS5oZWlnaHQoKSk7Ci0gICAgICAgIG1faW1hZ2UgPSBR
SW1hZ2UoKTsKLSAgICB9Ci0gICAgbV9waXhtYXAuZmlsbChRQ29sb3IoMCwgMCwgMCwgMCkpOwot
fQotCi1ib29sIEltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90
aGVyKQotewotICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBtX2ltYWdlID0gb3RoZXIubV9pbWFnZTsKLSAgICBtX3BpeG1hcCA9IG90aGVyLm1fcGl4
bWFwOwotICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6ZTsKLSAgICBtX2hhc0FscGhhID0gb3RoZXIu
bV9oYXNBbHBoYTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbWFnZUZyYW1lOjpzZXRT
aXplKGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKLXsKLSAgICAvLyBzZXRTaXplKCkgc2hv
dWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UsIGl0IGxlYWtzIG1lbW9yeSBvdGhlcndpc2UuCi0gICAg
QVNTRVJUKCF3aWR0aCgpICYmICFoZWlnaHQoKSk7Ci0KLSAgICBtX3NpemUgPSBJbnRTaXplKG5l
d1dpZHRoLCBuZXdIZWlnaHQpOwotICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKLSAgICBtX3BpeG1h
cCA9IFFQaXhtYXAobmV3V2lkdGgsIG5ld0hlaWdodCk7Ci0gICAgaWYgKG1fcGl4bWFwLmlzTnVs
bCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1RUGl4bWFwKiBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUlt
YWdlKCkgY29uc3QKLXsKLSAgICBpZiAobV9waXhtYXAuaXNOdWxsKCkgJiYgIW1faW1hZ2UuaXNO
dWxsKCkpIHsKLSAgICAgICAgbV9waXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UobV9pbWFnZSk7
Ci0gICAgICAgIG1faW1hZ2UgPSBRSW1hZ2UoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG5ldyBRUGl4
bWFwKG1fcGl4bWFwKTsKLX0KLQotYm9vbCBJbWFnZUZyYW1lOjpoYXNBbHBoYSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1faGFzQWxwaGE7Ci19Ci0KLXZvaWQgSW1hZ2VGcmFtZTo6c2V0SGFzQWxw
aGEoYm9vbCBhbHBoYSkKLXsKLSAgICBtX2hhc0FscGhhID0gYWxwaGE7Ci19Ci0KLXZvaWQgSW1h
Z2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29sb3JQcm9maWxl
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgSW1hZ2VGcmFtZTo6c2V0U3Rh
dHVzKEZyYW1lU3RhdHVzIHN0YXR1cykKLXsKLSAgICBtX3N0YXR1cyA9IHN0YXR1czsKLX0KLQot
Ly8gVGhlIGltYWdlIG11c3Qgbm90IGhhdmUgZm9ybWF0IDg4ODggcHJlIG11bHRpcGxpZWQuLi4K
LXZvaWQgSW1hZ2VGcmFtZTo6c2V0UGl4bWFwKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCkKLXsKLSAg
ICBtX3BpeG1hcCA9IHBpeG1hcDsKLSAgICBtX2ltYWdlID0gUUltYWdlKCk7Ci0gICAgbV9zaXpl
ID0gcGl4bWFwLnNpemUoKTsKLSAgICBtX2hhc0FscGhhID0gcGl4bWFwLmhhc0FscGhhQ2hhbm5l
bCgpOwotfQotCi1pbnQgSW1hZ2VGcmFtZTo6d2lkdGgoKSBjb25zdAotewotICAgIHJldHVybiBt
X3NpemUud2lkdGgoKTsKLX0KLQotaW50IEltYWdlRnJhbWU6OmhlaWdodCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fc2l6ZS5oZWlnaHQoKTsKLX0KLQotI2Vsc2UKLQotUVBpeG1hcCogSW1hZ2VG
cmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0Ci17Ci0gICAgUUltYWdlOjpGb3JtYXQgZm10
OwotICAgIGlmIChtX2hhc0FscGhhKQotICAgICAgICBmbXQgPSBtX3ByZW11bHRpcGx5QWxwaGEg
PyAgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQgOiBRSW1hZ2U6OkZvcm1hdF9B
UkdCMzI7Ci0gICAgZWxzZQotICAgICAgICBmbXQgPSBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKLQot
ICAgIFFJbWFnZSBpbWcocmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KG1fYnl0ZXMpLCBtX3NpemUu
d2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBzaXplb2YoUGl4ZWxEYXRhKSAqIG1fc2l6ZS53aWR0
aCgpLCBmbXQpOwotCi0gICAgcmV0dXJuIG5ldyBRUGl4bWFwKFFQaXhtYXA6OmZyb21JbWFnZShp
bWcpKTsKLX0KLQotI2VuZGlmIC8vIFVTRShRVF9JTUFHRV9ERUNPREVSKQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBjODQ5YWJiLi45ZjQ3NTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yOSAgWm9sdGFuIEhv
cnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFNldCBXZWJDb3JlIGlt
YWdlZGVjb2RlcnMgYXMgZGVmYXVsdCBhbmQgYWRkIGZhbGxiYWNrIHRvIFFJbWFnZURlY29kZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDAwCisK
KyAgICAgICAgR2V0IHJpZCBvZmYgUVRfSU1BR0VfREVDT0RFUiBmbGFnLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWJv
dXREYXRhRW5hYmxlRmVhdHVyZXMuaW46CisKIDIwMTItMDUtMjggIEpvbmF0aGFuIERvbmcgIDxq
b25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0g
aHR0cCBhdXRoZW50aWNhdGUgZGlhbG9nIHBvcHVwIG9ubHkgb25jZSBubyBtYXR0ZXIgYXV0aGVu
dGljYXRpb24gcGFzcyBvciBmYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuaW4K
aW5kZXggMzJlOTczOC4uOGEwYWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YUVuYWJsZUZlYXR1cmVzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFFbmFibGVGZWF0dXJl
cy5pbgpAQCAtMTA3LDcgKzEwNyw2IEBAIFBMVUdJTl9QUk9YWV9GT1JfVklERU8KIFBPSU5URVJf
TE9DSwogUFJPR1JFU1NfVEFHCiBQVVJHRUFCTEVfTUVNT1JZCi1RVF9JTUFHRV9ERUNPREVSCiBR
VU9UQQogUkVHRVhQX1RSQUNJTkcKIFJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIK
</data>
<flag name="review"
          id="151662"
          type_id="1"
          status="+"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="151663"
          type_id="3"
          status="-"
          setter="zoltan"
    />
          </attachment>
      

    </bug>

</bugzilla>