<?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>106159</bug_id>
          
          <creation_ts>2013-01-04 18:31:18 -0800</creation_ts>
          <short_desc>Remove the bitmap SVG image cache</short_desc>
          <delta_ts>2013-03-27 16:02:25 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>113420</dependson>
          <blocked>108999</blocked>
    
    <blocked>99481</blocked>
    
    <blocked>104189</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philip Rogers">pdr</reporter>
          <assigned_to name="Philip Rogers">pdr</assigned_to>
          <cc>cricri.bug</cc>
    
    <cc>dglazkov</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>reed</cc>
    
    <cc>schenney</cc>
    
    <cc>shezbaig.wk</cc>
    
    <cc>thorton</cc>
    
    <cc>tomhudson</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>800806</commentid>
    <comment_count>0</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-01-04 18:31:18 -0800</bug_when>
    <thetext>WK71368 introduced a change to cache rendered image buffers instead of dom&amp;render trees in the SVG image cache. This approach has several downsides:
1) Memory - image buffers are big
2) Prevents viewport rendering - WK104693 is an example of this since we cannot viewport render a portion of an enormous svg image.
3) Introduces an unnecessary blit for every image.

We should revert this change and cache something else, likely the dom and render tree for the inner SVG document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828925</commentid>
    <comment_count>1</comment_count>
      <attachid>187407</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-08 21:24:06 -0800</bug_when>
    <thetext>Created attachment 187407
Remove the bitmap SVG image cache

Caching the SVG dom/tree at specific sizes turned out to not be the right approach after all.

I&apos;m attaching a first-pass at removing the bitmap SVG image cache entirely and instead directly rendering SVG content. With this applied, we pass both the IE Chalkboard demo and all our layout tests (except minor text aliasing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828930</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 21:33:00 -0800</bug_when>
    <thetext>Attachment 187407 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/WebCore/WebCore.gypi&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;Source/WebCore/svg/graphics/SVGImage.cpp&apos;, u&apos;Source/WebCore/svg/graphics/SVGImage.h&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageCache.cpp&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageCache.h&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageForContainer.cpp&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageForContainer.h&apos;]&quot; exit_code: 1
Source/WebCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:15:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:16:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 4 in 10 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>828931</commentid>
    <comment_count>3</comment_count>
      <attachid>187407</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-08 21:36:13 -0800</bug_when>
    <thetext>Comment on attachment 187407
Remove the bitmap SVG image cache

Attachment 187407 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16476040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828932</commentid>
    <comment_count>4</comment_count>
      <attachid>187407</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-08 21:37:47 -0800</bug_when>
    <thetext>Comment on attachment 187407
Remove the bitmap SVG image cache

Attachment 187407 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16468116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828933</commentid>
    <comment_count>5</comment_count>
      <attachid>187407</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-08 21:39:43 -0800</bug_when>
    <thetext>Comment on attachment 187407
Remove the bitmap SVG image cache

Attachment 187407 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16465186</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828934</commentid>
    <comment_count>6</comment_count>
      <attachid>187407</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 21:40:07 -0800</bug_when>
    <thetext>Comment on attachment 187407
Remove the bitmap SVG image cache

Attachment 187407 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16474052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828939</commentid>
    <comment_count>7</comment_count>
      <attachid>187407</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-02-08 21:47:19 -0800</bug_when>
    <thetext>Comment on attachment 187407
Remove the bitmap SVG image cache

Attachment 187407 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/16475040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828941</commentid>
    <comment_count>8</comment_count>
      <attachid>187407</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-02-08 21:47:44 -0800</bug_when>
    <thetext>Comment on attachment 187407
Remove the bitmap SVG image cache

Attachment 187407 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16478021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829097</commentid>
    <comment_count>9</comment_count>
      <attachid>187407</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-09 12:01:53 -0800</bug_when>
    <thetext>Comment on attachment 187407
Remove the bitmap SVG image cache

Attachment 187407 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16478430</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829148</commentid>
    <comment_count>10</comment_count>
      <attachid>187452</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-09 18:29:27 -0800</bug_when>
    <thetext>Created attachment 187452
Update

This patch updates the other build systems, fixes a linux compile error, and does some minor cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829150</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-09 18:32:53 -0800</bug_when>
    <thetext>Attachment 187452 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.gypi&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;Source/WebCore/svg/graphics/SVGImage.cpp&apos;, u&apos;Source/WebCore/svg/graphics/SVGImage.h&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageCache.cpp&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageCache.h&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageForContainer.cpp&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageForContainer.h&apos;]&quot; exit_code: 1
Source/WebCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:15:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 3 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829151</commentid>
    <comment_count>12</comment_count>
      <attachid>187453</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-09 18:36:11 -0800</bug_when>
    <thetext>Created attachment 187453
Remove ChangeLog asterisks because the stylebot does not like them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829157</commentid>
    <comment_count>13</comment_count>
      <attachid>187453</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-09 19:25:35 -0800</bug_when>
    <thetext>Comment on attachment 187453
Remove ChangeLog asterisks because the stylebot does not like them.

Many SVG chromium tests will fail because there are anti-aliasing differences now that we don&apos;t draw onto a buffer and then blit. Before landing, these tests will need to be rebaselined.

The following bugs are also fixed with this patch:
https://bugs.webkit.org/show_bug.cgi?id=99481
https://bugs.webkit.org/show_bug.cgi?id=104189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829175</commentid>
    <comment_count>14</comment_count>
      <attachid>187453</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-09 20:31:58 -0800</bug_when>
    <thetext>Comment on attachment 187453
Remove ChangeLog asterisks because the stylebot does not like them.

Attachment 187453 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16465773

New failing tests:
css2.1/20110323/background-intrinsic-004.htm
css2.1/20110323/background-intrinsic-005.htm
svg/as-border-image/svg-as-border-image.html
svg/as-image/svg-non-integer-scaled-image.html
svg/zoom/page/zoom-background-images.html
svg/as-background-image/animated-svg-as-background.html
svg/as-background-image/svg-as-background-6.html
svg/as-image/svg-image-change-content-size.xhtml
fast/writing-mode/block-level-images.html
svg/zoom/page/zoom-svg-as-background-with-relative-size-and-viewBox.html
svg/as-image/same-image-two-instances.html
svg/wicd/test-scalable-background-image1.xhtml
svg/as-background-image/svg-background-partial-redraw.html
svg/as-background-image/svg-as-background-1.html
svg/as-background-image/svg-as-background-3.html
svg/as-background-image/svg-as-background-4.html
svg/as-image/img-preserveAspectRatio-support-2.html
svg/as-background-image/svg-as-background-with-relative-size.html
svg/zoom/page/zoom-svg-as-background-with-relative-size.html
svg/as-image/animated-svg-as-image-no-fixed-intrinsic-size.html
svg/wicd/test-scalable-background-image2.xhtml
fast/backgrounds/size/contain-and-cover.html
svg/as-background-image/svg-as-background-2.html
svg/as-background-image/svg-as-background-5.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829696</commentid>
    <comment_count>15</comment_count>
      <attachid>187453</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-02-11 07:59:22 -0800</bug_when>
    <thetext>Comment on attachment 187453
Remove ChangeLog asterisks because the stylebot does not like them.

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

It really looks like good work to me. I have no issues with the approach.

Please address the couple of questions I have.

Also, do you have any performance numbers to share, or are test now passing that were not previously? If we are supporting things we did not previously support, and there are no tests, we should have new tests for the new support.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:138
&gt; +    scaledSrc.scale(1 / zoom);

Zoom is never zero, I presume. I think that&apos;s safe.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:145
&gt; +    draw(context, dstRect, scaledSrc, colorSpace, compositeOp, blendMode);

Can you still do layout in this method? Do you really need the disabled repaints?

&gt; Source/WebCore/svg/graphics/SVGImageCache.cpp:73
&gt; +// FIXME: This doesn&apos;t take into account the animation timeline.

Could you add to this by explaining what the visible effect will be? Incorrect sizing of animated SVGImage content?

&gt; Source/WebCore/svg/graphics/SVGImageCache.cpp:95
&gt; +Image* SVGImageCache::lookupOrCreateImageForRenderer(const RenderObject* renderer)

This method never seems to create anything. Does the name need to be changed, or am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830263</commentid>
    <comment_count>16</comment_count>
      <attachid>187705</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-11 15:55:27 -0800</bug_when>
    <thetext>Created attachment 187705
Update per reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830275</commentid>
    <comment_count>17</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-11 16:06:12 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 187453 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187453&amp;action=review
&gt; 
&gt; It really looks like good work to me. I have no issues with the approach.

Thank you for taking the time to review into this. It&apos;s very much appreciated as I know this was an ominous patch :)


&gt; Please address the couple of questions I have.
&gt; 
&gt; Also, do you have any performance numbers to share, or are test now passing that were not previously? If we are supporting things we did not previously support, and there are no tests, we should have new tests for the new support.

I do have additional performance numbers. I have updated the changelog to include a simple viewport demo (similar to the Microsoft Chalkboard demo):
http://philbit.com/SvgImagePerformance/viewport.html:
 without patch: ~20FPS
 with patch: ~55FPS
Unfortunately this is not testable on our PerformanceTest infrastructure.

I also ensured we did not regress several other usecases (found on philbit.com/SvgImagePerformance) including multiple &lt;img&gt; elements referencing a single svg image, and animating tiled svg backgrounds. It is likely we will see a progression on memory performance.

&gt; &gt; Source/WebCore/svg/graphics/SVGImage.cpp:138
&gt; &gt; +    scaledSrc.scale(1 / zoom);
&gt; 
&gt; Zoom is never zero, I presume. I think that&apos;s safe.

This should be safe as there are similar calls in RenderLayer, but I&apos;ve added an ASSERT just to be sure.

&gt; 
&gt; &gt; Source/WebCore/svg/graphics/SVGImage.cpp:145
&gt; &gt; +    draw(context, dstRect, scaledSrc, colorSpace, compositeOp, blendMode);
&gt; 
&gt; Can you still do layout in this method? Do you really need the disabled repaints?

This layout ended up being unnecessary, as was disabling repaints. I have removed these calls.

Note that we still are laying out here, in setContainerSize. This layout is done on the inner SVG document which should be safe. This is similar to how it was done before this patch.

&gt; 
&gt; &gt; Source/WebCore/svg/graphics/SVGImageCache.cpp:73
&gt; &gt; +// FIXME: This doesn&apos;t take into account the animation timeline.
&gt; 
&gt; Could you add to this by explaining what the visible effect will be? Incorrect sizing of animated SVGImage content?

Fixed: I reworked this comment to be more clear.

&gt; 
&gt; &gt; Source/WebCore/svg/graphics/SVGImageCache.cpp:95
&gt; &gt; +Image* SVGImageCache::lookupOrCreateImageForRenderer(const RenderObject* renderer)
&gt; 
&gt; This method never seems to create anything. Does the name need to be changed, or am I missing something?

There is a bit of cruft like this that I would like to clean up in subsequent refactoring patches. I&apos;ve renamed this to &quot;imageForRenderer&quot;, as you are absolutely right that the name is misleading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830281</commentid>
    <comment_count>18</comment_count>
      <attachid>187705</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-11 16:10:29 -0800</bug_when>
    <thetext>Comment on attachment 187705
Update per reviewer comments

Attachment 187705 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16495411</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830293</commentid>
    <comment_count>19</comment_count>
      <attachid>187714</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-11 16:23:07 -0800</bug_when>
    <thetext>Created attachment 187714
Add a file someone forgot to include in the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830475</commentid>
    <comment_count>20</comment_count>
      <attachid>187714</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 19:29:18 -0800</bug_when>
    <thetext>Comment on attachment 187714
Add a file someone forgot to include in the previous patch.

Attachment 187714 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16486662

New failing tests:
css2.1/20110323/background-intrinsic-005.htm
svg/as-image/same-image-two-instances.html
css2.1/20110323/background-intrinsic-004.htm
fast/backgrounds/size/contain-and-cover.html
fast/writing-mode/block-level-images.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830511</commentid>
    <comment_count>21</comment_count>
      <attachid>187765</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-11 20:34:12 -0800</bug_when>
    <thetext>Created attachment 187765
Add tests for newly-fixed bugs

Small update to add two reftests for the two bugs this fixes: webkit.org/b/99481 and webkit.org/b/104189</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830797</commentid>
    <comment_count>22</comment_count>
      <attachid>187765</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-12 05:11:13 -0800</bug_when>
    <thetext>Comment on attachment 187765
Add tests for newly-fixed bugs

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

I&apos;m having trouble finding anything to complain about! Let&apos;s see how it goes, I guess? I&apos;m really excited.

&gt; Source/WebCore/svg/graphics/SVGImage.h:67
&gt; +    friend class SVGImageForContainer;

The &quot;ForContainer&quot; prefix struck me as a little odd the first time I saw it, but I&apos;ve quickly gotten used to it.

&gt; Source/WebCore/svg/graphics/SVGImageForContainer.h:71
&gt; +    void setPageScale(float pageScale) { m_pageScale = pageScale; }

This is the product of page scale and device scale, yes? Slightly confusing -- we already make this confusing enough :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831207</commentid>
    <comment_count>23</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-02-12 13:36:24 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 187765 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187765&amp;action=review
&gt; 
&gt; I&apos;m having trouble finding anything to complain about! Let&apos;s see how it goes, I guess? I&apos;m really excited.

Thanks for the review! I am also excited.

&gt; 
&gt; &gt; Source/WebCore/svg/graphics/SVGImage.h:67
&gt; &gt; +    friend class SVGImageForContainer;
&gt; 
&gt; The &quot;ForContainer&quot; prefix struck me as a little odd the first time I saw it, but I&apos;ve quickly gotten used to it.
&gt; 
&gt; &gt; Source/WebCore/svg/graphics/SVGImageForContainer.h:71
&gt; &gt; +    void setPageScale(float pageScale) { m_pageScale = pageScale; }
&gt; 
&gt; This is the product of page scale and device scale, yes? Slightly confusing -- we already make this confusing enough :D

I agree 100% here and I plan to take out most of the page scale logic in a followup patch. I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=109609 to track this work.
To summarize my plan: the page scale information can be set once, just like zoom, and we can get rid of all setters on SVGImageForContainer. When the page scale changes, users (e.g., RenderImage) already re-send container size, scale, and zoom information in setContainerSizeForRenderer, so we&apos;re covered when the user dynamically changes the page scale or device scale.


I&apos;m going to let this sit until tomorrow AM in case there are any further comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832121</commentid>
    <comment_count>24</comment_count>
      <attachid>187765</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 11:45:58 -0800</bug_when>
    <thetext>Comment on attachment 187765
Add tests for newly-fixed bugs

Clearing flags on attachment: 187765

Committed r142765: &lt;http://trac.webkit.org/changeset/142765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832122</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 11:46:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187407</attachid>
            <date>2013-02-08 21:24:06 -0800</date>
            <delta_ts>2013-02-09 18:29:27 -0800</delta_ts>
            <desc>Remove the bitmap SVG image cache</desc>
            <filename>106159.1.patch</filename>
            <type>text/plain</type>
            <size>40472</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjM0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMSBAQAorMjAxMy0wMi0wOCAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgYml0bWFwIFNW
RyBpbWFnZSBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA2MTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjYWNoaW5nIG9mIFNWRyBiaXRtYXBzIHNvIFNW
RyBpbWFnZXMgYXJlIHJlbmRlcmVkIGRpcmVjdGx5LiBUaGlzCisgICAgICAgIGVuYWJsZXMgV2Vi
S2l0IHRvIHBhc3MgdGhlIElFIENoYWxrYm9hcmQgZGVtbzoKKyAgICAgICAgaHR0cDovL2llLm1p
Y3Jvc29mdC5jb20vdGVzdGRyaXZlL1BlcmZvcm1hbmNlL0NoYWxrYm9hcmQvCisKKyAgICAgICAg
VGhlIFNWRyBpbWFnZSBjYWNoZSBoYWQgc2V2ZXJhbCBzaG9ydGNvbWluZ3M6CisgICAgICAgICAg
ICAqIFRoZSBiaXRtYXAgY2FjaGUgcHJldmVudGVkIHZpZXdwb3J0IHJlbmRlcmluZy4gKFdLMTA0
NjkzKQorICAgICAgICAgICAgKiBCaXRtYXAgbWVtb3J5IHVzYWdlIHdhcyBoaWdoLiAoV0sxMDY0
ODQpCisgICAgICAgICAgICAqIENhY2hpbmcgYW5pbWF0aW5nIGltYWdlcyB3YXMgZXhwZW5zaXZl
LgorICAgICAgICAgICAgKiBDYWNoaW5nIHdhcyBwZXItcmVuZGVyZXIgc28gaXQgd2FzIG9ubHkg
dXNlZnVsIGZvciByZWRyYXdpbmcuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVtb3ZlcyBhbG1v
c3QgYWxsIG9mIHRoZSBTVkdJbWFnZUNhY2hlIGltcGxlbWVudGF0aW9uLCByZXBsYWNpbmcgaXQg
d2l0aAorICAgICAgICBkaXJlY3RseS1yZW5kZXJlZCBTVkcuIEluc3RlYWQgb2YgY2FjaGluZyBi
aXRtYXBzLCBhbiBTVkdJbWFnZUZvckNvbnRhaW5lciBpcyBjYWNoZWQgd2hpY2gKKyAgICAgICAg
aXMgYSB0aGluIHdyYXBwZXIgYXJvdW5kIGFuIFNWRyBpbWFnZSB3aXRoIHRoZSBhc3NvY2lhdGVk
IGNvbnRhaW5lciBzaXplIGFuZCBzY2FsZS4KKyAgICAgICAgV2hlbiByZW5kZXJpbmcgcGF0dGVy
bnMgKGUuZy4sIHRpbGVkIGJhY2tncm91bmRzKSwgYSB0ZW1wb3JhcnkgYml0bWFwIGlzIHVzZWQg
Zm9yCisgICAgICAgIHBlcmZvcm1hbmNlLiBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgdGhlIHJl
ZHJhdyB0aW1lciBvZiB0aGUgb2xkIGNhY2hlLCBpbnN0ZWFkIHJlbHlpbmcKKyAgICAgICAgb24g
dGhlIFNWRyBpbWFnZSB0byBub3RpZnkgY2xpZW50cyBpZiB0aGUgaW1hZ2UgY2hhbmdlcyAoZS5n
LiwgZHVyaW5nIGFuaW1hdGlvbnMpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgY292ZXJlZCB3
aXRoIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Omxvb2t1
cE9yQ3JlYXRlSW1hZ2VGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3Qp
OgorCisgICAgICAgICAgICBTVkcgaW1hZ2VzIGFyZSBubyBsb25nZXIgc3BlY2lhbC1jYXNlZCBo
ZXJlLiBXaGVuIHRoZSBTVkcgaW1hZ2UgY2hhbmdlcywgdXNlcnMgYXJlCisgICAgICAgICAgICBu
b3RpZmllZCB0aHJvdWdoIHRoaXMgZnVuY3Rpb24sIGFuZCB1c2VycyBjYW4gdGhlbiByZXF1ZXN0
IHRoZWlyIGNvbnRlbnQgdG8gYmUgcmVkcmF3bi4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisKKyAg
ICAgICAgICAgIGRyYXdGb3JDb250YWluZXIgbGF5cyBvdXQgdGhlIFNWRyBjb250ZW50IGZvciBh
IHNwZWNpZmljIGNvbnRhaW5lciBzaXplIGFuZCByZW5kZXJzIGl0LgorICAgICAgICAgICAgVGhl
IGxvZ2ljIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQgYnV0IGEgbm90ZSBhYm91dCB0aGUgc2Nh
bGVzIGFuZCB6b29tcyBoZXJlOgorICAgICAgICAgICAgICAgIHRoZSBkZXN0aW5hdGlvbiByZWN0
IHBhcmFtZXRlciBpcyB6b29tZWQgYnV0IG5vdCBzY2FsZWQKKyAgICAgICAgICAgICAgICB0aGUg
c291cmNlIHJlY3QgcGFyYW1ldGVyIGlzIHpvb21lZCBidXQgbm90IHNjYWxlZAorICAgICAgICAg
ICAgICAgIHRoZSBjb250ZXh0IGlzIHNjYWxlZCBidXQgbm90IHpvb21lZAorICAgICAgICAgICAg
U1ZHSW1hZ2U6OmRyYXcoLi4uKSBvbmx5IGFjY2VwdHMgYSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IHJlY3QgYnV0IGRvZXMgbm90IGNvbnNpZGVyCisgICAgICAgICAgICBzY2FsZSBvciB6b29tLiBU
aGVyZWZvcmUsIGRyYXdGb3JDb250YWluZXIgcmVtb3ZlcyB0aGUgem9vbSBjb21wb25lbnQgZnJv
bSB0aGUgc291cmNlCisgICAgICAgICAgICBzbyBTVkdJbWFnZTo6ZHJhdyguLi4pIHdpbGwgZHJh
dyBmcm9tIHRoZSBwcmUtem9vbSBzb3VyY2UgdG8gdGhlIHBvc3Qtem9vbSBkZXN0aW5hdGlvbi4K
KworICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIpOgorCisgICAgICAgICAgICBGb3IgcGVyZm9ybWFuY2UsIGRyYXdQ
YXR0ZXJuRm9yQ29udGFpbmVyIHJlbmRlcnMgdGhlIFNWRyBjb250ZW50IG9udG8gYSBiaXRtYXAs
IHRoZW4KKyAgICAgICAgICAgIGhhcyB0aGUgYml0bWFwIGltYWdlIGRyYXcgdGhlIHBhdHRlcm4u
IFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgZHJhd1BhdHRlcm4gaXMgdXNlZAorICAgICAgICAg
ICAgZm9yIHRpbGluZywgYSB1c2VjYXNlIHdoZXJlIGNhY2hpbmcgaXMgbmVjZXNzYXJ5LgorCisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OnN0b3BBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6OnJlc2V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpyZXBvcnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFNWR0ltYWdlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKworICAgICAgICAgICAgSW5z
dGVhZCBvZiBzdG9yaW5nIGEgU2l6ZUFuZFNjYWxlcyB2YWx1ZXMgZm9yIGVhY2ggcmVuZGVyZXIs
IGEgU1ZHSW1hZ2VGb3JDb250YWluZXIKKyAgICAgICAgICAgIGlzIHN0b3JlZCB3aGljaCBpcyBq
dXN0IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBhbiBTVkcgaW1hZ2UgdGhhdCBjb250YWlucyBjb250
YWluZXIKKyAgICAgICAgICAgIHNpemluZyBpbmZvcm1hdGlvbi4gQnkgY29tYmluaW5nIHRoZSBp
bWFnZSBhbmQgc2l6ZSBpbmZvcm1hdGlvbiwgdGhlIHR3byBtYXBzIG9mCisgICAgICAgICAgICBT
VkdJbWFnZUNhY2hlIGhhdmUgYmVlbiBtZXJnZWQgaW50byBvbmUuCisKKyAgICAgICAgICAgIFRv
IG1ha2UgdGhpcyBwYXRjaCBlYXNpZXIgdG8gcmV2aWV3LCBTVkdJbWFnZUNhY2hlIHN0aWxsIGV4
aXN0cyBhbmQgd29ya3Mgc2ltaWxhciB0bworICAgICAgICAgICAgaG93IGl0IGRpZCBiZWZvcmUg
dGhlIHBhdGNoLiBOb3csIFNWR0ltYWdlQ2FjaGUgc2ltcGx5IHN0b3JlcyB0aGUgU1ZHSW1hZ2VG
b3JDb250YWluZXJzLgorICAgICAgICAgICAgSW4gYSBmb2xsb3d1cCBwYXRjaCBpdCB3aWxsIGJl
IHJlbW92ZWQuCisKKyAgICAgICAgICAgIE5vdGU6IHRoZSByZWRyYXcgdGltZXIgb2YgU1ZHSW1h
Z2VDYWNoZSBoYXMgYmVlbiByZW1vdmVkIGJlY2F1c2UgYW5pbWF0aW9uCisgICAgICAgICAgICBp
bnZhbGlkYXRpb24gaXMgbm93IHByb3Blcmx5IHByb3BhZ2F0ZWQgYmFjayB0byB0aGUgaW1hZ2Ug
Y2xpZW50cy4KKworICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6U1ZHSW1hZ2VDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjp+U1ZHSW1hZ2VDYWNoZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OmltYWdlU2l6ZUZvclJlbmRl
cmVyKToKKworICAgICAgICAgICAgUHJldmlvdXNseSwgdGhpcyBmdW5jdGlvbiByZXR1cm5lZCB0
aGUgc2NhbGVkIGltYWdlIHNpemUgd2hpY2ggd2FzIGluY29ycmVjdC4gVGhlIGltYWdlCisgICAg
ICAgICAgICBzaXplIGlzIHVzZWQgYnkgY2xpZW50cyBzdWNoIGFzIEdyYXBoaWNzQ29udGV4dDJE
IHRvIGRldGVybWluZSB0aGUgc291cmNlIHNpemUKKyAgICAgICAgICAgIGZvciBkcmF3aW5nIHRo
ZSBpbWFnZS4gZHJhdygpIGFjY2VwdHMgem9vbWVkIGJ1dCBub3Qgc2NhbGVkIHZhbHVlcywgc28g
dGhpcyBoYXMgYmVlbgorICAgICAgICAgICAgY2hhbmdlZC4KKworICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyKToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChTVkdJbWFnZUNhY2hlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwOiBBZGRlZC4KKworICAgICAgICAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIg
aXMgYSB0aGluIHdyYXBwZXIgYXJvdW5kIGFuIFNWRyBpbWFnZS4gVGhlIGxpZmV0aW1lIG9mIHRo
ZQorICAgICAgICAgICAgU1ZHSW1hZ2Ugd2lsbCBiZSBsb25nZXIgdGhhbiB0aGUgaW1hZ2UgY2Fj
aGUuCisKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JD
b250YWluZXI6OnNpemUpOgorCisgICAgICAgICAgICBUaGlzIGlzIHRoZSBvbmx5IGxvZ2ljIGlu
IFNWR0ltYWdlRm9yQ29udGFpbmVyLiBUaGUgc2l6ZSByZXR1cm5lZCBuZWVkcyB0byBiZSB6b29t
ZWQKKyAgICAgICAgICAgIGJ1dCBub3Qgc2NhbGVkIGJlY2F1c2UgaXQgaXMgdXNlZCAoZS5nLiwg
YnkgUmVuZGVySW1hZ2UpIHRvIHBhc3MgYmFjayBpbnRvIGRyYXcoKSB3aGljaAorICAgICAgICAg
ICAgdGFrZXMgem9vbWVkIGJ1dCBub3Qgc2NhbGVkIHZhbHVlcy4KKworICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFNWR0ltYWdlRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6
OmNvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6
OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjp6b29tKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpTVkdJbWFnZUZvckNvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZGVzdHJveURl
Y29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkZWNv
ZGVkU2l6ZSk6CisKIDIwMTMtMDItMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFNuYXBzaG90dGVkIHBsdWctaW4gc2hvdWxkIHVzZSBzaGFkb3cgcm9vdApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTQxODc5KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01MDk3LDYgKzUwOTcsOCBAQAogICAgICAgICAg
ICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oJywKICAgICAgICAgICAgICdz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaCcsCisgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmgnLAorICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAn
LAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwJywKICAg
ICAgICAgICAgICdzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgnLAogICAgICAgICAg
ICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAnLApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTQxODc5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsNiArMjIxLDggQEAKIAkJMDhGMkYwMEExMjEzRTYx
NzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5k
ZXJJbWFnZVJlc291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMDhGODU5RDQxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDIx
NDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwICovOyB9OwogCQkwOEY4NTlENTE0
NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0lt
YWdlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDIx
NDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJMDhG
ODU5RDUxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2
N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEZCMTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwOEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcC5jcHAgKi87IH07CiAJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBT
VkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwOEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA4RkUwQkM1MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4RkUwQkM0MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNzQ1Nyw2ICs3NDU5LDggQEAKIAkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEY4NTlEMjE0
NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdJbWFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEY4
NTlEMzE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VGb3JDb250YWluZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4RkIzRjgzMTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGRTBCQzQxMjdFMkFD
MTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMzIyLDYgKzIwMzI2LDggQEAKIAkJCQlC
MjU1OTkwQzBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHSW1hZ2UuaCAqLywKIAkJCQkwOEY4NTlEMjE0
NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgKi8sCiAJCQkJMDhGODU5RDMxNDYz
RjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLywKKwkJCQkwOEY4NTlEMjE0NjNGOUNE
MDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwICovLAorCQkJCTA4Rjg1OUQzMTQ2
M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5oICovLAogCQkJCUFBQzA4Q0VE
MTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBncmFwaGljczsKQEAgLTI1OTI4LDYgKzI1OTM0LDcgQEAKIAkJCQk2NTBGQkYyQjBE
OUFGMDQ3MDA4RkMyOTIgLyogU1ZHSEtlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjU1OTlBNDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4Rjg1OUQ1MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFBQzA4Q0VGMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFn
ZUNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMkQwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI4QzZBMkEwRDAw
QzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTc5
LDYgKzI5MTg2LDcgQEAKIAkJCQk2NTBGQkYyQTBEOUFGMDQ3MDA4RkMyOTIgLyogU1ZHSEtlcm5F
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OUEzMEQwMEQ4QkEwMEJCODI1QyAv
KiBTVkdJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5
MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOEY4NTlENDE0NjNG
OUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBMkMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ltYWdlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjhDNkEyOTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMkYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xh
bmdTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTQxODc5KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcg
KzE2NCw3IEBAIGlubGluZSBJbWFnZSogQ2FjaGVkSW1hZ2U6Omxvb2t1cE9yQ3JlYXQKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgaWYgKCFtX2ltYWdlLT5pc1NWR0ltYWdlKCkpCiAgICAgICAgIHJl
dHVybiBtX2ltYWdlLmdldCgpOwotICAgIEltYWdlKiB1c2VJbWFnZSA9IG1fc3ZnSW1hZ2VDYWNo
ZS0+bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICBJ
bWFnZSogdXNlSW1hZ2UgPSBtX3N2Z0ltYWdlQ2FjaGUtPmxvb2t1cE9yQ3JlYXRlSW1hZ2VGb3JS
ZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYgKHVzZUltYWdlID09IEltYWdlOjpudWxsSW1hZ2Uo
KSkKICAgICAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7CiAgICAgcmV0dXJuIHVzZUltYWdlOwpA
QCAtMzEyLDkgKzMxMiw2IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoZWNrU2hvdWxkUGFpbnRCcm9r
ZW4KIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFyKCkKIHsKICAgICBkZXN0cm95RGVjb2RlZERhdGEo
KTsKLSNpZiBFTkFCTEUoU1ZHKQotICAgIG1fc3ZnSW1hZ2VDYWNoZS5jbGVhcigpOwotI2VuZGlm
CiAgICAgY2xlYXJJbWFnZSgpOwogICAgIG1fcGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0cy5j
bGVhcigpOwogICAgIHNldEVuY29kZWRTaXplKDApOwpAQCAtNDg0LDEzICs0ODEsNiBAQCB2b2lk
IENhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltCiB7CiAgICAgaWYgKCFpbWFnZSB8
fCBpbWFnZSAhPSBtX2ltYWdlKQogICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKFNWRykKLSAg
ICAvLyBXZSBoYXZlIHRvIHVwZGF0ZSB0aGUgY2FjaGVkIEltYWdlQnVmZmVycyBpZiB0aGUgdW5k
ZXJseWluZyBjb250ZW50IGNoYW5nZWQuCi0gICAgaWYgKGltYWdlLT5pc1NWR0ltYWdlKCkpIHsK
LSAgICAgICAgbV9zdmdJbWFnZUNhY2hlLT5pbWFnZUNvbnRlbnRDaGFuZ2VkKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0jZW5kaWYKICAgICBub3RpZnlPYnNlcnZlcnMoJnJlY3QpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9u
IDE0MTg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlNW
R0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKQEAgLTU5LDEw
ICs2MCwyNiBAQCBTVkdJbWFnZTo6flNWR0ltYWdlKCkKICAgICBBU1NFUlQoIW1fY2hyb21lQ2xp
ZW50IHx8ICFtX2Nocm9tZUNsaWVudC0+aW1hZ2UoKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OnNl
dENvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYpCit2b2lkIFNWR0ltYWdlOjpzZXRDb250YWlu
ZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgLy8gU1ZHSW1hZ2VDYWNoZSBhbHJl
YWR5IGludGVyY2VwdGVkIHRoaXMgY2FsbCwgYXMgaXQgc3RvcmVzICYgY2FjaGVzIHRoZSBkZXNp
cmVkIGNvbnRhaW5lciBzaXplcyAmIHpvb20gbGV2ZWxzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIGlmICghbV9wYWdlIHx8ICF1c2VzQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIFNW
R1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFt
ZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290RWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIFJlbmRlclNWR1Jvb3QqIHJlbmRlcmVyID0gdG9SZW5kZXJTVkdS
b290KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZVZpZXcoKTsKKyAgICB2aWV3
LT5yZXNpemUodGhpcy0+c2l6ZSgpKTsKKyAgICAvLyBJZiBhIGxheW91dCBpcyBwZW5kaW5nLCB0
cmlnZ2VyIGl0IG5vdyBzbyB0aGF0IG5vdGlmaWNhdGlvbnMgZ2V0IHNlbnQuCisgICAgaWYgKHZp
ZXctPm5lZWRzTGF5b3V0KCkpCisgICAgICAgIHZpZXctPmxheW91dCgpOworCisgICAgcmVuZGVy
ZXItPnNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKIEludFNpemUgU1ZHSW1hZ2U6OnNpemUo
KSBjb25zdApAQCAtOTksMjggKzExNiwxMiBAQCBJbnRTaXplIFNWR0ltYWdlOjpzaXplKCkgY29u
c3QKICAgICByZXR1cm4gSW50U2l6ZSgzMDAsIDE1MCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OmRy
YXdTVkdUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIsIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgem9vbUFuZFNjYWxlLCBTaG91bGRDbGVhckJ1ZmZlciBzaG91bGRDbGVhcikK
K3ZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQsIGZsb2F0IHpvb20sIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3Rs
eSB3aXRoIGFuaW1hdGlvbnMuIElmIGFuIGltYWdlIGNvbnRhaW5zIGFuaW1hdGlvbnMsIHRoYXQg
c2F5IHJ1biBmb3IgMiBzZWNvbmRzLAotICAgIC8vIGFuZCB3ZSBjdXJyZW50bHkgaGF2ZSBvbmUg
PGltZz4gdGhhdCBkaXNwbGF5cyB1cy4gSWYgd2Ugb3BlbiBhbm90aGVyIGRvY3VtZW50IHJlZmVy
ZW5jaW5nIHRoZSBzYW1lIFNWR0ltYWdlIGl0Ci0gICAgLy8gd2lsbCBkaXNwbGF5IHRoZSBkb2N1
bWVudCBhdCBhIHRpbWUgd2hlcmUgYW5pbWF0aW9ucyBhbHJlYWR5IHJhbiAtIGV2ZW4gdGhvdWdo
IGl0IGhhcyBpdHMgb3duIEltYWdlQnVmZmVyLgotICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCBp
bXBsZW1lbnQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRpbWUsIGFuZCBjYW4gTk9UIGdvIGJh
Y2sgaW4gdGltZSwgb25jZSBhbmltYXRpb25zIHN0YXJ0ZWQuCi0gICAgLy8gVGhlcmUncyBubyB3
YXkgdG8gZml4IHRoaXMgYmVzaWRlcyBhdm9pZGluZyBzdHlsZS9hdHRyaWJ1dGUgbXV0YXRpb25z
IGZyb20gU1ZHQW5pbWF0aW9uRWxlbWVudC4KLSAgICBBU1NFUlQoYnVmZmVyKTsKLSAgICBBU1NF
UlQoIXNpemUuaXNFbXB0eSgpKTsKLQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwotICAgIFNWR1NWR0Vs
ZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9j
dW1lbnQoKSktPnJvb3RFbGVtZW50KCk7Ci0gICAgaWYgKCFyb290RWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotICAgIFJlbmRlclNWR1Jvb3QqIHJlbmRlcmVyID0gdG9SZW5kZXJTVkdSb290KHJv
b3RFbGVtZW50LT5yZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBEcmF3IGltYWdlIGF0IHJlcXVlc3RlZCBzaXplLgogICAgIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyID0gaW1hZ2VPYnNlcnZlcigpOwogICAgIEFTU0VSVChvYnNlcnZlcik7
CiAKQEAgLTEyOCwyNyArMTI5LDM4IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVm
ZmVyKEltYWcKICAgICBzZXRJbWFnZU9ic2VydmVyKDApOwogCiAgICAgLy8gRGlzYWJsZSByZXBh
aW50aW5nOyB3ZSBkb24ndCB3YW50IGRlZmVycmVkIHJlcGFpbnRzIHRvIHNjaGVkdWxlIGFueSB0
aW1lcnMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCi0gICAgZnJhbWUtPnZpZXcoKS0+YmVnaW5EaXNh
YmxlUmVwYWludHMoKTsKKyAgICBmcmFtZVZpZXcoKS0+YmVnaW5EaXNhYmxlUmVwYWludHMoKTsK
KworICAgIEludFNpemUgcm91bmRlZENvbnRhaW5lclNpemUgPSByb3VuZGVkSW50U2l6ZShjb250
YWluZXJTaXplKTsKKyAgICBzZXRDb250YWluZXJTaXplKHJvdW5kZWRDb250YWluZXJTaXplKTsK
IAotICAgIEludFNpemUgY29udGFpbmVyU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHNpemUpOwotICAg
IHJlbmRlcmVyLT5zZXRDb250YWluZXJTaXplKGNvbnRhaW5lclNpemUpOwotICAgIGZyYW1lLT52
aWV3KCktPnJlc2l6ZSh0aGlzLT5zaXplKCkpOwotCi0gICAgRmxvYXRTaXplIHNjYWxlZENvbnRh
aW5lclNpemUoc2l6ZSk7Ci0gICAgc2NhbGVkQ29udGFpbmVyU2l6ZS5zY2FsZSh6b29tQW5kU2Nh
bGUpOwotICAgIEludFJlY3QgZGVzdFJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGV4cGFuZGVk
SW50U2l6ZShzY2FsZWRDb250YWluZXJTaXplKSk7Ci0gICAgaWYgKHNob3VsZENsZWFyID09IENs
ZWFySW1hZ2VCdWZmZXIpCi0gICAgICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGVhclJlY3QoZGVz
dFJlY3QpOworICAgIEZsb2F0UmVjdCBzY2FsZWRTcmMgPSBzcmNSZWN0OworICAgIHNjYWxlZFNy
Yy5zY2FsZSgxIC8gem9vbSk7CiAKLSAgICAvLyBEcmF3IFNWRyBvbiB0b3Agb2YgSW1hZ2VCdWZm
ZXIuCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgZGVzdFJlY3QsIEludFJlY3QoSW50UG9p
bnQoKSwgY29udGFpbmVyU2l6ZSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgLy8gQ29tcGVuc2F0ZSBmb3IgdGhlIGNvbnRh
aW5lciBzaXplIHJvdW5kaW5nIGJ5IGFkanVzdGluZyB0aGUgc291cmNlIHJlY3QuCisgICAgRmxv
YXRTaXplIGFkanVzdGVkU3JjU2l6ZSA9IHNjYWxlZFNyYy5zaXplKCk7CisgICAgYWRqdXN0ZWRT
cmNTaXplLnNjYWxlKHJvdW5kZWRDb250YWluZXJTaXplLndpZHRoKCkgLyBjb250YWluZXJTaXpl
LndpZHRoKCksIHJvdW5kZWRDb250YWluZXJTaXplLmhlaWdodCgpIC8gY29udGFpbmVyU2l6ZS5o
ZWlnaHQoKSk7CisgICAgc2NhbGVkU3JjLnNldFNpemUoYWRqdXN0ZWRTcmNTaXplKTsKIAotICAg
IGlmIChmcmFtZS0+dmlldygpLT5uZWVkc0xheW91dCgpKQotICAgICAgICBmcmFtZS0+dmlldygp
LT5sYXlvdXQoKTsKKyAgICBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29sb3JT
cGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CiAKICAgICBzZXRJbWFnZU9ic2VydmVyKG9i
c2VydmVyKTsKIAotICAgIGZyYW1lLT52aWV3KCktPmVuZERpc2FibGVSZXBhaW50cygpOworICAg
IGZyYW1lVmlldygpLT5lbmREaXNhYmxlUmVwYWludHMoKTsKK30KKwordm9pZCBTVkdJbWFnZTo6
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgc2NhbGUsIGZsb2F0IHpvb20sIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpCit7
CisgICAgRmxvYXRTaXplIHpvb21lZENvbnRhaW5lclNpemUoY29udGFpbmVyU2l6ZSk7CisgICAg
em9vbWVkQ29udGFpbmVyU2l6ZS5zY2FsZSh6b29tKTsKKyAgICBGbG9hdFJlY3Qgem9vbWVkQ29u
dGFpbmVyUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHpvb21lZENvbnRhaW5lclNpemUp
OworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGV4cGFuZGVkSW50U2l6ZSh6b29tZWRDb250YWluZXJTaXplKSwgc2NhbGUpOworICAgIGRyYXdG
b3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIHNjYWxlLCB6b29t
LCB6b29tZWRDb250YWluZXJSZWN0LCB6b29tZWRDb250YWluZXJSZWN0LCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOworCisgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwor
ICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJlY3QpOwogfQogCiB2b2lkIFNW
R0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCkBAIC0yNTAsMjEgKzI2MiwzNCBAQCB2b2lk
IFNWR0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9uCiAgICAgICAgIGludHJpbnNpY1Jh
dGlvID0gRmxvYXRTaXplKGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljV2lkdGgsIDApLCBm
bG9hdFZhbHVlRm9yTGVuZ3RoKGludHJpbnNpY0hlaWdodCwgMCkpOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorLy8gRklYTUU6IHN1
cHBvcnQgY2F0Y2hVcElmTmVjZXNzYXJ5Lgordm9pZCBTVkdJbWFnZTo6c3RhcnRBbmltYXRpb24o
Ym9vbCAvKiBjYXRjaFVwSWZOZWNlc3NhcnkgKi8pCiB7Ci0gICAgLy8gRklYTUU6IEluIG9yZGVy
IHRvIHN1cHBvcnQgZHluYW1pYyBTVkdzIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBpbnZhbGlk
YXRlIHRoaXMKLSAgICAvLyBmcmFtZSBjYWNoZSwgb3IgYmV0dGVyIHlldCwgbm90IHVzZSBhIGNh
Y2hlIGZvciB0aWxlZCBkcmF3aW5nIGF0IGFsbCwgaW5zdGVhZAotICAgIC8vIGhhdmluZyBhIHRp
bGVkIGRyYXdpbmcgY2FsbGJhY2sgKGhvcGVmdWxseSBub24tdmlydHVhbCkuCi0gICAgaWYgKCFt
X2ZyYW1lQ2FjaGUpIHsKLSAgICAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUoKSwgMSk7Ci0gICAgICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2Nh
dGUgaW1hZ2UKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBkcmF3KGJ1ZmZlci0+Y29u
dGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAgbV9mcmFtZUNhY2hlID0gYnVmZmVy
LT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7Ci0gICAgfQotICAgIHJldHVybiBtX2ZyYW1l
Q2FjaGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFtX3BhZ2UpCisg
ICAgICAgIHJldHVybjsKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwor
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQq
PihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290RWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIHJvb3RFbGVtZW50LT51bnBhdXNlQW5pbWF0aW9ucygp
OworICAgIHJvb3RFbGVtZW50LT5zZXRDdXJyZW50VGltZSgwKTsKK30KKwordm9pZCBTVkdJbWFn
ZTo6c3RvcEFuaW1hdGlvbigpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsK
KyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIFNWR1NWR0VsZW1l
bnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1l
bnQoKSktPnJvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290RWxlbWVudCkKKyAgICAgICAgcmV0
dXJuOworICAgIHJvb3RFbGVtZW50LT5wYXVzZUFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBTVkdJ
bWFnZTo6cmVzZXRBbmltYXRpb24oKQoreworICAgIHN0b3BBbmltYXRpb24oKTsKKyAgICBzdGFy
dEFuaW1hdGlvbigpOwogfQogCiBib29sIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERh
dGFSZWNlaXZlZCkKQEAgLTMyMiw3ICszNDcsNiBAQCB2b2lkIFNWR0ltYWdlOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPCiAgICAgSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY2hyb21lQ2xpZW50LCAiY2hyb21lQ2xpZW50
Iik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wYWdlLCAicGFnZSIpOwotICAgIGluZm8uYWRkTWVt
YmVyKG1fZnJhbWVDYWNoZSwgImZyYW1lQ2FjaGUiKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDE0MTg3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsK
IGNsYXNzIFNWR0ltYWdlQ2hyb21lQ2xpZW50OworY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7
CiAKIGNsYXNzIFNWR0ltYWdlIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKQEAgLTQ2LDEyICs0
Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdJbWFnZShvYnNl
cnZlcikpOwogICAgIH0KIAotICAgIGVudW0gU2hvdWxkQ2xlYXJCdWZmZXIgewotICAgICAgICBD
bGVhckltYWdlQnVmZmVyLAotICAgICAgICBEb250Q2xlYXJJbWFnZUJ1ZmZlcgotICAgIH07Ci0K
LSAgICB2b2lkIGRyYXdTVkdUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgRmxvYXRT
aXplJiwgZmxvYXQsIFNob3VsZENsZWFyQnVmZmVyKTsKICAgICBSZW5kZXJCb3gqIGVtYmVkZGVk
Q29udGVudEJveCgpIGNvbnN0OwogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3KCkgY29uc3Q7CiAK
QEAgLTYxLDEwICs1NiwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1hdGlvbihib29sIC8qY2F0Y2hVcElmTmVj
ZXNzYXJ5Ki8gPSB0cnVlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1hdGlv
bigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigpIE9WRVJSSURF
OworCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VD
aHJvbWVDbGllbnQ7CisgICAgZnJpZW5kIGNsYXNzIFNWR0ltYWdlRm9yQ29udGFpbmVyOworCiAg
ICAgdmlydHVhbCB+U1ZHSW1hZ2UoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3Q7CkBAIC04NywxMiArODgsMTIgQEAgcHJpdmF0ZToKIAogICAgIFNWR0lt
YWdlKEltYWdlT2JzZXJ2ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
OwotCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIHZvaWQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFNpemUsIGZsb2F0LCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CisgICAgdm9pZCBk
cmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFNpemUs
IGZsb2F0LCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwK
KyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIE93blB0cjxTVkdJbWFnZUNocm9tZUNsaWVudD4g
bV9jaHJvbWVDbGllbnQ7CiAgICAgT3duUHRyPFBhZ2U+IG1fcGFnZTsKLSAgICBSZWZQdHI8SW1h
Z2U+IG1fZnJhbWVDYWNoZTsKIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDE0MTg3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNTAgKzI5LDI3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jv
b3QuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgorI2luY2x1ZGUgIlNWR0ltYWdlRm9yQ29udGFp
bmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGludCB0aW1lVG9L
ZWVwQ2FjaGVkQml0bWFwc0FmdGVyTGFzdFVzZUluU2Vjb25kcyA9IDMwOwotCiBTVkdJbWFnZUNh
Y2hlOjpTVkdJbWFnZUNhY2hlKFNWR0ltYWdlKiBzdmdJbWFnZSkKICAgICA6IG1fc3ZnSW1hZ2Uo
c3ZnSW1hZ2UpCi0gICAgLCBtX3JlZHJhd1RpbWVyKHRoaXMsICZTVkdJbWFnZUNhY2hlOjpyZWRy
YXdUaW1lckZpcmVkKQotICAgICwgbV9jYWNoZUNsZWFyVGltZXIodGhpcywgJlNWR0ltYWdlQ2Fj
aGU6OmNhY2hlQ2xlYXJUaW1lckZpcmVkLCB0aW1lVG9LZWVwQ2FjaGVkQml0bWFwc0FmdGVyTGFz
dFVzZUluU2Vjb25kcykKIHsKICAgICBBU1NFUlQobV9zdmdJbWFnZSk7CiB9CiAKIFNWR0ltYWdl
Q2FjaGU6On5TVkdJbWFnZUNhY2hlKCkKIHsKLSAgICBtX3NpemVBbmRTY2FsZXNNYXAuY2xlYXIo
KTsKLSAgICBjbGVhckJpdG1hcENhY2hlKCk7Ci19Ci0KLXZvaWQgU1ZHSW1hZ2VDYWNoZTo6Y2xl
YXJCaXRtYXBDYWNoZSgpCi17Ci0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBlbmQgPSBtX2lt
YWdlRGF0YU1hcC5lbmQoKTsKLSAgICBmb3IgKEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBt
X2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgLy8gQ2hl
Y2tzIGlmIHRoZSBjbGllbnQgKGl0LT5rZXkpIGlzIHN0aWxsIHZhbGlkLiBUaGUgY2xpZW50IHNo
b3VsZCByZW1vdmUgaXRzZWxmIGZyb20gdGhpcwotICAgICAgICAvLyBjYWNoZSBiZWZvcmUgaXRz
IGVuZCBvZiBsaWZlLCBvdGhlcndpc2UgdGhlIGZvbGxvd2luZyBBU1NFUlQgd2lsbCBjcmFzaCBv
biBwdXJlIHZpcnR1YWwKLSAgICAgICAgLy8gZnVuY3Rpb24gY2FsbCBvciBhIGdlbmVyYWwgY3Jh
c2guCi0gICAgICAgIEFTU0VSVChpdC0+a2V5LT5yZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNo
ZWRJbWFnZUNsaWVudDo6ZXhwZWN0ZWRUeXBlKCkpOwotICAgICAgICBkZWxldGUgaXQtPnZhbHVl
LmJ1ZmZlcjsKLSAgICB9Ci0KICAgICBtX2ltYWdlRGF0YU1hcC5jbGVhcigpOwogfQogCiB2b2lk
IFNWR0ltYWdlQ2FjaGU6OnJlbW92ZUNsaWVudEZyb21DYWNoZShjb25zdCBDYWNoZWRJbWFnZUNs
aWVudCogY2xpZW50KQogewogICAgIEFTU0VSVChjbGllbnQpOwotICAgIG1fc2l6ZUFuZFNjYWxl
c01hcC5yZW1vdmUoY2xpZW50KTsKLQotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBt
X2ltYWdlRGF0YU1hcC5maW5kKGNsaWVudCk7Ci0gICAgaWYgKGl0ID09IG1faW1hZ2VEYXRhTWFw
LmVuZCgpKQotICAgICAgICByZXR1cm47CiAKLSAgICBkZWxldGUgaXQtPnZhbHVlLmJ1ZmZlcjsK
LSAgICBtX2ltYWdlRGF0YU1hcC5yZW1vdmUoaXQpOworICAgIGlmIChtX2ltYWdlRGF0YU1hcC5j
b250YWlucyhjbGllbnQpKQorICAgICAgICBtX2ltYWdlRGF0YU1hcC5yZW1vdmUoY2xpZW50KTsK
IH0KIAogdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29u
c3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6
ZSwgZmxvYXQgY29udGFpbmVyWm9vbSkKQEAgLTgyLDgwICs1OSwzMyBAQCB2b2lkIFNWR0ltYWdl
Q2FjaGU6OnNldENvbnRhaW5lclNpemVGb3JSCiAKICAgICBGbG9hdFNpemUgY29udGFpbmVyU2l6
ZVdpdGhvdXRab29tKGNvbnRhaW5lclNpemUpOwogICAgIGNvbnRhaW5lclNpemVXaXRob3V0Wm9v
bS5zY2FsZSgxIC8gY29udGFpbmVyWm9vbSk7Ci0gICAgbV9zaXplQW5kU2NhbGVzTWFwLnNldChj
bGllbnQsIFNpemVBbmRTY2FsZXMoY29udGFpbmVyU2l6ZVdpdGhvdXRab29tLCBjb250YWluZXJa
b29tKSk7CisKKyAgICBtX2ltYWdlRGF0YU1hcC5zZXQoY2xpZW50LCBTVkdJbWFnZUZvckNvbnRh
aW5lcjo6Y3JlYXRlKG1fc3ZnSW1hZ2UsIGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSwgMSwgY29u
dGFpbmVyWm9vbSkpOwogfQogCisvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHRha2UgaW50byBhY2Nv
dW50IHRoZSBhbmltYXRpb24gdGltZWxpbmUuCiBJbnRTaXplIFNWR0ltYWdlQ2FjaGU6OmltYWdl
U2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAg
ICAgSW50U2l6ZSBpbWFnZVNpemUgPSBtX3N2Z0ltYWdlLT5zaXplKCk7Ci0KICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICByZXR1cm4gaW1hZ2VTaXplOwotICAgIFNpemVBbmRTY2FsZXNNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zaXplQW5kU2NhbGVzTWFwLmZpbmQocmVuZGVyZXIpOwot
ICAgIGlmIChpdCA9PSBtX3NpemVBbmRTY2FsZXNNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBp
bWFnZVNpemU7Ci0KLSAgICBTaXplQW5kU2NhbGVzIHNpemVBbmRTY2FsZXMgPSBpdC0+dmFsdWU7
Ci0gICAgaWYgKCFzaXplQW5kU2NhbGVzLnNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZsb2F0
IHNjYWxlID0gc2l6ZUFuZFNjYWxlcy5zY2FsZTsKLSAgICAgICAgaWYgKCFzY2FsZSkgewotICAg
ICAgICAgICAgUGFnZSogcGFnZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5wYWdlKCk7Ci0gICAg
ICAgICAgICBzY2FsZSA9IHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgKiBwYWdlLT5wYWdlU2Nh
bGVGYWN0b3IoKTsKLSAgICAgICAgfQogCi0gICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChzY2Fs
ZSAqIHNpemVBbmRTY2FsZXMuc2l6ZS53aWR0aCgpKTsKLSAgICAgICAgaW1hZ2VTaXplLnNldEhl
aWdodChzY2FsZSAqIHNpemVBbmRTY2FsZXMuc2l6ZS5oZWlnaHQoKSk7Ci0gICAgfQotICAgIHJl
dHVybiBpbWFnZVNpemU7Ci19CisgICAgSW1hZ2VEYXRhTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1faW1hZ2VEYXRhTWFwLmZpbmQocmVuZGVyZXIpOworICAgIGlmIChpdCA9PSBtX2ltYWdlRGF0
YU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlU2l6ZTsKIAotdm9pZCBTVkdJbWFnZUNh
Y2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKCkKLXsKLSAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9y
IGVuZCA9IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwotICAgIGZvciAoSW1hZ2VEYXRhTWFwOjppdGVy
YXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgaXQtPnZhbHVlLmltYWdlTmVlZHNVcGRhdGUgPSB0cnVlOwotCi0gICAgLy8gQWx3YXlzIHJl
ZHJhdyBvbiBhIHRpbWVyIGJlY2F1c2UgdGhpcyBtZXRob2QgbWF5IGJlIGludm9rZWQgZnJvbSBk
ZXN0cnVjdG9ycyBvZiB0aGluZ3Mgd2UgYXJlIGludGVuZGluZyB0byBkcmF3LgotICAgIGlmICgh
bV9yZWRyYXdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3JlZHJhd1RpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKLX0KLQotdm9pZCBTVkdJbWFnZUNhY2hlOjpyZWRyYXcoKQotewotICAgIEltYWdl
RGF0YU1hcDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJ
bWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIEltYWdlRGF0YSYgZGF0YSA9IGl0LT52YWx1ZTsKLSAgICAg
ICAgaWYgKCFkYXRhLmltYWdlTmVlZHNVcGRhdGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCB3ZSByZWRyYXcgdXNpbmcgb3VyIGV4aXN0
aW5nIEltYWdlQnVmZmVyLgotICAgICAgICBBU1NFUlQoZGF0YS5idWZmZXIpOwotICAgICAgICBB
U1NFUlQoZGF0YS5pbWFnZSk7Ci0gICAgICAgIG1fc3ZnSW1hZ2UtPmRyYXdTVkdUb0ltYWdlQnVm
ZmVyKGRhdGEuYnVmZmVyLCBkYXRhLnNpemVBbmRTY2FsZXMuc2l6ZSwgZGF0YS5zaXplQW5kU2Nh
bGVzLnpvb20gKiBkYXRhLnNpemVBbmRTY2FsZXMuc2NhbGUsIFNWR0ltYWdlOjpDbGVhckltYWdl
QnVmZmVyKTsKLSAgICAgICAgZGF0YS5pbWFnZSA9IGRhdGEuYnVmZmVyLT5jb3B5SW1hZ2UoQ29w
eUJhY2tpbmdTdG9yZSk7Ci0gICAgICAgIGRhdGEuaW1hZ2VOZWVkc1VwZGF0ZSA9IGZhbHNlOwor
ICAgIFJlZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4gaW1hZ2UgPSBpdC0+dmFsdWU7CisgICAg
RmxvYXRTaXplIHNpemUgPSBpbWFnZS0+Y29udGFpbmVyU2l6ZSgpOworICAgIGlmICghc2l6ZS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgc2l6ZS5zY2FsZShpbWFnZS0+em9vbSgpKTsKKyAgICAgICAg
aW1hZ2VTaXplLnNldFdpZHRoKHNpemUud2lkdGgoKSk7CisgICAgICAgIGltYWdlU2l6ZS5zZXRI
ZWlnaHQoc2l6ZS5oZWlnaHQoKSk7CiAgICAgfQotICAgIEFTU0VSVChtX3N2Z0ltYWdlLT5pbWFn
ZU9ic2VydmVyKCkpOwotICAgIG1fc3ZnSW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+YW5pbWF0aW9u
QWR2YW5jZWQobV9zdmdJbWFnZSk7Ci19CiAKLXZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGlt
ZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopCi17Ci0gICAgLy8gV2UgaGF2ZSBubyBndWFy
YW50ZWUgdGhhdCB0aGUgZnJhbWUgZG9lcyBub3QgcmVxdWlyZSBsYXlvdXQgd2hlbiB0aGUgdGlt
ZXIgZmlyZWQuCi0gICAgLy8gU28gYmUgc3VyZSB0byBjaGVjayBhZ2FpbiBpbiBjYXNlIGl0IGlz
IHN0aWxsIG5vdCBzYWZlIHRvIHJ1biByZWRyYXcuCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBtX3N2Z0ltYWdlLT5mcmFtZVZpZXcoKTsKLSAgICBpZiAoZnJhbWVWaWV3ICYmIChmcmFtZVZp
ZXctPm5lZWRzTGF5b3V0KCkgfHwgZnJhbWVWaWV3LT5pc0luTGF5b3V0KCkpKSB7Ci0gICAgICAg
IGlmICghbV9yZWRyYXdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgbV9yZWRyYXdUaW1l
ci5zdGFydE9uZVNob3QoMCk7Ci0gICAgfSBlbHNlCi0gICAgICAgcmVkcmF3KCk7Ci19Ci0KLXZv
aWQgU1ZHSW1hZ2VDYWNoZTo6Y2FjaGVDbGVhclRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RU
aW1lcjxTVkdJbWFnZUNhY2hlPiopCi17Ci0gICAgY2xlYXJCaXRtYXBDYWNoZSgpOworICAgIHJl
dHVybiBpbWFnZVNpemU7CiB9CiAKLUltYWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0
ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK0lt
YWdlKiBTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwpAQCAtMTYzLDU0ICs5MywyOSBAQCBJbWFnZSogU1ZH
SW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtCiAgICAgY29uc3QgQ2FjaGVkSW1hZ2VDbGll
bnQqIGNsaWVudCA9IHJlbmRlcmVyOwogCiAgICAgLy8gVGhlIGNhY2hlIG5lZWRzIHRvIGtub3cg
dGhlIHNpemUgb2YgdGhlIHJlbmRlcmVyIGJlZm9yZSBxdWVyeWluZyBhbiBpbWFnZSBmb3IgaXQu
Ci0gICAgU2l6ZUFuZFNjYWxlc01hcDo6aXRlcmF0b3Igc2l6ZUl0ID0gbV9zaXplQW5kU2NhbGVz
TWFwLmZpbmQocmVuZGVyZXIpOwotICAgIGlmIChzaXplSXQgPT0gbV9zaXplQW5kU2NhbGVzTWFw
LmVuZCgpKQorICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5m
aW5kKHJlbmRlcmVyKTsKKyAgICBpZiAoaXQgPT0gbV9pbWFnZURhdGFNYXAuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAKLSAgICBGbG9hdFNpemUgc2l6ZSA9IHNp
emVJdC0+dmFsdWUuc2l6ZTsKLSAgICBmbG9hdCB6b29tID0gc2l6ZUl0LT52YWx1ZS56b29tOwot
ICAgIGZsb2F0IHNjYWxlID0gc2l6ZUl0LT52YWx1ZS5zY2FsZTsKKyAgICBSZWZQdHI8U1ZHSW1h
Z2VGb3JDb250YWluZXI+IGltYWdlID0gaXQtPnZhbHVlOworICAgIEZsb2F0U2l6ZSBzaXplID0g
aW1hZ2UtPmNvbnRhaW5lclNpemUoKTsKKyAgICBmbG9hdCB6b29tID0gaW1hZ2UtPnpvb20oKTsK
KyAgICBmbG9hdCBzY2FsZSA9IGltYWdlLT5zY2FsZSgpOworICAgIEFTU0VSVCghc2l6ZS5pc0Vt
cHR5KCkpOwogCiAgICAgLy8gRklYTUUgKDg1MzM1KTogVGhpcyBuZWVkcyB0byB0YWtlIENTUyB0
cmFuc2Zvcm0gc2NhbGUgaW50byBhY2NvdW50IGFzIHdlbGwuCi0gICAgUGFnZSogcGFnZSA9IHJl
bmRlcmVyLT5kb2N1bWVudCgpLT5wYWdlKCk7Ci0gICAgaWYgKCFzY2FsZSkKKyAgICAvLyBGSVhN
RTogVGhpcyBuZWVkcyB0byBnZXQgbm90aWZpY2F0aW9ucyBmb3Igc2NhbGUgY2hhbmdlcyBpbnN0
ZWFkIG9mIGludmFsaWRhdGluZyB0aGUgY2FjaGUuCisgICAgaWYgKCFzY2FsZSkgeworICAgICAg
ICBtX2ltYWdlRGF0YU1hcC5yZW1vdmUoaXQpOworICAgICAgICBQYWdlKiBwYWdlID0gcmVuZGVy
ZXItPmRvY3VtZW50KCktPnBhZ2UoKTsKICAgICAgICAgc2NhbGUgPSBwYWdlLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpICogcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7CiAKLSAgICBBU1NFUlQoIXNpemUu
aXNFbXB0eSgpKTsKLQotICAgIC8vIChSZSlzY2hlZHVsZSB0aGUgb25lc2hvdCB0aW1lciB0byB0
aHJvdyBvdXQgYWxsIHRoZSBjYWNoZWQgSW1hZ2VCdWZmZXJzIGlmIHRoZXkgcmVtYWluIHVudXNl
ZCBmb3IgdG9vIGxvbmcuCi0gICAgbV9jYWNoZUNsZWFyVGltZXIucmVzdGFydCgpOwotCi0gICAg
Ly8gTG9va3VwIGltYWdlIGZvciBjbGllbnQgaW4gY2FjaGUgYW5kIGV2ZW50dWFsbHkgdXBkYXRl
IGl0LgotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5maW5k
KGNsaWVudCk7Ci0gICAgaWYgKGl0ICE9IG1faW1hZ2VEYXRhTWFwLmVuZCgpKSB7Ci0gICAgICAg
IEltYWdlRGF0YSYgZGF0YSA9IGl0LT52YWx1ZTsKLQotICAgICAgICAvLyBDb21tb24gY2FzZTog
aW1hZ2Ugc2l6ZSAmIHpvb20gcmVtYWluZWQgdGhlIHNhbWUuCi0gICAgICAgIGlmIChkYXRhLnNp
emVBbmRTY2FsZXMuc2l6ZSA9PSBzaXplICYmIGRhdGEuc2l6ZUFuZFNjYWxlcy56b29tID09IHpv
b20gJiYgZGF0YS5zaXplQW5kU2NhbGVzLnNjYWxlID09IHNjYWxlKQotICAgICAgICAgICAgcmV0
dXJuIGRhdGEuaW1hZ2UuZ2V0KCk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIGltYWdlIHNpemUgZm9y
IHRoZSBjbGllbnQgY2hhbmdlZCwgd2UgaGF2ZSB0byBkZWxldGUgdGhlIGJ1ZmZlciwgcmVtb3Zl
IHRoZSBpdGVtIGZyb20gdGhlIGNhY2hlIGFuZCByZWNyZWF0ZSBpdC4KLSAgICAgICAgZGVsZXRl
IGRhdGEuYnVmZmVyOwotICAgICAgICBtX2ltYWdlRGF0YU1hcC5yZW1vdmUoaXQpOworICAgICAg
ICBpbWFnZSA9IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpjcmVhdGUobV9zdmdJbWFnZSwgc2l6ZSwg
c2NhbGUsIHpvb20pOworICAgICAgICBBU1NFUlQoaW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2lt
YWdlRGF0YU1hcC5hZGQoY2xpZW50LCBpbWFnZSk7CiAgICAgfQogCi0gICAgRmxvYXRTaXplIHNj
YWxlZFNpemUoc2l6ZSk7Ci0gICAgc2NhbGVkU2l6ZS5zY2FsZShzY2FsZSAqIHpvb20pOwotCi0g
ICAgLy8gQ3JlYXRlIGFuZCBjYWNoZSBuZXcgaW1hZ2UgYW5kIGltYWdlIGJ1ZmZlciBhdCByZXF1
ZXN0ZWQgc2l6ZS4KLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG5ld0J1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKHNjYWxlZFNpemUpLCAxKTsKLSAgICBpZiAoIW5l
d0J1ZmZlcikKLSAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKLQotICAgIG1fc3Zn
SW1hZ2UtPmRyYXdTVkdUb0ltYWdlQnVmZmVyKG5ld0J1ZmZlci5nZXQoKSwgc2l6ZSwgc2NhbGUg
KiB6b29tLCBTVkdJbWFnZTo6RG9udENsZWFySW1hZ2VCdWZmZXIpOwotCi0gICAgUmVmUHRyPElt
YWdlPiBuZXdJbWFnZSA9IG5ld0J1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwot
ICAgIEltYWdlKiBuZXdJbWFnZVB0ciA9IG5ld0ltYWdlLmdldCgpOwotICAgIEFTU0VSVChuZXdJ
bWFnZVB0cik7Ci0KLSAgICBtX2ltYWdlRGF0YU1hcC5hZGQoY2xpZW50LCBJbWFnZURhdGEobmV3
QnVmZmVyLmxlYWtQdHIoKSwgbmV3SW1hZ2UucmVsZWFzZSgpLCBTaXplQW5kU2NhbGVzKHNpemUs
IHpvb20sIHNjYWxlKSkpOwotICAgIHJldHVybiBuZXdJbWFnZVB0cjsKKyAgICByZXR1cm4gaW1h
Z2UuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAkocmV2aXNpb24gMTQxODc5KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTM1LDYgKzM0LDcgQEAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFz
cyBDYWNoZWRJbWFnZUNsaWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgU1ZHSW1hZ2U7
CitjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xh
c3MgU1ZHSW1hZ2VDYWNoZSB7CkBAIC00Nyw3NyArNDcsMjAgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFNWR0ltYWdlQ2FjaGUoaW1hZ2UpKTsKICAgICB9CiAKLSAgICBz
dHJ1Y3QgU2l6ZUFuZFNjYWxlcyB7Ci0gICAgICAgIFNpemVBbmRTY2FsZXMoKQotICAgICAgICAg
ICAgOiB6b29tKDEpCi0gICAgICAgICAgICAsIHNjYWxlKDApCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0gICAgICAgIFNpemVBbmRTY2FsZXMoY29uc3QgRmxvYXRTaXplJiBuZXdTaXplLCBmbG9h
dCBuZXdab29tLCBmbG9hdCBuZXdTY2FsZSkKLSAgICAgICAgICAgIDogc2l6ZShuZXdTaXplKQot
ICAgICAgICAgICAgLCB6b29tKG5ld1pvb20pCi0gICAgICAgICAgICAsIHNjYWxlKG5ld1NjYWxl
KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBTaXplQW5kU2NhbGVzKGNvbnN0IEZs
b2F0U2l6ZSYgbmV3U2l6ZSwgZmxvYXQgbmV3Wm9vbSkKLSAgICAgICAgICAgIDogc2l6ZShuZXdT
aXplKQotICAgICAgICAgICAgLCB6b29tKG5ld1pvb20pCi0gICAgICAgICAgICAsIHNjYWxlKDAp
Ci0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEZsb2F0U2l6ZSBzaXplOyAvLyBUaGlz
IGlzIHRoZSBjb250YWluZXIgc2l6ZSB3aXRob3V0IHpvb20uCi0gICAgICAgIGZsb2F0IHpvb207
Ci0gICAgICAgIGZsb2F0IHNjYWxlOyAvLyBBIHNjYWxlIG9mIDAgaW5kaWNhdGVzIHRoYXQgdGhl
IGRlZmF1bHQgc2NhbGUgc2hvdWxkIGJlIHVzZWQuCi0gICAgfTsKLQogICAgIHZvaWQgcmVtb3Zl
Q2xpZW50RnJvbUNhY2hlKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50Kik7CiAKICAgICB2b2lkIHNl
dENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIGNvbnN0
IEludFNpemUmLCBmbG9hdCk7CiAgICAgSW50U2l6ZSBpbWFnZVNpemVGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqKSBjb25zdDsKIAotICAgIEltYWdlKiBsb29rdXBPckNyZWF0ZUJpdG1h
cEltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCBpbWFnZUNv
bnRlbnRDaGFuZ2VkKCk7CisgICAgSW1hZ2UqIGxvb2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUNhY2hlKFNW
R0ltYWdlKik7Ci0gICAgdm9pZCByZWRyYXcoKTsKLSAgICB2b2lkIHJlZHJhd1RpbWVyRmlyZWQo
VGltZXI8U1ZHSW1hZ2VDYWNoZT4qKTsKLSAgICB2b2lkIGNhY2hlQ2xlYXJUaW1lckZpcmVkKERl
ZmVycmFibGVPbmVTaG90VGltZXI8U1ZHSW1hZ2VDYWNoZT4qKTsKLSAgICB2b2lkIGNsZWFyQml0
bWFwQ2FjaGUoKTsKLQotICAgIHN0cnVjdCBJbWFnZURhdGEgewotICAgICAgICBJbWFnZURhdGEo
KQotICAgICAgICAgICAgOiBpbWFnZU5lZWRzVXBkYXRlKGZhbHNlKQotICAgICAgICAgICAgLCBi
dWZmZXIoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgSW1hZ2VEYXRhKEltYWdl
QnVmZmVyKiBuZXdCdWZmZXIsIFBhc3NSZWZQdHI8SW1hZ2U+IG5ld0ltYWdlLCBjb25zdCBTaXpl
QW5kU2NhbGVzJiBuZXdTaXplQW5kU2NhbGVzKQotICAgICAgICAgICAgOiBpbWFnZU5lZWRzVXBk
YXRlKGZhbHNlKQotICAgICAgICAgICAgLCBzaXplQW5kU2NhbGVzKG5ld1NpemVBbmRTY2FsZXMp
Ci0gICAgICAgICAgICAsIGJ1ZmZlcihuZXdCdWZmZXIpCi0gICAgICAgICAgICAsIGltYWdlKG5l
d0ltYWdlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGltYWdlTmVlZHNV
cGRhdGU7Ci0gICAgICAgIFNpemVBbmRTY2FsZXMgc2l6ZUFuZFNjYWxlczsKLQotICAgICAgICBJ
bWFnZUJ1ZmZlciogYnVmZmVyOwotICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwotICAgIH07
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBTaXplQW5k
U2NhbGVzPiBTaXplQW5kU2NhbGVzTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNo
ZWRJbWFnZUNsaWVudCosIEltYWdlRGF0YT4gSW1hZ2VEYXRhTWFwOworICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIFJlZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5l
cj4+IEltYWdlRGF0YU1hcDsKIAogICAgIFNWR0ltYWdlKiBtX3N2Z0ltYWdlOwotICAgIFNpemVB
bmRTY2FsZXNNYXAgbV9zaXplQW5kU2NhbGVzTWFwOwogICAgIEltYWdlRGF0YU1hcCBtX2ltYWdl
RGF0YU1hcDsKLSAgICBUaW1lcjxTVkdJbWFnZUNhY2hlPiBtX3JlZHJhd1RpbWVyOwotICAgIERl
ZmVycmFibGVPbmVTaG90VGltZXI8U1ZHSW1hZ2VDYWNoZT4gbV9jYWNoZUNsZWFyVGltZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNWR0ltYWdlRm9yQ29udGFpbmVyLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRTaXplIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpz
aXplKCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgc2NhbGVkQ29udGFpbmVyU2l6ZShtX2NvbnRh
aW5lclNpemUpOworICAgIHNjYWxlZENvbnRhaW5lclNpemUuc2NhbGUobV96b29tKTsKKyAgICBy
ZXR1cm4gcm91bmRlZEludFNpemUoc2NhbGVkQ29udGFpbmVyU2l6ZSk7Cit9CisKK3ZvaWQgU1ZH
SW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQoreworICAgIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9j
b250YWluZXJTaXplLCBtX3NjYWxlLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3Bh
Y2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworfQorCit2b2lkIFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQoreworICAg
IG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV9zY2FsZSwgbV96b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgY29s
b3JTcGFjZSwgY29tcG9zaXRlT3AsIGRlc3RSZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTVkdJbWFnZUZvckNvbnRhaW5lcl9oCisjZGVmaW5l
IFNWR0ltYWdlRm9yQ29udGFpbmVyX2gKKworI2lmIEVOQUJMRShTVkcpCisKKyNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9h
dFNpemUuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlNWR0ltYWdlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXIgOiBwdWJsaWMg
SW1hZ2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFp
bmVyPiBjcmVhdGUoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNp
emUsIGZsb2F0IHNjYWxlLCBmbG9hdCB6b29tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTVkdJbWFnZUZvckNvbnRhaW5lcihpbWFnZSwgY29udGFpbmVyU2l6ZSwgc2NhbGUs
IHpvb20pKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29u
c3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbnRhaW5lclNpemUoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX2ltYWdlLT51c2VzQ29udGFpbmVyU2l6ZSgpOyB9CisgICAg
dmlydHVhbCBib29sIGhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRp
dmVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhl
aWdodCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExl
bmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUm
IGludHJpbnNpY1JhdGlvKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9pbWFnZS0+Y29tcHV0
ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50
cmluc2ljUmF0aW8pOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CisKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCisgICAgdmlydHVhbCBib29sIGN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisK
KyAgICBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSgpIHsgcmV0dXJuIG1fY29udGFpbmVyU2l6ZTsg
fQorICAgIGZsb2F0IHNjYWxlKCkgeyByZXR1cm4gbV9zY2FsZTsgfQorICAgIGZsb2F0IHpvb20o
KSB7IHJldHVybiBtX3pvb207IH0KKworcHJpdmF0ZToKKyAgICBTVkdJbWFnZUZvckNvbnRhaW5l
cihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
c2NhbGUsIGZsb2F0IHpvb20pCisgICAgICAgIDogbV9pbWFnZShpbWFnZSksIG1fY29udGFpbmVy
U2l6ZShjb250YWluZXJTaXplKSwgbV9zY2FsZShzY2FsZSksIG1fem9vbSh6b29tKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9
IHRydWUpIHsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJl
dHVybiAwOyB9CisKKyAgICBTVkdJbWFnZSogbV9pbWFnZTsKKyAgICBGbG9hdFNpemUgbV9jb250
YWluZXJTaXplOworICAgIGZsb2F0IG1fc2NhbGU7CisgICAgZmxvYXQgbV96b29tOworfTsKK30K
KworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYgLy8gU1ZHSW1hZ2VGb3JDb250YWluZXJf
aAo=
</data>
<flag name="commit-queue"
          id="207212"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187452</attachid>
            <date>2013-02-09 18:29:27 -0800</date>
            <delta_ts>2013-02-09 18:36:11 -0800</delta_ts>
            <desc>Update</desc>
            <filename>106159.2.patch</filename>
            <type>text/plain</type>
            <size>44072</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjM4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNiBAQAorMjAxMy0wMi0wOSAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBiaXRtYXAgU1ZHIGlt
YWdlIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDYxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNhY2hpbmcgb2YgU1ZHIGJpdG1hcHMgc28gU1ZHIGlt
YWdlcyBhcmUgcmVuZGVyZWQgZGlyZWN0bHkuIFRoaXMKKyAgICAgICAgZW5hYmxlcyBXZWJLaXQg
dG8gcGFzcyB0aGUgSUUgQ2hhbGtib2FyZCBkZW1vOgorICAgICAgICBodHRwOi8vaWUubWljcm9z
b2Z0LmNvbS90ZXN0ZHJpdmUvUGVyZm9ybWFuY2UvQ2hhbGtib2FyZC8KKworICAgICAgICBUaGUg
U1ZHIGltYWdlIGNhY2hlIGhhZCBzZXZlcmFsIHNob3J0Y29taW5nczoKKyAgICAgICAgICAgICog
VGhlIGJpdG1hcCBjYWNoZSBwcmV2ZW50ZWQgdmlld3BvcnQgcmVuZGVyaW5nLiAoV0sxMDQ2OTMp
CisgICAgICAgICAgICAqIEJpdG1hcCBtZW1vcnkgdXNhZ2Ugd2FzIGhpZ2guIChXSzEwNjQ4NCkK
KyAgICAgICAgICAgICogQ2FjaGluZyBhbmltYXRpbmcgaW1hZ2VzIHdhcyBleHBlbnNpdmUuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgcmVtb3ZlcyBhbG1vc3QgYWxsIG9mIHRoZSBTVkdJbWFnZUNh
Y2hlIGltcGxlbWVudGF0aW9uLCByZXBsYWNpbmcgaXQgd2l0aAorICAgICAgICBkaXJlY3RseS1y
ZW5kZXJlZCBTVkcuIEluc3RlYWQgb2YgY2FjaGluZyBiaXRtYXBzLCBhbiBTVkdJbWFnZUZvckNv
bnRhaW5lciBpcyBjYWNoZWQgd2hpY2gKKyAgICAgICAgaXMgYSB0aGluIHdyYXBwZXIgYXJvdW5k
IGFuIFNWRyBpbWFnZSB3aXRoIHRoZSBhc3NvY2lhdGVkIGNvbnRhaW5lciBzaXplIGFuZCBzY2Fs
ZS4KKyAgICAgICAgV2hlbiByZW5kZXJpbmcgcGF0dGVybnMgKGUuZy4sIHRpbGVkIGJhY2tncm91
bmRzKSwgYSB0ZW1wb3JhcnkgYml0bWFwIGlzIHVzZWQgZm9yCisgICAgICAgIHBlcmZvcm1hbmNl
LiBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgdGhlIHJlZHJhdyB0aW1lciBvZiB0aGUgb2xkIGNh
Y2hlLCBpbnN0ZWFkIHJlbHlpbmcKKyAgICAgICAgb24gdGhlIFNWRyBpbWFnZSB0byBub3RpZnkg
Y2xpZW50cyBpZiB0aGUgaW1hZ2UgY2hhbmdlcyAoZS5nLiwgZHVyaW5nIGFuaW1hdGlvbnMpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgY292ZXJlZCB3aXRoIGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpsb29rdXBPckNyZWF0ZUltYWdl
Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KToKKworICAgICAgICAg
ICAgU1ZHIGltYWdlcyBhcmUgbm8gbG9uZ2VyIHNwZWNpYWwtY2FzZWQgaGVyZS4gV2hlbiB0aGUg
U1ZHIGltYWdlIGNoYW5nZXMsIHVzZXJzIGFyZQorICAgICAgICAgICAgbm90aWZpZWQgdGhyb3Vn
aCB0aGlzIGZ1bmN0aW9uLCBhbmQgdXNlcnMgY2FuIHRoZW4gcmVxdWVzdCB0aGVpciBjb250ZW50
IHRvIGJlIHJlZHJhd24uCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorCisgICAgICAgICAgICBkcmF3
Rm9yQ29udGFpbmVyIGxheXMgb3V0IHRoZSBTVkcgY29udGVudCBmb3IgYSBzcGVjaWZpYyBjb250
YWluZXIgc2l6ZSBhbmQgcmVuZGVycyBpdC4KKyAgICAgICAgICAgIFRoZSBsb2dpYyBpcyBmYWly
bHkgc3RyYWlnaHRmb3J3YXJkIGJ1dCBhIG5vdGUgYWJvdXQgdGhlIHNjYWxlcyBhbmQgem9vbXMg
aGVyZToKKyAgICAgICAgICAgICAgICB0aGUgZGVzdGluYXRpb24gcmVjdCBwYXJhbWV0ZXIgaXMg
em9vbWVkIGJ1dCBub3Qgc2NhbGVkCisgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSByZWN0IHBh
cmFtZXRlciBpcyB6b29tZWQgYnV0IG5vdCBzY2FsZWQKKyAgICAgICAgICAgICAgICB0aGUgY29u
dGV4dCBpcyBzY2FsZWQgYnV0IG5vdCB6b29tZWQKKyAgICAgICAgICAgIFNWR0ltYWdlOjpkcmF3
KC4uLikgb25seSBhY2NlcHRzIGEgc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWN0IGJ1dCBkb2Vz
IG5vdCBjb25zaWRlcgorICAgICAgICAgICAgc2NhbGUgb3Igem9vbS4gVGhlcmVmb3JlLCBkcmF3
Rm9yQ29udGFpbmVyIHJlbW92ZXMgdGhlIHpvb20gY29tcG9uZW50IGZyb20gdGhlIHNvdXJjZQor
ICAgICAgICAgICAgc28gU1ZHSW1hZ2U6OmRyYXcoLi4uKSB3aWxsIGRyYXcgZnJvbSB0aGUgcHJl
LXpvb20gc291cmNlIHRvIHRoZSBwb3N0LXpvb20gZGVzdGluYXRpb24uCisKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFp
bmVyKToKKworICAgICAgICAgICAgRm9yIHBlcmZvcm1hbmNlLCBkcmF3UGF0dGVybkZvckNvbnRh
aW5lciByZW5kZXJzIHRoZSBTVkcgY29udGVudCBvbnRvIGEgYml0bWFwLCB0aGVuCisgICAgICAg
ICAgICBoYXMgdGhlIGJpdG1hcCBpbWFnZSBkcmF3IHRoZSBwYXR0ZXJuLiBUaGlzIGlzIG5lY2Vz
c2FyeSBiZWNhdXNlIGRyYXdQYXR0ZXJuIGlzIHVzZWQKKyAgICAgICAgICAgIGZvciB0aWxpbmcu
CisKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6c3RvcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU1ZHSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9TVkdJbWFnZUNhY2hlLmNwcDoKKworICAgICAgICAgICAgSW5zdGVhZCBvZiBzdG9yaW5n
IGEgU2l6ZUFuZFNjYWxlcyB2YWx1ZXMgZm9yIGVhY2ggcmVuZGVyZXIsIGEgU1ZHSW1hZ2VGb3JD
b250YWluZXIKKyAgICAgICAgICAgIGlzIHN0b3JlZCB3aGljaCBpcyBqdXN0IGEgdGhpbiB3cmFw
cGVyIGFyb3VuZCBhbiBTVkcgaW1hZ2UgdGhhdCBjb250YWlucyBjb250YWluZXIKKyAgICAgICAg
ICAgIHNpemluZyBpbmZvcm1hdGlvbi4gQnkgY29tYmluaW5nIHRoZSBpbWFnZSBhbmQgc2l6ZSBp
bmZvcm1hdGlvbiwgdGhlIHR3byBtYXBzIG9mCisgICAgICAgICAgICBTVkdJbWFnZUNhY2hlIGhh
dmUgYmVlbiBtZXJnZWQgaW50byBvbmUuCisKKyAgICAgICAgICAgIFRvIG1ha2UgdGhpcyBwYXRj
aCBlYXNpZXIgdG8gcmV2aWV3LCBTVkdJbWFnZUNhY2hlIHN0aWxsIGV4aXN0cyBhbmQgd29ya3Mg
c2ltaWxhciB0bworICAgICAgICAgICAgaG93IGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBOb3cs
IFNWR0ltYWdlQ2FjaGUgc2ltcGx5IHN0b3JlcyB0aGUgU1ZHSW1hZ2VGb3JDb250YWluZXJzLgor
ICAgICAgICAgICAgSW4gYSBmb2xsb3d1cCBwYXRjaCBpdCB3aWxsIGJlIHJlbW92ZWQuCisKKyAg
ICAgICAgICAgIE5vdGU6IHRoZSByZWRyYXcgdGltZXIgb2YgU1ZHSW1hZ2VDYWNoZSBoYXMgYmVl
biByZW1vdmVkIGJlY2F1c2UgYW5pbWF0aW9uCisgICAgICAgICAgICBpbnZhbGlkYXRpb24gaXMg
bm93IHByb3Blcmx5IHByb3BhZ2F0ZWQgYmFjayB0byB0aGUgaW1hZ2UgY2xpZW50cy4KKworICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpTVkdJbWFn
ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6On5TVkdJbWFnZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlbW92ZUNsaWVudEZyb21DYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9y
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VTaXplRm9y
UmVuZGVyZXIpOgorCisgICAgICAgICAgICBQcmV2aW91c2x5LCB0aGlzIGZ1bmN0aW9uIHJldHVy
bmVkIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZSB3aGljaCB3YXMgaW5jb3JyZWN0LiBUaGUgaW1hZ2UK
KyAgICAgICAgICAgIHNpemUgaXMgdXNlZCBieSBjbGllbnRzIHN1Y2ggYXMgR3JhcGhpY3NDb250
ZXh0MkQgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2Ugc2l6ZQorICAgICAgICAgICAgZm9yIGRyYXdp
bmcgdGhlIGltYWdlLiBkcmF3KCkgYWNjZXB0cyB6b29tZWQgYnV0IG5vdCBzY2FsZWQgdmFsdWVz
LCBzbyB0aGlzIGhhcyBiZWVuCisgICAgICAgICAgICBjaGFuZ2VkLgorCisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIpOgorCisg
ICAgICAgICAgICBBIEZJWE1FIGhhcyBiZWVuIGFkZGVkIGhlcmUgdG8gbm90IHNldCB0aGUgc2Nh
bGUgb24gZXZlcnkgbG9va3VwLiBUaGlzIGNhbiBiZSBpbXByb3ZlZAorICAgICAgICAgICAgYnkg
c2V0dGluZyB0aGUgcGFnZSBzY2FsZSBmYWN0b3IgaW4gc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRl
cmVyKCkgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZUNhY2hlKToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOiBBZGRlZC4K
KworICAgICAgICAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIgaXMgYSB0aGluIHdyYXBwZXIgYXJv
dW5kIGFuIFNWRyBpbWFnZS4gVGhlIGxpZmV0aW1lIG9mIHRoZQorICAgICAgICAgICAgU1ZHSW1h
Z2Ugd2lsbCBiZSBsb25nZXIgdGhhbiB0aGUgaW1hZ2UgY2FjaGUuCisKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUpOgorCisg
ICAgICAgICAgICBUaGlzIGlzIHRoZSBvbmx5IGxvZ2ljIGluIFNWR0ltYWdlRm9yQ29udGFpbmVy
LiBUaGUgc2l6ZSByZXR1cm5lZCBuZWVkcyB0byBiZSB6b29tZWQKKyAgICAgICAgICAgIGJ1dCBu
b3Qgc2NhbGVkIGJlY2F1c2UgaXQgaXMgdXNlZCAoZS5nLiwgYnkgUmVuZGVySW1hZ2UpIHRvIHBh
c3MgYmFjayBpbnRvIGRyYXcoKSB3aGljaAorICAgICAgICAgICAgdGFrZXMgem9vbWVkIGJ1dCBu
b3Qgc2NhbGVkIHZhbHVlcy4KKworICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWlu
ZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0ltYWdlRm9yQ29udGFpbmVy
KToKKworICAgICAgICAgICAgSW4gYSBmdXR1cmUgcGF0Y2ggU1ZHSW1hZ2VGb3JDb250YWluZXIg
Y2FuIGJlIG1hZGUgaW1tdXRhYmxlIGJ1dCB3aXRob3V0IGEgcmVmYWN0b3JpbmcKKyAgICAgICAg
ICAgIGZvciBub3Qgc2V0dGluZyB0aGUgcGFnZSBzY2FsZSBmYWN0b3IgaW4gU1ZHSW1hZ2VDYWNo
ZTo6bG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyLAorICAgICAgICAgICAgc2V0dGVycyBh
cmUgbmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpjb250YWluZXJT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpwYWdlU2NhbGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Onpvb20pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFpvb20pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFBhZ2VTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZUZvckNvbnRhaW5lcjo6U1ZHSW1hZ2VGb3JDb250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZGVjb2RlZFNpemUpOgorCiAyMDEzLTAy
LTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtN
YWNdIERvIG5vdCBhc3N1bWUgTWVkaWFBY2Nlc3NpYmlsaXR5IGZyYW1ld29yayBpcyBpbnN0YWxs
ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjUwMyw2ICsyNTAzLDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAog
ICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAorICAgIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAKIAogICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCiAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC00OTE3LDYgKzQ5MTcs
OCBAQCB3ZWJjb3JlX3N2Z19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VDYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9t
ZUNsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlz
aW9uIDE0MjMyMykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkK
QEAgLTI2NDUsNiArMjY0NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5oIFwKICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBcCiAgICAgc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBcCisgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5
VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmYuaCBcCkBAIC0zNzY0LDYgKzM3NjUsNyBAQCBlbmFibGU/KFNWRykgewogICAgICAgICBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNo
ZS5jcHAgXAorICAgICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIFwK
ICAgICAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgXAog
ICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAg
XAogICAgICAgICBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTUxMjUsNiArNTEyNSw4IEBACiAgICAgICAgICAgICAnc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oJywK
KyAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCcsCisgICAg
ICAgICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCcsCiAgICAgICAg
ICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAnLAogICAgICAgICAgICAg
J3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaCcsCiAgICAgICAgICAgICAnc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTQyMzIzKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTc0NTA5LDYgKzc0NTA5LDE0IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNz
XFNWR0ltYWdlQ2hyb21lQ2xpZW50LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcZ3JhcGhpY3NcU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cc3ZnXGdyYXBoaWNzXFNWR0ltYWdlRm9yQ29udGFpbmVyLmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CiAJCQkJPEZpbHRlcgogCQkJCQlOYW1lPSJmaWx0ZXJzIgogCQkJCQk+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNDIzMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw2ICsyMjEsOCBAQAogCQkwOEYyRjAwQTEy
MTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8q
IFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4
NTlEMjE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgKi87IH07CiAJCTA4Rjg1
OUQ1MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyog
U1ZHSW1hZ2VDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTA4Rjg1OUQ0MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4
NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwICovOyB9Owor
CQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4Rjg1OUQzMTQ2M0Y5
Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RkIxN0MxMTNCQzdFOTEwMDA0MDA4NiAv
KiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCAqLzsgfTsKIAkJMDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4
IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIzRjgzMTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDhGRTBCQzUxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03NDc5LDYgKzc0ODEsOCBAQAogCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyog
UmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4Rjg1
OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ltYWdlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUNhY2hlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4Rjg1OUQyMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUZvckNvbnRhaW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDhGQjNGODMxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZFMEJDNDEy
N0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAzNzIsNiArMjAzNzYsOCBAQAog
CQkJCUIyNTU5OTBDMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdJbWFnZS5oICovLAogCQkJCTA4Rjg1
OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCAqLywKIAkJCQkwOEY4NTlE
MzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovLAorCQkJCTA4Rjg1OUQyMTQ2
M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgKi8sCisJCQkJMDhGODU5
RDMxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggKi8sCiAJCQkJQUFD
MDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGdyYXBoaWNzOwpAQCAtMjU5OTgsNiArMjYwMDQsNyBAQAogCQkJCTY1MEZC
RjJCMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyNTU5OUE0MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDhGODU5RDUxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA4Rjg1OUQ1MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRh
aW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFDMDhDRUYxNUY5MzNENjAwRjFFMTg4IC8qIFNW
R0ltYWdlQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EyRDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjhDNkEy
QTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MjkyNjAsNiArMjkyNjcsNyBAQAogCQkJCTY1MEZCRjJBMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdI
S2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5QTMwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4Rjg1OUQ0MTQ2M0Y5Q0Qw
MDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4Rjg1OUQ0
MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0EyQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyOEM2QTI5MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdJbWFnZUxv
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyRjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHTGFuZ1NwYWNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjQsNyArMTY0LDcgQEAgaW5saW5lIEltYWdlKiBDYWNoZWRJbWFnZTo6bG9va3VwT3JDcmVhdAog
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1faW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKICAgICAg
ICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7Ci0gICAgSW1hZ2UqIHVzZUltYWdlID0gbV9zdmdJbWFn
ZUNhY2hlLT5sb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwor
ICAgIEltYWdlKiB1c2VJbWFnZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+bG9va3VwT3JDcmVhdGVJbWFn
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAodXNlSW1hZ2UgPT0gSW1hZ2U6Om51bGxJ
bWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKICAgICByZXR1cm4gdXNlSW1h
Z2U7CkBAIC0zMTIsOSArMzEyLDYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Y2hlY2tTaG91bGRQYWlu
dEJyb2tlbgogdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXIoKQogewogICAgIGRlc3Ryb3lEZWNvZGVk
RGF0YSgpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgbV9zdmdJbWFnZUNhY2hlLmNsZWFyKCk7Ci0j
ZW5kaWYKICAgICBjbGVhckltYWdlKCk7CiAgICAgbV9wZW5kaW5nQ29udGFpbmVyU2l6ZVJlcXVl
c3RzLmNsZWFyKCk7CiAgICAgc2V0RW5jb2RlZFNpemUoMCk7CkBAIC00ODQsMTMgKzQ4MSw2IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW0KIHsKICAgICBpZiAoIWlt
YWdlIHx8IGltYWdlICE9IG1faW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoU1ZH
KQotICAgIC8vIFdlIGhhdmUgdG8gdXBkYXRlIHRoZSBjYWNoZWQgSW1hZ2VCdWZmZXJzIGlmIHRo
ZSB1bmRlcmx5aW5nIGNvbnRlbnQgY2hhbmdlZC4KLSAgICBpZiAoaW1hZ2UtPmlzU1ZHSW1hZ2Uo
KSkgewotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUtPmltYWdlQ29udGVudENoYW5nZWQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgogICAgIG5vdGlmeU9ic2VydmVycygmcmVjdCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2
aXNpb24gMTQyMzIzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgor
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVk
ZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdJbWFnZUNocm9tZUNsaWVudC5oIgpAQCAt
NTksMTAgKzYwLDI2IEBAIFNWR0ltYWdlOjp+U1ZHSW1hZ2UoKQogICAgIEFTU0VSVCghbV9jaHJv
bWVDbGllbnQgfHwgIW1fY2hyb21lQ2xpZW50LT5pbWFnZSgpKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZTo6c2V0Q29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJikKK3ZvaWQgU1ZHSW1hZ2U6OnNldENv
bnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICAvLyBTVkdJbWFnZUNhY2hl
IGFscmVhZHkgaW50ZXJjZXB0ZWQgdGhpcyBjYWxsLCBhcyBpdCBzdG9yZXMgJiBjYWNoZXMgdGhl
IGRlc2lyZWQgY29udGFpbmVyIHNpemVzICYgem9vbSBsZXZlbHMuCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgaWYgKCFtX3BhZ2UgfHwgIXVzZXNDb250YWluZXJTaXplKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Cisg
ICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+
KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50
KQorICAgICAgICByZXR1cm47CisgICAgUmVuZGVyU1ZHUm9vdCogcmVuZGVyZXIgPSB0b1JlbmRl
clNWR1Jvb3Qocm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lVmlldygpOworICAg
IHZpZXctPnJlc2l6ZSh0aGlzLT5zaXplKCkpOworICAgIC8vIElmIGEgbGF5b3V0IGlzIHBlbmRp
bmcsIHRyaWdnZXIgaXQgbm93IHNvIHRoYXQgbm90aWZpY2F0aW9ucyBnZXQgc2VudC4KKyAgICBp
ZiAodmlldy0+bmVlZHNMYXlvdXQoKSkKKyAgICAgICAgdmlldy0+bGF5b3V0KCk7CisKKyAgICBy
ZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShzaXplKTsKIH0KIAogSW50U2l6ZSBTVkdJbWFnZTo6
c2l6ZSgpIGNvbnN0CkBAIC05OSwyOCArMTE2LDEyIEBAIEludFNpemUgU1ZHSW1hZ2U6OnNpemUo
KSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKDMwMCwgMTUwKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCB6b29tQW5kU2NhbGUsIFNob3VsZENsZWFyQnVmZmVyIHNob3VsZENs
ZWFyKQordm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkg
d2l0aCBhbmltYXRpb25zLiBJZiBhbiBpbWFnZSBjb250YWlucyBhbmltYXRpb25zLCB0aGF0IHNh
eSBydW4gZm9yIDIgc2Vjb25kcywKLSAgICAvLyBhbmQgd2UgY3VycmVudGx5IGhhdmUgb25lIDxp
bWc+IHRoYXQgZGlzcGxheXMgdXMuIElmIHdlIG9wZW4gYW5vdGhlciBkb2N1bWVudCByZWZlcmVu
Y2luZyB0aGUgc2FtZSBTVkdJbWFnZSBpdAotICAgIC8vIHdpbGwgZGlzcGxheSB0aGUgZG9jdW1l
bnQgYXQgYSB0aW1lIHdoZXJlIGFuaW1hdGlvbnMgYWxyZWFkeSByYW4gLSBldmVuIHRob3VnaCBp
dCBoYXMgaXRzIG93biBJbWFnZUJ1ZmZlci4KLSAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgaW1w
bGVtZW50IFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRUaW1lLCBhbmQgY2FuIE5PVCBnbyBiYWNr
IGluIHRpbWUsIG9uY2UgYW5pbWF0aW9ucyBzdGFydGVkLgotICAgIC8vIFRoZXJlJ3Mgbm8gd2F5
IHRvIGZpeCB0aGlzIGJlc2lkZXMgYXZvaWRpbmcgc3R5bGUvYXR0cmlidXRlIG11dGF0aW9ucyBm
cm9tIFNWR0FuaW1hdGlvbkVsZW1lbnQuCi0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgQVNTRVJU
KCFzaXplLmlzRW1wdHkoKSk7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVt
ZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3Vt
ZW50KCkpLT5yb290RWxlbWVudCgpOwotICAgIGlmICghcm9vdEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLSAgICBSZW5kZXJTVkdSb290KiByZW5kZXJlciA9IHRvUmVuZGVyU1ZHUm9vdChyb290
RWxlbWVudC0+cmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gRHJhdyBpbWFnZSBhdCByZXF1ZXN0ZWQgc2l6ZS4KICAgICBJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlciA9IGltYWdlT2JzZXJ2ZXIoKTsKICAgICBBU1NFUlQob2JzZXJ2ZXIpOwog
CkBAIC0xMjgsMjcgKzEyOSwzOCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZl
cihJbWFnCiAgICAgc2V0SW1hZ2VPYnNlcnZlcigwKTsKIAogICAgIC8vIERpc2FibGUgcmVwYWlu
dGluZzsgd2UgZG9uJ3Qgd2FudCBkZWZlcnJlZCByZXBhaW50cyB0byBzY2hlZHVsZSBhbnkgdGlt
ZXJzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgotICAgIGZyYW1lLT52aWV3KCktPmJlZ2luRGlzYWJs
ZVJlcGFpbnRzKCk7CisgICAgZnJhbWVWaWV3KCktPmJlZ2luRGlzYWJsZVJlcGFpbnRzKCk7CisK
KyAgICBJbnRTaXplIHJvdW5kZWRDb250YWluZXJTaXplID0gcm91bmRlZEludFNpemUoY29udGFp
bmVyU2l6ZSk7CisgICAgc2V0Q29udGFpbmVyU2l6ZShyb3VuZGVkQ29udGFpbmVyU2l6ZSk7CiAK
LSAgICBJbnRTaXplIGNvbnRhaW5lclNpemUgPSByb3VuZGVkSW50U2l6ZShzaXplKTsKLSAgICBy
ZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKTsKLSAgICBmcmFtZS0+dmll
dygpLT5yZXNpemUodGhpcy0+c2l6ZSgpKTsKLQotICAgIEZsb2F0U2l6ZSBzY2FsZWRDb250YWlu
ZXJTaXplKHNpemUpOwotICAgIHNjYWxlZENvbnRhaW5lclNpemUuc2NhbGUoem9vbUFuZFNjYWxl
KTsKLSAgICBJbnRSZWN0IGRlc3RSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBleHBhbmRlZElu
dFNpemUoc2NhbGVkQ29udGFpbmVyU2l6ZSkpOwotICAgIGlmIChzaG91bGRDbGVhciA9PSBDbGVh
ckltYWdlQnVmZmVyKQotICAgICAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xlYXJSZWN0KGRlc3RS
ZWN0KTsKKyAgICBGbG9hdFJlY3Qgc2NhbGVkU3JjID0gc3JjUmVjdDsKKyAgICBzY2FsZWRTcmMu
c2NhbGUoMSAvIHpvb20pOwogCi0gICAgLy8gRHJhdyBTVkcgb24gdG9wIG9mIEltYWdlQnVmZmVy
LgotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIGRlc3RSZWN0LCBJbnRSZWN0KEludFBvaW50
KCksIGNvbnRhaW5lclNpemUpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGVOb3JtYWwpOworICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBjb250YWlu
ZXIgc2l6ZSByb3VuZGluZyBieSBhZGp1c3RpbmcgdGhlIHNvdXJjZSByZWN0LgorICAgIEZsb2F0
U2l6ZSBhZGp1c3RlZFNyY1NpemUgPSBzY2FsZWRTcmMuc2l6ZSgpOworICAgIGFkanVzdGVkU3Jj
U2l6ZS5zY2FsZShyb3VuZGVkQ29udGFpbmVyU2l6ZS53aWR0aCgpIC8gY29udGFpbmVyU2l6ZS53
aWR0aCgpLCByb3VuZGVkQ29udGFpbmVyU2l6ZS5oZWlnaHQoKSAvIGNvbnRhaW5lclNpemUuaGVp
Z2h0KCkpOworICAgIHNjYWxlZFNyYy5zZXRTaXplKGFkanVzdGVkU3JjU2l6ZSk7CiAKLSAgICBp
ZiAoZnJhbWUtPnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+
bGF5b3V0KCk7CisgICAgZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbG9yU3Bh
Y2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNl
cnZlcik7CiAKLSAgICBmcmFtZS0+dmlldygpLT5lbmREaXNhYmxlUmVwYWludHMoKTsKKyAgICBm
cmFtZVZpZXcoKS0+ZW5kRGlzYWJsZVJlcGFpbnRzKCk7Cit9CisKK3ZvaWQgU1ZHSW1hZ2U6OmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgem9vbSwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LAorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkK
K3sKKyAgICBGbG9hdFNpemUgem9vbWVkQ29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKTsKKyAg
ICB6b29tZWRDb250YWluZXJTaXplLnNjYWxlKHpvb20pOworICAgIEZsb2F0UmVjdCB6b29tZWRD
b250YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgem9vbWVkQ29udGFpbmVyU2l6
ZSk7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoZXhwYW5kZWRJbnRTaXplKHpvb21lZENvbnRhaW5lclNpemUpLCBwYWdlU2NhbGUpOworICAg
IGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20s
IHpvb21lZENvbnRhaW5lclJlY3QsIHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisKKyAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7Cisg
ICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCk7CiB9CiAKIHZvaWQgU1ZH
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKQEAgLTI1MCwyMSArMjYyLDM0IEBAIHZvaWQg
U1ZHSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb24KICAgICAgICAgaW50cmluc2ljUmF0
aW8gPSBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChpbnRyaW5zaWNXaWR0aCwgMCksIGZs
b2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljSGVpZ2h0LCAwKSk7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCisvLyBGSVhNRTogc3Vw
cG9ydCBjYXRjaFVwSWZOZWNlc3NhcnkuCit2b2lkIFNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbihi
b29sIC8qIGNhdGNoVXBJZk5lY2Vzc2FyeSAqLykKIHsKLSAgICAvLyBGSVhNRTogSW4gb3JkZXIg
dG8gc3VwcG9ydCBkeW5hbWljIFNWR3Mgd2UgbmVlZCB0byBoYXZlIGEgd2F5IHRvIGludmFsaWRh
dGUgdGhpcwotICAgIC8vIGZyYW1lIGNhY2hlLCBvciBiZXR0ZXIgeWV0LCBub3QgdXNlIGEgY2Fj
aGUgZm9yIHRpbGVkIGRyYXdpbmcgYXQgYWxsLCBpbnN0ZWFkCi0gICAgLy8gaGF2aW5nIGEgdGls
ZWQgZHJhd2luZyBjYWxsYmFjayAoaG9wZWZ1bGx5IG5vbi12aXJ0dWFsKS4KLSAgICBpZiAoIW1f
ZnJhbWVDYWNoZSkgewotICAgICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSgpLCAxKTsKLSAgICAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0
ZSBpbWFnZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250
ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICBtX2ZyYW1lQ2FjaGUgPSBidWZmZXIt
PmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fZnJhbWVD
YWNoZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Cisg
ICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+
KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50
KQorICAgICAgICByZXR1cm47CisgICAgcm9vdEVsZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7
CisgICAgcm9vdEVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKDApOworfQorCit2b2lkIFNWR0ltYWdl
OjpzdG9wQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgU1ZHU1ZHRWxlbWVu
dCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVu
dCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1
cm47CisgICAgcm9vdEVsZW1lbnQtPnBhdXNlQW5pbWF0aW9ucygpOworfQorCit2b2lkIFNWR0lt
YWdlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAgc3RvcEFuaW1hdGlvbigpOworICAgIHN0YXJ0
QW5pbWF0aW9uKCk7CiB9CiAKIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQpAQCAtMzIyLDcgKzM0Nyw2IEBAIHZvaWQgU1ZHSW1hZ2U6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU8KICAgICBJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jaHJvbWVDbGllbnQsICJjaHJvbWVDbGllbnQi
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2UsICJwYWdlIik7Ci0gICAgaW5mby5hZGRNZW1i
ZXIobV9mcmFtZUNhY2hlLCAiZnJhbWVDYWNoZSIpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQyMzIzKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94Owog
Y2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CitjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsK
IAogY2xhc3MgU1ZHSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgpAQCAtNDYsMTIgKzQ3
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ltYWdlKG9ic2Vy
dmVyKSk7CiAgICAgfQogCi0gICAgZW51bSBTaG91bGRDbGVhckJ1ZmZlciB7Ci0gICAgICAgIENs
ZWFySW1hZ2VCdWZmZXIsCi0gICAgICAgIERvbnRDbGVhckltYWdlQnVmZmVyCi0gICAgfTsKLQot
ICAgIHZvaWQgZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCwgU2hvdWxkQ2xlYXJCdWZmZXIpOwogICAgIFJlbmRlckJveCogZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3Q7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKIApA
QCAtNjEsMTAgKzU2LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVX
aWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0
OwogCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKGJvb2wgLypjYXRjaFVwSWZOZWNl
c3NhcnkqLyA9IHRydWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9u
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgT1ZFUlJJREU7
CisKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNo
cm9tZUNsaWVudDsKKyAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CisKICAg
ICB2aXJ0dWFsIH5TVkdJbWFnZSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdDsKQEAgLTg3LDEyICs4OCwxMiBAQCBwcml2YXRlOgogCiAgICAgU1ZHSW1h
Z2UoSW1hZ2VPYnNlcnZlciopOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7
Ci0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1BhdHRl
cm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwg
ZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsCisgICAgICAg
IGNvbnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0Jik7CiAKICAgICBPd25QdHI8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+IG1fY2hyb21l
Q2xpZW50OwogICAgIE93blB0cjxQYWdlPiBtX3BhZ2U7Ci0gICAgUmVmUHRyPEltYWdlPiBtX2Zy
YW1lQ2FjaGU7CiB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDUwICsy
OSwyNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAj
aW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdJbWFnZUZvckNvbnRhaW5lci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBpbnQgdGltZVRvS2VlcENhY2hl
ZEJpdG1hcHNBZnRlckxhc3RVc2VJblNlY29uZHMgPSAzMDsKLQogU1ZHSW1hZ2VDYWNoZTo6U1ZH
SW1hZ2VDYWNoZShTVkdJbWFnZSogc3ZnSW1hZ2UpCiAgICAgOiBtX3N2Z0ltYWdlKHN2Z0ltYWdl
KQotICAgICwgbV9yZWRyYXdUaW1lcih0aGlzLCAmU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJG
aXJlZCkKLSAgICAsIG1fY2FjaGVDbGVhclRpbWVyKHRoaXMsICZTVkdJbWFnZUNhY2hlOjpjYWNo
ZUNsZWFyVGltZXJGaXJlZCwgdGltZVRvS2VlcENhY2hlZEJpdG1hcHNBZnRlckxhc3RVc2VJblNl
Y29uZHMpCiB7CiAgICAgQVNTRVJUKG1fc3ZnSW1hZ2UpOwogfQogCiBTVkdJbWFnZUNhY2hlOjp+
U1ZHSW1hZ2VDYWNoZSgpCiB7Ci0gICAgbV9zaXplQW5kU2NhbGVzTWFwLmNsZWFyKCk7Ci0gICAg
Y2xlYXJCaXRtYXBDYWNoZSgpOwotfQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OmNsZWFyQml0bWFw
Q2FjaGUoKQotewotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURhdGFN
YXAuZW5kKCk7Ci0gICAgZm9yIChJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURh
dGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIC8vIENoZWNrcyBpZiB0
aGUgY2xpZW50IChpdC0+a2V5KSBpcyBzdGlsbCB2YWxpZC4gVGhlIGNsaWVudCBzaG91bGQgcmVt
b3ZlIGl0c2VsZiBmcm9tIHRoaXMKLSAgICAgICAgLy8gY2FjaGUgYmVmb3JlIGl0cyBlbmQgb2Yg
bGlmZSwgb3RoZXJ3aXNlIHRoZSBmb2xsb3dpbmcgQVNTRVJUIHdpbGwgY3Jhc2ggb24gcHVyZSB2
aXJ0dWFsCi0gICAgICAgIC8vIGZ1bmN0aW9uIGNhbGwgb3IgYSBnZW5lcmFsIGNyYXNoLgotICAg
ICAgICBBU1NFUlQoaXQtPmtleS0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VD
bGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKLSAgICAgICAgZGVsZXRlIGl0LT52YWx1ZS5idWZmZXI7
Ci0gICAgfQotCi0gICAgbV9pbWFnZURhdGFNYXAuY2xlYXIoKTsKKyAgICBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmNsZWFyKCk7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50
RnJvbUNhY2hlKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJU
KGNsaWVudCk7Ci0gICAgbV9zaXplQW5kU2NhbGVzTWFwLnJlbW92ZShjbGllbnQpOwotCi0gICAg
SW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmZpbmQoY2xpZW50KTsK
LSAgICBpZiAoaXQgPT0gbV9pbWFnZURhdGFNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKIAot
ICAgIGRlbGV0ZSBpdC0+dmFsdWUuYnVmZmVyOwotICAgIG1faW1hZ2VEYXRhTWFwLnJlbW92ZShp
dCk7CisgICAgaWYgKG1faW1hZ2VGb3JDb250YWluZXJNYXAuY29udGFpbnMoY2xpZW50KSkKKyAg
ICAgICAgbV9pbWFnZUZvckNvbnRhaW5lck1hcC5yZW1vdmUoY2xpZW50KTsKIH0KIAogdm9pZCBT
VkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1h
Z2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29u
dGFpbmVyWm9vbSkKQEAgLTgyLDEzNSArNTksNTggQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRD
b250YWluZXJTaXplRm9yUgogCiAgICAgRmxvYXRTaXplIGNvbnRhaW5lclNpemVXaXRob3V0Wm9v
bShjb250YWluZXJTaXplKTsKICAgICBjb250YWluZXJTaXplV2l0aG91dFpvb20uc2NhbGUoMSAv
IGNvbnRhaW5lclpvb20pOwotICAgIG1fc2l6ZUFuZFNjYWxlc01hcC5zZXQoY2xpZW50LCBTaXpl
QW5kU2NhbGVzKGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSwgY29udGFpbmVyWm9vbSkpOworCisg
ICAgSW1hZ2VGb3JDb250YWluZXJNYXA6Oml0ZXJhdG9yIGltYWdlSXQgPSBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmZpbmQoY2xpZW50KTsKKyAgICBpZiAoaW1hZ2VJdCA9PSBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmVuZCgpKSB7CisgICAgICAgIFJlZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4g
aW1hZ2UgPSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6Y3JlYXRlKG1fc3ZnSW1hZ2UsIGNvbnRhaW5l
clNpemVXaXRob3V0Wm9vbSwgMSwgY29udGFpbmVyWm9vbSk7CisgICAgICAgIG1faW1hZ2VGb3JD
b250YWluZXJNYXAuc2V0KGNsaWVudCwgaW1hZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlt
YWdlSXQtPnZhbHVlLT5zZXRTaXplKGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSk7CisgICAgICAg
IGltYWdlSXQtPnZhbHVlLT5zZXRab29tKGNvbnRhaW5lclpvb20pOworICAgIH0KIH0KIAorLy8g
RklYTUU6IFRoaXMgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0aGUgYW5pbWF0aW9uIHRpbWVs
aW5lLgogSW50U2l6ZSBTVkdJbWFnZUNhY2hlOjppbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewogICAgIEludFNpemUgaW1hZ2VTaXplID0g
bV9zdmdJbWFnZS0+c2l6ZSgpOwotCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IGltYWdlU2l6ZTsKLSAgICBTaXplQW5kU2NhbGVzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
c2l6ZUFuZFNjYWxlc01hcC5maW5kKHJlbmRlcmVyKTsKLSAgICBpZiAoaXQgPT0gbV9zaXplQW5k
U2NhbGVzTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaW1hZ2VTaXplOwogCi0gICAgU2l6ZUFu
ZFNjYWxlcyBzaXplQW5kU2NhbGVzID0gaXQtPnZhbHVlOwotICAgIGlmICghc2l6ZUFuZFNjYWxl
cy5zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBmbG9hdCBzY2FsZSA9IHNpemVBbmRTY2FsZXMu
c2NhbGU7Ci0gICAgICAgIGlmICghc2NhbGUpIHsKLSAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBy
ZW5kZXJlci0+ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgICAgICAgICAgc2NhbGUgPSBwYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIH0K
KyAgICBJbWFnZUZvckNvbnRhaW5lck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2ltYWdlRm9y
Q29udGFpbmVyTWFwLmZpbmQocmVuZGVyZXIpOworICAgIGlmIChpdCA9PSBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaW1hZ2VTaXplOwogCi0gICAgICAgIGlt
YWdlU2l6ZS5zZXRXaWR0aChzY2FsZSAqIHNpemVBbmRTY2FsZXMuc2l6ZS53aWR0aCgpKTsKLSAg
ICAgICAgaW1hZ2VTaXplLnNldEhlaWdodChzY2FsZSAqIHNpemVBbmRTY2FsZXMuc2l6ZS5oZWln
aHQoKSk7CisgICAgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiBpbWFnZSA9IGl0LT52YWx1
ZTsKKyAgICBGbG9hdFNpemUgc2l6ZSA9IGltYWdlLT5jb250YWluZXJTaXplKCk7CisgICAgaWYg
KCFzaXplLmlzRW1wdHkoKSkgeworICAgICAgICBzaXplLnNjYWxlKGltYWdlLT56b29tKCkpOwor
ICAgICAgICBpbWFnZVNpemUuc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAgICAgICAgaW1hZ2VT
aXplLnNldEhlaWdodChzaXplLmhlaWdodCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIGltYWdlU2l6
ZTsKLX0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKCkKLXsKLSAg
ICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwotICAg
IGZvciAoSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLmltYWdlTmVlZHNVcGRhdGUgPSB0
cnVlOwotCi0gICAgLy8gQWx3YXlzIHJlZHJhdyBvbiBhIHRpbWVyIGJlY2F1c2UgdGhpcyBtZXRo
b2QgbWF5IGJlIGludm9rZWQgZnJvbSBkZXN0cnVjdG9ycyBvZiB0aGluZ3Mgd2UgYXJlIGludGVu
ZGluZyB0byBkcmF3LgotICAgIGlmICghbV9yZWRyYXdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAg
ICBtX3JlZHJhd1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBTVkdJbWFnZUNhY2hl
OjpyZWRyYXcoKQotewotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURh
dGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFn
ZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEltYWdlRGF0YSYg
ZGF0YSA9IGl0LT52YWx1ZTsKLSAgICAgICAgaWYgKCFkYXRhLmltYWdlTmVlZHNVcGRhdGUpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCB3
ZSByZWRyYXcgdXNpbmcgb3VyIGV4aXN0aW5nIEltYWdlQnVmZmVyLgotICAgICAgICBBU1NFUlQo
ZGF0YS5idWZmZXIpOwotICAgICAgICBBU1NFUlQoZGF0YS5pbWFnZSk7Ci0gICAgICAgIG1fc3Zn
SW1hZ2UtPmRyYXdTVkdUb0ltYWdlQnVmZmVyKGRhdGEuYnVmZmVyLCBkYXRhLnNpemVBbmRTY2Fs
ZXMuc2l6ZSwgZGF0YS5zaXplQW5kU2NhbGVzLnpvb20gKiBkYXRhLnNpemVBbmRTY2FsZXMuc2Nh
bGUsIFNWR0ltYWdlOjpDbGVhckltYWdlQnVmZmVyKTsKLSAgICAgICAgZGF0YS5pbWFnZSA9IGRh
dGEuYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7Ci0gICAgICAgIGRhdGEuaW1h
Z2VOZWVkc1VwZGF0ZSA9IGZhbHNlOwotICAgIH0KLSAgICBBU1NFUlQobV9zdmdJbWFnZS0+aW1h
Z2VPYnNlcnZlcigpKTsKLSAgICBtX3N2Z0ltYWdlLT5pbWFnZU9ic2VydmVyKCktPmFuaW1hdGlv
bkFkdmFuY2VkKG1fc3ZnSW1hZ2UpOwotfQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1Rp
bWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4qKQotewotICAgIC8vIFdlIGhhdmUgbm8gZ3Vh
cmFudGVlIHRoYXQgdGhlIGZyYW1lIGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0IHdoZW4gdGhlIHRp
bWVyIGZpcmVkLgotICAgIC8vIFNvIGJlIHN1cmUgdG8gY2hlY2sgYWdhaW4gaW4gY2FzZSBpdCBp
cyBzdGlsbCBub3Qgc2FmZSB0byBydW4gcmVkcmF3LgotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9zdmdJbWFnZS0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKGZyYW1lVmlldyAmJiAoZnJhbWVW
aWV3LT5uZWVkc0xheW91dCgpIHx8IGZyYW1lVmlldy0+aXNJbkxheW91dCgpKSkgewotICAgICAg
ICBpZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fcmVkcmF3VGlt
ZXIuc3RhcnRPbmVTaG90KDApOwotICAgIH0gZWxzZQotICAgICAgIHJlZHJhdygpOwotfQotCi12
b2lkIFNWR0ltYWdlQ2FjaGU6OmNhY2hlQ2xlYXJUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90
VGltZXI8U1ZHSW1hZ2VDYWNoZT4qKQotewotICAgIGNsZWFyQml0bWFwQ2FjaGUoKTsKKyAgICBy
ZXR1cm4gaW1hZ2VTaXplOwogfQogCi1JbWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVh
dGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitJ
bWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIGNvbnN0IENhY2hlZEltYWdlQ2xpZW50
KiBjbGllbnQgPSByZW5kZXJlcjsKLQogICAgIC8vIFRoZSBjYWNoZSBuZWVkcyB0byBrbm93IHRo
ZSBzaXplIG9mIHRoZSByZW5kZXJlciBiZWZvcmUgcXVlcnlpbmcgYW4gaW1hZ2UgZm9yIGl0Lgot
ICAgIFNpemVBbmRTY2FsZXNNYXA6Oml0ZXJhdG9yIHNpemVJdCA9IG1fc2l6ZUFuZFNjYWxlc01h
cC5maW5kKHJlbmRlcmVyKTsKLSAgICBpZiAoc2l6ZUl0ID09IG1fc2l6ZUFuZFNjYWxlc01hcC5l
bmQoKSkKKyAgICBJbWFnZUZvckNvbnRhaW5lck1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRm9y
Q29udGFpbmVyTWFwLmZpbmQocmVuZGVyZXIpOworICAgIGlmIChpdCA9PSBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogCi0g
ICAgRmxvYXRTaXplIHNpemUgPSBzaXplSXQtPnZhbHVlLnNpemU7Ci0gICAgZmxvYXQgem9vbSA9
IHNpemVJdC0+dmFsdWUuem9vbTsKLSAgICBmbG9hdCBzY2FsZSA9IHNpemVJdC0+dmFsdWUuc2Nh
bGU7CisgICAgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiBpbWFnZSA9IGl0LT52YWx1ZTsK
KyAgICBBU1NFUlQoIWltYWdlLT5jb250YWluZXJTaXplKCkuaXNFbXB0eSgpKTsKIAogICAgIC8v
IEZJWE1FICg4NTMzNSk6IFRoaXMgbmVlZHMgdG8gdGFrZSBDU1MgdHJhbnNmb3JtIHNjYWxlIGlu
dG8gYWNjb3VudCBhcyB3ZWxsLgorICAgIC8vIEZJWE1FOiBTZXQgdGhlIHBhZ2Ugc2NhbGUgaW4g
c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBoZXJl
LgogICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgIGlm
ICghc2NhbGUpCi0gICAgICAgIHNjYWxlID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBh
Z2UtPnBhZ2VTY2FsZUZhY3RvcigpOwotCi0gICAgQVNTRVJUKCFzaXplLmlzRW1wdHkoKSk7Ci0K
LSAgICAvLyAoUmUpc2NoZWR1bGUgdGhlIG9uZXNob3QgdGltZXIgdG8gdGhyb3cgb3V0IGFsbCB0
aGUgY2FjaGVkIEltYWdlQnVmZmVycyBpZiB0aGV5IHJlbWFpbiB1bnVzZWQgZm9yIHRvbyBsb25n
LgotICAgIG1fY2FjaGVDbGVhclRpbWVyLnJlc3RhcnQoKTsKLQotICAgIC8vIExvb2t1cCBpbWFn
ZSBmb3IgY2xpZW50IGluIGNhY2hlIGFuZCBldmVudHVhbGx5IHVwZGF0ZSBpdC4KLSAgICBJbWFn
ZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuZmluZChjbGllbnQpOwotICAg
IGlmIChpdCAhPSBtX2ltYWdlRGF0YU1hcC5lbmQoKSkgewotICAgICAgICBJbWFnZURhdGEmIGRh
dGEgPSBpdC0+dmFsdWU7Ci0KLSAgICAgICAgLy8gQ29tbW9uIGNhc2U6IGltYWdlIHNpemUgJiB6
b29tIHJlbWFpbmVkIHRoZSBzYW1lLgotICAgICAgICBpZiAoZGF0YS5zaXplQW5kU2NhbGVzLnNp
emUgPT0gc2l6ZSAmJiBkYXRhLnNpemVBbmRTY2FsZXMuem9vbSA9PSB6b29tICYmIGRhdGEuc2l6
ZUFuZFNjYWxlcy5zY2FsZSA9PSBzY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBkYXRhLmltYWdl
LmdldCgpOwotCi0gICAgICAgIC8vIElmIHRoZSBpbWFnZSBzaXplIGZvciB0aGUgY2xpZW50IGNo
YW5nZWQsIHdlIGhhdmUgdG8gZGVsZXRlIHRoZSBidWZmZXIsIHJlbW92ZSB0aGUgaXRlbSBmcm9t
IHRoZSBjYWNoZSBhbmQgcmVjcmVhdGUgaXQuCi0gICAgICAgIGRlbGV0ZSBkYXRhLmJ1ZmZlcjsK
LSAgICAgICAgbV9pbWFnZURhdGFNYXAucmVtb3ZlKGl0KTsKLSAgICB9Ci0KLSAgICBGbG9hdFNp
emUgc2NhbGVkU2l6ZShzaXplKTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKHNjYWxlICogem9vbSk7
Ci0KLSAgICAvLyBDcmVhdGUgYW5kIGNhY2hlIG5ldyBpbWFnZSBhbmQgaW1hZ2UgYnVmZmVyIGF0
IHJlcXVlc3RlZCBzaXplLgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbmV3QnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUoc2NhbGVkU2l6ZSksIDEpOwotICAgIGlm
ICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwotCi0gICAg
bV9zdmdJbWFnZS0+ZHJhd1NWR1RvSW1hZ2VCdWZmZXIobmV3QnVmZmVyLmdldCgpLCBzaXplLCBz
Y2FsZSAqIHpvb20sIFNWR0ltYWdlOjpEb250Q2xlYXJJbWFnZUJ1ZmZlcik7Ci0KLSAgICBSZWZQ
dHI8SW1hZ2U+IG5ld0ltYWdlID0gbmV3QnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9y
ZSk7Ci0gICAgSW1hZ2UqIG5ld0ltYWdlUHRyID0gbmV3SW1hZ2UuZ2V0KCk7Ci0gICAgQVNTRVJU
KG5ld0ltYWdlUHRyKTsKKyAgICBpbWFnZS0+c2V0UGFnZVNjYWxlKHBhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkgKiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7CiAKLSAgICBtX2ltYWdlRGF0YU1h
cC5hZGQoY2xpZW50LCBJbWFnZURhdGEobmV3QnVmZmVyLmxlYWtQdHIoKSwgbmV3SW1hZ2UucmVs
ZWFzZSgpLCBTaXplQW5kU2NhbGVzKHNpemUsIHpvb20sIHNjYWxlKSkpOwotICAgIHJldHVybiBu
ZXdJbWFnZVB0cjsKKyAgICByZXR1cm4gaW1hZ2UuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuaAkocmV2aXNpb24gMTQyMzIzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM1LDYgKzM0LDcg
QEAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBDYWNoZWRJbWFnZUNsaWVudDsKIGNsYXNzIElt
YWdlQnVmZmVyOwogY2xhc3MgU1ZHSW1hZ2U7CitjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsK
IGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgU1ZHSW1hZ2VDYWNoZSB7CkBAIC00Nyw3NyAr
NDcsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0ltYWdlQ2Fj
aGUoaW1hZ2UpKTsKICAgICB9CiAKLSAgICBzdHJ1Y3QgU2l6ZUFuZFNjYWxlcyB7Ci0gICAgICAg
IFNpemVBbmRTY2FsZXMoKQotICAgICAgICAgICAgOiB6b29tKDEpCi0gICAgICAgICAgICAsIHNj
YWxlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFNpemVBbmRTY2FsZXMoY29u
c3QgRmxvYXRTaXplJiBuZXdTaXplLCBmbG9hdCBuZXdab29tLCBmbG9hdCBuZXdTY2FsZSkKLSAg
ICAgICAgICAgIDogc2l6ZShuZXdTaXplKQotICAgICAgICAgICAgLCB6b29tKG5ld1pvb20pCi0g
ICAgICAgICAgICAsIHNjYWxlKG5ld1NjYWxlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAg
ICAgICBTaXplQW5kU2NhbGVzKGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSwgZmxvYXQgbmV3Wm9v
bSkKLSAgICAgICAgICAgIDogc2l6ZShuZXdTaXplKQotICAgICAgICAgICAgLCB6b29tKG5ld1pv
b20pCi0gICAgICAgICAgICAsIHNjYWxlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIEZsb2F0U2l6ZSBzaXplOyAvLyBUaGlzIGlzIHRoZSBjb250YWluZXIgc2l6ZSB3aXRob3V0
IHpvb20uCi0gICAgICAgIGZsb2F0IHpvb207Ci0gICAgICAgIGZsb2F0IHNjYWxlOyAvLyBBIHNj
YWxlIG9mIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGRlZmF1bHQgc2NhbGUgc2hvdWxkIGJlIHVzZWQu
Ci0gICAgfTsKLQogICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNvbnN0IENhY2hlZElt
YWdlQ2xpZW50Kik7CiAKICAgICB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25z
dCBDYWNoZWRJbWFnZUNsaWVudCosIGNvbnN0IEludFNpemUmLCBmbG9hdCk7CiAgICAgSW50U2l6
ZSBpbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKIAotICAg
IEltYWdlKiBsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
T2JqZWN0Kik7Ci0gICAgdm9pZCBpbWFnZUNvbnRlbnRDaGFuZ2VkKCk7CisgICAgSW1hZ2UqIGxv
b2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogcHJp
dmF0ZToKICAgICBTVkdJbWFnZUNhY2hlKFNWR0ltYWdlKik7Ci0gICAgdm9pZCByZWRyYXcoKTsK
LSAgICB2b2lkIHJlZHJhd1RpbWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4qKTsKLSAgICB2
b2lkIGNhY2hlQ2xlYXJUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8U1ZHSW1hZ2VD
YWNoZT4qKTsKLSAgICB2b2lkIGNsZWFyQml0bWFwQ2FjaGUoKTsKLQotICAgIHN0cnVjdCBJbWFn
ZURhdGEgewotICAgICAgICBJbWFnZURhdGEoKQotICAgICAgICAgICAgOiBpbWFnZU5lZWRzVXBk
YXRlKGZhbHNlKQotICAgICAgICAgICAgLCBidWZmZXIoMCkKLSAgICAgICAgewotICAgICAgICB9
Ci0KLSAgICAgICAgSW1hZ2VEYXRhKEltYWdlQnVmZmVyKiBuZXdCdWZmZXIsIFBhc3NSZWZQdHI8
SW1hZ2U+IG5ld0ltYWdlLCBjb25zdCBTaXplQW5kU2NhbGVzJiBuZXdTaXplQW5kU2NhbGVzKQot
ICAgICAgICAgICAgOiBpbWFnZU5lZWRzVXBkYXRlKGZhbHNlKQotICAgICAgICAgICAgLCBzaXpl
QW5kU2NhbGVzKG5ld1NpemVBbmRTY2FsZXMpCi0gICAgICAgICAgICAsIGJ1ZmZlcihuZXdCdWZm
ZXIpCi0gICAgICAgICAgICAsIGltYWdlKG5ld0ltYWdlKQotICAgICAgICB7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIGltYWdlTmVlZHNVcGRhdGU7Ci0gICAgICAgIFNpemVBbmRTY2FsZXMg
c2l6ZUFuZFNjYWxlczsKLQotICAgICAgICBJbWFnZUJ1ZmZlciogYnVmZmVyOwotICAgICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlOwotICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
Q2FjaGVkSW1hZ2VDbGllbnQqLCBTaXplQW5kU2NhbGVzPiBTaXplQW5kU2NhbGVzTWFwOwotICAg
IHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIEltYWdlRGF0YT4gSW1h
Z2VEYXRhTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCos
IFJlZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4gPiBJbWFnZUZvckNvbnRhaW5lck1hcDsKIAog
ICAgIFNWR0ltYWdlKiBtX3N2Z0ltYWdlOwotICAgIFNpemVBbmRTY2FsZXNNYXAgbV9zaXplQW5k
U2NhbGVzTWFwOwotICAgIEltYWdlRGF0YU1hcCBtX2ltYWdlRGF0YU1hcDsKLSAgICBUaW1lcjxT
VkdJbWFnZUNhY2hlPiBtX3JlZHJhd1RpbWVyOwotICAgIERlZmVycmFibGVPbmVTaG90VGltZXI8
U1ZHSW1hZ2VDYWNoZT4gbV9jYWNoZUNsZWFyVGltZXI7CisgICAgSW1hZ2VGb3JDb250YWluZXJN
YXAgbV9pbWFnZUZvckNvbnRhaW5lck1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2VGb3JDb250YWluZXIu
aCIKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiSW1h
Z2UuaCIKKyNpbmNsdWRlICJTVkdJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0lu
dFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25zdAoreworICAgIEZsb2F0U2l6
ZSBzY2FsZWRDb250YWluZXJTaXplKG1fY29udGFpbmVyU2l6ZSk7CisgICAgc2NhbGVkQ29udGFp
bmVyU2l6ZS5zY2FsZShtX3pvb20pOworICAgIHJldHVybiByb3VuZGVkSW50U2l6ZShzY2FsZWRD
b250YWluZXJTaXplKTsKK30KKwordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit7CisgICAgbV9pbWFnZS0+
ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fem9vbSwgZHN0UmVj
dCwgc3JjUmVjdCwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Cit9CisKK3Zv
aWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCkKK3sKKyAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250
ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fcGFnZVNjYWxlLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU1ZHSW1hZ2VG
b3JDb250YWluZXJfaAorI2RlZmluZSBTVkdJbWFnZUZvckNvbnRhaW5lcl9oCisKKyNpZiBFTkFC
TEUoU1ZHKQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNs
dWRlICJTVkdJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0ltYWdl
Rm9yQ29udGFpbmVyIDogcHVibGljIEltYWdlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4gY3JlYXRlKFNWR0ltYWdlKiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IHpvb20pCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ltYWdlRm9yQ29udGFpbmVyKGlt
YWdlLCBjb250YWluZXJTaXplLCBwYWdlU2NhbGUsIHpvb20pKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFs
IGJvb2wgdXNlc0NvbnRhaW5lclNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltYWdl
LT51c2VzQ29udGFpbmVyU2l6ZSgpOyB9CisgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CisgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0
aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBPVkVSUklERQor
ICAgIHsKKyAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmlu
c2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0Jikg
T1ZFUlJJREU7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25z
ZXJ2YXRpdmUuCisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgp
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBGbG9hdFNpemUgY29udGFpbmVyU2l6
ZSgpIHsgcmV0dXJuIG1fY29udGFpbmVyU2l6ZTsgfQorICAgIGZsb2F0IHBhZ2VTY2FsZSgpIHsg
cmV0dXJuIG1fcGFnZVNjYWxlOyB9CisgICAgZmxvYXQgem9vbSgpIHsgcmV0dXJuIG1fem9vbTsg
fQorCisgICAgdm9pZCBzZXRTaXplKEZsb2F0U2l6ZSYgc2l6ZSkgeyBtX2NvbnRhaW5lclNpemUg
PSBzaXplOyB9CisgICAgdm9pZCBzZXRab29tKGZsb2F0IHpvb20pIHsgbV96b29tID0gem9vbTsg
fQorICAgIHZvaWQgc2V0UGFnZVNjYWxlKGZsb2F0IHBhZ2VTY2FsZSkgeyBtX3BhZ2VTY2FsZSA9
IHBhZ2VTY2FsZTsgfQorCitwcml2YXRlOgorICAgIFNWR0ltYWdlRm9yQ29udGFpbmVyKFNWR0lt
YWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBwYWdlU2Nh
bGUsIGZsb2F0IHpvb20pCisgICAgICAgIDogbV9pbWFnZShpbWFnZSksIG1fY29udGFpbmVyU2l6
ZShjb250YWluZXJTaXplKSwgbV9wYWdlU2NhbGUocGFnZVNjYWxlKSwgbV96b29tKHpvb20pIHsg
fQorCisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFs
bCovID0gdHJ1ZSkgeyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKworICAgIFNWR0ltYWdlKiBtX2ltYWdlOworICAgIEZsb2F0U2l6ZSBt
X2NvbnRhaW5lclNpemU7CisgICAgZmxvYXQgbV9wYWdlU2NhbGU7CisgICAgZmxvYXQgbV96b29t
OworfTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYgLy8gU1ZHSW1hZ2VGb3JD
b250YWluZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187453</attachid>
            <date>2013-02-09 18:36:11 -0800</date>
            <delta_ts>2013-02-11 15:55:27 -0800</delta_ts>
            <desc>Remove ChangeLog asterisks because the stylebot does not like them.</desc>
            <filename>106159.3.patch</filename>
            <type>text/plain</type>
            <size>44072</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjM4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNiBAQAorMjAxMy0wMi0wOSAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBiaXRtYXAgU1ZHIGlt
YWdlIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDYxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNhY2hpbmcgb2YgU1ZHIGJpdG1hcHMgc28gU1ZHIGlt
YWdlcyBhcmUgcmVuZGVyZWQgZGlyZWN0bHkuIFRoaXMKKyAgICAgICAgZW5hYmxlcyBXZWJLaXQg
dG8gcGFzcyB0aGUgSUUgQ2hhbGtib2FyZCBkZW1vOgorICAgICAgICBodHRwOi8vaWUubWljcm9z
b2Z0LmNvbS90ZXN0ZHJpdmUvUGVyZm9ybWFuY2UvQ2hhbGtib2FyZC8KKworICAgICAgICBUaGUg
U1ZHIGltYWdlIGNhY2hlIGhhZCBzZXZlcmFsIHNob3J0Y29taW5nczoKKyAgICAgICAgICAgIC0g
VGhlIGJpdG1hcCBjYWNoZSBwcmV2ZW50ZWQgdmlld3BvcnQgcmVuZGVyaW5nLiAoV0sxMDQ2OTMp
CisgICAgICAgICAgICAtIEJpdG1hcCBtZW1vcnkgdXNhZ2Ugd2FzIGhpZ2guIChXSzEwNjQ4NCkK
KyAgICAgICAgICAgIC0gQ2FjaGluZyBhbmltYXRpbmcgaW1hZ2VzIHdhcyBleHBlbnNpdmUuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgcmVtb3ZlcyBhbG1vc3QgYWxsIG9mIHRoZSBTVkdJbWFnZUNh
Y2hlIGltcGxlbWVudGF0aW9uLCByZXBsYWNpbmcgaXQgd2l0aAorICAgICAgICBkaXJlY3RseS1y
ZW5kZXJlZCBTVkcuIEluc3RlYWQgb2YgY2FjaGluZyBiaXRtYXBzLCBhbiBTVkdJbWFnZUZvckNv
bnRhaW5lciBpcyBjYWNoZWQgd2hpY2gKKyAgICAgICAgaXMgYSB0aGluIHdyYXBwZXIgYXJvdW5k
IGFuIFNWRyBpbWFnZSB3aXRoIHRoZSBhc3NvY2lhdGVkIGNvbnRhaW5lciBzaXplIGFuZCBzY2Fs
ZS4KKyAgICAgICAgV2hlbiByZW5kZXJpbmcgcGF0dGVybnMgKGUuZy4sIHRpbGVkIGJhY2tncm91
bmRzKSwgYSB0ZW1wb3JhcnkgYml0bWFwIGlzIHVzZWQgZm9yCisgICAgICAgIHBlcmZvcm1hbmNl
LiBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMgdGhlIHJlZHJhdyB0aW1lciBvZiB0aGUgb2xkIGNh
Y2hlLCBpbnN0ZWFkIHJlbHlpbmcKKyAgICAgICAgb24gdGhlIFNWRyBpbWFnZSB0byBub3RpZnkg
Y2xpZW50cyBpZiB0aGUgaW1hZ2UgY2hhbmdlcyAoZS5nLiwgZHVyaW5nIGFuaW1hdGlvbnMpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgY292ZXJlZCB3aXRoIGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpsb29rdXBPckNyZWF0ZUltYWdl
Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0KToKKworICAgICAgICAg
ICAgU1ZHIGltYWdlcyBhcmUgbm8gbG9uZ2VyIHNwZWNpYWwtY2FzZWQgaGVyZS4gV2hlbiB0aGUg
U1ZHIGltYWdlIGNoYW5nZXMsIHVzZXJzIGFyZQorICAgICAgICAgICAgbm90aWZpZWQgdGhyb3Vn
aCB0aGlzIGZ1bmN0aW9uLCBhbmQgdXNlcnMgY2FuIHRoZW4gcmVxdWVzdCB0aGVpciBjb250ZW50
IHRvIGJlIHJlZHJhd24uCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorCisgICAgICAgICAgICBkcmF3
Rm9yQ29udGFpbmVyIGxheXMgb3V0IHRoZSBTVkcgY29udGVudCBmb3IgYSBzcGVjaWZpYyBjb250
YWluZXIgc2l6ZSBhbmQgcmVuZGVycyBpdC4KKyAgICAgICAgICAgIFRoZSBsb2dpYyBpcyBmYWly
bHkgc3RyYWlnaHRmb3J3YXJkIGJ1dCBhIG5vdGUgYWJvdXQgdGhlIHNjYWxlcyBhbmQgem9vbXMg
aGVyZToKKyAgICAgICAgICAgICAgICB0aGUgZGVzdGluYXRpb24gcmVjdCBwYXJhbWV0ZXIgaXMg
em9vbWVkIGJ1dCBub3Qgc2NhbGVkCisgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSByZWN0IHBh
cmFtZXRlciBpcyB6b29tZWQgYnV0IG5vdCBzY2FsZWQKKyAgICAgICAgICAgICAgICB0aGUgY29u
dGV4dCBpcyBzY2FsZWQgYnV0IG5vdCB6b29tZWQKKyAgICAgICAgICAgIFNWR0ltYWdlOjpkcmF3
KC4uLikgb25seSBhY2NlcHRzIGEgc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWN0IGJ1dCBkb2Vz
IG5vdCBjb25zaWRlcgorICAgICAgICAgICAgc2NhbGUgb3Igem9vbS4gVGhlcmVmb3JlLCBkcmF3
Rm9yQ29udGFpbmVyIHJlbW92ZXMgdGhlIHpvb20gY29tcG9uZW50IGZyb20gdGhlIHNvdXJjZQor
ICAgICAgICAgICAgc28gU1ZHSW1hZ2U6OmRyYXcoLi4uKSB3aWxsIGRyYXcgZnJvbSB0aGUgcHJl
LXpvb20gc291cmNlIHRvIHRoZSBwb3N0LXpvb20gZGVzdGluYXRpb24uCisKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFp
bmVyKToKKworICAgICAgICAgICAgRm9yIHBlcmZvcm1hbmNlLCBkcmF3UGF0dGVybkZvckNvbnRh
aW5lciByZW5kZXJzIHRoZSBTVkcgY29udGVudCBvbnRvIGEgYml0bWFwLCB0aGVuCisgICAgICAg
ICAgICBoYXMgdGhlIGJpdG1hcCBpbWFnZSBkcmF3IHRoZSBwYXR0ZXJuLiBUaGlzIGlzIG5lY2Vz
c2FyeSBiZWNhdXNlIGRyYXdQYXR0ZXJuIGlzIHVzZWQKKyAgICAgICAgICAgIGZvciB0aWxpbmcu
CisKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6c3RvcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU1ZHSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9TVkdJbWFnZUNhY2hlLmNwcDoKKworICAgICAgICAgICAgSW5zdGVhZCBvZiBzdG9yaW5n
IGEgU2l6ZUFuZFNjYWxlcyB2YWx1ZXMgZm9yIGVhY2ggcmVuZGVyZXIsIGEgU1ZHSW1hZ2VGb3JD
b250YWluZXIKKyAgICAgICAgICAgIGlzIHN0b3JlZCB3aGljaCBpcyBqdXN0IGEgdGhpbiB3cmFw
cGVyIGFyb3VuZCBhbiBTVkcgaW1hZ2UgdGhhdCBjb250YWlucyBjb250YWluZXIKKyAgICAgICAg
ICAgIHNpemluZyBpbmZvcm1hdGlvbi4gQnkgY29tYmluaW5nIHRoZSBpbWFnZSBhbmQgc2l6ZSBp
bmZvcm1hdGlvbiwgdGhlIHR3byBtYXBzIG9mCisgICAgICAgICAgICBTVkdJbWFnZUNhY2hlIGhh
dmUgYmVlbiBtZXJnZWQgaW50byBvbmUuCisKKyAgICAgICAgICAgIFRvIG1ha2UgdGhpcyBwYXRj
aCBlYXNpZXIgdG8gcmV2aWV3LCBTVkdJbWFnZUNhY2hlIHN0aWxsIGV4aXN0cyBhbmQgd29ya3Mg
c2ltaWxhciB0bworICAgICAgICAgICAgaG93IGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBOb3cs
IFNWR0ltYWdlQ2FjaGUgc2ltcGx5IHN0b3JlcyB0aGUgU1ZHSW1hZ2VGb3JDb250YWluZXJzLgor
ICAgICAgICAgICAgSW4gYSBmb2xsb3d1cCBwYXRjaCBpdCB3aWxsIGJlIHJlbW92ZWQuCisKKyAg
ICAgICAgICAgIE5vdGU6IHRoZSByZWRyYXcgdGltZXIgb2YgU1ZHSW1hZ2VDYWNoZSBoYXMgYmVl
biByZW1vdmVkIGJlY2F1c2UgYW5pbWF0aW9uCisgICAgICAgICAgICBpbnZhbGlkYXRpb24gaXMg
bm93IHByb3Blcmx5IHByb3BhZ2F0ZWQgYmFjayB0byB0aGUgaW1hZ2UgY2xpZW50cy4KKworICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpTVkdJbWFn
ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6On5TVkdJbWFnZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnJlbW92ZUNsaWVudEZyb21DYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9y
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6aW1hZ2VTaXplRm9y
UmVuZGVyZXIpOgorCisgICAgICAgICAgICBQcmV2aW91c2x5LCB0aGlzIGZ1bmN0aW9uIHJldHVy
bmVkIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZSB3aGljaCB3YXMgaW5jb3JyZWN0LiBUaGUgaW1hZ2UK
KyAgICAgICAgICAgIHNpemUgaXMgdXNlZCBieSBjbGllbnRzIHN1Y2ggYXMgR3JhcGhpY3NDb250
ZXh0MkQgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2Ugc2l6ZQorICAgICAgICAgICAgZm9yIGRyYXdp
bmcgdGhlIGltYWdlLiBkcmF3KCkgYWNjZXB0cyB6b29tZWQgYnV0IG5vdCBzY2FsZWQgdmFsdWVz
LCBzbyB0aGlzIGhhcyBiZWVuCisgICAgICAgICAgICBjaGFuZ2VkLgorCisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIpOgorCisg
ICAgICAgICAgICBBIEZJWE1FIGhhcyBiZWVuIGFkZGVkIGhlcmUgdG8gbm90IHNldCB0aGUgc2Nh
bGUgb24gZXZlcnkgbG9va3VwLiBUaGlzIGNhbiBiZSBpbXByb3ZlZAorICAgICAgICAgICAgYnkg
c2V0dGluZyB0aGUgcGFnZSBzY2FsZSBmYWN0b3IgaW4gc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRl
cmVyKCkgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZUNhY2hlKToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOiBBZGRlZC4K
KworICAgICAgICAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIgaXMgYSB0aGluIHdyYXBwZXIgYXJv
dW5kIGFuIFNWRyBpbWFnZS4gVGhlIGxpZmV0aW1lIG9mIHRoZQorICAgICAgICAgICAgU1ZHSW1h
Z2Ugd2lsbCBiZSBsb25nZXIgdGhhbiB0aGUgaW1hZ2UgY2FjaGUuCisKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUpOgorCisg
ICAgICAgICAgICBUaGlzIGlzIHRoZSBvbmx5IGxvZ2ljIGluIFNWR0ltYWdlRm9yQ29udGFpbmVy
LiBUaGUgc2l6ZSByZXR1cm5lZCBuZWVkcyB0byBiZSB6b29tZWQKKyAgICAgICAgICAgIGJ1dCBu
b3Qgc2NhbGVkIGJlY2F1c2UgaXQgaXMgdXNlZCAoZS5nLiwgYnkgUmVuZGVySW1hZ2UpIHRvIHBh
c3MgYmFjayBpbnRvIGRyYXcoKSB3aGljaAorICAgICAgICAgICAgdGFrZXMgem9vbWVkIGJ1dCBu
b3Qgc2NhbGVkIHZhbHVlcy4KKworICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWlu
ZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0ltYWdlRm9yQ29udGFpbmVy
KToKKworICAgICAgICAgICAgSW4gYSBmdXR1cmUgcGF0Y2ggU1ZHSW1hZ2VGb3JDb250YWluZXIg
Y2FuIGJlIG1hZGUgaW1tdXRhYmxlIGJ1dCB3aXRob3V0IGEgcmVmYWN0b3JpbmcKKyAgICAgICAg
ICAgIGZvciBub3Qgc2V0dGluZyB0aGUgcGFnZSBzY2FsZSBmYWN0b3IgaW4gU1ZHSW1hZ2VDYWNo
ZTo6bG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyLAorICAgICAgICAgICAgc2V0dGVycyBh
cmUgbmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpjb250YWluZXJT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpwYWdlU2NhbGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Onpvb20pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFpvb20pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFBhZ2VTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZUZvckNvbnRhaW5lcjo6U1ZHSW1hZ2VGb3JDb250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZGVjb2RlZFNpemUpOgorCiAyMDEzLTAy
LTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtN
YWNdIERvIG5vdCBhc3N1bWUgTWVkaWFBY2Nlc3NpYmlsaXR5IGZyYW1ld29yayBpcyBpbnN0YWxs
ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjUwMyw2ICsyNTAzLDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAog
ICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAorICAgIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAKIAogICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCiAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC00OTE3LDYgKzQ5MTcs
OCBAQCB3ZWJjb3JlX3N2Z19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VDYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNhY2hlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9t
ZUNsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlz
aW9uIDE0MjMyMykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkK
QEAgLTI2NDUsNiArMjY0NSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5oIFwKICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBcCiAgICAgc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBcCisgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmggXAogICAgIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5
VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmYuaCBcCkBAIC0zNzY0LDYgKzM3NjUsNyBAQCBlbmFibGU/KFNWRykgewogICAgICAgICBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNo
ZS5jcHAgXAorICAgICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIFwK
ICAgICAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgXAog
ICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAg
XAogICAgICAgICBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTUxMjUsNiArNTEyNSw4IEBACiAgICAgICAgICAgICAnc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oJywK
KyAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCcsCisgICAg
ICAgICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCcsCiAgICAgICAg
ICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAnLAogICAgICAgICAgICAg
J3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaCcsCiAgICAgICAgICAgICAnc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTQyMzIzKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTc0NTA5LDYgKzc0NTA5LDE0IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNz
XFNWR0ltYWdlQ2hyb21lQ2xpZW50LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcZ3JhcGhpY3NcU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cc3ZnXGdyYXBoaWNzXFNWR0ltYWdlRm9yQ29udGFpbmVyLmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CiAJCQkJPEZpbHRlcgogCQkJCQlOYW1lPSJmaWx0ZXJzIgogCQkJCQk+CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNDIzMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw2ICsyMjEsOCBAQAogCQkwOEYyRjAwQTEy
MTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8q
IFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4
NTlEMjE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgKi87IH07CiAJCTA4Rjg1
OUQ1MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyog
U1ZHSW1hZ2VDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTA4Rjg1OUQ0MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5l
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4
NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwICovOyB9Owor
CQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4Rjg1OUQzMTQ2M0Y5
Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RkIxN0MxMTNCQzdFOTEwMDA0MDA4NiAv
KiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIxN0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCAqLzsgfTsKIAkJMDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4
IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIzRjgzMTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDhGRTBCQzUxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03NDc5LDYgKzc0ODEsOCBAQAogCQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyog
UmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4Rjg1
OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ltYWdlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUNhY2hlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4Rjg1OUQyMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUZvckNvbnRhaW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDhGQjNGODMxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJv
cGVydHlNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRl
VG9Qcm9wZXJ0eU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZFMEJDNDEy
N0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAzNzIsNiArMjAzNzYsOCBAQAog
CQkJCUIyNTU5OTBDMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdJbWFnZS5oICovLAogCQkJCTA4Rjg1
OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCAqLywKIAkJCQkwOEY4NTlE
MzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovLAorCQkJCTA4Rjg1OUQyMTQ2
M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgKi8sCisJCQkJMDhGODU5
RDMxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggKi8sCiAJCQkJQUFD
MDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGdyYXBoaWNzOwpAQCAtMjU5OTgsNiArMjYwMDQsNyBAQAogCQkJCTY1MEZC
RjJCMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyNTU5OUE0MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDhGODU5RDUxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA4Rjg1OUQ1MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRh
aW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFDMDhDRUYxNUY5MzNENjAwRjFFMTg4IC8qIFNW
R0ltYWdlQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EyRDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjhDNkEy
QTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MjkyNjAsNiArMjkyNjcsNyBAQAogCQkJCTY1MEZCRjJBMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdI
S2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5QTMwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4Rjg1OUQ0MTQ2M0Y5Q0Qw
MDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4Rjg1OUQ0
MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjIyN0EyQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyOEM2QTI5MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdJbWFnZUxv
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyRjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHTGFuZ1NwYWNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjQsNyArMTY0LDcgQEAgaW5saW5lIEltYWdlKiBDYWNoZWRJbWFnZTo6bG9va3VwT3JDcmVhdAog
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1faW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKICAgICAg
ICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7Ci0gICAgSW1hZ2UqIHVzZUltYWdlID0gbV9zdmdJbWFn
ZUNhY2hlLT5sb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwor
ICAgIEltYWdlKiB1c2VJbWFnZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+bG9va3VwT3JDcmVhdGVJbWFn
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAodXNlSW1hZ2UgPT0gSW1hZ2U6Om51bGxJ
bWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKICAgICByZXR1cm4gdXNlSW1h
Z2U7CkBAIC0zMTIsOSArMzEyLDYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Y2hlY2tTaG91bGRQYWlu
dEJyb2tlbgogdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXIoKQogewogICAgIGRlc3Ryb3lEZWNvZGVk
RGF0YSgpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgbV9zdmdJbWFnZUNhY2hlLmNsZWFyKCk7Ci0j
ZW5kaWYKICAgICBjbGVhckltYWdlKCk7CiAgICAgbV9wZW5kaW5nQ29udGFpbmVyU2l6ZVJlcXVl
c3RzLmNsZWFyKCk7CiAgICAgc2V0RW5jb2RlZFNpemUoMCk7CkBAIC00ODQsMTMgKzQ4MSw2IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW0KIHsKICAgICBpZiAoIWlt
YWdlIHx8IGltYWdlICE9IG1faW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoU1ZH
KQotICAgIC8vIFdlIGhhdmUgdG8gdXBkYXRlIHRoZSBjYWNoZWQgSW1hZ2VCdWZmZXJzIGlmIHRo
ZSB1bmRlcmx5aW5nIGNvbnRlbnQgY2hhbmdlZC4KLSAgICBpZiAoaW1hZ2UtPmlzU1ZHSW1hZ2Uo
KSkgewotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUtPmltYWdlQ29udGVudENoYW5nZWQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgogICAgIG5vdGlmeU9ic2VydmVycygmcmVjdCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2
aXNpb24gMTQyMzIzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgor
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVk
ZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdJbWFnZUNocm9tZUNsaWVudC5oIgpAQCAt
NTksMTAgKzYwLDI2IEBAIFNWR0ltYWdlOjp+U1ZHSW1hZ2UoKQogICAgIEFTU0VSVCghbV9jaHJv
bWVDbGllbnQgfHwgIW1fY2hyb21lQ2xpZW50LT5pbWFnZSgpKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZTo6c2V0Q29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJikKK3ZvaWQgU1ZHSW1hZ2U6OnNldENv
bnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICAvLyBTVkdJbWFnZUNhY2hl
IGFscmVhZHkgaW50ZXJjZXB0ZWQgdGhpcyBjYWxsLCBhcyBpdCBzdG9yZXMgJiBjYWNoZXMgdGhl
IGRlc2lyZWQgY29udGFpbmVyIHNpemVzICYgem9vbSBsZXZlbHMuCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgaWYgKCFtX3BhZ2UgfHwgIXVzZXNDb250YWluZXJTaXplKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Cisg
ICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+
KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50
KQorICAgICAgICByZXR1cm47CisgICAgUmVuZGVyU1ZHUm9vdCogcmVuZGVyZXIgPSB0b1JlbmRl
clNWR1Jvb3Qocm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lVmlldygpOworICAg
IHZpZXctPnJlc2l6ZSh0aGlzLT5zaXplKCkpOworICAgIC8vIElmIGEgbGF5b3V0IGlzIHBlbmRp
bmcsIHRyaWdnZXIgaXQgbm93IHNvIHRoYXQgbm90aWZpY2F0aW9ucyBnZXQgc2VudC4KKyAgICBp
ZiAodmlldy0+bmVlZHNMYXlvdXQoKSkKKyAgICAgICAgdmlldy0+bGF5b3V0KCk7CisKKyAgICBy
ZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShzaXplKTsKIH0KIAogSW50U2l6ZSBTVkdJbWFnZTo6
c2l6ZSgpIGNvbnN0CkBAIC05OSwyOCArMTE2LDEyIEBAIEludFNpemUgU1ZHSW1hZ2U6OnNpemUo
KSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKDMwMCwgMTUwKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCB6b29tQW5kU2NhbGUsIFNob3VsZENsZWFyQnVmZmVyIHNob3VsZENs
ZWFyKQordm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkg
d2l0aCBhbmltYXRpb25zLiBJZiBhbiBpbWFnZSBjb250YWlucyBhbmltYXRpb25zLCB0aGF0IHNh
eSBydW4gZm9yIDIgc2Vjb25kcywKLSAgICAvLyBhbmQgd2UgY3VycmVudGx5IGhhdmUgb25lIDxp
bWc+IHRoYXQgZGlzcGxheXMgdXMuIElmIHdlIG9wZW4gYW5vdGhlciBkb2N1bWVudCByZWZlcmVu
Y2luZyB0aGUgc2FtZSBTVkdJbWFnZSBpdAotICAgIC8vIHdpbGwgZGlzcGxheSB0aGUgZG9jdW1l
bnQgYXQgYSB0aW1lIHdoZXJlIGFuaW1hdGlvbnMgYWxyZWFkeSByYW4gLSBldmVuIHRob3VnaCBp
dCBoYXMgaXRzIG93biBJbWFnZUJ1ZmZlci4KLSAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgaW1w
bGVtZW50IFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRUaW1lLCBhbmQgY2FuIE5PVCBnbyBiYWNr
IGluIHRpbWUsIG9uY2UgYW5pbWF0aW9ucyBzdGFydGVkLgotICAgIC8vIFRoZXJlJ3Mgbm8gd2F5
IHRvIGZpeCB0aGlzIGJlc2lkZXMgYXZvaWRpbmcgc3R5bGUvYXR0cmlidXRlIG11dGF0aW9ucyBm
cm9tIFNWR0FuaW1hdGlvbkVsZW1lbnQuCi0gICAgQVNTRVJUKGJ1ZmZlcik7Ci0gICAgQVNTRVJU
KCFzaXplLmlzRW1wdHkoKSk7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBTVkdTVkdFbGVt
ZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3Vt
ZW50KCkpLT5yb290RWxlbWVudCgpOwotICAgIGlmICghcm9vdEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLSAgICBSZW5kZXJTVkdSb290KiByZW5kZXJlciA9IHRvUmVuZGVyU1ZHUm9vdChyb290
RWxlbWVudC0+cmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gRHJhdyBpbWFnZSBhdCByZXF1ZXN0ZWQgc2l6ZS4KICAgICBJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlciA9IGltYWdlT2JzZXJ2ZXIoKTsKICAgICBBU1NFUlQob2JzZXJ2ZXIpOwog
CkBAIC0xMjgsMjcgKzEyOSwzOCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZl
cihJbWFnCiAgICAgc2V0SW1hZ2VPYnNlcnZlcigwKTsKIAogICAgIC8vIERpc2FibGUgcmVwYWlu
dGluZzsgd2UgZG9uJ3Qgd2FudCBkZWZlcnJlZCByZXBhaW50cyB0byBzY2hlZHVsZSBhbnkgdGlt
ZXJzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgotICAgIGZyYW1lLT52aWV3KCktPmJlZ2luRGlzYWJs
ZVJlcGFpbnRzKCk7CisgICAgZnJhbWVWaWV3KCktPmJlZ2luRGlzYWJsZVJlcGFpbnRzKCk7CisK
KyAgICBJbnRTaXplIHJvdW5kZWRDb250YWluZXJTaXplID0gcm91bmRlZEludFNpemUoY29udGFp
bmVyU2l6ZSk7CisgICAgc2V0Q29udGFpbmVyU2l6ZShyb3VuZGVkQ29udGFpbmVyU2l6ZSk7CiAK
LSAgICBJbnRTaXplIGNvbnRhaW5lclNpemUgPSByb3VuZGVkSW50U2l6ZShzaXplKTsKLSAgICBy
ZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKTsKLSAgICBmcmFtZS0+dmll
dygpLT5yZXNpemUodGhpcy0+c2l6ZSgpKTsKLQotICAgIEZsb2F0U2l6ZSBzY2FsZWRDb250YWlu
ZXJTaXplKHNpemUpOwotICAgIHNjYWxlZENvbnRhaW5lclNpemUuc2NhbGUoem9vbUFuZFNjYWxl
KTsKLSAgICBJbnRSZWN0IGRlc3RSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBleHBhbmRlZElu
dFNpemUoc2NhbGVkQ29udGFpbmVyU2l6ZSkpOwotICAgIGlmIChzaG91bGRDbGVhciA9PSBDbGVh
ckltYWdlQnVmZmVyKQotICAgICAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xlYXJSZWN0KGRlc3RS
ZWN0KTsKKyAgICBGbG9hdFJlY3Qgc2NhbGVkU3JjID0gc3JjUmVjdDsKKyAgICBzY2FsZWRTcmMu
c2NhbGUoMSAvIHpvb20pOwogCi0gICAgLy8gRHJhdyBTVkcgb24gdG9wIG9mIEltYWdlQnVmZmVy
LgotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIGRlc3RSZWN0LCBJbnRSZWN0KEludFBvaW50
KCksIGNvbnRhaW5lclNpemUpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGVOb3JtYWwpOworICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBjb250YWlu
ZXIgc2l6ZSByb3VuZGluZyBieSBhZGp1c3RpbmcgdGhlIHNvdXJjZSByZWN0LgorICAgIEZsb2F0
U2l6ZSBhZGp1c3RlZFNyY1NpemUgPSBzY2FsZWRTcmMuc2l6ZSgpOworICAgIGFkanVzdGVkU3Jj
U2l6ZS5zY2FsZShyb3VuZGVkQ29udGFpbmVyU2l6ZS53aWR0aCgpIC8gY29udGFpbmVyU2l6ZS53
aWR0aCgpLCByb3VuZGVkQ29udGFpbmVyU2l6ZS5oZWlnaHQoKSAvIGNvbnRhaW5lclNpemUuaGVp
Z2h0KCkpOworICAgIHNjYWxlZFNyYy5zZXRTaXplKGFkanVzdGVkU3JjU2l6ZSk7CiAKLSAgICBp
ZiAoZnJhbWUtPnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+
bGF5b3V0KCk7CisgICAgZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbG9yU3Bh
Y2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNl
cnZlcik7CiAKLSAgICBmcmFtZS0+dmlldygpLT5lbmREaXNhYmxlUmVwYWludHMoKTsKKyAgICBm
cmFtZVZpZXcoKS0+ZW5kRGlzYWJsZVJlcGFpbnRzKCk7Cit9CisKK3ZvaWQgU1ZHSW1hZ2U6OmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgem9vbSwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LAorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkK
K3sKKyAgICBGbG9hdFNpemUgem9vbWVkQ29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKTsKKyAg
ICB6b29tZWRDb250YWluZXJTaXplLnNjYWxlKHpvb20pOworICAgIEZsb2F0UmVjdCB6b29tZWRD
b250YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgem9vbWVkQ29udGFpbmVyU2l6
ZSk7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoZXhwYW5kZWRJbnRTaXplKHpvb21lZENvbnRhaW5lclNpemUpLCBwYWdlU2NhbGUpOworICAg
IGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20s
IHpvb21lZENvbnRhaW5lclJlY3QsIHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisKKyAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7Cisg
ICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCk7CiB9CiAKIHZvaWQgU1ZH
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKQEAgLTI1MCwyMSArMjYyLDM0IEBAIHZvaWQg
U1ZHSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb24KICAgICAgICAgaW50cmluc2ljUmF0
aW8gPSBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChpbnRyaW5zaWNXaWR0aCwgMCksIGZs
b2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljSGVpZ2h0LCAwKSk7CiB9CiAKLU5hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCisvLyBGSVhNRTogc3Vw
cG9ydCBjYXRjaFVwSWZOZWNlc3NhcnkuCit2b2lkIFNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbihi
b29sIC8qIGNhdGNoVXBJZk5lY2Vzc2FyeSAqLykKIHsKLSAgICAvLyBGSVhNRTogSW4gb3JkZXIg
dG8gc3VwcG9ydCBkeW5hbWljIFNWR3Mgd2UgbmVlZCB0byBoYXZlIGEgd2F5IHRvIGludmFsaWRh
dGUgdGhpcwotICAgIC8vIGZyYW1lIGNhY2hlLCBvciBiZXR0ZXIgeWV0LCBub3QgdXNlIGEgY2Fj
aGUgZm9yIHRpbGVkIGRyYXdpbmcgYXQgYWxsLCBpbnN0ZWFkCi0gICAgLy8gaGF2aW5nIGEgdGls
ZWQgZHJhd2luZyBjYWxsYmFjayAoaG9wZWZ1bGx5IG5vbi12aXJ0dWFsKS4KLSAgICBpZiAoIW1f
ZnJhbWVDYWNoZSkgewotICAgICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSgpLCAxKTsKLSAgICAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0
ZSBpbWFnZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250
ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICBtX2ZyYW1lQ2FjaGUgPSBidWZmZXIt
PmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fZnJhbWVD
YWNoZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Cisg
ICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+
KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50
KQorICAgICAgICByZXR1cm47CisgICAgcm9vdEVsZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7
CisgICAgcm9vdEVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKDApOworfQorCit2b2lkIFNWR0ltYWdl
OjpzdG9wQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgU1ZHU1ZHRWxlbWVu
dCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVu
dCgpKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1
cm47CisgICAgcm9vdEVsZW1lbnQtPnBhdXNlQW5pbWF0aW9ucygpOworfQorCit2b2lkIFNWR0lt
YWdlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAgc3RvcEFuaW1hdGlvbigpOworICAgIHN0YXJ0
QW5pbWF0aW9uKCk7CiB9CiAKIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQpAQCAtMzIyLDcgKzM0Nyw2IEBAIHZvaWQgU1ZHSW1hZ2U6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU8KICAgICBJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jaHJvbWVDbGllbnQsICJjaHJvbWVDbGllbnQi
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2UsICJwYWdlIik7Ci0gICAgaW5mby5hZGRNZW1i
ZXIobV9mcmFtZUNhY2hlLCAiZnJhbWVDYWNoZSIpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQyMzIzKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94Owog
Y2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CitjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsK
IAogY2xhc3MgU1ZHSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgpAQCAtNDYsMTIgKzQ3
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ltYWdlKG9ic2Vy
dmVyKSk7CiAgICAgfQogCi0gICAgZW51bSBTaG91bGRDbGVhckJ1ZmZlciB7Ci0gICAgICAgIENs
ZWFySW1hZ2VCdWZmZXIsCi0gICAgICAgIERvbnRDbGVhckltYWdlQnVmZmVyCi0gICAgfTsKLQot
ICAgIHZvaWQgZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCwgU2hvdWxkQ2xlYXJCdWZmZXIpOwogICAgIFJlbmRlckJveCogZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3Q7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKIApA
QCAtNjEsMTAgKzU2LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVX
aWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0
OwogCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKGJvb2wgLypjYXRjaFVwSWZOZWNl
c3NhcnkqLyA9IHRydWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9u
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgT1ZFUlJJREU7
CisKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNo
cm9tZUNsaWVudDsKKyAgICBmcmllbmQgY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CisKICAg
ICB2aXJ0dWFsIH5TVkdJbWFnZSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdDsKQEAgLTg3LDEyICs4OCwxMiBAQCBwcml2YXRlOgogCiAgICAgU1ZHSW1h
Z2UoSW1hZ2VPYnNlcnZlciopOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7
Ci0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1BhdHRl
cm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwg
ZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsCisgICAgICAg
IGNvbnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0Jik7CiAKICAgICBPd25QdHI8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+IG1fY2hyb21l
Q2xpZW50OwogICAgIE93blB0cjxQYWdlPiBtX3BhZ2U7Ci0gICAgUmVmUHRyPEltYWdlPiBtX2Zy
YW1lQ2FjaGU7CiB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAxNDIzMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDUwICsy
OSwyNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAj
aW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdJbWFnZUZvckNvbnRhaW5lci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBpbnQgdGltZVRvS2VlcENhY2hl
ZEJpdG1hcHNBZnRlckxhc3RVc2VJblNlY29uZHMgPSAzMDsKLQogU1ZHSW1hZ2VDYWNoZTo6U1ZH
SW1hZ2VDYWNoZShTVkdJbWFnZSogc3ZnSW1hZ2UpCiAgICAgOiBtX3N2Z0ltYWdlKHN2Z0ltYWdl
KQotICAgICwgbV9yZWRyYXdUaW1lcih0aGlzLCAmU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJG
aXJlZCkKLSAgICAsIG1fY2FjaGVDbGVhclRpbWVyKHRoaXMsICZTVkdJbWFnZUNhY2hlOjpjYWNo
ZUNsZWFyVGltZXJGaXJlZCwgdGltZVRvS2VlcENhY2hlZEJpdG1hcHNBZnRlckxhc3RVc2VJblNl
Y29uZHMpCiB7CiAgICAgQVNTRVJUKG1fc3ZnSW1hZ2UpOwogfQogCiBTVkdJbWFnZUNhY2hlOjp+
U1ZHSW1hZ2VDYWNoZSgpCiB7Ci0gICAgbV9zaXplQW5kU2NhbGVzTWFwLmNsZWFyKCk7Ci0gICAg
Y2xlYXJCaXRtYXBDYWNoZSgpOwotfQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OmNsZWFyQml0bWFw
Q2FjaGUoKQotewotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURhdGFN
YXAuZW5kKCk7Ci0gICAgZm9yIChJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURh
dGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIC8vIENoZWNrcyBpZiB0
aGUgY2xpZW50IChpdC0+a2V5KSBpcyBzdGlsbCB2YWxpZC4gVGhlIGNsaWVudCBzaG91bGQgcmVt
b3ZlIGl0c2VsZiBmcm9tIHRoaXMKLSAgICAgICAgLy8gY2FjaGUgYmVmb3JlIGl0cyBlbmQgb2Yg
bGlmZSwgb3RoZXJ3aXNlIHRoZSBmb2xsb3dpbmcgQVNTRVJUIHdpbGwgY3Jhc2ggb24gcHVyZSB2
aXJ0dWFsCi0gICAgICAgIC8vIGZ1bmN0aW9uIGNhbGwgb3IgYSBnZW5lcmFsIGNyYXNoLgotICAg
ICAgICBBU1NFUlQoaXQtPmtleS0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VD
bGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKLSAgICAgICAgZGVsZXRlIGl0LT52YWx1ZS5idWZmZXI7
Ci0gICAgfQotCi0gICAgbV9pbWFnZURhdGFNYXAuY2xlYXIoKTsKKyAgICBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmNsZWFyKCk7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50
RnJvbUNhY2hlKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJU
KGNsaWVudCk7Ci0gICAgbV9zaXplQW5kU2NhbGVzTWFwLnJlbW92ZShjbGllbnQpOwotCi0gICAg
SW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmZpbmQoY2xpZW50KTsK
LSAgICBpZiAoaXQgPT0gbV9pbWFnZURhdGFNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKIAot
ICAgIGRlbGV0ZSBpdC0+dmFsdWUuYnVmZmVyOwotICAgIG1faW1hZ2VEYXRhTWFwLnJlbW92ZShp
dCk7CisgICAgaWYgKG1faW1hZ2VGb3JDb250YWluZXJNYXAuY29udGFpbnMoY2xpZW50KSkKKyAg
ICAgICAgbV9pbWFnZUZvckNvbnRhaW5lck1hcC5yZW1vdmUoY2xpZW50KTsKIH0KIAogdm9pZCBT
VkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1h
Z2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29u
dGFpbmVyWm9vbSkKQEAgLTgyLDEzNSArNTksNTggQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRD
b250YWluZXJTaXplRm9yUgogCiAgICAgRmxvYXRTaXplIGNvbnRhaW5lclNpemVXaXRob3V0Wm9v
bShjb250YWluZXJTaXplKTsKICAgICBjb250YWluZXJTaXplV2l0aG91dFpvb20uc2NhbGUoMSAv
IGNvbnRhaW5lclpvb20pOwotICAgIG1fc2l6ZUFuZFNjYWxlc01hcC5zZXQoY2xpZW50LCBTaXpl
QW5kU2NhbGVzKGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSwgY29udGFpbmVyWm9vbSkpOworCisg
ICAgSW1hZ2VGb3JDb250YWluZXJNYXA6Oml0ZXJhdG9yIGltYWdlSXQgPSBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmZpbmQoY2xpZW50KTsKKyAgICBpZiAoaW1hZ2VJdCA9PSBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmVuZCgpKSB7CisgICAgICAgIFJlZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4g
aW1hZ2UgPSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6Y3JlYXRlKG1fc3ZnSW1hZ2UsIGNvbnRhaW5l
clNpemVXaXRob3V0Wm9vbSwgMSwgY29udGFpbmVyWm9vbSk7CisgICAgICAgIG1faW1hZ2VGb3JD
b250YWluZXJNYXAuc2V0KGNsaWVudCwgaW1hZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlt
YWdlSXQtPnZhbHVlLT5zZXRTaXplKGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSk7CisgICAgICAg
IGltYWdlSXQtPnZhbHVlLT5zZXRab29tKGNvbnRhaW5lclpvb20pOworICAgIH0KIH0KIAorLy8g
RklYTUU6IFRoaXMgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0aGUgYW5pbWF0aW9uIHRpbWVs
aW5lLgogSW50U2l6ZSBTVkdJbWFnZUNhY2hlOjppbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewogICAgIEludFNpemUgaW1hZ2VTaXplID0g
bV9zdmdJbWFnZS0+c2l6ZSgpOwotCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IGltYWdlU2l6ZTsKLSAgICBTaXplQW5kU2NhbGVzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
c2l6ZUFuZFNjYWxlc01hcC5maW5kKHJlbmRlcmVyKTsKLSAgICBpZiAoaXQgPT0gbV9zaXplQW5k
U2NhbGVzTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaW1hZ2VTaXplOwogCi0gICAgU2l6ZUFu
ZFNjYWxlcyBzaXplQW5kU2NhbGVzID0gaXQtPnZhbHVlOwotICAgIGlmICghc2l6ZUFuZFNjYWxl
cy5zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBmbG9hdCBzY2FsZSA9IHNpemVBbmRTY2FsZXMu
c2NhbGU7Ci0gICAgICAgIGlmICghc2NhbGUpIHsKLSAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBy
ZW5kZXJlci0+ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgICAgICAgICAgc2NhbGUgPSBwYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIH0K
KyAgICBJbWFnZUZvckNvbnRhaW5lck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2ltYWdlRm9y
Q29udGFpbmVyTWFwLmZpbmQocmVuZGVyZXIpOworICAgIGlmIChpdCA9PSBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaW1hZ2VTaXplOwogCi0gICAgICAgIGlt
YWdlU2l6ZS5zZXRXaWR0aChzY2FsZSAqIHNpemVBbmRTY2FsZXMuc2l6ZS53aWR0aCgpKTsKLSAg
ICAgICAgaW1hZ2VTaXplLnNldEhlaWdodChzY2FsZSAqIHNpemVBbmRTY2FsZXMuc2l6ZS5oZWln
aHQoKSk7CisgICAgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiBpbWFnZSA9IGl0LT52YWx1
ZTsKKyAgICBGbG9hdFNpemUgc2l6ZSA9IGltYWdlLT5jb250YWluZXJTaXplKCk7CisgICAgaWYg
KCFzaXplLmlzRW1wdHkoKSkgeworICAgICAgICBzaXplLnNjYWxlKGltYWdlLT56b29tKCkpOwor
ICAgICAgICBpbWFnZVNpemUuc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKKyAgICAgICAgaW1hZ2VT
aXplLnNldEhlaWdodChzaXplLmhlaWdodCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIGltYWdlU2l6
ZTsKLX0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjppbWFnZUNvbnRlbnRDaGFuZ2VkKCkKLXsKLSAg
ICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwotICAg
IGZvciAoSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLmltYWdlTmVlZHNVcGRhdGUgPSB0
cnVlOwotCi0gICAgLy8gQWx3YXlzIHJlZHJhdyBvbiBhIHRpbWVyIGJlY2F1c2UgdGhpcyBtZXRo
b2QgbWF5IGJlIGludm9rZWQgZnJvbSBkZXN0cnVjdG9ycyBvZiB0aGluZ3Mgd2UgYXJlIGludGVu
ZGluZyB0byBkcmF3LgotICAgIGlmICghbV9yZWRyYXdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAg
ICBtX3JlZHJhd1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBTVkdJbWFnZUNhY2hl
OjpyZWRyYXcoKQotewotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURh
dGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFn
ZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEltYWdlRGF0YSYg
ZGF0YSA9IGl0LT52YWx1ZTsKLSAgICAgICAgaWYgKCFkYXRhLmltYWdlTmVlZHNVcGRhdGUpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgLy8gSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCB3
ZSByZWRyYXcgdXNpbmcgb3VyIGV4aXN0aW5nIEltYWdlQnVmZmVyLgotICAgICAgICBBU1NFUlQo
ZGF0YS5idWZmZXIpOwotICAgICAgICBBU1NFUlQoZGF0YS5pbWFnZSk7Ci0gICAgICAgIG1fc3Zn
SW1hZ2UtPmRyYXdTVkdUb0ltYWdlQnVmZmVyKGRhdGEuYnVmZmVyLCBkYXRhLnNpemVBbmRTY2Fs
ZXMuc2l6ZSwgZGF0YS5zaXplQW5kU2NhbGVzLnpvb20gKiBkYXRhLnNpemVBbmRTY2FsZXMuc2Nh
bGUsIFNWR0ltYWdlOjpDbGVhckltYWdlQnVmZmVyKTsKLSAgICAgICAgZGF0YS5pbWFnZSA9IGRh
dGEuYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7Ci0gICAgICAgIGRhdGEuaW1h
Z2VOZWVkc1VwZGF0ZSA9IGZhbHNlOwotICAgIH0KLSAgICBBU1NFUlQobV9zdmdJbWFnZS0+aW1h
Z2VPYnNlcnZlcigpKTsKLSAgICBtX3N2Z0ltYWdlLT5pbWFnZU9ic2VydmVyKCktPmFuaW1hdGlv
bkFkdmFuY2VkKG1fc3ZnSW1hZ2UpOwotfQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1Rp
bWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4qKQotewotICAgIC8vIFdlIGhhdmUgbm8gZ3Vh
cmFudGVlIHRoYXQgdGhlIGZyYW1lIGRvZXMgbm90IHJlcXVpcmUgbGF5b3V0IHdoZW4gdGhlIHRp
bWVyIGZpcmVkLgotICAgIC8vIFNvIGJlIHN1cmUgdG8gY2hlY2sgYWdhaW4gaW4gY2FzZSBpdCBp
cyBzdGlsbCBub3Qgc2FmZSB0byBydW4gcmVkcmF3LgotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9zdmdJbWFnZS0+ZnJhbWVWaWV3KCk7Ci0gICAgaWYgKGZyYW1lVmlldyAmJiAoZnJhbWVW
aWV3LT5uZWVkc0xheW91dCgpIHx8IGZyYW1lVmlldy0+aXNJbkxheW91dCgpKSkgewotICAgICAg
ICBpZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fcmVkcmF3VGlt
ZXIuc3RhcnRPbmVTaG90KDApOwotICAgIH0gZWxzZQotICAgICAgIHJlZHJhdygpOwotfQotCi12
b2lkIFNWR0ltYWdlQ2FjaGU6OmNhY2hlQ2xlYXJUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90
VGltZXI8U1ZHSW1hZ2VDYWNoZT4qKQotewotICAgIGNsZWFyQml0bWFwQ2FjaGUoKTsKKyAgICBy
ZXR1cm4gaW1hZ2VTaXplOwogfQogCi1JbWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVh
dGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitJ
bWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIGNvbnN0IENhY2hlZEltYWdlQ2xpZW50
KiBjbGllbnQgPSByZW5kZXJlcjsKLQogICAgIC8vIFRoZSBjYWNoZSBuZWVkcyB0byBrbm93IHRo
ZSBzaXplIG9mIHRoZSByZW5kZXJlciBiZWZvcmUgcXVlcnlpbmcgYW4gaW1hZ2UgZm9yIGl0Lgot
ICAgIFNpemVBbmRTY2FsZXNNYXA6Oml0ZXJhdG9yIHNpemVJdCA9IG1fc2l6ZUFuZFNjYWxlc01h
cC5maW5kKHJlbmRlcmVyKTsKLSAgICBpZiAoc2l6ZUl0ID09IG1fc2l6ZUFuZFNjYWxlc01hcC5l
bmQoKSkKKyAgICBJbWFnZUZvckNvbnRhaW5lck1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRm9y
Q29udGFpbmVyTWFwLmZpbmQocmVuZGVyZXIpOworICAgIGlmIChpdCA9PSBtX2ltYWdlRm9yQ29u
dGFpbmVyTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwogCi0g
ICAgRmxvYXRTaXplIHNpemUgPSBzaXplSXQtPnZhbHVlLnNpemU7Ci0gICAgZmxvYXQgem9vbSA9
IHNpemVJdC0+dmFsdWUuem9vbTsKLSAgICBmbG9hdCBzY2FsZSA9IHNpemVJdC0+dmFsdWUuc2Nh
bGU7CisgICAgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiBpbWFnZSA9IGl0LT52YWx1ZTsK
KyAgICBBU1NFUlQoIWltYWdlLT5jb250YWluZXJTaXplKCkuaXNFbXB0eSgpKTsKIAogICAgIC8v
IEZJWE1FICg4NTMzNSk6IFRoaXMgbmVlZHMgdG8gdGFrZSBDU1MgdHJhbnNmb3JtIHNjYWxlIGlu
dG8gYWNjb3VudCBhcyB3ZWxsLgorICAgIC8vIEZJWE1FOiBTZXQgdGhlIHBhZ2Ugc2NhbGUgaW4g
c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyIGluc3RlYWQgb2YgbG9va2luZyBpdCB1cCBoZXJl
LgogICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgIGlm
ICghc2NhbGUpCi0gICAgICAgIHNjYWxlID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBh
Z2UtPnBhZ2VTY2FsZUZhY3RvcigpOwotCi0gICAgQVNTRVJUKCFzaXplLmlzRW1wdHkoKSk7Ci0K
LSAgICAvLyAoUmUpc2NoZWR1bGUgdGhlIG9uZXNob3QgdGltZXIgdG8gdGhyb3cgb3V0IGFsbCB0
aGUgY2FjaGVkIEltYWdlQnVmZmVycyBpZiB0aGV5IHJlbWFpbiB1bnVzZWQgZm9yIHRvbyBsb25n
LgotICAgIG1fY2FjaGVDbGVhclRpbWVyLnJlc3RhcnQoKTsKLQotICAgIC8vIExvb2t1cCBpbWFn
ZSBmb3IgY2xpZW50IGluIGNhY2hlIGFuZCBldmVudHVhbGx5IHVwZGF0ZSBpdC4KLSAgICBJbWFn
ZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuZmluZChjbGllbnQpOwotICAg
IGlmIChpdCAhPSBtX2ltYWdlRGF0YU1hcC5lbmQoKSkgewotICAgICAgICBJbWFnZURhdGEmIGRh
dGEgPSBpdC0+dmFsdWU7Ci0KLSAgICAgICAgLy8gQ29tbW9uIGNhc2U6IGltYWdlIHNpemUgJiB6
b29tIHJlbWFpbmVkIHRoZSBzYW1lLgotICAgICAgICBpZiAoZGF0YS5zaXplQW5kU2NhbGVzLnNp
emUgPT0gc2l6ZSAmJiBkYXRhLnNpemVBbmRTY2FsZXMuem9vbSA9PSB6b29tICYmIGRhdGEuc2l6
ZUFuZFNjYWxlcy5zY2FsZSA9PSBzY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBkYXRhLmltYWdl
LmdldCgpOwotCi0gICAgICAgIC8vIElmIHRoZSBpbWFnZSBzaXplIGZvciB0aGUgY2xpZW50IGNo
YW5nZWQsIHdlIGhhdmUgdG8gZGVsZXRlIHRoZSBidWZmZXIsIHJlbW92ZSB0aGUgaXRlbSBmcm9t
IHRoZSBjYWNoZSBhbmQgcmVjcmVhdGUgaXQuCi0gICAgICAgIGRlbGV0ZSBkYXRhLmJ1ZmZlcjsK
LSAgICAgICAgbV9pbWFnZURhdGFNYXAucmVtb3ZlKGl0KTsKLSAgICB9Ci0KLSAgICBGbG9hdFNp
emUgc2NhbGVkU2l6ZShzaXplKTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKHNjYWxlICogem9vbSk7
Ci0KLSAgICAvLyBDcmVhdGUgYW5kIGNhY2hlIG5ldyBpbWFnZSBhbmQgaW1hZ2UgYnVmZmVyIGF0
IHJlcXVlc3RlZCBzaXplLgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbmV3QnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUoc2NhbGVkU2l6ZSksIDEpOwotICAgIGlm
ICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSW1hZ2U6Om51bGxJbWFnZSgpOwotCi0gICAg
bV9zdmdJbWFnZS0+ZHJhd1NWR1RvSW1hZ2VCdWZmZXIobmV3QnVmZmVyLmdldCgpLCBzaXplLCBz
Y2FsZSAqIHpvb20sIFNWR0ltYWdlOjpEb250Q2xlYXJJbWFnZUJ1ZmZlcik7Ci0KLSAgICBSZWZQ
dHI8SW1hZ2U+IG5ld0ltYWdlID0gbmV3QnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9y
ZSk7Ci0gICAgSW1hZ2UqIG5ld0ltYWdlUHRyID0gbmV3SW1hZ2UuZ2V0KCk7Ci0gICAgQVNTRVJU
KG5ld0ltYWdlUHRyKTsKKyAgICBpbWFnZS0+c2V0UGFnZVNjYWxlKHBhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkgKiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7CiAKLSAgICBtX2ltYWdlRGF0YU1h
cC5hZGQoY2xpZW50LCBJbWFnZURhdGEobmV3QnVmZmVyLmxlYWtQdHIoKSwgbmV3SW1hZ2UucmVs
ZWFzZSgpLCBTaXplQW5kU2NhbGVzKHNpemUsIHpvb20sIHNjYWxlKSkpOwotICAgIHJldHVybiBu
ZXdJbWFnZVB0cjsKKyAgICByZXR1cm4gaW1hZ2UuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuaAkocmV2aXNpb24gMTQyMzIzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM1LDYgKzM0LDcg
QEAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBDYWNoZWRJbWFnZUNsaWVudDsKIGNsYXNzIElt
YWdlQnVmZmVyOwogY2xhc3MgU1ZHSW1hZ2U7CitjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsK
IGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgU1ZHSW1hZ2VDYWNoZSB7CkBAIC00Nyw3NyAr
NDcsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0ltYWdlQ2Fj
aGUoaW1hZ2UpKTsKICAgICB9CiAKLSAgICBzdHJ1Y3QgU2l6ZUFuZFNjYWxlcyB7Ci0gICAgICAg
IFNpemVBbmRTY2FsZXMoKQotICAgICAgICAgICAgOiB6b29tKDEpCi0gICAgICAgICAgICAsIHNj
YWxlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFNpemVBbmRTY2FsZXMoY29u
c3QgRmxvYXRTaXplJiBuZXdTaXplLCBmbG9hdCBuZXdab29tLCBmbG9hdCBuZXdTY2FsZSkKLSAg
ICAgICAgICAgIDogc2l6ZShuZXdTaXplKQotICAgICAgICAgICAgLCB6b29tKG5ld1pvb20pCi0g
ICAgICAgICAgICAsIHNjYWxlKG5ld1NjYWxlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAg
ICAgICBTaXplQW5kU2NhbGVzKGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSwgZmxvYXQgbmV3Wm9v
bSkKLSAgICAgICAgICAgIDogc2l6ZShuZXdTaXplKQotICAgICAgICAgICAgLCB6b29tKG5ld1pv
b20pCi0gICAgICAgICAgICAsIHNjYWxlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIEZsb2F0U2l6ZSBzaXplOyAvLyBUaGlzIGlzIHRoZSBjb250YWluZXIgc2l6ZSB3aXRob3V0
IHpvb20uCi0gICAgICAgIGZsb2F0IHpvb207Ci0gICAgICAgIGZsb2F0IHNjYWxlOyAvLyBBIHNj
YWxlIG9mIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGRlZmF1bHQgc2NhbGUgc2hvdWxkIGJlIHVzZWQu
Ci0gICAgfTsKLQogICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNvbnN0IENhY2hlZElt
YWdlQ2xpZW50Kik7CiAKICAgICB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25z
dCBDYWNoZWRJbWFnZUNsaWVudCosIGNvbnN0IEludFNpemUmLCBmbG9hdCk7CiAgICAgSW50U2l6
ZSBpbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKIAotICAg
IEltYWdlKiBsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVy
T2JqZWN0Kik7Ci0gICAgdm9pZCBpbWFnZUNvbnRlbnRDaGFuZ2VkKCk7CisgICAgSW1hZ2UqIGxv
b2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogcHJp
dmF0ZToKICAgICBTVkdJbWFnZUNhY2hlKFNWR0ltYWdlKik7Ci0gICAgdm9pZCByZWRyYXcoKTsK
LSAgICB2b2lkIHJlZHJhd1RpbWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4qKTsKLSAgICB2
b2lkIGNhY2hlQ2xlYXJUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8U1ZHSW1hZ2VD
YWNoZT4qKTsKLSAgICB2b2lkIGNsZWFyQml0bWFwQ2FjaGUoKTsKLQotICAgIHN0cnVjdCBJbWFn
ZURhdGEgewotICAgICAgICBJbWFnZURhdGEoKQotICAgICAgICAgICAgOiBpbWFnZU5lZWRzVXBk
YXRlKGZhbHNlKQotICAgICAgICAgICAgLCBidWZmZXIoMCkKLSAgICAgICAgewotICAgICAgICB9
Ci0KLSAgICAgICAgSW1hZ2VEYXRhKEltYWdlQnVmZmVyKiBuZXdCdWZmZXIsIFBhc3NSZWZQdHI8
SW1hZ2U+IG5ld0ltYWdlLCBjb25zdCBTaXplQW5kU2NhbGVzJiBuZXdTaXplQW5kU2NhbGVzKQot
ICAgICAgICAgICAgOiBpbWFnZU5lZWRzVXBkYXRlKGZhbHNlKQotICAgICAgICAgICAgLCBzaXpl
QW5kU2NhbGVzKG5ld1NpemVBbmRTY2FsZXMpCi0gICAgICAgICAgICAsIGJ1ZmZlcihuZXdCdWZm
ZXIpCi0gICAgICAgICAgICAsIGltYWdlKG5ld0ltYWdlKQotICAgICAgICB7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIGltYWdlTmVlZHNVcGRhdGU7Ci0gICAgICAgIFNpemVBbmRTY2FsZXMg
c2l6ZUFuZFNjYWxlczsKLQotICAgICAgICBJbWFnZUJ1ZmZlciogYnVmZmVyOwotICAgICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlOwotICAgIH07CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
Q2FjaGVkSW1hZ2VDbGllbnQqLCBTaXplQW5kU2NhbGVzPiBTaXplQW5kU2NhbGVzTWFwOwotICAg
IHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIEltYWdlRGF0YT4gSW1h
Z2VEYXRhTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCos
IFJlZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4gPiBJbWFnZUZvckNvbnRhaW5lck1hcDsKIAog
ICAgIFNWR0ltYWdlKiBtX3N2Z0ltYWdlOwotICAgIFNpemVBbmRTY2FsZXNNYXAgbV9zaXplQW5k
U2NhbGVzTWFwOwotICAgIEltYWdlRGF0YU1hcCBtX2ltYWdlRGF0YU1hcDsKLSAgICBUaW1lcjxT
VkdJbWFnZUNhY2hlPiBtX3JlZHJhd1RpbWVyOwotICAgIERlZmVycmFibGVPbmVTaG90VGltZXI8
U1ZHSW1hZ2VDYWNoZT4gbV9jYWNoZUNsZWFyVGltZXI7CisgICAgSW1hZ2VGb3JDb250YWluZXJN
YXAgbV9pbWFnZUZvckNvbnRhaW5lck1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2VGb3JDb250YWluZXIu
aCIKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiSW1h
Z2UuaCIKKyNpbmNsdWRlICJTVkdJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0lu
dFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25zdAoreworICAgIEZsb2F0U2l6
ZSBzY2FsZWRDb250YWluZXJTaXplKG1fY29udGFpbmVyU2l6ZSk7CisgICAgc2NhbGVkQ29udGFp
bmVyU2l6ZS5zY2FsZShtX3pvb20pOworICAgIHJldHVybiByb3VuZGVkSW50U2l6ZShzY2FsZWRD
b250YWluZXJTaXplKTsKK30KKwordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit7CisgICAgbV9pbWFnZS0+
ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fem9vbSwgZHN0UmVj
dCwgc3JjUmVjdCwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Cit9CisKK3Zv
aWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCkKK3sKKyAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250
ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fcGFnZVNjYWxlLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU1ZHSW1hZ2VG
b3JDb250YWluZXJfaAorI2RlZmluZSBTVkdJbWFnZUZvckNvbnRhaW5lcl9oCisKKyNpZiBFTkFC
TEUoU1ZHKQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNs
dWRlICJTVkdJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0ltYWdl
Rm9yQ29udGFpbmVyIDogcHVibGljIEltYWdlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4gY3JlYXRlKFNWR0ltYWdlKiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IHpvb20pCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ltYWdlRm9yQ29udGFpbmVyKGlt
YWdlLCBjb250YWluZXJTaXplLCBwYWdlU2NhbGUsIHpvb20pKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFs
IGJvb2wgdXNlc0NvbnRhaW5lclNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltYWdl
LT51c2VzQ29udGFpbmVyU2l6ZSgpOyB9CisgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CisgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0
aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBPVkVSUklERQor
ICAgIHsKKyAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmlu
c2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0Jikg
T1ZFUlJJREU7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25z
ZXJ2YXRpdmUuCisgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgp
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBGbG9hdFNpemUgY29udGFpbmVyU2l6
ZSgpIHsgcmV0dXJuIG1fY29udGFpbmVyU2l6ZTsgfQorICAgIGZsb2F0IHBhZ2VTY2FsZSgpIHsg
cmV0dXJuIG1fcGFnZVNjYWxlOyB9CisgICAgZmxvYXQgem9vbSgpIHsgcmV0dXJuIG1fem9vbTsg
fQorCisgICAgdm9pZCBzZXRTaXplKEZsb2F0U2l6ZSYgc2l6ZSkgeyBtX2NvbnRhaW5lclNpemUg
PSBzaXplOyB9CisgICAgdm9pZCBzZXRab29tKGZsb2F0IHpvb20pIHsgbV96b29tID0gem9vbTsg
fQorICAgIHZvaWQgc2V0UGFnZVNjYWxlKGZsb2F0IHBhZ2VTY2FsZSkgeyBtX3BhZ2VTY2FsZSA9
IHBhZ2VTY2FsZTsgfQorCitwcml2YXRlOgorICAgIFNWR0ltYWdlRm9yQ29udGFpbmVyKFNWR0lt
YWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBwYWdlU2Nh
bGUsIGZsb2F0IHpvb20pCisgICAgICAgIDogbV9pbWFnZShpbWFnZSksIG1fY29udGFpbmVyU2l6
ZShjb250YWluZXJTaXplKSwgbV9wYWdlU2NhbGUocGFnZVNjYWxlKSwgbV96b29tKHpvb20pIHsg
fQorCisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFs
bCovID0gdHJ1ZSkgeyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKworICAgIFNWR0ltYWdlKiBtX2ltYWdlOworICAgIEZsb2F0U2l6ZSBt
X2NvbnRhaW5lclNpemU7CisgICAgZmxvYXQgbV9wYWdlU2NhbGU7CisgICAgZmxvYXQgbV96b29t
OworfTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYgLy8gU1ZHSW1hZ2VGb3JD
b250YWluZXJfaAo=
</data>
<flag name="commit-queue"
          id="207275"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187705</attachid>
            <date>2013-02-11 15:55:27 -0800</date>
            <delta_ts>2013-02-11 16:23:07 -0800</delta_ts>
            <desc>Update per reviewer comments</desc>
            <filename>106159.5.patch</filename>
            <type>text/plain</type>
            <size>41594</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjUzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MSBAQAorMjAxMy0wMi0xMSAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBiaXRtYXAgU1ZHIGlt
YWdlIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDYxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNhY2hpbmcgb2YgU1ZHIGJpdG1hcHMgc28gU1ZHIGlt
YWdlcyBhcmUgcmVuZGVyZWQgZGlyZWN0bHkuIFRoaXMKKyAgICAgICAgZW5hYmxlcyBXZWJLaXQg
dG8gcGFzcyB0aGUgSUUgQ2hhbGtib2FyZCBkZW1vIGluIDEwcyBvbiBhIFo2MjA6CisgICAgICAg
IGh0dHA6Ly9pZS5taWNyb3NvZnQuY29tL3Rlc3Rkcml2ZS9QZXJmb3JtYW5jZS9DaGFsa2JvYXJk
LworCisgICAgICAgIE9uIGEgc2ltcGxlIHNjYWxlZCBTVkcgYmVuY2htYXJrIHNpbWlsYXIgdG8g
dGhlIElFMTAgQ2hhbGtib2FyZCBkZW1vCisgICAgICAgIChodHRwOi8vcGhpbGJpdC5jb20vU3Zn
SW1hZ2VQZXJmb3JtYW5jZS92aWV3cG9ydC5odG1sKToKKyAgICAgICAgICAgIHdpdGhvdXQgcGF0
Y2g6IH4yMEZQUworICAgICAgICAgICAgd2l0aCBwYXRjaDogfjU1RlBTCisKKyAgICAgICAgVGhl
IGJpdG1hcCBTVkcgaW1hZ2UgY2FjaGUgaGFkIHNldmVyYWwgc2hvcnRjb21pbmdzOgorICAgICAg
ICAgICAgLSBUaGUgYml0bWFwIGNhY2hlIHByZXZlbnRlZCB2aWV3cG9ydCByZW5kZXJpbmcuIChX
SzEwNDY5MykKKyAgICAgICAgICAgIC0gQml0bWFwIG1lbW9yeSB1c2FnZSB3YXMgaGlnaC4gKFdL
MTA2NDg0KQorICAgICAgICAgICAgLSBDYWNoaW5nIGFuaW1hdGluZyBpbWFnZXMgd2FzIGV4cGVu
c2l2ZS4KKworICAgICAgICBUaGlzIGNoYW5nZSByZW1vdmVzIGFsbW9zdCBhbGwgb2YgdGhlIFNW
R0ltYWdlQ2FjaGUgaW1wbGVtZW50YXRpb24sIHJlcGxhY2luZyBpdCB3aXRoCisgICAgICAgIGRp
cmVjdGx5LXJlbmRlcmVkIFNWRy4gSW5zdGVhZCBvZiBjYWNoaW5nIGJpdG1hcHMsIGFuIFNWR0lt
YWdlRm9yQ29udGFpbmVyIGlzIGNhY2hlZCB3aGljaAorICAgICAgICBpcyBhIHRoaW4gd3JhcHBl
ciBhcm91bmQgYW4gU1ZHIGltYWdlIHdpdGggdGhlIGFzc29jaWF0ZWQgY29udGFpbmVyIHNpemUg
YW5kIHNjYWxlLgorICAgICAgICBXaGVuIHJlbmRlcmluZyBwYXR0ZXJucyAoZS5nLiwgdGlsZWQg
YmFja2dyb3VuZHMpLCBhIHRlbXBvcmFyeSBiaXRtYXAgaXMgdXNlZCBmb3IKKyAgICAgICAgcGVy
Zm9ybWFuY2UuIFRoaXMgY2hhbmdlIGFsc28gcmVtb3ZlcyB0aGUgcmVkcmF3IHRpbWVyIG9mIHRo
ZSBvbGQgY2FjaGUsIGluc3RlYWQgcmVseWluZworICAgICAgICBvbiB0aGUgU1ZHIGltYWdlIHRv
IG5vdGlmeSBjbGllbnRzIGlmIHRoZSBpbWFnZSBjaGFuZ2VzIChlLmcuLCBkdXJpbmcgYW5pbWF0
aW9ucykuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBjb3ZlcmVkIHdpdGggZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Omxvb2t1cE9yQ3Jl
YXRlSW1hZ2VGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y2xl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QpOgorCisg
ICAgICAgICAgICBTVkcgaW1hZ2VzIGFyZSBubyBsb25nZXIgc3BlY2lhbC1jYXNlZCBoZXJlLiBX
aGVuIHRoZSBTVkcgaW1hZ2UgY2hhbmdlcywgdXNlcnMgYXJlCisgICAgICAgICAgICBub3RpZmll
ZCB0aHJvdWdoIHRoaXMgZnVuY3Rpb24sIGFuZCB1c2VycyBjYW4gdGhlbiByZXF1ZXN0IHRoZWly
IGNvbnRlbnQgdG8gYmUgcmVkcmF3bi4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisKKyAgICAgICAg
ICAgIGRyYXdGb3JDb250YWluZXIgbGF5cyBvdXQgdGhlIFNWRyBjb250ZW50IGZvciBhIHNwZWNp
ZmljIGNvbnRhaW5lciBzaXplIGFuZCByZW5kZXJzIGl0LgorICAgICAgICAgICAgVGhlIGxvZ2lj
IGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQgYnV0IGEgbm90ZSBhYm91dCB0aGUgc2NhbGVzIGFu
ZCB6b29tcyBoZXJlOgorICAgICAgICAgICAgICAgIHRoZSBkZXN0aW5hdGlvbiByZWN0IHBhcmFt
ZXRlciBpcyB6b29tZWQgYnV0IG5vdCBzY2FsZWQKKyAgICAgICAgICAgICAgICB0aGUgc291cmNl
IHJlY3QgcGFyYW1ldGVyIGlzIHpvb21lZCBidXQgbm90IHNjYWxlZAorICAgICAgICAgICAgICAg
IHRoZSBjb250ZXh0IGlzIHNjYWxlZCBidXQgbm90IHpvb21lZAorICAgICAgICAgICAgU1ZHSW1h
Z2U6OmRyYXcoLi4uKSBvbmx5IGFjY2VwdHMgYSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlY3Qg
YnV0IGRvZXMgbm90IGNvbnNpZGVyCisgICAgICAgICAgICBzY2FsZSBvciB6b29tLiBUaGVyZWZv
cmUsIGRyYXdGb3JDb250YWluZXIgcmVtb3ZlcyB0aGUgem9vbSBjb21wb25lbnQgZnJvbSB0aGUg
c291cmNlCisgICAgICAgICAgICBzbyBTVkdJbWFnZTo6ZHJhdyguLi4pIHdpbGwgZHJhdyBmcm9t
IHRoZSBwcmUtem9vbSBzb3VyY2UgdG8gdGhlIHBvc3Qtem9vbSBkZXN0aW5hdGlvbi4KKworICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIpOgorCisgICAgICAgICAgICBGb3IgcGVyZm9ybWFuY2UsIGRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyIHJlbmRlcnMgdGhlIFNWRyBjb250ZW50IG9udG8gYSBiaXRtYXAsIHRoZW4K
KyAgICAgICAgICAgIGhhcyB0aGUgYml0bWFwIGltYWdlIGRyYXcgdGhlIHBhdHRlcm4uIFRoaXMg
aXMgbmVjZXNzYXJ5IGJlY2F1c2UgZHJhd1BhdHRlcm4gaXMgdXNlZAorICAgICAgICAgICAgZm9y
IHRpbGluZy4KKworICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpyZXNldEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwOgorCisgICAgICAgICAgICBJbnN0ZWFkIG9m
IHN0b3JpbmcgYSBTaXplQW5kU2NhbGVzIHZhbHVlcyBmb3IgZWFjaCByZW5kZXJlciwgYSBTVkdJ
bWFnZUZvckNvbnRhaW5lcgorICAgICAgICAgICAgaXMgc3RvcmVkIHdoaWNoIGlzIGp1c3QgYSB0
aGluIHdyYXBwZXIgYXJvdW5kIGFuIFNWRyBpbWFnZSB0aGF0IGNvbnRhaW5zIGNvbnRhaW5lcgor
ICAgICAgICAgICAgc2l6aW5nIGluZm9ybWF0aW9uLiBCeSBjb21iaW5pbmcgdGhlIGltYWdlIGFu
ZCBzaXplIGluZm9ybWF0aW9uLCB0aGUgdHdvIG1hcHMgb2YKKyAgICAgICAgICAgIFNWR0ltYWdl
Q2FjaGUgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIG9uZS4KKworICAgICAgICAgICAgVG8gbWFrZSB0
aGlzIHBhdGNoIGVhc2llciB0byByZXZpZXcsIFNWR0ltYWdlQ2FjaGUgc3RpbGwgZXhpc3RzIGFu
ZCB3b3JrcyBzaW1pbGFyIHRvCisgICAgICAgICAgICBob3cgaXQgZGlkIGJlZm9yZSB0aGUgcGF0
Y2guIE5vdywgU1ZHSW1hZ2VDYWNoZSBzaW1wbHkgc3RvcmVzIHRoZSBTVkdJbWFnZUZvckNvbnRh
aW5lcnMuCisgICAgICAgICAgICBJbiBhIGZvbGxvd3VwIHBhdGNoIGl0IHdpbGwgYmUgcmVtb3Zl
ZC4KKworICAgICAgICAgICAgTm90ZTogdGhlIHJlZHJhdyB0aW1lciBvZiBTVkdJbWFnZUNhY2hl
IGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSBhbmltYXRpb24KKyAgICAgICAgICAgIGludmFsaWRh
dGlvbiBpcyBub3cgcHJvcGVybHkgcHJvcGFnYXRlZCBiYWNrIHRvIHRoZSBpbWFnZSBjbGllbnRz
LgorCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6
OlNWR0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6flNWR0lt
YWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50
RnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5l
clNpemVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjppbWFn
ZVNpemVGb3JSZW5kZXJlcik6CisKKyAgICAgICAgICAgIFByZXZpb3VzbHksIHRoaXMgZnVuY3Rp
b24gcmV0dXJuZWQgdGhlIHNjYWxlZCBpbWFnZSBzaXplIHdoaWNoIHdhcyBpbmNvcnJlY3QuIFRo
ZSBpbWFnZQorICAgICAgICAgICAgc2l6ZSBpcyB1c2VkIGJ5IGNsaWVudHMgc3VjaCBhcyBHcmFw
aGljc0NvbnRleHQyRCB0byBkZXRlcm1pbmUgdGhlIHNvdXJjZSBzaXplCisgICAgICAgICAgICBm
b3IgZHJhd2luZyB0aGUgaW1hZ2UuIGRyYXcoKSBhY2NlcHRzIHpvb21lZCBidXQgbm90IHNjYWxl
ZCB2YWx1ZXMsIHNvIHRoaXMgaGFzIGJlZW4KKyAgICAgICAgICAgIGNoYW5nZWQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5kZXJl
cik6CisKKyAgICAgICAgICAgIEEgRklYTUUgaGFzIGJlZW4gYWRkZWQgaGVyZSB0byBub3Qgc2V0
IHRoZSBzY2FsZSBvbiBldmVyeSBsb29rdXAuIFRoaXMgY2FuIGJlIGltcHJvdmVkCisgICAgICAg
ICAgICBieSBzZXR0aW5nIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBzZXRDb250YWluZXJTaXpl
Rm9yUmVuZGVyZXIoKSBpbiBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0ltYWdl
Q2FjaGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6
IEFkZGVkLgorCisgICAgICAgICAgICBTVkdJbWFnZUZvckNvbnRhaW5lciBpcyBhIHRoaW4gd3Jh
cHBlciBhcm91bmQgYW4gU1ZHIGltYWdlLiBUaGUgbGlmZXRpbWUgb2YgdGhlCisgICAgICAgICAg
ICBTVkdJbWFnZSB3aWxsIGJlIGxvbmdlciB0aGFuIHRoZSBpbWFnZSBjYWNoZS4KKworICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6
ZSk6CisKKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG9ubHkgbG9naWMgaW4gU1ZHSW1hZ2VGb3JD
b250YWluZXIuIFRoZSBzaXplIHJldHVybmVkIG5lZWRzIHRvIGJlIHpvb21lZAorICAgICAgICAg
ICAgYnV0IG5vdCBzY2FsZWQgYmVjYXVzZSBpdCBpcyB1c2VkIChlLmcuLCBieSBSZW5kZXJJbWFn
ZSkgdG8gcGFzcyBiYWNrIGludG8gZHJhdygpIHdoaWNoCisgICAgICAgICAgICB0YWtlcyB6b29t
ZWQgYnV0IG5vdCBzY2FsZWQgdmFsdWVzLgorCisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5l
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU1ZHSW1hZ2VGb3JD
b250YWluZXIpOgorCisgICAgICAgICAgICBJbiBhIGZ1dHVyZSBwYXRjaCBTVkdJbWFnZUZvckNv
bnRhaW5lciBjYW4gYmUgbWFkZSBpbW11dGFibGUgYnV0IHdpdGhvdXQgYSByZWZhY3RvcmluZwor
ICAgICAgICAgICAgZm9yIG5vdCBzZXR0aW5nIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBTVkdJ
bWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIsCisgICAgICAgICAgICBz
ZXR0ZXJzIGFyZSBuZWVkZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFp
bmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmNv
bnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnBh
Z2VTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6em9vbSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2V0U2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2V0Wm9vbSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2V0UGFnZVNjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpTVkdJbWFnZUZvckNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZGVzdHJveURlY29kZWREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkZWNvZGVkU2l6ZSk6CisK
IDIwMTMtMDItMTEgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbSFRNTFRlbXBsYXRlRWxlbWVudF0gPHRlbXBsYXRlPiBpbnNpZGUgb2YgPGhlYWQ+
IG1heSBub3QgY3JlYXRlIDxib2R5PiBpZiBFT0YgaXMgaGl0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTI1MDYsNiArMjUwNiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5jcHAKKyAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCiAK
ICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAogICAgIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtNDkxNyw2ICs0OTE3LDggQEAgd2ViY29yZV9zdmdfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBcCisJU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGVzLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDI0MjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQ2LDYgKzI2NDYsNyBAQCBI
RUFERVJTICs9IFwKICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBcCiAgICAg
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmggXAorICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIFwKICAgICBzdmcv
cHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggXAogICAgIHN2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggXApAQCAtMzc2OCw2ICsz
NzY5LDcgQEAgZW5hYmxlPyhTVkcpIHsKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIFwK
ICAgICAgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIFwKKyAgICAgICAgc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBcCiAgICAgICAgIHN2Zy9wcm9wZXJ0aWVz
L1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIFwKICAgICAgICAgc3ZnL3Byb3BlcnRpZXMv
U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwIFwKICAgICAgICAgc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTQyNDI2
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01MTMx
LDYgKzUxMzEsOCBAQAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNs
aWVudC5oJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwJywKICAgICAg
ICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCcsCisgICAgICAgICAgICAnc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgnLAorICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmgnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDE0MjQyNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NDUwOSw2ICs3NDUwOSwxNCBAQAog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xTVkdJbWFnZUNocm9tZUNsaWVudC5o
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXGdyYXBoaWNzXFNWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xTVkdJbWFn
ZUZvckNvbnRhaW5lci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgogCQkJCTxGaWx0ZXIKIAkJCQkJ
TmFtZT0iZmlsdGVycyIKIAkJCQkJPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjEsNiArMjIxLDggQEAKIAkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5
RDQxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8q
IFNWR0ltYWdlQ2FjaGUuY3BwICovOyB9OwogCQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzMgLyog
U1ZHSW1hZ2VDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwOEY4NTlENDE0NjNG
OUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTM0IC8q
IFNWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJMDhGODU5RDUxNDYzRjlDRDAwNjdE
OTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VG
b3JDb250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwOEZCMTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
Ki87IH07CiAJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RkUwQkM1
MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkUwQkM0MTI3RTJB
QzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzQ4OSw2ICs3NDkxLDgg
QEAKIAkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzMgLyog
U1ZHSW1hZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdJbWFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGODU5RDMx
NDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHSW1hZ2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5
MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHSW1hZ2VGb3JDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkIzRjgzMTNC
Qzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDA5LDYgKzIwNDEzLDggQEAKIAkJCQlCMjU1OTkwQzBEMDBEOEI5MDBC
QjgyNUMgLyogU1ZHSW1hZ2UuaCAqLywKIAkJCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzMgLyog
U1ZHSW1hZ2VDYWNoZS5jcHAgKi8sCiAJCQkJMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNW
R0ltYWdlQ2FjaGUuaCAqLywKKwkJCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1h
Z2VGb3JDb250YWluZXIuY3BwICovLAorCQkJCTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBT
VkdJbWFnZUZvckNvbnRhaW5lci5oICovLAogCQkJCUFBQzA4Q0VEMTVGOTMzRDYwMEYxRTE4OCAv
KiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsK
QEAgLTI2MDc1LDYgKzI2MDgxLDcgQEAKIAkJCQk2NTBGQkYyQjBEOUFGMDQ3MDA4RkMyOTIgLyog
U1ZHSEtlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTlBNDBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4Rjg1OUQ1MTQ2M0Y5Q0Qw
MDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEY4NTlENTE0
NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFBQzA4Q0VGMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ltYWdlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI4QzZBMkEwRDAwQzQ0ODAwMzM0QUE0IC8qIFNW
R0ltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MzM3LDYgKzI5MzQ0LDcgQEAKIAkJ
CQk2NTBGQkYyQTBEOUFGMDQ3MDA4RkMyOTIgLyogU1ZHSEtlcm5FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyNTU5OUEzMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdJbWFnZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMkMwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjhD
NkEyOTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBMkYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xhbmdTcGFjZS5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIGlubGluZSBJ
bWFnZSogQ2FjaGVkSW1hZ2U6Omxvb2t1cE9yQ3JlYXQKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
aWYgKCFtX2ltYWdlLT5pc1NWR0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgp
OwotICAgIEltYWdlKiB1c2VJbWFnZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+bG9va3VwT3JDcmVhdGVC
aXRtYXBJbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICBJbWFnZSogdXNlSW1hZ2UgPSBt
X3N2Z0ltYWdlQ2FjaGUtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICh1c2VJ
bWFnZSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgp
OwogICAgIHJldHVybiB1c2VJbWFnZTsKQEAgLTIxNSw2ICsyMTUsNyBAQCB2b2lkIENhY2hlZElt
YWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVuCiAgICAgaWYgKGNvbnRhaW5lclNpemUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICBBU1NFUlQo
Y29udGFpbmVyWm9vbSk7CiAgICAgaWYgKCFtX2ltYWdlKSB7CiAgICAgICAgIG1fcGVuZGluZ0Nv
bnRhaW5lclNpemVSZXF1ZXN0cy5zZXQocmVuZGVyZXIsIFNpemVBbmRab29tKGNvbnRhaW5lclNp
emUsIGNvbnRhaW5lclpvb20pKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzEyLDkgKzMxMyw2IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OmNoZWNrU2hvdWxkUGFpbnRCcm9rZW4KIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNsZWFyKCkKIHsKICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKLSNpZiBFTkFCTEUoU1ZH
KQotICAgIG1fc3ZnSW1hZ2VDYWNoZS5jbGVhcigpOwotI2VuZGlmCiAgICAgY2xlYXJJbWFnZSgp
OwogICAgIG1fcGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0cy5jbGVhcigpOwogICAgIHNldEVu
Y29kZWRTaXplKDApOwpAQCAtNDg0LDEzICs0ODIsNiBAQCB2b2lkIENhY2hlZEltYWdlOjpjaGFu
Z2VkSW5SZWN0KGNvbnN0IEltCiB7CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZSAhPSBtX2ltYWdl
KQogICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKFNWRykKLSAgICAvLyBXZSBoYXZlIHRvIHVw
ZGF0ZSB0aGUgY2FjaGVkIEltYWdlQnVmZmVycyBpZiB0aGUgdW5kZXJseWluZyBjb250ZW50IGNo
YW5nZWQuCi0gICAgaWYgKGltYWdlLT5pc1NWR0ltYWdlKCkpIHsKLSAgICAgICAgbV9zdmdJbWFn
ZUNhY2hlLT5pbWFnZUNvbnRlbnRDaGFuZ2VkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKICAgICBub3RpZnlPYnNlcnZlcnMoJnJlY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDE0MjQyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKQEAgLTU5LDEwICs2MCwyMyBAQCBTVkdJbWFn
ZTo6flNWR0ltYWdlKCkKICAgICBBU1NFUlQoIW1fY2hyb21lQ2xpZW50IHx8ICFtX2Nocm9tZUNs
aWVudC0+aW1hZ2UoKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29u
c3QgSW50U2l6ZSYpCit2b2lkIFNWR0ltYWdlOjpzZXRDb250YWluZXJTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCiB7Ci0gICAgLy8gU1ZHSW1hZ2VDYWNoZSBhbHJlYWR5IGludGVyY2VwdGVkIHRo
aXMgY2FsbCwgYXMgaXQgc3RvcmVzICYgY2FjaGVzIHRoZSBkZXNpcmVkIGNvbnRhaW5lciBzaXpl
cyAmIHpvb20gbGV2ZWxzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghbV9w
YWdlIHx8ICF1c2VzQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJv
b3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290RWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAg
IFJlbmRlclNWR1Jvb3QqIHJlbmRlcmVyID0gdG9SZW5kZXJTVkdSb290KHJvb3RFbGVtZW50LT5y
ZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBmcmFtZVZpZXcoKTsKKyAgICB2aWV3LT5yZXNpemUodGhpcy0+c2l6
ZSgpKTsKKworICAgIHJlbmRlcmVyLT5zZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCiBJbnRT
aXplIFNWR0ltYWdlOjpzaXplKCkgY29uc3QKQEAgLTk5LDU2ICsxMTMsNDYgQEAgSW50U2l6ZSBT
VkdJbWFnZTo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUoMzAwLCAxNTApOwogfQog
Ci12b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVy
LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHpvb21BbmRTY2FsZSwgU2hvdWxkQ2xlYXJC
dWZmZXIgc2hvdWxkQ2xlYXIpCit2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0
IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3
b3JrIGNvcnJlY3RseSB3aXRoIGFuaW1hdGlvbnMuIElmIGFuIGltYWdlIGNvbnRhaW5zIGFuaW1h
dGlvbnMsIHRoYXQgc2F5IHJ1biBmb3IgMiBzZWNvbmRzLAotICAgIC8vIGFuZCB3ZSBjdXJyZW50
bHkgaGF2ZSBvbmUgPGltZz4gdGhhdCBkaXNwbGF5cyB1cy4gSWYgd2Ugb3BlbiBhbm90aGVyIGRv
Y3VtZW50IHJlZmVyZW5jaW5nIHRoZSBzYW1lIFNWR0ltYWdlIGl0Ci0gICAgLy8gd2lsbCBkaXNw
bGF5IHRoZSBkb2N1bWVudCBhdCBhIHRpbWUgd2hlcmUgYW5pbWF0aW9ucyBhbHJlYWR5IHJhbiAt
IGV2ZW4gdGhvdWdoIGl0IGhhcyBpdHMgb3duIEltYWdlQnVmZmVyLgotICAgIC8vIFdlIGN1cnJl
bnRseSBkb24ndCBpbXBsZW1lbnQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRpbWUsIGFuZCBj
YW4gTk9UIGdvIGJhY2sgaW4gdGltZSwgb25jZSBhbmltYXRpb25zIHN0YXJ0ZWQuCi0gICAgLy8g
VGhlcmUncyBubyB3YXkgdG8gZml4IHRoaXMgYmVzaWRlcyBhdm9pZGluZyBzdHlsZS9hdHRyaWJ1
dGUgbXV0YXRpb25zIGZyb20gU1ZHQW5pbWF0aW9uRWxlbWVudC4KLSAgICBBU1NFUlQoYnVmZmVy
KTsKLSAgICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKLQogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwot
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQq
PihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7Ci0gICAgaWYgKCFyb290RWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlclNWR1Jvb3QqIHJlbmRlcmVyID0gdG9SZW5k
ZXJTVkdSb290KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEcmF3IGltYWdlIGF0IHJlcXVlc3RlZCBzaXplLgog
ICAgIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gaW1hZ2VPYnNlcnZlcigpOwogICAgIEFTU0VS
VChvYnNlcnZlcik7CiAKICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwg
d2UgZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8g
dGhpcyByZWxheW91dC4KICAgICBzZXRJbWFnZU9ic2VydmVyKDApOwogCi0gICAgLy8gRGlzYWJs
ZSByZXBhaW50aW5nOyB3ZSBkb24ndCB3YW50IGRlZmVycmVkIHJlcGFpbnRzIHRvIHNjaGVkdWxl
IGFueSB0aW1lcnMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCi0gICAgZnJhbWUtPnZpZXcoKS0+YmVn
aW5EaXNhYmxlUmVwYWludHMoKTsKKyAgICBJbnRTaXplIHJvdW5kZWRDb250YWluZXJTaXplID0g
cm91bmRlZEludFNpemUoY29udGFpbmVyU2l6ZSk7CisgICAgc2V0Q29udGFpbmVyU2l6ZShyb3Vu
ZGVkQ29udGFpbmVyU2l6ZSk7CiAKLSAgICBJbnRTaXplIGNvbnRhaW5lclNpemUgPSByb3VuZGVk
SW50U2l6ZShzaXplKTsKLSAgICByZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShjb250YWluZXJT
aXplKTsKLSAgICBmcmFtZS0+dmlldygpLT5yZXNpemUodGhpcy0+c2l6ZSgpKTsKLQotICAgIEZs
b2F0U2l6ZSBzY2FsZWRDb250YWluZXJTaXplKHNpemUpOwotICAgIHNjYWxlZENvbnRhaW5lclNp
emUuc2NhbGUoem9vbUFuZFNjYWxlKTsKLSAgICBJbnRSZWN0IGRlc3RSZWN0ID0gSW50UmVjdChJ
bnRQb2ludCgpLCBleHBhbmRlZEludFNpemUoc2NhbGVkQ29udGFpbmVyU2l6ZSkpOwotICAgIGlm
IChzaG91bGRDbGVhciA9PSBDbGVhckltYWdlQnVmZmVyKQotICAgICAgICBidWZmZXItPmNvbnRl
eHQoKS0+Y2xlYXJSZWN0KGRlc3RSZWN0KTsKKyAgICBGbG9hdFJlY3Qgc2NhbGVkU3JjID0gc3Jj
UmVjdDsKKyAgICBzY2FsZWRTcmMuc2NhbGUoMSAvIHpvb20pOwogCi0gICAgLy8gRHJhdyBTVkcg
b24gdG9wIG9mIEltYWdlQnVmZmVyLgotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIGRlc3RS
ZWN0LCBJbnRSZWN0KEludFBvaW50KCksIGNvbnRhaW5lclNpemUpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOworICAgIC8vIENvbXBl
bnNhdGUgZm9yIHRoZSBjb250YWluZXIgc2l6ZSByb3VuZGluZyBieSBhZGp1c3RpbmcgdGhlIHNv
dXJjZSByZWN0LgorICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNyY1NpemUgPSBzY2FsZWRTcmMuc2l6
ZSgpOworICAgIGFkanVzdGVkU3JjU2l6ZS5zY2FsZShyb3VuZGVkQ29udGFpbmVyU2l6ZS53aWR0
aCgpIC8gY29udGFpbmVyU2l6ZS53aWR0aCgpLCByb3VuZGVkQ29udGFpbmVyU2l6ZS5oZWlnaHQo
KSAvIGNvbnRhaW5lclNpemUuaGVpZ2h0KCkpOworICAgIHNjYWxlZFNyYy5zZXRTaXplKGFkanVz
dGVkU3JjU2l6ZSk7CiAKLSAgICBpZiAoZnJhbWUtPnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKLSAg
ICAgICAgZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CisgICAgZHJhdyhjb250ZXh0LCBkc3RSZWN0
LCBzY2FsZWRTcmMsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogCiAgICAg
c2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7Cit9CiAKLSAgICBmcmFtZS0+dmlldygpLT5lbmRE
aXNhYmxlUmVwYWludHMoKTsKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUs
IGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAor
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKK3sKKyAgICBGbG9hdFNpemUgem9v
bWVkQ29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKTsKKyAgICB6b29tZWRDb250YWluZXJTaXpl
LnNjYWxlKHpvb20pOworICAgIEZsb2F0UmVjdCB6b29tZWRDb250YWluZXJSZWN0ID0gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgem9vbWVkQ29udGFpbmVyU2l6ZSk7CisKKyAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKHpv
b21lZENvbnRhaW5lclNpemUpLCBwYWdlU2NhbGUpOworICAgIGRyYXdGb3JDb250YWluZXIoYnVm
ZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20sIHpvb21lZENvbnRhaW5lclJlY3Qs
IHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVm
ZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CisgICAgaW1hZ2UtPmRyYXdQYXR0ZXJu
KGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBj
b21wb3NpdGVPcCwgZHN0UmVjdCk7CiB9CiAKIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSkKQEAgLTI1MCwyMSArMjU0LDM0IEBAIHZvaWQgU1ZHSW1hZ2U6OmNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb24KICAgICAgICAgaW50cmluc2ljUmF0aW8gPSBGbG9hdFNpemUoZmxvYXRW
YWx1ZUZvckxlbmd0aChpbnRyaW5zaWNXaWR0aCwgMCksIGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50
cmluc2ljSGVpZ2h0LCAwKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpCisvLyBGSVhNRTogc3VwcG9ydCBjYXRjaFVwSWZOZWNlc3Nh
cnkuCit2b2lkIFNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbihib29sIC8qIGNhdGNoVXBJZk5lY2Vz
c2FyeSAqLykKIHsKLSAgICAvLyBGSVhNRTogSW4gb3JkZXIgdG8gc3VwcG9ydCBkeW5hbWljIFNW
R3Mgd2UgbmVlZCB0byBoYXZlIGEgd2F5IHRvIGludmFsaWRhdGUgdGhpcwotICAgIC8vIGZyYW1l
IGNhY2hlLCBvciBiZXR0ZXIgeWV0LCBub3QgdXNlIGEgY2FjaGUgZm9yIHRpbGVkIGRyYXdpbmcg
YXQgYWxsLCBpbnN0ZWFkCi0gICAgLy8gaGF2aW5nIGEgdGlsZWQgZHJhd2luZyBjYWxsYmFjayAo
aG9wZWZ1bGx5IG5vbi12aXJ0dWFsKS4KLSAgICBpZiAoIW1fZnJhbWVDYWNoZSkgewotICAgICAg
ICBpZiAoIW1fcGFnZSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCAxKTsKLSAgICAg
ICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3Jt
YWwpOwotICAgICAgICBtX2ZyYW1lQ2FjaGUgPSBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2lu
Z1N0b3JlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fZnJhbWVDYWNoZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9v
dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+
cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm47Cisg
ICAgcm9vdEVsZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7CisgICAgcm9vdEVsZW1lbnQtPnNl
dEN1cnJlbnRUaW1lKDApOworfQorCit2b2lkIFNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKCkKK3sK
KyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+bWFpbkZyYW1lKCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsK
KyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgcm9vdEVsZW1lbnQt
PnBhdXNlQW5pbWF0aW9ucygpOworfQorCit2b2lkIFNWR0ltYWdlOjpyZXNldEFuaW1hdGlvbigp
Cit7CisgICAgc3RvcEFuaW1hdGlvbigpOworICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiB9CiAKIGJv
b2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAtMzIyLDcg
KzMzOSw2IEBAIHZvaWQgU1ZHSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU8KICAgICBJ
bWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9jaHJvbWVDbGllbnQsICJjaHJvbWVDbGllbnQiKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX3BhZ2UsICJwYWdlIik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9mcmFtZUNhY2hlLCAiZnJh
bWVDYWNoZSIpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgSW1hZ2VCdWZm
ZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgU1ZHSW1hZ2VDaHJvbWVD
bGllbnQ7CitjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKIAogY2xhc3MgU1ZHSW1hZ2UgOiBw
dWJsaWMgSW1hZ2UgewogcHVibGljOgpAQCAtNDYsMTIgKzQ3LDYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ltYWdlKG9ic2VydmVyKSk7CiAgICAgfQogCi0gICAg
ZW51bSBTaG91bGRDbGVhckJ1ZmZlciB7Ci0gICAgICAgIENsZWFySW1hZ2VCdWZmZXIsCi0gICAg
ICAgIERvbnRDbGVhckltYWdlQnVmZmVyCi0gICAgfTsKLQotICAgIHZvaWQgZHJhd1NWR1RvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCwgU2hvdWxkQ2xl
YXJCdWZmZXIpOwogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CiAg
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKIApAQCAtNjEsMTAgKzU2LDE2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0QW5pbWF0aW9uKGJvb2wgLypjYXRjaFVwSWZOZWNlc3NhcnkqLyA9IHRydWUpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudDsKKyAgICBmcmll
bmQgY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CisKICAgICB2aXJ0dWFsIH5TVkdJbWFnZSgp
OwogCiAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKQEAgLTg3
LDEyICs4OCwxMiBAQCBwcml2YXRlOgogCiAgICAgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciopOwog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0KLSAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgdm9pZCBkcmF3Rm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgZmxvYXQsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsCisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBP
d25QdHI8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+IG1fY2hyb21lQ2xpZW50OwogICAgIE93blB0cjxQ
YWdlPiBtX3BhZ2U7Ci0gICAgUmVmUHRyPEltYWdlPiBtX2ZyYW1lQ2FjaGU7CiB9OwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCShy
ZXZpc2lvbiAxNDI0MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VD
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDUwICsyOSwyNyBAQAogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIK
KyNpbmNsdWRlICJTVkdJbWFnZUZvckNvbnRhaW5lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBjb25zdCBpbnQgdGltZVRvS2VlcENhY2hlZEJpdG1hcHNBZnRlckxhc3RVc2VJ
blNlY29uZHMgPSAzMDsKLQogU1ZHSW1hZ2VDYWNoZTo6U1ZHSW1hZ2VDYWNoZShTVkdJbWFnZSog
c3ZnSW1hZ2UpCiAgICAgOiBtX3N2Z0ltYWdlKHN2Z0ltYWdlKQotICAgICwgbV9yZWRyYXdUaW1l
cih0aGlzLCAmU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJGaXJlZCkKLSAgICAsIG1fY2FjaGVD
bGVhclRpbWVyKHRoaXMsICZTVkdJbWFnZUNhY2hlOjpjYWNoZUNsZWFyVGltZXJGaXJlZCwgdGlt
ZVRvS2VlcENhY2hlZEJpdG1hcHNBZnRlckxhc3RVc2VJblNlY29uZHMpCiB7CiAgICAgQVNTRVJU
KG1fc3ZnSW1hZ2UpOwogfQogCiBTVkdJbWFnZUNhY2hlOjp+U1ZHSW1hZ2VDYWNoZSgpCiB7Ci0g
ICAgbV9zaXplQW5kU2NhbGVzTWFwLmNsZWFyKCk7Ci0gICAgY2xlYXJCaXRtYXBDYWNoZSgpOwot
fQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OmNsZWFyQml0bWFwQ2FjaGUoKQotewotICAgIEltYWdl
RGF0YU1hcDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJ
bWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIC8vIENoZWNrcyBpZiB0aGUgY2xpZW50IChpdC0+a2V5KSBp
cyBzdGlsbCB2YWxpZC4gVGhlIGNsaWVudCBzaG91bGQgcmVtb3ZlIGl0c2VsZiBmcm9tIHRoaXMK
LSAgICAgICAgLy8gY2FjaGUgYmVmb3JlIGl0cyBlbmQgb2YgbGlmZSwgb3RoZXJ3aXNlIHRoZSBm
b2xsb3dpbmcgQVNTRVJUIHdpbGwgY3Jhc2ggb24gcHVyZSB2aXJ0dWFsCi0gICAgICAgIC8vIGZ1
bmN0aW9uIGNhbGwgb3IgYSBnZW5lcmFsIGNyYXNoLgotICAgICAgICBBU1NFUlQoaXQtPmtleS0+
cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgp
KTsKLSAgICAgICAgZGVsZXRlIGl0LT52YWx1ZS5idWZmZXI7Ci0gICAgfQotCi0gICAgbV9pbWFn
ZURhdGFNYXAuY2xlYXIoKTsKKyAgICBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmNsZWFyKCk7CiB9
CiAKIHZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNvbnN0IENhY2hl
ZEltYWdlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7Ci0gICAgbV9zaXpl
QW5kU2NhbGVzTWFwLnJlbW92ZShjbGllbnQpOwotCi0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRv
ciBpdCA9IG1faW1hZ2VEYXRhTWFwLmZpbmQoY2xpZW50KTsKLSAgICBpZiAoaXQgPT0gbV9pbWFn
ZURhdGFNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKIAotICAgIGRlbGV0ZSBpdC0+dmFsdWUu
YnVmZmVyOwotICAgIG1faW1hZ2VEYXRhTWFwLnJlbW92ZShpdCk7CisgICAgaWYgKG1faW1hZ2VG
b3JDb250YWluZXJNYXAuY29udGFpbnMoY2xpZW50KSkKKyAgICAgICAgbV9pbWFnZUZvckNvbnRh
aW5lck1hcC5yZW1vdmUoY2xpZW50KTsKIH0KIAogdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRDb250
YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCwgY29u
c3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSkKQEAgLTgyLDEz
NSArNTksNTkgQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9yUgogCiAg
ICAgRmxvYXRTaXplIGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbShjb250YWluZXJTaXplKTsKICAg
ICBjb250YWluZXJTaXplV2l0aG91dFpvb20uc2NhbGUoMSAvIGNvbnRhaW5lclpvb20pOwotICAg
IG1fc2l6ZUFuZFNjYWxlc01hcC5zZXQoY2xpZW50LCBTaXplQW5kU2NhbGVzKGNvbnRhaW5lclNp
emVXaXRob3V0Wm9vbSwgY29udGFpbmVyWm9vbSkpOworCisgICAgSW1hZ2VGb3JDb250YWluZXJN
YXA6Oml0ZXJhdG9yIGltYWdlSXQgPSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmZpbmQoY2xpZW50
KTsKKyAgICBpZiAoaW1hZ2VJdCA9PSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmVuZCgpKSB7Cisg
ICAgICAgIFJlZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4gaW1hZ2UgPSBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6Y3JlYXRlKG1fc3ZnSW1hZ2UsIGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSwgMSwg
Y29udGFpbmVyWm9vbSk7CisgICAgICAgIG1faW1hZ2VGb3JDb250YWluZXJNYXAuc2V0KGNsaWVu
dCwgaW1hZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIGltYWdlSXQtPnZhbHVlLT5zZXRTaXpl
KGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSk7CisgICAgICAgIGltYWdlSXQtPnZhbHVlLT5zZXRa
b29tKGNvbnRhaW5lclpvb20pOworICAgIH0KIH0KIAogSW50U2l6ZSBTVkdJbWFnZUNhY2hlOjpp
bWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAog
ewogICAgIEludFNpemUgaW1hZ2VTaXplID0gbV9zdmdJbWFnZS0+c2l6ZSgpOwotCiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGltYWdlU2l6ZTsKLSAgICBTaXplQW5kU2NhbGVz
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2l6ZUFuZFNjYWxlc01hcC5maW5kKHJlbmRlcmVy
KTsKLSAgICBpZiAoaXQgPT0gbV9zaXplQW5kU2NhbGVzTWFwLmVuZCgpKQotICAgICAgICByZXR1
cm4gaW1hZ2VTaXplOwogCi0gICAgU2l6ZUFuZFNjYWxlcyBzaXplQW5kU2NhbGVzID0gaXQtPnZh
bHVlOwotICAgIGlmICghc2l6ZUFuZFNjYWxlcy5zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBm
bG9hdCBzY2FsZSA9IHNpemVBbmRTY2FsZXMuc2NhbGU7Ci0gICAgICAgIGlmICghc2NhbGUpIHsK
LSAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+cGFnZSgpOwot
ICAgICAgICAgICAgc2NhbGUgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZS0+cGFn
ZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIH0KKyAgICBJbWFnZUZvckNvbnRhaW5lck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmZpbmQocmVuZGVyZXIpOwor
ICAgIGlmIChpdCA9PSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmVuZCgpKQorICAgICAgICByZXR1
cm4gaW1hZ2VTaXplOwogCi0gICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChzY2FsZSAqIHNpemVB
bmRTY2FsZXMuc2l6ZS53aWR0aCgpKTsKLSAgICAgICAgaW1hZ2VTaXplLnNldEhlaWdodChzY2Fs
ZSAqIHNpemVBbmRTY2FsZXMuc2l6ZS5oZWlnaHQoKSk7CisgICAgUmVmUHRyPFNWR0ltYWdlRm9y
Q29udGFpbmVyPiBpbWFnZSA9IGl0LT52YWx1ZTsKKyAgICBGbG9hdFNpemUgc2l6ZSA9IGltYWdl
LT5jb250YWluZXJTaXplKCk7CisgICAgaWYgKCFzaXplLmlzRW1wdHkoKSkgeworICAgICAgICBz
aXplLnNjYWxlKGltYWdlLT56b29tKCkpOworICAgICAgICBpbWFnZVNpemUuc2V0V2lkdGgoc2l6
ZS53aWR0aCgpKTsKKyAgICAgICAgaW1hZ2VTaXplLnNldEhlaWdodChzaXplLmhlaWdodCgpKTsK
ICAgICB9Ci0gICAgcmV0dXJuIGltYWdlU2l6ZTsKLX0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjpp
bWFnZUNvbnRlbnRDaGFuZ2VkKCkKLXsKLSAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9
IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwotICAgIGZvciAoSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBp
dCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQt
PnZhbHVlLmltYWdlTmVlZHNVcGRhdGUgPSB0cnVlOwotCi0gICAgLy8gQWx3YXlzIHJlZHJhdyBv
biBhIHRpbWVyIGJlY2F1c2UgdGhpcyBtZXRob2QgbWF5IGJlIGludm9rZWQgZnJvbSBkZXN0cnVj
dG9ycyBvZiB0aGluZ3Mgd2UgYXJlIGludGVuZGluZyB0byBkcmF3LgotICAgIGlmICghbV9yZWRy
YXdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3JlZHJhd1RpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKLX0KLQotdm9pZCBTVkdJbWFnZUNhY2hlOjpyZWRyYXcoKQotewotICAgIEltYWdlRGF0YU1h
cDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJbWFnZURh
dGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgIEltYWdlRGF0YSYgZGF0YSA9IGl0LT52YWx1ZTsKLSAgICAgICAgaWYg
KCFkYXRhLmltYWdlTmVlZHNVcGRhdGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
Ly8gSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCB3ZSByZWRyYXcgdXNpbmcgb3VyIGV4aXN0aW5nIElt
YWdlQnVmZmVyLgotICAgICAgICBBU1NFUlQoZGF0YS5idWZmZXIpOwotICAgICAgICBBU1NFUlQo
ZGF0YS5pbWFnZSk7Ci0gICAgICAgIG1fc3ZnSW1hZ2UtPmRyYXdTVkdUb0ltYWdlQnVmZmVyKGRh
dGEuYnVmZmVyLCBkYXRhLnNpemVBbmRTY2FsZXMuc2l6ZSwgZGF0YS5zaXplQW5kU2NhbGVzLnpv
b20gKiBkYXRhLnNpemVBbmRTY2FsZXMuc2NhbGUsIFNWR0ltYWdlOjpDbGVhckltYWdlQnVmZmVy
KTsKLSAgICAgICAgZGF0YS5pbWFnZSA9IGRhdGEuYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tp
bmdTdG9yZSk7Ci0gICAgICAgIGRhdGEuaW1hZ2VOZWVkc1VwZGF0ZSA9IGZhbHNlOwotICAgIH0K
LSAgICBBU1NFUlQobV9zdmdJbWFnZS0+aW1hZ2VPYnNlcnZlcigpKTsKLSAgICBtX3N2Z0ltYWdl
LT5pbWFnZU9ic2VydmVyKCktPmFuaW1hdGlvbkFkdmFuY2VkKG1fc3ZnSW1hZ2UpOwotfQotCi12
b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4q
KQotewotICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIGZyYW1lIGRvZXMgbm90
IHJlcXVpcmUgbGF5b3V0IHdoZW4gdGhlIHRpbWVyIGZpcmVkLgotICAgIC8vIFNvIGJlIHN1cmUg
dG8gY2hlY2sgYWdhaW4gaW4gY2FzZSBpdCBpcyBzdGlsbCBub3Qgc2FmZSB0byBydW4gcmVkcmF3
LgotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9zdmdJbWFnZS0+ZnJhbWVWaWV3KCk7Ci0g
ICAgaWYgKGZyYW1lVmlldyAmJiAoZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpIHx8IGZyYW1lVmll
dy0+aXNJbkxheW91dCgpKSkgewotICAgICAgICBpZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUo
KSkKLSAgICAgICAgICAgIG1fcmVkcmF3VGltZXIuc3RhcnRPbmVTaG90KDApOwotICAgIH0gZWxz
ZQotICAgICAgIHJlZHJhdygpOwotfQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OmNhY2hlQ2xlYXJU
aW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8U1ZHSW1hZ2VDYWNoZT4qKQotewotICAg
IGNsZWFyQml0bWFwQ2FjaGUoKTsKKyAgICByZXR1cm4gaW1hZ2VTaXplOwogfQogCi1JbWFnZSog
U1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHRha2UgaW50
byBhY2NvdW50IHRoZSBhbmltYXRpb24gdGltZWxpbmUgc28gYW5pbWF0aW9ucyB3aWxsIG5vdAor
Ly8gcmVzdGFydCBvbiBwYWdlIGxvYWQsIG5vciB3aWxsIHR3byBhbmltYXRpb25zIGluIGRpZmZl
cmVudCBwYWdlcyBoYXZlIGRpZmZlcmVudCB0aW1lbGluZXMuCitJbWFnZSogU1ZHSW1hZ2VDYWNo
ZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAKLSAg
ICBjb25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50ID0gcmVuZGVyZXI7Ci0KICAgICAvLyBU
aGUgY2FjaGUgbmVlZHMgdG8ga25vdyB0aGUgc2l6ZSBvZiB0aGUgcmVuZGVyZXIgYmVmb3JlIHF1
ZXJ5aW5nIGFuIGltYWdlIGZvciBpdC4KLSAgICBTaXplQW5kU2NhbGVzTWFwOjppdGVyYXRvciBz
aXplSXQgPSBtX3NpemVBbmRTY2FsZXNNYXAuZmluZChyZW5kZXJlcik7Ci0gICAgaWYgKHNpemVJ
dCA9PSBtX3NpemVBbmRTY2FsZXNNYXAuZW5kKCkpCisgICAgSW1hZ2VGb3JDb250YWluZXJNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZUZvckNvbnRhaW5lck1hcC5maW5kKHJlbmRlcmVyKTsKKyAg
ICBpZiAoaXQgPT0gbV9pbWFnZUZvckNvbnRhaW5lck1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIEZsb2F0U2l6ZSBzaXplID0gc2l6ZUl0LT52YWx1
ZS5zaXplOwotICAgIGZsb2F0IHpvb20gPSBzaXplSXQtPnZhbHVlLnpvb207Ci0gICAgZmxvYXQg
c2NhbGUgPSBzaXplSXQtPnZhbHVlLnNjYWxlOworICAgIFJlZlB0cjxTVkdJbWFnZUZvckNvbnRh
aW5lcj4gaW1hZ2UgPSBpdC0+dmFsdWU7CisgICAgQVNTRVJUKCFpbWFnZS0+Y29udGFpbmVyU2l6
ZSgpLmlzRW1wdHkoKSk7CiAKICAgICAvLyBGSVhNRSAoODUzMzUpOiBUaGlzIG5lZWRzIHRvIHRh
a2UgQ1NTIHRyYW5zZm9ybSBzY2FsZSBpbnRvIGFjY291bnQgYXMgd2VsbC4KKyAgICAvLyBGSVhN
RTogU2V0IHRoZSBwYWdlIHNjYWxlIGluIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlciBpbnN0
ZWFkIG9mIGxvb2tpbmcgaXQgdXAgaGVyZS4KICAgICBQYWdlKiBwYWdlID0gcmVuZGVyZXItPmRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXNjYWxlKQotICAgICAgICBzY2FsZSA9IHBhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkgKiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKLQotICAgIEFT
U0VSVCghc2l6ZS5pc0VtcHR5KCkpOwotCi0gICAgLy8gKFJlKXNjaGVkdWxlIHRoZSBvbmVzaG90
IHRpbWVyIHRvIHRocm93IG91dCBhbGwgdGhlIGNhY2hlZCBJbWFnZUJ1ZmZlcnMgaWYgdGhleSBy
ZW1haW4gdW51c2VkIGZvciB0b28gbG9uZy4KLSAgICBtX2NhY2hlQ2xlYXJUaW1lci5yZXN0YXJ0
KCk7Ci0KLSAgICAvLyBMb29rdXAgaW1hZ2UgZm9yIGNsaWVudCBpbiBjYWNoZSBhbmQgZXZlbnR1
YWxseSB1cGRhdGUgaXQuCi0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VE
YXRhTWFwLmZpbmQoY2xpZW50KTsKLSAgICBpZiAoaXQgIT0gbV9pbWFnZURhdGFNYXAuZW5kKCkp
IHsKLSAgICAgICAgSW1hZ2VEYXRhJiBkYXRhID0gaXQtPnZhbHVlOwotCi0gICAgICAgIC8vIENv
bW1vbiBjYXNlOiBpbWFnZSBzaXplICYgem9vbSByZW1haW5lZCB0aGUgc2FtZS4KLSAgICAgICAg
aWYgKGRhdGEuc2l6ZUFuZFNjYWxlcy5zaXplID09IHNpemUgJiYgZGF0YS5zaXplQW5kU2NhbGVz
Lnpvb20gPT0gem9vbSAmJiBkYXRhLnNpemVBbmRTY2FsZXMuc2NhbGUgPT0gc2NhbGUpCi0gICAg
ICAgICAgICByZXR1cm4gZGF0YS5pbWFnZS5nZXQoKTsKLQotICAgICAgICAvLyBJZiB0aGUgaW1h
Z2Ugc2l6ZSBmb3IgdGhlIGNsaWVudCBjaGFuZ2VkLCB3ZSBoYXZlIHRvIGRlbGV0ZSB0aGUgYnVm
ZmVyLCByZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgY2FjaGUgYW5kIHJlY3JlYXRlIGl0LgotICAg
ICAgICBkZWxldGUgZGF0YS5idWZmZXI7Ci0gICAgICAgIG1faW1hZ2VEYXRhTWFwLnJlbW92ZShp
dCk7Ci0gICAgfQotCi0gICAgRmxvYXRTaXplIHNjYWxlZFNpemUoc2l6ZSk7Ci0gICAgc2NhbGVk
U2l6ZS5zY2FsZShzY2FsZSAqIHpvb20pOwotCi0gICAgLy8gQ3JlYXRlIGFuZCBjYWNoZSBuZXcg
aW1hZ2UgYW5kIGltYWdlIGJ1ZmZlciBhdCByZXF1ZXN0ZWQgc2l6ZS4KLSAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IG5ld0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXpl
KHNjYWxlZFNpemUpLCAxKTsKLSAgICBpZiAoIW5ld0J1ZmZlcikKLSAgICAgICAgcmV0dXJuIElt
YWdlOjpudWxsSW1hZ2UoKTsKLQotICAgIG1fc3ZnSW1hZ2UtPmRyYXdTVkdUb0ltYWdlQnVmZmVy
KG5ld0J1ZmZlci5nZXQoKSwgc2l6ZSwgc2NhbGUgKiB6b29tLCBTVkdJbWFnZTo6RG9udENsZWFy
SW1hZ2VCdWZmZXIpOwotCi0gICAgUmVmUHRyPEltYWdlPiBuZXdJbWFnZSA9IG5ld0J1ZmZlci0+
Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwotICAgIEltYWdlKiBuZXdJbWFnZVB0ciA9IG5l
d0ltYWdlLmdldCgpOwotICAgIEFTU0VSVChuZXdJbWFnZVB0cik7CisgICAgaW1hZ2UtPnNldFBh
Z2VTY2FsZShwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZS0+cGFnZVNjYWxlRmFjdG9y
KCkpOwogCi0gICAgbV9pbWFnZURhdGFNYXAuYWRkKGNsaWVudCwgSW1hZ2VEYXRhKG5ld0J1ZmZl
ci5sZWFrUHRyKCksIG5ld0ltYWdlLnJlbGVhc2UoKSwgU2l6ZUFuZFNjYWxlcyhzaXplLCB6b29t
LCBzY2FsZSkpKTsKLSAgICByZXR1cm4gbmV3SW1hZ2VQdHI7CisgICAgcmV0dXJuIGltYWdlLmdl
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgJKHJldmlzaW9uIDE0MjQyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC0zNSw2ICszNCw3IEBAIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgQ2Fj
aGVkSW1hZ2VDbGllbnQ7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFNWR0ltYWdlOworY2xh
c3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGNsYXNzIFNW
R0ltYWdlQ2FjaGUgewpAQCAtNDcsNzcgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTVkdJbWFnZUNhY2hlKGltYWdlKSk7CiAgICAgfQogCi0gICAgc3RydWN0
IFNpemVBbmRTY2FsZXMgewotICAgICAgICBTaXplQW5kU2NhbGVzKCkKLSAgICAgICAgICAgIDog
em9vbSgxKQotICAgICAgICAgICAgLCBzY2FsZSgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICBTaXplQW5kU2NhbGVzKGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSwgZmxvYXQgbmV3
Wm9vbSwgZmxvYXQgbmV3U2NhbGUpCi0gICAgICAgICAgICA6IHNpemUobmV3U2l6ZSkKLSAgICAg
ICAgICAgICwgem9vbShuZXdab29tKQotICAgICAgICAgICAgLCBzY2FsZShuZXdTY2FsZSkKLSAg
ICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgU2l6ZUFuZFNjYWxlcyhjb25zdCBGbG9hdFNp
emUmIG5ld1NpemUsIGZsb2F0IG5ld1pvb20pCi0gICAgICAgICAgICA6IHNpemUobmV3U2l6ZSkK
LSAgICAgICAgICAgICwgem9vbShuZXdab29tKQotICAgICAgICAgICAgLCBzY2FsZSgwKQotICAg
ICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBGbG9hdFNpemUgc2l6ZTsgLy8gVGhpcyBpcyB0
aGUgY29udGFpbmVyIHNpemUgd2l0aG91dCB6b29tLgotICAgICAgICBmbG9hdCB6b29tOwotICAg
ICAgICBmbG9hdCBzY2FsZTsgLy8gQSBzY2FsZSBvZiAwIGluZGljYXRlcyB0aGF0IHRoZSBkZWZh
dWx0IHNjYWxlIHNob3VsZCBiZSB1c2VkLgotICAgIH07Ci0KICAgICB2b2lkIHJlbW92ZUNsaWVu
dEZyb21DYWNoZShjb25zdCBDYWNoZWRJbWFnZUNsaWVudCopOwogCiAgICAgdm9pZCBzZXRDb250
YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBjb25zdCBJbnRT
aXplJiwgZmxvYXQpOwogICAgIEludFNpemUgaW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KikgY29uc3Q7CiAKLSAgICBJbWFnZSogbG9va3VwT3JDcmVhdGVCaXRtYXBJbWFn
ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgaW1hZ2VDb250ZW50
Q2hhbmdlZCgpOworICAgIEltYWdlKiBpbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVj
dCopOwogCiBwcml2YXRlOgogICAgIFNWR0ltYWdlQ2FjaGUoU1ZHSW1hZ2UqKTsKLSAgICB2b2lk
IHJlZHJhdygpOwotICAgIHZvaWQgcmVkcmF3VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hl
PiopOwotICAgIHZvaWQgY2FjaGVDbGVhclRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1l
cjxTVkdJbWFnZUNhY2hlPiopOwotICAgIHZvaWQgY2xlYXJCaXRtYXBDYWNoZSgpOwotCi0gICAg
c3RydWN0IEltYWdlRGF0YSB7Ci0gICAgICAgIEltYWdlRGF0YSgpCi0gICAgICAgICAgICA6IGlt
YWdlTmVlZHNVcGRhdGUoZmFsc2UpCi0gICAgICAgICAgICAsIGJ1ZmZlcigwKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBJbWFnZURhdGEoSW1hZ2VCdWZmZXIqIG5ld0J1ZmZlciwg
UGFzc1JlZlB0cjxJbWFnZT4gbmV3SW1hZ2UsIGNvbnN0IFNpemVBbmRTY2FsZXMmIG5ld1NpemVB
bmRTY2FsZXMpCi0gICAgICAgICAgICA6IGltYWdlTmVlZHNVcGRhdGUoZmFsc2UpCi0gICAgICAg
ICAgICAsIHNpemVBbmRTY2FsZXMobmV3U2l6ZUFuZFNjYWxlcykKLSAgICAgICAgICAgICwgYnVm
ZmVyKG5ld0J1ZmZlcikKLSAgICAgICAgICAgICwgaW1hZ2UobmV3SW1hZ2UpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW1hZ2VOZWVkc1VwZGF0ZTsKLSAgICAgICAgU2l6
ZUFuZFNjYWxlcyBzaXplQW5kU2NhbGVzOwotCi0gICAgICAgIEltYWdlQnVmZmVyKiBidWZmZXI7
Ci0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7Ci0gICAgfTsKIAotICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIFNpemVBbmRTY2FsZXM+IFNpemVBbmRTY2Fs
ZXNNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgSW1h
Z2VEYXRhPiBJbWFnZURhdGFNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENhY2hlZElt
YWdlQ2xpZW50KiwgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiA+IEltYWdlRm9yQ29udGFp
bmVyTWFwOwogCiAgICAgU1ZHSW1hZ2UqIG1fc3ZnSW1hZ2U7Ci0gICAgU2l6ZUFuZFNjYWxlc01h
cCBtX3NpemVBbmRTY2FsZXNNYXA7Ci0gICAgSW1hZ2VEYXRhTWFwIG1faW1hZ2VEYXRhTWFwOwot
ICAgIFRpbWVyPFNWR0ltYWdlQ2FjaGU+IG1fcmVkcmF3VGltZXI7Ci0gICAgRGVmZXJyYWJsZU9u
ZVNob3RUaW1lcjxTVkdJbWFnZUNhY2hlPiBtX2NhY2hlQ2xlYXJUaW1lcjsKKyAgICBJbWFnZUZv
ckNvbnRhaW5lck1hcCBtX2ltYWdlRm9yQ29udGFpbmVyTWFwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQyNTMxKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMTEgIFBoaWxp
cCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZW1vdmUgYml0bWFwIFNWRyBp
bWFnZSBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA2MTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAyLTExICBS
YWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0hUTUxU
ZW1wbGF0ZUVsZW1lbnRdIDx0ZW1wbGF0ZT4gaW5zaWRlIG9mIDxoZWFkPiBtYXkgbm90IGNyZWF0
ZSA8Ym9keT4gaWYgRU9GIGlzIGhpdApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDI0MjYpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC00
MTMzLDYgKzQxMzMsMjggQEAgd2Via2l0Lm9yZy9iLzEwMzI5OSBbIExpbnV4IE1hYyBXaW4gXSBm
YQogd2Via2l0Lm9yZy9iLzEwMzE0OCBbIExpbnV4IFdpbiBdIGZhc3QvdGV4dC9hdHN1aS1zbWFs
bC1jYXBzLXB1bmN0dWF0aW9uLXNpemUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgRmFpbHVyZSBQ
YXNzIF0KIHdlYmtpdC5vcmcvYi8xMDMzMDggWyBTbm93TGVvcGFyZCBMaW9uIF0gY3NzMy9maWx0
ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLXRyYW5zZm9ybXMtYW5pbWF0aW9uLmh0bWwgWyBQYXNz
IFRpbWVvdXQgXQogCisjIFJlYmFzZWxpbmUgYWZ0ZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNjE1OQord2Via2l0Lm9yZy9iLzEwNjE1OSBzdmcvYXMtYmFja2dy
b3VuZC1pbWFnZS9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJhY2tncm91bmQtaW1hZ2Uv
c3ZnLWFzLWJhY2tncm91bmQtMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtp
dC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJhY2tncm91bmQtaW1hZ2Uvc3ZnLWFzLWJhY2tncm91bmQt
Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3Zn
L2FzLWJhY2tncm91bmQtaW1hZ2Uvc3ZnLWFzLWJhY2tncm91bmQtMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJhY2tncm91bmQtaW1h
Z2Uvc3ZnLWFzLWJhY2tncm91bmQtNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dl
YmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJhY2tncm91bmQtaW1hZ2Uvc3ZnLWFzLWJhY2tncm91
bmQtNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkg
c3ZnL2FzLWJhY2tncm91bmQtaW1hZ2Uvc3ZnLWFzLWJhY2tncm91bmQtNi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJhY2tncm91bmQt
aW1hZ2Uvc3ZnLWFzLWJhY2tncm91bmQtd2l0aC1yZWxhdGl2ZS1zaXplLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9iLzEwNjE1OSBzdmcvYXMtYmFja2dyb3VuZC1p
bWFnZS9zdmctYmFja2dyb3VuZC1wYXJ0aWFsLXJlZHJhdy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJvcmRlci1pbWFnZS9zdmctYXMt
Ym9yZGVyLWltYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9i
LzEwNjE1OSBzdmcvYXMtaW1hZ2UvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLW5vLWZpeGVkLWludHJp
bnNpYy1zaXplLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9iLzEw
NjE1OSBzdmcvYXMtaW1hZ2UvaW1nLXByZXNlcnZlQXNwZWN0UmF0aW8tc3VwcG9ydC0yLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9iLzEwNjE1OSBzdmcvYXMtaW1h
Z2Uvc3ZnLWltYWdlLWNoYW5nZS1jb250ZW50LXNpemUueGh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IFBhc3MgXQord2Via2l0Lm9yZy9iLzEwNjE1OSBzdmcvYXMtaW1hZ2Uvc3ZnLW5vbi1pbnRlZ2Vy
LXNjYWxlZC1pbWFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcv
Yi8xMDYxNTkgc3ZnL2NhcnRvLm5ldC9jb21ib2JveC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIFBh
c3MgXQord2Via2l0Lm9yZy9iLzEwNjE1OSBzdmcvd2ljZC90ZXN0LXNjYWxhYmxlLWJhY2tncm91
bmQtaW1hZ2UxLnhodG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8x
MDYxNTkgc3ZnL3dpY2QvdGVzdC1zY2FsYWJsZS1iYWNrZ3JvdW5kLWltYWdlMi54aHRtbCBbIElt
YWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy96b29tL3BhZ2Uv
em9vbS1iYWNrZ3JvdW5kLWltYWdlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dl
YmtpdC5vcmcvYi8xMDYxNTkgc3ZnL3pvb20vcGFnZS96b29tLXN2Zy1hcy1iYWNrZ3JvdW5kLXdp
dGgtcmVsYXRpdmUtc2l6ZS1hbmQtdmlld0JveC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNz
IF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL3pvb20vcGFnZS96b29tLXN2Zy1hcy1iYWNrZ3Jv
dW5kLXdpdGgtcmVsYXRpdmUtc2l6ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KKwog
d2Via2l0Lm9yZy9iLzEwMzM2MyBbIE1hYyBdIHRvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1s
b25ncHJlc3MuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwMzQ0NiBbIE1hYyBdIGh0
dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTAzNDQ3IFsgTW91bnRhaW5MaW9uIF0gZmFzdC9jYW52
YXMvZm9udC11cGRhdGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>
<flag name="commit-queue"
          id="207603"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187714</attachid>
            <date>2013-02-11 16:23:07 -0800</date>
            <delta_ts>2013-02-11 20:34:12 -0800</delta_ts>
            <desc>Add a file someone forgot to include in the previous patch.</desc>
            <filename>106159.6.patch</filename>
            <type>text/plain</type>
            <size>47985</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjUzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MSBAQAorMjAxMy0wMi0xMSAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBiaXRtYXAgU1ZHIGlt
YWdlIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDYxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNhY2hpbmcgb2YgU1ZHIGJpdG1hcHMgc28gU1ZHIGlt
YWdlcyBhcmUgcmVuZGVyZWQgZGlyZWN0bHkuIFRoaXMKKyAgICAgICAgZW5hYmxlcyBXZWJLaXQg
dG8gcGFzcyB0aGUgSUUgQ2hhbGtib2FyZCBkZW1vIGluIDEwcyBvbiBhIFo2MjA6CisgICAgICAg
IGh0dHA6Ly9pZS5taWNyb3NvZnQuY29tL3Rlc3Rkcml2ZS9QZXJmb3JtYW5jZS9DaGFsa2JvYXJk
LworCisgICAgICAgIE9uIGEgc2ltcGxlIHNjYWxlZCBTVkcgYmVuY2htYXJrIHNpbWlsYXIgdG8g
dGhlIElFMTAgQ2hhbGtib2FyZCBkZW1vCisgICAgICAgIChodHRwOi8vcGhpbGJpdC5jb20vU3Zn
SW1hZ2VQZXJmb3JtYW5jZS92aWV3cG9ydC5odG1sKToKKyAgICAgICAgICAgIHdpdGhvdXQgcGF0
Y2g6IH4yMEZQUworICAgICAgICAgICAgd2l0aCBwYXRjaDogfjU1RlBTCisKKyAgICAgICAgVGhl
IGJpdG1hcCBTVkcgaW1hZ2UgY2FjaGUgaGFkIHNldmVyYWwgc2hvcnRjb21pbmdzOgorICAgICAg
ICAgICAgLSBUaGUgYml0bWFwIGNhY2hlIHByZXZlbnRlZCB2aWV3cG9ydCByZW5kZXJpbmcuIChX
SzEwNDY5MykKKyAgICAgICAgICAgIC0gQml0bWFwIG1lbW9yeSB1c2FnZSB3YXMgaGlnaC4gKFdL
MTA2NDg0KQorICAgICAgICAgICAgLSBDYWNoaW5nIGFuaW1hdGluZyBpbWFnZXMgd2FzIGV4cGVu
c2l2ZS4KKworICAgICAgICBUaGlzIGNoYW5nZSByZW1vdmVzIGFsbW9zdCBhbGwgb2YgdGhlIFNW
R0ltYWdlQ2FjaGUgaW1wbGVtZW50YXRpb24sIHJlcGxhY2luZyBpdCB3aXRoCisgICAgICAgIGRp
cmVjdGx5LXJlbmRlcmVkIFNWRy4gSW5zdGVhZCBvZiBjYWNoaW5nIGJpdG1hcHMsIGFuIFNWR0lt
YWdlRm9yQ29udGFpbmVyIGlzIGNhY2hlZCB3aGljaAorICAgICAgICBpcyBhIHRoaW4gd3JhcHBl
ciBhcm91bmQgYW4gU1ZHIGltYWdlIHdpdGggdGhlIGFzc29jaWF0ZWQgY29udGFpbmVyIHNpemUg
YW5kIHNjYWxlLgorICAgICAgICBXaGVuIHJlbmRlcmluZyBwYXR0ZXJucyAoZS5nLiwgdGlsZWQg
YmFja2dyb3VuZHMpLCBhIHRlbXBvcmFyeSBiaXRtYXAgaXMgdXNlZCBmb3IKKyAgICAgICAgcGVy
Zm9ybWFuY2UuIFRoaXMgY2hhbmdlIGFsc28gcmVtb3ZlcyB0aGUgcmVkcmF3IHRpbWVyIG9mIHRo
ZSBvbGQgY2FjaGUsIGluc3RlYWQgcmVseWluZworICAgICAgICBvbiB0aGUgU1ZHIGltYWdlIHRv
IG5vdGlmeSBjbGllbnRzIGlmIHRoZSBpbWFnZSBjaGFuZ2VzIChlLmcuLCBkdXJpbmcgYW5pbWF0
aW9ucykuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBjb3ZlcmVkIHdpdGggZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Omxvb2t1cE9yQ3Jl
YXRlSW1hZ2VGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y2xl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QpOgorCisg
ICAgICAgICAgICBTVkcgaW1hZ2VzIGFyZSBubyBsb25nZXIgc3BlY2lhbC1jYXNlZCBoZXJlLiBX
aGVuIHRoZSBTVkcgaW1hZ2UgY2hhbmdlcywgdXNlcnMgYXJlCisgICAgICAgICAgICBub3RpZmll
ZCB0aHJvdWdoIHRoaXMgZnVuY3Rpb24sIGFuZCB1c2VycyBjYW4gdGhlbiByZXF1ZXN0IHRoZWly
IGNvbnRlbnQgdG8gYmUgcmVkcmF3bi4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisKKyAgICAgICAg
ICAgIGRyYXdGb3JDb250YWluZXIgbGF5cyBvdXQgdGhlIFNWRyBjb250ZW50IGZvciBhIHNwZWNp
ZmljIGNvbnRhaW5lciBzaXplIGFuZCByZW5kZXJzIGl0LgorICAgICAgICAgICAgVGhlIGxvZ2lj
IGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQgYnV0IGEgbm90ZSBhYm91dCB0aGUgc2NhbGVzIGFu
ZCB6b29tcyBoZXJlOgorICAgICAgICAgICAgICAgIHRoZSBkZXN0aW5hdGlvbiByZWN0IHBhcmFt
ZXRlciBpcyB6b29tZWQgYnV0IG5vdCBzY2FsZWQKKyAgICAgICAgICAgICAgICB0aGUgc291cmNl
IHJlY3QgcGFyYW1ldGVyIGlzIHpvb21lZCBidXQgbm90IHNjYWxlZAorICAgICAgICAgICAgICAg
IHRoZSBjb250ZXh0IGlzIHNjYWxlZCBidXQgbm90IHpvb21lZAorICAgICAgICAgICAgU1ZHSW1h
Z2U6OmRyYXcoLi4uKSBvbmx5IGFjY2VwdHMgYSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlY3Qg
YnV0IGRvZXMgbm90IGNvbnNpZGVyCisgICAgICAgICAgICBzY2FsZSBvciB6b29tLiBUaGVyZWZv
cmUsIGRyYXdGb3JDb250YWluZXIgcmVtb3ZlcyB0aGUgem9vbSBjb21wb25lbnQgZnJvbSB0aGUg
c291cmNlCisgICAgICAgICAgICBzbyBTVkdJbWFnZTo6ZHJhdyguLi4pIHdpbGwgZHJhdyBmcm9t
IHRoZSBwcmUtem9vbSBzb3VyY2UgdG8gdGhlIHBvc3Qtem9vbSBkZXN0aW5hdGlvbi4KKworICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIpOgorCisgICAgICAgICAgICBGb3IgcGVyZm9ybWFuY2UsIGRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyIHJlbmRlcnMgdGhlIFNWRyBjb250ZW50IG9udG8gYSBiaXRtYXAsIHRoZW4K
KyAgICAgICAgICAgIGhhcyB0aGUgYml0bWFwIGltYWdlIGRyYXcgdGhlIHBhdHRlcm4uIFRoaXMg
aXMgbmVjZXNzYXJ5IGJlY2F1c2UgZHJhd1BhdHRlcm4gaXMgdXNlZAorICAgICAgICAgICAgZm9y
IHRpbGluZy4KKworICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpyZXNldEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwOgorCisgICAgICAgICAgICBJbnN0ZWFkIG9m
IHN0b3JpbmcgYSBTaXplQW5kU2NhbGVzIHZhbHVlcyBmb3IgZWFjaCByZW5kZXJlciwgYSBTVkdJ
bWFnZUZvckNvbnRhaW5lcgorICAgICAgICAgICAgaXMgc3RvcmVkIHdoaWNoIGlzIGp1c3QgYSB0
aGluIHdyYXBwZXIgYXJvdW5kIGFuIFNWRyBpbWFnZSB0aGF0IGNvbnRhaW5zIGNvbnRhaW5lcgor
ICAgICAgICAgICAgc2l6aW5nIGluZm9ybWF0aW9uLiBCeSBjb21iaW5pbmcgdGhlIGltYWdlIGFu
ZCBzaXplIGluZm9ybWF0aW9uLCB0aGUgdHdvIG1hcHMgb2YKKyAgICAgICAgICAgIFNWR0ltYWdl
Q2FjaGUgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIG9uZS4KKworICAgICAgICAgICAgVG8gbWFrZSB0
aGlzIHBhdGNoIGVhc2llciB0byByZXZpZXcsIFNWR0ltYWdlQ2FjaGUgc3RpbGwgZXhpc3RzIGFu
ZCB3b3JrcyBzaW1pbGFyIHRvCisgICAgICAgICAgICBob3cgaXQgZGlkIGJlZm9yZSB0aGUgcGF0
Y2guIE5vdywgU1ZHSW1hZ2VDYWNoZSBzaW1wbHkgc3RvcmVzIHRoZSBTVkdJbWFnZUZvckNvbnRh
aW5lcnMuCisgICAgICAgICAgICBJbiBhIGZvbGxvd3VwIHBhdGNoIGl0IHdpbGwgYmUgcmVtb3Zl
ZC4KKworICAgICAgICAgICAgTm90ZTogdGhlIHJlZHJhdyB0aW1lciBvZiBTVkdJbWFnZUNhY2hl
IGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSBhbmltYXRpb24KKyAgICAgICAgICAgIGludmFsaWRh
dGlvbiBpcyBub3cgcHJvcGVybHkgcHJvcGFnYXRlZCBiYWNrIHRvIHRoZSBpbWFnZSBjbGllbnRz
LgorCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6
OlNWR0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6flNWR0lt
YWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50
RnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5l
clNpemVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNhY2hlOjppbWFn
ZVNpemVGb3JSZW5kZXJlcik6CisKKyAgICAgICAgICAgIFByZXZpb3VzbHksIHRoaXMgZnVuY3Rp
b24gcmV0dXJuZWQgdGhlIHNjYWxlZCBpbWFnZSBzaXplIHdoaWNoIHdhcyBpbmNvcnJlY3QuIFRo
ZSBpbWFnZQorICAgICAgICAgICAgc2l6ZSBpcyB1c2VkIGJ5IGNsaWVudHMgc3VjaCBhcyBHcmFw
aGljc0NvbnRleHQyRCB0byBkZXRlcm1pbmUgdGhlIHNvdXJjZSBzaXplCisgICAgICAgICAgICBm
b3IgZHJhd2luZyB0aGUgaW1hZ2UuIGRyYXcoKSBhY2NlcHRzIHpvb21lZCBidXQgbm90IHNjYWxl
ZCB2YWx1ZXMsIHNvIHRoaXMgaGFzIGJlZW4KKyAgICAgICAgICAgIGNoYW5nZWQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlSW1hZ2VGb3JSZW5kZXJl
cik6CisKKyAgICAgICAgICAgIEEgRklYTUUgaGFzIGJlZW4gYWRkZWQgaGVyZSB0byBub3Qgc2V0
IHRoZSBzY2FsZSBvbiBldmVyeSBsb29rdXAuIFRoaXMgY2FuIGJlIGltcHJvdmVkCisgICAgICAg
ICAgICBieSBzZXR0aW5nIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBzZXRDb250YWluZXJTaXpl
Rm9yUmVuZGVyZXIoKSBpbiBhIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0ltYWdl
Q2FjaGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6
IEFkZGVkLgorCisgICAgICAgICAgICBTVkdJbWFnZUZvckNvbnRhaW5lciBpcyBhIHRoaW4gd3Jh
cHBlciBhcm91bmQgYW4gU1ZHIGltYWdlLiBUaGUgbGlmZXRpbWUgb2YgdGhlCisgICAgICAgICAg
ICBTVkdJbWFnZSB3aWxsIGJlIGxvbmdlciB0aGFuIHRoZSBpbWFnZSBjYWNoZS4KKworICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6
ZSk6CisKKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG9ubHkgbG9naWMgaW4gU1ZHSW1hZ2VGb3JD
b250YWluZXIuIFRoZSBzaXplIHJldHVybmVkIG5lZWRzIHRvIGJlIHpvb21lZAorICAgICAgICAg
ICAgYnV0IG5vdCBzY2FsZWQgYmVjYXVzZSBpdCBpcyB1c2VkIChlLmcuLCBieSBSZW5kZXJJbWFn
ZSkgdG8gcGFzcyBiYWNrIGludG8gZHJhdygpIHdoaWNoCisgICAgICAgICAgICB0YWtlcyB6b29t
ZWQgYnV0IG5vdCBzY2FsZWQgdmFsdWVzLgorCisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5l
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU1ZHSW1hZ2VGb3JD
b250YWluZXIpOgorCisgICAgICAgICAgICBJbiBhIGZ1dHVyZSBwYXRjaCBTVkdJbWFnZUZvckNv
bnRhaW5lciBjYW4gYmUgbWFkZSBpbW11dGFibGUgYnV0IHdpdGhvdXQgYSByZWZhY3RvcmluZwor
ICAgICAgICAgICAgZm9yIG5vdCBzZXR0aW5nIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBTVkdJ
bWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIsCisgICAgICAgICAgICBz
ZXR0ZXJzIGFyZSBuZWVkZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFp
bmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmNv
bnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnBh
Z2VTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6em9vbSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2V0U2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2V0Wm9vbSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2V0UGFnZVNjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpTVkdJbWFnZUZvckNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZGVzdHJveURlY29kZWREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkZWNvZGVkU2l6ZSk6CisK
IDIwMTMtMDItMTEgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbSFRNTFRlbXBsYXRlRWxlbWVudF0gPHRlbXBsYXRlPiBpbnNpZGUgb2YgPGhlYWQ+
IG1heSBub3QgY3JlYXRlIDxib2R5PiBpZiBFT0YgaXMgaGl0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTI1MDYsNiArMjUwNiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5jcHAKKyAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCiAK
ICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAogICAgIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtNDkxNyw2ICs0OTE3LDggQEAgd2ViY29yZV9zdmdfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBcCisJU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGVzLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDI0MjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQ2LDYgKzI2NDYsNyBAQCBI
RUFERVJTICs9IFwKICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBcCiAgICAg
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmggXAorICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIFwKICAgICBzdmcv
cHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggXAogICAgIHN2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggXApAQCAtMzc2OCw2ICsz
NzY5LDcgQEAgZW5hYmxlPyhTVkcpIHsKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIFwK
ICAgICAgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwIFwKKyAgICAgICAgc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBcCiAgICAgICAgIHN2Zy9wcm9wZXJ0aWVz
L1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuY3BwIFwKICAgICAgICAgc3ZnL3Byb3BlcnRpZXMv
U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwIFwKICAgICAgICAgc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTQyNDI2
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01MTMx
LDYgKzUxMzEsOCBAQAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNs
aWVudC5oJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwJywKICAgICAg
ICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCcsCisgICAgICAgICAgICAnc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgnLAorICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmgnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDE0MjQyNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NDUwOSw2ICs3NDUwOSwxNCBAQAog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xTVkdJbWFnZUNocm9tZUNsaWVudC5o
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXGdyYXBoaWNzXFNWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xTVkdJbWFn
ZUZvckNvbnRhaW5lci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgogCQkJCTxGaWx0ZXIKIAkJCQkJ
TmFtZT0iZmlsdGVycyIKIAkJCQkJPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjEsNiArMjIxLDggQEAKIAkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5
RDQxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8q
IFNWR0ltYWdlQ2FjaGUuY3BwICovOyB9OwogCQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzMgLyog
U1ZHSW1hZ2VDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwOEY4NTlENDE0NjNG
OUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTM0IC8q
IFNWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJMDhGODU5RDUxNDYzRjlDRDAwNjdE
OTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VG
b3JDb250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwOEZCMTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
Ki87IH07CiAJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RkUwQkM1
MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkUwQkM0MTI3RTJB
QzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzQ4OSw2ICs3NDkxLDgg
QEAKIAkJMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzMgLyog
U1ZHSW1hZ2VDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdJbWFnZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGODU5RDMx
NDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHSW1hZ2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5
MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHSW1hZ2VGb3JDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkIzRjgzMTNC
Qzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDA5LDYgKzIwNDEzLDggQEAKIAkJCQlCMjU1OTkwQzBEMDBEOEI5MDBC
QjgyNUMgLyogU1ZHSW1hZ2UuaCAqLywKIAkJCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzMgLyog
U1ZHSW1hZ2VDYWNoZS5jcHAgKi8sCiAJCQkJMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNW
R0ltYWdlQ2FjaGUuaCAqLywKKwkJCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1h
Z2VGb3JDb250YWluZXIuY3BwICovLAorCQkJCTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBT
VkdJbWFnZUZvckNvbnRhaW5lci5oICovLAogCQkJCUFBQzA4Q0VEMTVGOTMzRDYwMEYxRTE4OCAv
KiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsK
QEAgLTI2MDc1LDYgKzI2MDgxLDcgQEAKIAkJCQk2NTBGQkYyQjBEOUFGMDQ3MDA4RkMyOTIgLyog
U1ZHSEtlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTlBNDBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4Rjg1OUQ1MTQ2M0Y5Q0Qw
MDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEY4NTlENTE0
NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFBQzA4Q0VGMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ltYWdlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI4QzZBMkEwRDAwQzQ0ODAwMzM0QUE0IC8qIFNW
R0ltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MzM3LDYgKzI5MzQ0LDcgQEAKIAkJ
CQk2NTBGQkYyQTBEOUFGMDQ3MDA4RkMyOTIgLyogU1ZHSEtlcm5FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyNTU5OUEzMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdJbWFnZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNo
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMkMwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjhD
NkEyOTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBMkYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xhbmdTcGFjZS5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIGlubGluZSBJ
bWFnZSogQ2FjaGVkSW1hZ2U6Omxvb2t1cE9yQ3JlYXQKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
aWYgKCFtX2ltYWdlLT5pc1NWR0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgp
OwotICAgIEltYWdlKiB1c2VJbWFnZSA9IG1fc3ZnSW1hZ2VDYWNoZS0+bG9va3VwT3JDcmVhdGVC
aXRtYXBJbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICBJbWFnZSogdXNlSW1hZ2UgPSBt
X3N2Z0ltYWdlQ2FjaGUtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICh1c2VJ
bWFnZSA9PSBJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgp
OwogICAgIHJldHVybiB1c2VJbWFnZTsKQEAgLTIxNSw2ICsyMTUsNyBAQCB2b2lkIENhY2hlZElt
YWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVuCiAgICAgaWYgKGNvbnRhaW5lclNpemUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICBBU1NFUlQo
Y29udGFpbmVyWm9vbSk7CiAgICAgaWYgKCFtX2ltYWdlKSB7CiAgICAgICAgIG1fcGVuZGluZ0Nv
bnRhaW5lclNpemVSZXF1ZXN0cy5zZXQocmVuZGVyZXIsIFNpemVBbmRab29tKGNvbnRhaW5lclNp
emUsIGNvbnRhaW5lclpvb20pKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzEyLDkgKzMxMyw2IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OmNoZWNrU2hvdWxkUGFpbnRCcm9rZW4KIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNsZWFyKCkKIHsKICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKLSNpZiBFTkFCTEUoU1ZH
KQotICAgIG1fc3ZnSW1hZ2VDYWNoZS5jbGVhcigpOwotI2VuZGlmCiAgICAgY2xlYXJJbWFnZSgp
OwogICAgIG1fcGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0cy5jbGVhcigpOwogICAgIHNldEVu
Y29kZWRTaXplKDApOwpAQCAtNDg0LDEzICs0ODIsNiBAQCB2b2lkIENhY2hlZEltYWdlOjpjaGFu
Z2VkSW5SZWN0KGNvbnN0IEltCiB7CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZSAhPSBtX2ltYWdl
KQogICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKFNWRykKLSAgICAvLyBXZSBoYXZlIHRvIHVw
ZGF0ZSB0aGUgY2FjaGVkIEltYWdlQnVmZmVycyBpZiB0aGUgdW5kZXJseWluZyBjb250ZW50IGNo
YW5nZWQuCi0gICAgaWYgKGltYWdlLT5pc1NWR0ltYWdlKCkpIHsKLSAgICAgICAgbV9zdmdJbWFn
ZUNhY2hlLT5pbWFnZUNvbnRlbnRDaGFuZ2VkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKICAgICBub3RpZnlPYnNlcnZlcnMoJnJlY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDE0MjQyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKQEAgLTU5LDEwICs2MCwyMyBAQCBTVkdJbWFn
ZTo6flNWR0ltYWdlKCkKICAgICBBU1NFUlQoIW1fY2hyb21lQ2xpZW50IHx8ICFtX2Nocm9tZUNs
aWVudC0+aW1hZ2UoKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29u
c3QgSW50U2l6ZSYpCit2b2lkIFNWR0ltYWdlOjpzZXRDb250YWluZXJTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCiB7Ci0gICAgLy8gU1ZHSW1hZ2VDYWNoZSBhbHJlYWR5IGludGVyY2VwdGVkIHRo
aXMgY2FsbCwgYXMgaXQgc3RvcmVzICYgY2FjaGVzIHRoZSBkZXNpcmVkIGNvbnRhaW5lciBzaXpl
cyAmIHpvb20gbGV2ZWxzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmICghbV9w
YWdlIHx8ICF1c2VzQ29udGFpbmVyU2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSktPnJv
b3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290RWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAg
IFJlbmRlclNWR1Jvb3QqIHJlbmRlcmVyID0gdG9SZW5kZXJTVkdSb290KHJvb3RFbGVtZW50LT5y
ZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBG
cmFtZVZpZXcqIHZpZXcgPSBmcmFtZVZpZXcoKTsKKyAgICB2aWV3LT5yZXNpemUodGhpcy0+c2l6
ZSgpKTsKKworICAgIHJlbmRlcmVyLT5zZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCiBJbnRT
aXplIFNWR0ltYWdlOjpzaXplKCkgY29uc3QKQEAgLTk5LDU2ICsxMTMsNDYgQEAgSW50U2l6ZSBT
VkdJbWFnZTo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUoMzAwLCAxNTApOwogfQog
Ci12b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVy
LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHpvb21BbmRTY2FsZSwgU2hvdWxkQ2xlYXJC
dWZmZXIgc2hvdWxkQ2xlYXIpCit2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0
IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3
b3JrIGNvcnJlY3RseSB3aXRoIGFuaW1hdGlvbnMuIElmIGFuIGltYWdlIGNvbnRhaW5zIGFuaW1h
dGlvbnMsIHRoYXQgc2F5IHJ1biBmb3IgMiBzZWNvbmRzLAotICAgIC8vIGFuZCB3ZSBjdXJyZW50
bHkgaGF2ZSBvbmUgPGltZz4gdGhhdCBkaXNwbGF5cyB1cy4gSWYgd2Ugb3BlbiBhbm90aGVyIGRv
Y3VtZW50IHJlZmVyZW5jaW5nIHRoZSBzYW1lIFNWR0ltYWdlIGl0Ci0gICAgLy8gd2lsbCBkaXNw
bGF5IHRoZSBkb2N1bWVudCBhdCBhIHRpbWUgd2hlcmUgYW5pbWF0aW9ucyBhbHJlYWR5IHJhbiAt
IGV2ZW4gdGhvdWdoIGl0IGhhcyBpdHMgb3duIEltYWdlQnVmZmVyLgotICAgIC8vIFdlIGN1cnJl
bnRseSBkb24ndCBpbXBsZW1lbnQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRpbWUsIGFuZCBj
YW4gTk9UIGdvIGJhY2sgaW4gdGltZSwgb25jZSBhbmltYXRpb25zIHN0YXJ0ZWQuCi0gICAgLy8g
VGhlcmUncyBubyB3YXkgdG8gZml4IHRoaXMgYmVzaWRlcyBhdm9pZGluZyBzdHlsZS9hdHRyaWJ1
dGUgbXV0YXRpb25zIGZyb20gU1ZHQW5pbWF0aW9uRWxlbWVudC4KLSAgICBBU1NFUlQoYnVmZmVy
KTsKLSAgICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKLQogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwot
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQq
PihmcmFtZS0+ZG9jdW1lbnQoKSktPnJvb3RFbGVtZW50KCk7Ci0gICAgaWYgKCFyb290RWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlclNWR1Jvb3QqIHJlbmRlcmVyID0gdG9SZW5k
ZXJTVkdSb290KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEcmF3IGltYWdlIGF0IHJlcXVlc3RlZCBzaXplLgog
ICAgIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gaW1hZ2VPYnNlcnZlcigpOwogICAgIEFTU0VS
VChvYnNlcnZlcik7CiAKICAgICAvLyBUZW1wb3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwg
d2UgZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFueSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8g
dGhpcyByZWxheW91dC4KICAgICBzZXRJbWFnZU9ic2VydmVyKDApOwogCi0gICAgLy8gRGlzYWJs
ZSByZXBhaW50aW5nOyB3ZSBkb24ndCB3YW50IGRlZmVycmVkIHJlcGFpbnRzIHRvIHNjaGVkdWxl
IGFueSB0aW1lcnMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCi0gICAgZnJhbWUtPnZpZXcoKS0+YmVn
aW5EaXNhYmxlUmVwYWludHMoKTsKKyAgICBJbnRTaXplIHJvdW5kZWRDb250YWluZXJTaXplID0g
cm91bmRlZEludFNpemUoY29udGFpbmVyU2l6ZSk7CisgICAgc2V0Q29udGFpbmVyU2l6ZShyb3Vu
ZGVkQ29udGFpbmVyU2l6ZSk7CiAKLSAgICBJbnRTaXplIGNvbnRhaW5lclNpemUgPSByb3VuZGVk
SW50U2l6ZShzaXplKTsKLSAgICByZW5kZXJlci0+c2V0Q29udGFpbmVyU2l6ZShjb250YWluZXJT
aXplKTsKLSAgICBmcmFtZS0+dmlldygpLT5yZXNpemUodGhpcy0+c2l6ZSgpKTsKLQotICAgIEZs
b2F0U2l6ZSBzY2FsZWRDb250YWluZXJTaXplKHNpemUpOwotICAgIHNjYWxlZENvbnRhaW5lclNp
emUuc2NhbGUoem9vbUFuZFNjYWxlKTsKLSAgICBJbnRSZWN0IGRlc3RSZWN0ID0gSW50UmVjdChJ
bnRQb2ludCgpLCBleHBhbmRlZEludFNpemUoc2NhbGVkQ29udGFpbmVyU2l6ZSkpOwotICAgIGlm
IChzaG91bGRDbGVhciA9PSBDbGVhckltYWdlQnVmZmVyKQotICAgICAgICBidWZmZXItPmNvbnRl
eHQoKS0+Y2xlYXJSZWN0KGRlc3RSZWN0KTsKKyAgICBGbG9hdFJlY3Qgc2NhbGVkU3JjID0gc3Jj
UmVjdDsKKyAgICBzY2FsZWRTcmMuc2NhbGUoMSAvIHpvb20pOwogCi0gICAgLy8gRHJhdyBTVkcg
b24gdG9wIG9mIEltYWdlQnVmZmVyLgotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIGRlc3RS
ZWN0LCBJbnRSZWN0KEludFBvaW50KCksIGNvbnRhaW5lclNpemUpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOworICAgIC8vIENvbXBl
bnNhdGUgZm9yIHRoZSBjb250YWluZXIgc2l6ZSByb3VuZGluZyBieSBhZGp1c3RpbmcgdGhlIHNv
dXJjZSByZWN0LgorICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNyY1NpemUgPSBzY2FsZWRTcmMuc2l6
ZSgpOworICAgIGFkanVzdGVkU3JjU2l6ZS5zY2FsZShyb3VuZGVkQ29udGFpbmVyU2l6ZS53aWR0
aCgpIC8gY29udGFpbmVyU2l6ZS53aWR0aCgpLCByb3VuZGVkQ29udGFpbmVyU2l6ZS5oZWlnaHQo
KSAvIGNvbnRhaW5lclNpemUuaGVpZ2h0KCkpOworICAgIHNjYWxlZFNyYy5zZXRTaXplKGFkanVz
dGVkU3JjU2l6ZSk7CiAKLSAgICBpZiAoZnJhbWUtPnZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKLSAg
ICAgICAgZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CisgICAgZHJhdyhjb250ZXh0LCBkc3RSZWN0
LCBzY2FsZWRTcmMsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogCiAgICAg
c2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7Cit9CiAKLSAgICBmcmFtZS0+dmlldygpLT5lbmRE
aXNhYmxlUmVwYWludHMoKTsKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUs
IGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAor
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKK3sKKyAgICBGbG9hdFNpemUgem9v
bWVkQ29udGFpbmVyU2l6ZShjb250YWluZXJTaXplKTsKKyAgICB6b29tZWRDb250YWluZXJTaXpl
LnNjYWxlKHpvb20pOworICAgIEZsb2F0UmVjdCB6b29tZWRDb250YWluZXJSZWN0ID0gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgem9vbWVkQ29udGFpbmVyU2l6ZSk7CisKKyAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKHpv
b21lZENvbnRhaW5lclNpemUpLCBwYWdlU2NhbGUpOworICAgIGRyYXdGb3JDb250YWluZXIoYnVm
ZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20sIHpvb21lZENvbnRhaW5lclJlY3Qs
IHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVm
ZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CisgICAgaW1hZ2UtPmRyYXdQYXR0ZXJu
KGNvbnRleHQsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBj
b21wb3NpdGVPcCwgZHN0UmVjdCk7CiB9CiAKIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSkKQEAgLTI1MCwyMSArMjU0LDM0IEBAIHZvaWQgU1ZHSW1hZ2U6OmNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb24KICAgICAgICAgaW50cmluc2ljUmF0aW8gPSBGbG9hdFNpemUoZmxvYXRW
YWx1ZUZvckxlbmd0aChpbnRyaW5zaWNXaWR0aCwgMCksIGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50
cmluc2ljSGVpZ2h0LCAwKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpCisvLyBGSVhNRTogc3VwcG9ydCBjYXRjaFVwSWZOZWNlc3Nh
cnkuCit2b2lkIFNWR0ltYWdlOjpzdGFydEFuaW1hdGlvbihib29sIC8qIGNhdGNoVXBJZk5lY2Vz
c2FyeSAqLykKIHsKLSAgICAvLyBGSVhNRTogSW4gb3JkZXIgdG8gc3VwcG9ydCBkeW5hbWljIFNW
R3Mgd2UgbmVlZCB0byBoYXZlIGEgd2F5IHRvIGludmFsaWRhdGUgdGhpcwotICAgIC8vIGZyYW1l
IGNhY2hlLCBvciBiZXR0ZXIgeWV0LCBub3QgdXNlIGEgY2FjaGUgZm9yIHRpbGVkIGRyYXdpbmcg
YXQgYWxsLCBpbnN0ZWFkCi0gICAgLy8gaGF2aW5nIGEgdGlsZWQgZHJhd2luZyBjYWxsYmFjayAo
aG9wZWZ1bGx5IG5vbi12aXJ0dWFsKS4KLSAgICBpZiAoIW1fZnJhbWVDYWNoZSkgewotICAgICAg
ICBpZiAoIW1fcGFnZSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCAxKTsKLSAgICAg
ICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3Jt
YWwpOwotICAgICAgICBtX2ZyYW1lQ2FjaGUgPSBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2lu
Z1N0b3JlKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1fZnJhbWVDYWNoZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9v
dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+
cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm47Cisg
ICAgcm9vdEVsZW1lbnQtPnVucGF1c2VBbmltYXRpb25zKCk7CisgICAgcm9vdEVsZW1lbnQtPnNl
dEN1cnJlbnRUaW1lKDApOworfQorCit2b2lkIFNWR0ltYWdlOjpzdG9wQW5pbWF0aW9uKCkKK3sK
KyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+bWFpbkZyYW1lKCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsK
KyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgcm9vdEVsZW1lbnQt
PnBhdXNlQW5pbWF0aW9ucygpOworfQorCit2b2lkIFNWR0ltYWdlOjpyZXNldEFuaW1hdGlvbigp
Cit7CisgICAgc3RvcEFuaW1hdGlvbigpOworICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiB9CiAKIGJv
b2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQpAQCAtMzIyLDcg
KzMzOSw2IEBAIHZvaWQgU1ZHSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU8KICAgICBJ
bWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9jaHJvbWVDbGllbnQsICJjaHJvbWVDbGllbnQiKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX3BhZ2UsICJwYWdlIik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9mcmFtZUNhY2hlLCAiZnJh
bWVDYWNoZSIpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAkocmV2aXNpb24gMTQyNDI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgSW1hZ2VCdWZm
ZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgU1ZHSW1hZ2VDaHJvbWVD
bGllbnQ7CitjbGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKIAogY2xhc3MgU1ZHSW1hZ2UgOiBw
dWJsaWMgSW1hZ2UgewogcHVibGljOgpAQCAtNDYsMTIgKzQ3LDYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0ltYWdlKG9ic2VydmVyKSk7CiAgICAgfQogCi0gICAg
ZW51bSBTaG91bGRDbGVhckJ1ZmZlciB7Ci0gICAgICAgIENsZWFySW1hZ2VCdWZmZXIsCi0gICAg
ICAgIERvbnRDbGVhckltYWdlQnVmZmVyCi0gICAgfTsKLQotICAgIHZvaWQgZHJhd1NWR1RvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCwgU2hvdWxkQ2xl
YXJCdWZmZXIpOwogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CiAg
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKIApAQCAtNjEsMTAgKzU2LDE2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0QW5pbWF0aW9uKGJvb2wgLypjYXRjaFVwSWZOZWNlc3NhcnkqLyA9IHRydWUpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudDsKKyAgICBmcmll
bmQgY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CisKICAgICB2aXJ0dWFsIH5TVkdJbWFnZSgp
OwogCiAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKQEAgLTg3
LDEyICs4OCwxMiBAQCBwcml2YXRlOgogCiAgICAgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciopOwog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0KLSAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgdm9pZCBkcmF3Rm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgZmxvYXQsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsCisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBP
d25QdHI8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+IG1fY2hyb21lQ2xpZW50OwogICAgIE93blB0cjxQ
YWdlPiBtX3BhZ2U7Ci0gICAgUmVmUHRyPEltYWdlPiBtX2ZyYW1lQ2FjaGU7CiB9OwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwCShy
ZXZpc2lvbiAxNDI0MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VD
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDUwICsyOSwyNyBAQAogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIK
KyNpbmNsdWRlICJTVkdJbWFnZUZvckNvbnRhaW5lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBjb25zdCBpbnQgdGltZVRvS2VlcENhY2hlZEJpdG1hcHNBZnRlckxhc3RVc2VJ
blNlY29uZHMgPSAzMDsKLQogU1ZHSW1hZ2VDYWNoZTo6U1ZHSW1hZ2VDYWNoZShTVkdJbWFnZSog
c3ZnSW1hZ2UpCiAgICAgOiBtX3N2Z0ltYWdlKHN2Z0ltYWdlKQotICAgICwgbV9yZWRyYXdUaW1l
cih0aGlzLCAmU1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJGaXJlZCkKLSAgICAsIG1fY2FjaGVD
bGVhclRpbWVyKHRoaXMsICZTVkdJbWFnZUNhY2hlOjpjYWNoZUNsZWFyVGltZXJGaXJlZCwgdGlt
ZVRvS2VlcENhY2hlZEJpdG1hcHNBZnRlckxhc3RVc2VJblNlY29uZHMpCiB7CiAgICAgQVNTRVJU
KG1fc3ZnSW1hZ2UpOwogfQogCiBTVkdJbWFnZUNhY2hlOjp+U1ZHSW1hZ2VDYWNoZSgpCiB7Ci0g
ICAgbV9zaXplQW5kU2NhbGVzTWFwLmNsZWFyKCk7Ci0gICAgY2xlYXJCaXRtYXBDYWNoZSgpOwot
fQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OmNsZWFyQml0bWFwQ2FjaGUoKQotewotICAgIEltYWdl
RGF0YU1hcDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJ
bWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIC8vIENoZWNrcyBpZiB0aGUgY2xpZW50IChpdC0+a2V5KSBp
cyBzdGlsbCB2YWxpZC4gVGhlIGNsaWVudCBzaG91bGQgcmVtb3ZlIGl0c2VsZiBmcm9tIHRoaXMK
LSAgICAgICAgLy8gY2FjaGUgYmVmb3JlIGl0cyBlbmQgb2YgbGlmZSwgb3RoZXJ3aXNlIHRoZSBm
b2xsb3dpbmcgQVNTRVJUIHdpbGwgY3Jhc2ggb24gcHVyZSB2aXJ0dWFsCi0gICAgICAgIC8vIGZ1
bmN0aW9uIGNhbGwgb3IgYSBnZW5lcmFsIGNyYXNoLgotICAgICAgICBBU1NFUlQoaXQtPmtleS0+
cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgp
KTsKLSAgICAgICAgZGVsZXRlIGl0LT52YWx1ZS5idWZmZXI7Ci0gICAgfQotCi0gICAgbV9pbWFn
ZURhdGFNYXAuY2xlYXIoKTsKKyAgICBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmNsZWFyKCk7CiB9
CiAKIHZvaWQgU1ZHSW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNvbnN0IENhY2hl
ZEltYWdlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7Ci0gICAgbV9zaXpl
QW5kU2NhbGVzTWFwLnJlbW92ZShjbGllbnQpOwotCi0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRv
ciBpdCA9IG1faW1hZ2VEYXRhTWFwLmZpbmQoY2xpZW50KTsKLSAgICBpZiAoaXQgPT0gbV9pbWFn
ZURhdGFNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKIAotICAgIGRlbGV0ZSBpdC0+dmFsdWUu
YnVmZmVyOwotICAgIG1faW1hZ2VEYXRhTWFwLnJlbW92ZShpdCk7CisgICAgaWYgKG1faW1hZ2VG
b3JDb250YWluZXJNYXAuY29udGFpbnMoY2xpZW50KSkKKyAgICAgICAgbV9pbWFnZUZvckNvbnRh
aW5lck1hcC5yZW1vdmUoY2xpZW50KTsKIH0KIAogdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRDb250
YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCwgY29u
c3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSkKQEAgLTgyLDEz
NSArNTksNTkgQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpzZXRDb250YWluZXJTaXplRm9yUgogCiAg
ICAgRmxvYXRTaXplIGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbShjb250YWluZXJTaXplKTsKICAg
ICBjb250YWluZXJTaXplV2l0aG91dFpvb20uc2NhbGUoMSAvIGNvbnRhaW5lclpvb20pOwotICAg
IG1fc2l6ZUFuZFNjYWxlc01hcC5zZXQoY2xpZW50LCBTaXplQW5kU2NhbGVzKGNvbnRhaW5lclNp
emVXaXRob3V0Wm9vbSwgY29udGFpbmVyWm9vbSkpOworCisgICAgSW1hZ2VGb3JDb250YWluZXJN
YXA6Oml0ZXJhdG9yIGltYWdlSXQgPSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmZpbmQoY2xpZW50
KTsKKyAgICBpZiAoaW1hZ2VJdCA9PSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmVuZCgpKSB7Cisg
ICAgICAgIFJlZlB0cjxTVkdJbWFnZUZvckNvbnRhaW5lcj4gaW1hZ2UgPSBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6Y3JlYXRlKG1fc3ZnSW1hZ2UsIGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSwgMSwg
Y29udGFpbmVyWm9vbSk7CisgICAgICAgIG1faW1hZ2VGb3JDb250YWluZXJNYXAuc2V0KGNsaWVu
dCwgaW1hZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIGltYWdlSXQtPnZhbHVlLT5zZXRTaXpl
KGNvbnRhaW5lclNpemVXaXRob3V0Wm9vbSk7CisgICAgICAgIGltYWdlSXQtPnZhbHVlLT5zZXRa
b29tKGNvbnRhaW5lclpvb20pOworICAgIH0KIH0KIAogSW50U2l6ZSBTVkdJbWFnZUNhY2hlOjpp
bWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAog
ewogICAgIEludFNpemUgaW1hZ2VTaXplID0gbV9zdmdJbWFnZS0+c2l6ZSgpOwotCiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGltYWdlU2l6ZTsKLSAgICBTaXplQW5kU2NhbGVz
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2l6ZUFuZFNjYWxlc01hcC5maW5kKHJlbmRlcmVy
KTsKLSAgICBpZiAoaXQgPT0gbV9zaXplQW5kU2NhbGVzTWFwLmVuZCgpKQotICAgICAgICByZXR1
cm4gaW1hZ2VTaXplOwogCi0gICAgU2l6ZUFuZFNjYWxlcyBzaXplQW5kU2NhbGVzID0gaXQtPnZh
bHVlOwotICAgIGlmICghc2l6ZUFuZFNjYWxlcy5zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBm
bG9hdCBzY2FsZSA9IHNpemVBbmRTY2FsZXMuc2NhbGU7Ci0gICAgICAgIGlmICghc2NhbGUpIHsK
LSAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+cGFnZSgpOwot
ICAgICAgICAgICAgc2NhbGUgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZS0+cGFn
ZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIH0KKyAgICBJbWFnZUZvckNvbnRhaW5lck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmZpbmQocmVuZGVyZXIpOwor
ICAgIGlmIChpdCA9PSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmVuZCgpKQorICAgICAgICByZXR1
cm4gaW1hZ2VTaXplOwogCi0gICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChzY2FsZSAqIHNpemVB
bmRTY2FsZXMuc2l6ZS53aWR0aCgpKTsKLSAgICAgICAgaW1hZ2VTaXplLnNldEhlaWdodChzY2Fs
ZSAqIHNpemVBbmRTY2FsZXMuc2l6ZS5oZWlnaHQoKSk7CisgICAgUmVmUHRyPFNWR0ltYWdlRm9y
Q29udGFpbmVyPiBpbWFnZSA9IGl0LT52YWx1ZTsKKyAgICBGbG9hdFNpemUgc2l6ZSA9IGltYWdl
LT5jb250YWluZXJTaXplKCk7CisgICAgaWYgKCFzaXplLmlzRW1wdHkoKSkgeworICAgICAgICBz
aXplLnNjYWxlKGltYWdlLT56b29tKCkpOworICAgICAgICBpbWFnZVNpemUuc2V0V2lkdGgoc2l6
ZS53aWR0aCgpKTsKKyAgICAgICAgaW1hZ2VTaXplLnNldEhlaWdodChzaXplLmhlaWdodCgpKTsK
ICAgICB9Ci0gICAgcmV0dXJuIGltYWdlU2l6ZTsKLX0KIAotdm9pZCBTVkdJbWFnZUNhY2hlOjpp
bWFnZUNvbnRlbnRDaGFuZ2VkKCkKLXsKLSAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9
IG1faW1hZ2VEYXRhTWFwLmVuZCgpOwotICAgIGZvciAoSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBp
dCA9IG1faW1hZ2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQt
PnZhbHVlLmltYWdlTmVlZHNVcGRhdGUgPSB0cnVlOwotCi0gICAgLy8gQWx3YXlzIHJlZHJhdyBv
biBhIHRpbWVyIGJlY2F1c2UgdGhpcyBtZXRob2QgbWF5IGJlIGludm9rZWQgZnJvbSBkZXN0cnVj
dG9ycyBvZiB0aGluZ3Mgd2UgYXJlIGludGVuZGluZyB0byBkcmF3LgotICAgIGlmICghbV9yZWRy
YXdUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3JlZHJhd1RpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKLX0KLQotdm9pZCBTVkdJbWFnZUNhY2hlOjpyZWRyYXcoKQotewotICAgIEltYWdlRGF0YU1h
cDo6aXRlcmF0b3IgZW5kID0gbV9pbWFnZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJbWFnZURh
dGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgIEltYWdlRGF0YSYgZGF0YSA9IGl0LT52YWx1ZTsKLSAgICAgICAgaWYg
KCFkYXRhLmltYWdlTmVlZHNVcGRhdGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
Ly8gSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCB3ZSByZWRyYXcgdXNpbmcgb3VyIGV4aXN0aW5nIElt
YWdlQnVmZmVyLgotICAgICAgICBBU1NFUlQoZGF0YS5idWZmZXIpOwotICAgICAgICBBU1NFUlQo
ZGF0YS5pbWFnZSk7Ci0gICAgICAgIG1fc3ZnSW1hZ2UtPmRyYXdTVkdUb0ltYWdlQnVmZmVyKGRh
dGEuYnVmZmVyLCBkYXRhLnNpemVBbmRTY2FsZXMuc2l6ZSwgZGF0YS5zaXplQW5kU2NhbGVzLnpv
b20gKiBkYXRhLnNpemVBbmRTY2FsZXMuc2NhbGUsIFNWR0ltYWdlOjpDbGVhckltYWdlQnVmZmVy
KTsKLSAgICAgICAgZGF0YS5pbWFnZSA9IGRhdGEuYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tp
bmdTdG9yZSk7Ci0gICAgICAgIGRhdGEuaW1hZ2VOZWVkc1VwZGF0ZSA9IGZhbHNlOwotICAgIH0K
LSAgICBBU1NFUlQobV9zdmdJbWFnZS0+aW1hZ2VPYnNlcnZlcigpKTsKLSAgICBtX3N2Z0ltYWdl
LT5pbWFnZU9ic2VydmVyKCktPmFuaW1hdGlvbkFkdmFuY2VkKG1fc3ZnSW1hZ2UpOwotfQotCi12
b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhd1RpbWVyRmlyZWQoVGltZXI8U1ZHSW1hZ2VDYWNoZT4q
KQotewotICAgIC8vIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIGZyYW1lIGRvZXMgbm90
IHJlcXVpcmUgbGF5b3V0IHdoZW4gdGhlIHRpbWVyIGZpcmVkLgotICAgIC8vIFNvIGJlIHN1cmUg
dG8gY2hlY2sgYWdhaW4gaW4gY2FzZSBpdCBpcyBzdGlsbCBub3Qgc2FmZSB0byBydW4gcmVkcmF3
LgotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9zdmdJbWFnZS0+ZnJhbWVWaWV3KCk7Ci0g
ICAgaWYgKGZyYW1lVmlldyAmJiAoZnJhbWVWaWV3LT5uZWVkc0xheW91dCgpIHx8IGZyYW1lVmll
dy0+aXNJbkxheW91dCgpKSkgewotICAgICAgICBpZiAoIW1fcmVkcmF3VGltZXIuaXNBY3RpdmUo
KSkKLSAgICAgICAgICAgIG1fcmVkcmF3VGltZXIuc3RhcnRPbmVTaG90KDApOwotICAgIH0gZWxz
ZQotICAgICAgIHJlZHJhdygpOwotfQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OmNhY2hlQ2xlYXJU
aW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8U1ZHSW1hZ2VDYWNoZT4qKQotewotICAg
IGNsZWFyQml0bWFwQ2FjaGUoKTsKKyAgICByZXR1cm4gaW1hZ2VTaXplOwogfQogCi1JbWFnZSog
U1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHRha2UgaW50
byBhY2NvdW50IHRoZSBhbmltYXRpb24gdGltZWxpbmUgc28gYW5pbWF0aW9ucyB3aWxsIG5vdAor
Ly8gcmVzdGFydCBvbiBwYWdlIGxvYWQsIG5vciB3aWxsIHR3byBhbmltYXRpb25zIGluIGRpZmZl
cmVudCBwYWdlcyBoYXZlIGRpZmZlcmVudCB0aW1lbGluZXMuCitJbWFnZSogU1ZHSW1hZ2VDYWNo
ZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAKLSAg
ICBjb25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50ID0gcmVuZGVyZXI7Ci0KICAgICAvLyBU
aGUgY2FjaGUgbmVlZHMgdG8ga25vdyB0aGUgc2l6ZSBvZiB0aGUgcmVuZGVyZXIgYmVmb3JlIHF1
ZXJ5aW5nIGFuIGltYWdlIGZvciBpdC4KLSAgICBTaXplQW5kU2NhbGVzTWFwOjppdGVyYXRvciBz
aXplSXQgPSBtX3NpemVBbmRTY2FsZXNNYXAuZmluZChyZW5kZXJlcik7Ci0gICAgaWYgKHNpemVJ
dCA9PSBtX3NpemVBbmRTY2FsZXNNYXAuZW5kKCkpCisgICAgSW1hZ2VGb3JDb250YWluZXJNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZUZvckNvbnRhaW5lck1hcC5maW5kKHJlbmRlcmVyKTsKKyAg
ICBpZiAoaXQgPT0gbV9pbWFnZUZvckNvbnRhaW5lck1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIEZsb2F0U2l6ZSBzaXplID0gc2l6ZUl0LT52YWx1
ZS5zaXplOwotICAgIGZsb2F0IHpvb20gPSBzaXplSXQtPnZhbHVlLnpvb207Ci0gICAgZmxvYXQg
c2NhbGUgPSBzaXplSXQtPnZhbHVlLnNjYWxlOworICAgIFJlZlB0cjxTVkdJbWFnZUZvckNvbnRh
aW5lcj4gaW1hZ2UgPSBpdC0+dmFsdWU7CisgICAgQVNTRVJUKCFpbWFnZS0+Y29udGFpbmVyU2l6
ZSgpLmlzRW1wdHkoKSk7CiAKICAgICAvLyBGSVhNRSAoODUzMzUpOiBUaGlzIG5lZWRzIHRvIHRh
a2UgQ1NTIHRyYW5zZm9ybSBzY2FsZSBpbnRvIGFjY291bnQgYXMgd2VsbC4KKyAgICAvLyBGSVhN
RTogU2V0IHRoZSBwYWdlIHNjYWxlIGluIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlciBpbnN0
ZWFkIG9mIGxvb2tpbmcgaXQgdXAgaGVyZS4KICAgICBQYWdlKiBwYWdlID0gcmVuZGVyZXItPmRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXNjYWxlKQotICAgICAgICBzY2FsZSA9IHBhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkgKiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKLQotICAgIEFT
U0VSVCghc2l6ZS5pc0VtcHR5KCkpOwotCi0gICAgLy8gKFJlKXNjaGVkdWxlIHRoZSBvbmVzaG90
IHRpbWVyIHRvIHRocm93IG91dCBhbGwgdGhlIGNhY2hlZCBJbWFnZUJ1ZmZlcnMgaWYgdGhleSBy
ZW1haW4gdW51c2VkIGZvciB0b28gbG9uZy4KLSAgICBtX2NhY2hlQ2xlYXJUaW1lci5yZXN0YXJ0
KCk7Ci0KLSAgICAvLyBMb29rdXAgaW1hZ2UgZm9yIGNsaWVudCBpbiBjYWNoZSBhbmQgZXZlbnR1
YWxseSB1cGRhdGUgaXQuCi0gICAgSW1hZ2VEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VE
YXRhTWFwLmZpbmQoY2xpZW50KTsKLSAgICBpZiAoaXQgIT0gbV9pbWFnZURhdGFNYXAuZW5kKCkp
IHsKLSAgICAgICAgSW1hZ2VEYXRhJiBkYXRhID0gaXQtPnZhbHVlOwotCi0gICAgICAgIC8vIENv
bW1vbiBjYXNlOiBpbWFnZSBzaXplICYgem9vbSByZW1haW5lZCB0aGUgc2FtZS4KLSAgICAgICAg
aWYgKGRhdGEuc2l6ZUFuZFNjYWxlcy5zaXplID09IHNpemUgJiYgZGF0YS5zaXplQW5kU2NhbGVz
Lnpvb20gPT0gem9vbSAmJiBkYXRhLnNpemVBbmRTY2FsZXMuc2NhbGUgPT0gc2NhbGUpCi0gICAg
ICAgICAgICByZXR1cm4gZGF0YS5pbWFnZS5nZXQoKTsKLQotICAgICAgICAvLyBJZiB0aGUgaW1h
Z2Ugc2l6ZSBmb3IgdGhlIGNsaWVudCBjaGFuZ2VkLCB3ZSBoYXZlIHRvIGRlbGV0ZSB0aGUgYnVm
ZmVyLCByZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgY2FjaGUgYW5kIHJlY3JlYXRlIGl0LgotICAg
ICAgICBkZWxldGUgZGF0YS5idWZmZXI7Ci0gICAgICAgIG1faW1hZ2VEYXRhTWFwLnJlbW92ZShp
dCk7Ci0gICAgfQotCi0gICAgRmxvYXRTaXplIHNjYWxlZFNpemUoc2l6ZSk7Ci0gICAgc2NhbGVk
U2l6ZS5zY2FsZShzY2FsZSAqIHpvb20pOwotCi0gICAgLy8gQ3JlYXRlIGFuZCBjYWNoZSBuZXcg
aW1hZ2UgYW5kIGltYWdlIGJ1ZmZlciBhdCByZXF1ZXN0ZWQgc2l6ZS4KLSAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IG5ld0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXpl
KHNjYWxlZFNpemUpLCAxKTsKLSAgICBpZiAoIW5ld0J1ZmZlcikKLSAgICAgICAgcmV0dXJuIElt
YWdlOjpudWxsSW1hZ2UoKTsKLQotICAgIG1fc3ZnSW1hZ2UtPmRyYXdTVkdUb0ltYWdlQnVmZmVy
KG5ld0J1ZmZlci5nZXQoKSwgc2l6ZSwgc2NhbGUgKiB6b29tLCBTVkdJbWFnZTo6RG9udENsZWFy
SW1hZ2VCdWZmZXIpOwotCi0gICAgUmVmUHRyPEltYWdlPiBuZXdJbWFnZSA9IG5ld0J1ZmZlci0+
Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwotICAgIEltYWdlKiBuZXdJbWFnZVB0ciA9IG5l
d0ltYWdlLmdldCgpOwotICAgIEFTU0VSVChuZXdJbWFnZVB0cik7CisgICAgaW1hZ2UtPnNldFBh
Z2VTY2FsZShwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZS0+cGFnZVNjYWxlRmFjdG9y
KCkpOwogCi0gICAgbV9pbWFnZURhdGFNYXAuYWRkKGNsaWVudCwgSW1hZ2VEYXRhKG5ld0J1ZmZl
ci5sZWFrUHRyKCksIG5ld0ltYWdlLnJlbGVhc2UoKSwgU2l6ZUFuZFNjYWxlcyhzaXplLCB6b29t
LCBzY2FsZSkpKTsKLSAgICByZXR1cm4gbmV3SW1hZ2VQdHI7CisgICAgcmV0dXJuIGltYWdlLmdl
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgJKHJldmlzaW9uIDE0MjQyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC0zNSw2ICszNCw3IEBAIGNsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgQ2Fj
aGVkSW1hZ2VDbGllbnQ7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFNWR0ltYWdlOworY2xh
c3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGNsYXNzIFNW
R0ltYWdlQ2FjaGUgewpAQCAtNDcsNzcgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTVkdJbWFnZUNhY2hlKGltYWdlKSk7CiAgICAgfQogCi0gICAgc3RydWN0
IFNpemVBbmRTY2FsZXMgewotICAgICAgICBTaXplQW5kU2NhbGVzKCkKLSAgICAgICAgICAgIDog
em9vbSgxKQotICAgICAgICAgICAgLCBzY2FsZSgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICBTaXplQW5kU2NhbGVzKGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSwgZmxvYXQgbmV3
Wm9vbSwgZmxvYXQgbmV3U2NhbGUpCi0gICAgICAgICAgICA6IHNpemUobmV3U2l6ZSkKLSAgICAg
ICAgICAgICwgem9vbShuZXdab29tKQotICAgICAgICAgICAgLCBzY2FsZShuZXdTY2FsZSkKLSAg
ICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgU2l6ZUFuZFNjYWxlcyhjb25zdCBGbG9hdFNp
emUmIG5ld1NpemUsIGZsb2F0IG5ld1pvb20pCi0gICAgICAgICAgICA6IHNpemUobmV3U2l6ZSkK
LSAgICAgICAgICAgICwgem9vbShuZXdab29tKQotICAgICAgICAgICAgLCBzY2FsZSgwKQotICAg
ICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBGbG9hdFNpemUgc2l6ZTsgLy8gVGhpcyBpcyB0
aGUgY29udGFpbmVyIHNpemUgd2l0aG91dCB6b29tLgotICAgICAgICBmbG9hdCB6b29tOwotICAg
ICAgICBmbG9hdCBzY2FsZTsgLy8gQSBzY2FsZSBvZiAwIGluZGljYXRlcyB0aGF0IHRoZSBkZWZh
dWx0IHNjYWxlIHNob3VsZCBiZSB1c2VkLgotICAgIH07Ci0KICAgICB2b2lkIHJlbW92ZUNsaWVu
dEZyb21DYWNoZShjb25zdCBDYWNoZWRJbWFnZUNsaWVudCopOwogCiAgICAgdm9pZCBzZXRDb250
YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBjb25zdCBJbnRT
aXplJiwgZmxvYXQpOwogICAgIEludFNpemUgaW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KikgY29uc3Q7CiAKLSAgICBJbWFnZSogbG9va3VwT3JDcmVhdGVCaXRtYXBJbWFn
ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgaW1hZ2VDb250ZW50
Q2hhbmdlZCgpOworICAgIEltYWdlKiBpbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVj
dCopOwogCiBwcml2YXRlOgogICAgIFNWR0ltYWdlQ2FjaGUoU1ZHSW1hZ2UqKTsKLSAgICB2b2lk
IHJlZHJhdygpOwotICAgIHZvaWQgcmVkcmF3VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hl
PiopOwotICAgIHZvaWQgY2FjaGVDbGVhclRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1l
cjxTVkdJbWFnZUNhY2hlPiopOwotICAgIHZvaWQgY2xlYXJCaXRtYXBDYWNoZSgpOwotCi0gICAg
c3RydWN0IEltYWdlRGF0YSB7Ci0gICAgICAgIEltYWdlRGF0YSgpCi0gICAgICAgICAgICA6IGlt
YWdlTmVlZHNVcGRhdGUoZmFsc2UpCi0gICAgICAgICAgICAsIGJ1ZmZlcigwKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBJbWFnZURhdGEoSW1hZ2VCdWZmZXIqIG5ld0J1ZmZlciwg
UGFzc1JlZlB0cjxJbWFnZT4gbmV3SW1hZ2UsIGNvbnN0IFNpemVBbmRTY2FsZXMmIG5ld1NpemVB
bmRTY2FsZXMpCi0gICAgICAgICAgICA6IGltYWdlTmVlZHNVcGRhdGUoZmFsc2UpCi0gICAgICAg
ICAgICAsIHNpemVBbmRTY2FsZXMobmV3U2l6ZUFuZFNjYWxlcykKLSAgICAgICAgICAgICwgYnVm
ZmVyKG5ld0J1ZmZlcikKLSAgICAgICAgICAgICwgaW1hZ2UobmV3SW1hZ2UpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaW1hZ2VOZWVkc1VwZGF0ZTsKLSAgICAgICAgU2l6
ZUFuZFNjYWxlcyBzaXplQW5kU2NhbGVzOwotCi0gICAgICAgIEltYWdlQnVmZmVyKiBidWZmZXI7
Ci0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7Ci0gICAgfTsKIAotICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIFNpemVBbmRTY2FsZXM+IFNpemVBbmRTY2Fs
ZXNNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgSW1h
Z2VEYXRhPiBJbWFnZURhdGFNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENhY2hlZElt
YWdlQ2xpZW50KiwgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiA+IEltYWdlRm9yQ29udGFp
bmVyTWFwOwogCiAgICAgU1ZHSW1hZ2UqIG1fc3ZnSW1hZ2U7Ci0gICAgU2l6ZUFuZFNjYWxlc01h
cCBtX3NpemVBbmRTY2FsZXNNYXA7Ci0gICAgSW1hZ2VEYXRhTWFwIG1faW1hZ2VEYXRhTWFwOwot
ICAgIFRpbWVyPFNWR0ltYWdlQ2FjaGU+IG1fcmVkcmF3VGltZXI7Ci0gICAgRGVmZXJyYWJsZU9u
ZVNob3RUaW1lcjxTVkdJbWFnZUNhY2hlPiBtX2NhY2hlQ2xlYXJUaW1lcjsKKyAgICBJbWFnZUZv
ckNvbnRhaW5lck1hcCBtX2ltYWdlRm9yQ29udGFpbmVyTWFwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2VGb3JD
b250YWluZXIuaCIKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5j
bHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0ludFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25zdAoreworICAg
IEZsb2F0U2l6ZSBzY2FsZWRDb250YWluZXJTaXplKG1fY29udGFpbmVyU2l6ZSk7CisgICAgc2Nh
bGVkQ29udGFpbmVyU2l6ZS5zY2FsZShtX3pvb20pOworICAgIHJldHVybiByb3VuZGVkSW50U2l6
ZShzY2FsZWRDb250YWluZXJTaXplKTsKK30KKwordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwK
KyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit7CisgICAg
bV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fem9v
bSwgZHN0UmVjdCwgc3JjUmVjdCwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7
Cit9CisKK3ZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCkKK3sKKyAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRh
aW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fcGFnZVNjYWxlLCBtX3pvb20sIHNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0
UmVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
VkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFNW
R0ltYWdlRm9yQ29udGFpbmVyX2gKKyNkZWZpbmUgU1ZHSW1hZ2VGb3JDb250YWluZXJfaAorCisj
aWYgRU5BQkxFKFNWRykKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkltYWdlLmgi
CisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
VkdJbWFnZUZvckNvbnRhaW5lciA6IHB1YmxpYyBJbWFnZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U1ZHSW1hZ2VGb3JDb250YWluZXI+IGNyZWF0ZShTVkdJbWFnZSogaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCB6
b29tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdJbWFnZUZvckNvbnRh
aW5lcihpbWFnZSwgY29udGFpbmVyU2l6ZSwgcGFnZVNjYWxlLCB6b29tKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IE9WRVJSSURFOworCisgICAg
dmlydHVhbCBib29sIHVzZXNDb250YWluZXJTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9pbWFnZS0+dXNlc0NvbnRhaW5lclNpemUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxh
dGl2ZVdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbWFnZS0+aGFzUmVsYXRpdmVX
aWR0aCgpOyB9CisgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRo
LCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgT1ZF
UlJJREUKKyAgICB7CisgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0
UmVjdCYpIE9WRVJSSURFOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxl
c3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVP
cGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgRmxvYXRTaXplIGNvbnRh
aW5lclNpemUoKSB7IHJldHVybiBtX2NvbnRhaW5lclNpemU7IH0KKyAgICBmbG9hdCBwYWdlU2Nh
bGUoKSB7IHJldHVybiBtX3BhZ2VTY2FsZTsgfQorICAgIGZsb2F0IHpvb20oKSB7IHJldHVybiBt
X3pvb207IH0KKworICAgIHZvaWQgc2V0U2l6ZShGbG9hdFNpemUmIHNpemUpIHsgbV9jb250YWlu
ZXJTaXplID0gc2l6ZTsgfQorICAgIHZvaWQgc2V0Wm9vbShmbG9hdCB6b29tKSB7IG1fem9vbSA9
IHpvb207IH0KKyAgICB2b2lkIHNldFBhZ2VTY2FsZShmbG9hdCBwYWdlU2NhbGUpIHsgbV9wYWdl
U2NhbGUgPSBwYWdlU2NhbGU7IH0KKworcHJpdmF0ZToKKyAgICBTVkdJbWFnZUZvckNvbnRhaW5l
cihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
cGFnZVNjYWxlLCBmbG9hdCB6b29tKQorICAgICAgICA6IG1faW1hZ2UoaW1hZ2UpLCBtX2NvbnRh
aW5lclNpemUoY29udGFpbmVyU2l6ZSksIG1fcGFnZVNjYWxlKHBhZ2VTY2FsZSksIG1fem9vbSh6
b29tKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAvKmRl
c3Ryb3lBbGwqLyA9IHRydWUpIHsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUo
KSBjb25zdCB7IHJldHVybiAwOyB9CisKKyAgICBTVkdJbWFnZSogbV9pbWFnZTsKKyAgICBGbG9h
dFNpemUgbV9jb250YWluZXJTaXplOworICAgIGZsb2F0IG1fcGFnZVNjYWxlOworICAgIGZsb2F0
IG1fem9vbTsKK307Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR0lt
YWdlRm9yQ29udGFpbmVyX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjUzMSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAyLTEx
ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGJpdG1h
cCBTVkcgaW1hZ2UgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjE1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMy0w
Mi0xMSAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtIVE1MVGVtcGxhdGVFbGVtZW50XSA8dGVtcGxhdGU+IGluc2lkZSBvZiA8aGVhZD4gbWF5IG5v
dCBjcmVhdGUgPGJvZHk+IGlmIEVPRiBpcyBoaXQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTQyNDI2KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5
KQpAQCAtNDEzMyw2ICs0MTMzLDI4IEBAIHdlYmtpdC5vcmcvYi8xMDMyOTkgWyBMaW51eCBNYWMg
V2luIF0gZmEKIHdlYmtpdC5vcmcvYi8xMDMxNDggWyBMaW51eCBXaW4gXSBmYXN0L3RleHQvYXRz
dWktc21hbGwtY2Fwcy1wdW5jdHVhdGlvbi1zaXplLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIEZh
aWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTAzMzA4IFsgU25vd0xlb3BhcmQgTGlvbiBdIGNz
czMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci10cmFuc2Zvcm1zLWFuaW1hdGlvbi5odG1s
IFsgUGFzcyBUaW1lb3V0IF0KIAorIyBSZWJhc2VsaW5lIGFmdGVyIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNTkKK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2Fz
LWJhY2tncm91bmQtaW1hZ2UvYW5pbWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3JvdW5k
LWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBd
Cit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1iYWNr
Z3JvdW5kLTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2
MTU5IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLTMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3Jv
dW5kLWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLTQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFz
cyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1i
YWNrZ3JvdW5kLTUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2Iv
MTA2MTU5IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLTYuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNr
Z3JvdW5kLWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLXdpdGgtcmVsYXRpdmUtc2l6ZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJhY2tn
cm91bmQtaW1hZ2Uvc3ZnLWJhY2tncm91bmQtcGFydGlhbC1yZWRyYXcuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1ib3JkZXItaW1hZ2Uv
c3ZnLWFzLWJvcmRlci1pbWFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtp
dC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWltYWdlL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS1uby1maXhl
ZC1pbnRyaW5zaWMtc2l6ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5v
cmcvYi8xMDYxNTkgc3ZnL2FzLWltYWdlL2ltZy1wcmVzZXJ2ZUFzcGVjdFJhdGlvLXN1cHBvcnQt
Mi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3Zn
L2FzLWltYWdlL3N2Zy1pbWFnZS1jaGFuZ2UtY29udGVudC1zaXplLnhodG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWltYWdlL3N2Zy1ub24t
aW50ZWdlci1zY2FsZWQtaW1hZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJr
aXQub3JnL2IvMTA2MTU5IHN2Zy9jYXJ0by5uZXQvY29tYm9ib3guc3ZnIFsgSW1hZ2VPbmx5RmFp
bHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL3dpY2QvdGVzdC1zY2FsYWJsZS1i
YWNrZ3JvdW5kLWltYWdlMS54aHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQu
b3JnL2IvMTA2MTU5IHN2Zy93aWNkL3Rlc3Qtc2NhbGFibGUtYmFja2dyb3VuZC1pbWFnZTIueGh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9iLzEwNjE1OSBzdmcvem9v
bS9wYWdlL3pvb20tYmFja2dyb3VuZC1pbWFnZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFz
cyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy96b29tL3BhZ2Uvem9vbS1zdmctYXMtYmFja2dy
b3VuZC13aXRoLXJlbGF0aXZlLXNpemUtYW5kLXZpZXdCb3guaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy96b29tL3BhZ2Uvem9vbS1zdmctYXMt
YmFja2dyb3VuZC13aXRoLXJlbGF0aXZlLXNpemUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFz
cyBdCisKIHdlYmtpdC5vcmcvYi8xMDMzNjMgWyBNYWMgXSB0b3VjaGFkanVzdG1lbnQvdG91Y2gt
bGlua3MtbG9uZ3ByZXNzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDM0NDYgWyBN
YWMgXSBodHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwMzQ0NyBbIE1vdW50YWluTGlvbiBdIGZh
c3QvY2FudmFzL2ZvbnQtdXBkYXRlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>
<flag name="commit-queue"
          id="207663"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187765</attachid>
            <date>2013-02-11 20:34:12 -0800</date>
            <delta_ts>2013-02-13 11:45:58 -0800</delta_ts>
            <desc>Add tests for newly-fixed bugs</desc>
            <filename>106159.7.patch</filename>
            <type>text/plain</type>
            <size>51907</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NiBAQAorMjAxMy0wMi0xMSAgUGhpbGlw
IFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgU1ZHIGJpdG1hcCBj
YWNoZSB3aXRoIGRpcmVjdGx5LXJlbmRlcmVkIFNWRworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjYWNoaW5nIG9m
IFNWRyBiaXRtYXBzIHNvIFNWRyBpbWFnZXMgYXJlIHJlbmRlcmVkIGRpcmVjdGx5LiBUaGlzCisg
ICAgICAgIGVuYWJsZXMgV2ViS2l0IHRvIHBhc3MgdGhlIElFIENoYWxrYm9hcmQgZGVtbyBpbiAx
MHMgb24gYSBaNjIwOgorICAgICAgICBodHRwOi8vaWUubWljcm9zb2Z0LmNvbS90ZXN0ZHJpdmUv
UGVyZm9ybWFuY2UvQ2hhbGtib2FyZC8KKworICAgICAgICBPbiBhIHNpbXBsZSBzY2FsZWQgU1ZH
IGJlbmNobWFyayBzaW1pbGFyIHRvIHRoZSBJRTEwIENoYWxrYm9hcmQgZGVtbworICAgICAgICAo
aHR0cDovL3BoaWxiaXQuY29tL1N2Z0ltYWdlUGVyZm9ybWFuY2Uvdmlld3BvcnQuaHRtbCk6Cisg
ICAgICAgICAgICB3aXRob3V0IHBhdGNoOiB+MjBGUFMKKyAgICAgICAgICAgIHdpdGggcGF0Y2g6
IH41NUZQUworCisgICAgICAgIFRoZSBiaXRtYXAgU1ZHIGltYWdlIGNhY2hlIGhhZCBzZXZlcmFs
IHNob3J0Y29taW5nczoKKyAgICAgICAgICAgIC0gVGhlIGJpdG1hcCBjYWNoZSBwcmV2ZW50ZWQg
dmlld3BvcnQgcmVuZGVyaW5nLiAoV0sxMDQ2OTMpCisgICAgICAgICAgICAtIEJpdG1hcCBtZW1v
cnkgdXNhZ2Ugd2FzIGhpZ2guIChXSzEwNjQ4NCkKKyAgICAgICAgICAgIC0gQ2FjaGluZyBhbmlt
YXRpbmcgaW1hZ2VzIHdhcyBleHBlbnNpdmUuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVtb3Zl
cyBhbG1vc3QgYWxsIG9mIHRoZSBTVkdJbWFnZUNhY2hlIGltcGxlbWVudGF0aW9uLCByZXBsYWNp
bmcgaXQgd2l0aAorICAgICAgICBkaXJlY3RseS1yZW5kZXJlZCBTVkcuIEluc3RlYWQgb2YgY2Fj
aGluZyBiaXRtYXBzLCBhbiBTVkdJbWFnZUZvckNvbnRhaW5lciBpcyBjYWNoZWQgd2hpY2gKKyAg
ICAgICAgaXMgYSB0aGluIHdyYXBwZXIgYXJvdW5kIGFuIFNWRyBpbWFnZSB3aXRoIHRoZSBhc3Nv
Y2lhdGVkIGNvbnRhaW5lciBzaXplIGFuZCBzY2FsZS4KKyAgICAgICAgV2hlbiByZW5kZXJpbmcg
cGF0dGVybnMgKGUuZy4sIHRpbGVkIGJhY2tncm91bmRzKSwgYSB0ZW1wb3JhcnkgYml0bWFwIGlz
IHVzZWQgZm9yCisgICAgICAgIHBlcmZvcm1hbmNlLiBUaGlzIGNoYW5nZSBhbHNvIHJlbW92ZXMg
dGhlIHJlZHJhdyB0aW1lciBvZiB0aGUgb2xkIGNhY2hlLCBpbnN0ZWFkIHJlbHlpbmcKKyAgICAg
ICAgb24gdGhlIFNWRyBpbWFnZSB0byBub3RpZnkgY2xpZW50cyBpZiB0aGUgaW1hZ2UgY2hhbmdl
cyAoZS5nLiwgZHVyaW5nIGFuaW1hdGlvbnMpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMg
dHdvIGV4aXN0aW5nIGJ1Z3MgKFdLOTk0ODEgYW5kIFdLMTA0MTg5KSB0aGF0IHdlcmUgZHVlIHRv
IGNhY2hpbmcgYml0bWFwcworICAgICAgICBhdCBhIGZpeGVkIHNpemUuIEEgdGVzdCBoYXMgYmVl
biBhZGRlZCBmb3IgZWFjaCBvZiB0aGVzZSBidWdzLgorCisgICAgICAgIFRlc3RzOiBzdmcvYXMt
aW1hZ2Uvc3ZnLWltYWdlLXNjYWxlZC5odG1sCisgICAgICAgICAgICAgICBzdmcvYXMtaW1hZ2Uv
c3ZnLWltYWdlLXZpZXdib3guaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjpsb29rdXBPckNyZWF0ZUltYWdlRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmNoYW5nZWRJblJlY3QpOgorCisgICAgICAgICAgICBTVkcgaW1hZ2VzIGFyZSBubyBsb25n
ZXIgc3BlY2lhbC1jYXNlZCBoZXJlLiBXaGVuIHRoZSBTVkcgaW1hZ2UgY2hhbmdlcywgdXNlcnMg
YXJlCisgICAgICAgICAgICBub3RpZmllZCB0aHJvdWdoIHRoaXMgZnVuY3Rpb24sIGFuZCB1c2Vy
cyBjYW4gdGhlbiByZXF1ZXN0IHRoZWlyIGNvbnRlbnQgdG8gYmUgcmVkcmF3bi4KKworICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6c2V0Q29udGFpbmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd0Zv
ckNvbnRhaW5lcik6CisKKyAgICAgICAgICAgIGRyYXdGb3JDb250YWluZXIgbGF5cyBvdXQgdGhl
IFNWRyBjb250ZW50IGZvciBhIHNwZWNpZmljIGNvbnRhaW5lciBzaXplIGFuZCByZW5kZXJzIGl0
LgorICAgICAgICAgICAgVGhlIGxvZ2ljIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQgYnV0IGEg
bm90ZSBhYm91dCB0aGUgc2NhbGVzIGFuZCB6b29tcyBoZXJlOgorICAgICAgICAgICAgICAgIHRo
ZSBkZXN0aW5hdGlvbiByZWN0IHBhcmFtZXRlciBpcyB6b29tZWQgYnV0IG5vdCBzY2FsZWQKKyAg
ICAgICAgICAgICAgICB0aGUgc291cmNlIHJlY3QgcGFyYW1ldGVyIGlzIHpvb21lZCBidXQgbm90
IHNjYWxlZAorICAgICAgICAgICAgICAgIHRoZSBjb250ZXh0IGlzIHNjYWxlZCBidXQgbm90IHpv
b21lZAorICAgICAgICAgICAgU1ZHSW1hZ2U6OmRyYXcoLi4uKSBvbmx5IGFjY2VwdHMgYSBzb3Vy
Y2UgYW5kIGRlc3RpbmF0aW9uIHJlY3QgYnV0IGRvZXMgbm90IGNvbnNpZGVyCisgICAgICAgICAg
ICBzY2FsZSBvciB6b29tLiBUaGVyZWZvcmUsIGRyYXdGb3JDb250YWluZXIgcmVtb3ZlcyB0aGUg
em9vbSBjb21wb25lbnQgZnJvbSB0aGUgc291cmNlCisgICAgICAgICAgICBzbyBTVkdJbWFnZTo6
ZHJhdyguLi4pIHdpbGwgZHJhdyBmcm9tIHRoZSBwcmUtem9vbSBzb3VyY2UgdG8gdGhlIHBvc3Qt
em9vbSBkZXN0aW5hdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0
ZXJuRm9yQ29udGFpbmVyKToKKworICAgICAgICAgICAgRm9yIHBlcmZvcm1hbmNlLCBkcmF3UGF0
dGVybkZvckNvbnRhaW5lciByZW5kZXJzIHRoZSBTVkcgY29udGVudCBvbnRvIGEgYml0bWFwLCB0
aGVuCisgICAgICAgICAgICBoYXMgdGhlIGJpdG1hcCBpbWFnZSBkcmF3IHRoZSBwYXR0ZXJuLiBU
aGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGRyYXdQYXR0ZXJuIGlzIHVzZWQKKyAgICAgICAgICAg
IGZvciB0aWxpbmcuCisKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpzdG9w
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpyZXNldEFuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTVkdJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwOgor
CisgICAgICAgICAgICBJbnN0ZWFkIG9mIHN0b3JpbmcgYSBTaXplQW5kU2NhbGVzIHZhbHVlcyBm
b3IgZWFjaCByZW5kZXJlciwgYSBTVkdJbWFnZUZvckNvbnRhaW5lcgorICAgICAgICAgICAgaXMg
c3RvcmVkIHdoaWNoIGlzIGp1c3QgYSB0aGluIHdyYXBwZXIgYXJvdW5kIGFuIFNWRyBpbWFnZSB0
aGF0IGNvbnRhaW5zIGNvbnRhaW5lcgorICAgICAgICAgICAgc2l6aW5nIGluZm9ybWF0aW9uLiBC
eSBjb21iaW5pbmcgdGhlIGltYWdlIGFuZCBzaXplIGluZm9ybWF0aW9uLCB0aGUgdHdvIG1hcHMg
b2YKKyAgICAgICAgICAgIFNWR0ltYWdlQ2FjaGUgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIG9uZS4K
KworICAgICAgICAgICAgVG8gbWFrZSB0aGlzIHBhdGNoIGVhc2llciB0byByZXZpZXcsIFNWR0lt
YWdlQ2FjaGUgc3RpbGwgZXhpc3RzIGFuZCB3b3JrcyBzaW1pbGFyIHRvCisgICAgICAgICAgICBo
b3cgaXQgZGlkIGJlZm9yZSB0aGUgcGF0Y2guIE5vdywgU1ZHSW1hZ2VDYWNoZSBzaW1wbHkgc3Rv
cmVzIHRoZSBTVkdJbWFnZUZvckNvbnRhaW5lcnMuCisgICAgICAgICAgICBJbiBhIGZvbGxvd3Vw
IHBhdGNoIGl0IHdpbGwgYmUgcmVtb3ZlZC4KKworICAgICAgICAgICAgTm90ZTogdGhlIHJlZHJh
dyB0aW1lciBvZiBTVkdJbWFnZUNhY2hlIGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSBhbmltYXRp
b24KKyAgICAgICAgICAgIGludmFsaWRhdGlvbiBpcyBub3cgcHJvcGVybHkgcHJvcGFnYXRlZCBi
YWNrIHRvIHRoZSBpbWFnZSBjbGllbnRzLgorCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OlNWR0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VDYWNoZTo6flNWR0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2VDYWNoZTo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlQ2FjaGU6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUNhY2hlOjppbWFnZVNpemVGb3JSZW5kZXJlcik6CisKKyAgICAgICAgICAg
IFByZXZpb3VzbHksIHRoaXMgZnVuY3Rpb24gcmV0dXJuZWQgdGhlIHNjYWxlZCBpbWFnZSBzaXpl
IHdoaWNoIHdhcyBpbmNvcnJlY3QuIFRoZSBpbWFnZQorICAgICAgICAgICAgc2l6ZSBpcyB1c2Vk
IGJ5IGNsaWVudHMgc3VjaCBhcyBHcmFwaGljc0NvbnRleHQyRCB0byBkZXRlcm1pbmUgdGhlIHNv
dXJjZSBzaXplCisgICAgICAgICAgICBmb3IgZHJhd2luZyB0aGUgaW1hZ2UuIGRyYXcoKSBhY2Nl
cHRzIHpvb21lZCBidXQgbm90IHNjYWxlZCB2YWx1ZXMsIHNvIHRoaXMgaGFzIGJlZW4KKyAgICAg
ICAgICAgIGNoYW5nZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2FjaGU6OmltYWdl
Rm9yUmVuZGVyZXIpOgorCisgICAgICAgICAgICBBIEZJWE1FIGhhcyBiZWVuIGFkZGVkIGhlcmUg
dG8gbm90IHNldCB0aGUgc2NhbGUgb24gZXZlcnkgbG9va3VwLiBUaGlzIGNhbiBiZSBpbXByb3Zl
ZAorICAgICAgICAgICAgYnkgc2V0dGluZyB0aGUgcGFnZSBzY2FsZSBmYWN0b3IgaW4gc2V0Q29u
dGFpbmVyU2l6ZUZvclJlbmRlcmVyKCkgaW4gYSBmdXR1cmUgcGF0Y2guCisKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTVkdJbWFnZUNhY2hlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorCisgICAgICAgICAgICBTVkdJ
bWFnZUZvckNvbnRhaW5lciBpcyBhIHRoaW4gd3JhcHBlciBhcm91bmQgYW4gU1ZHIGltYWdlLiBU
aGUgbGlmZXRpbWUgb2YgdGhlCisgICAgICAgICAgICBTVkdJbWFnZSB3aWxsIGJlIGxvbmdlciB0
aGFuIHRoZSBpbWFnZSBjYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250
YWluZXI6OnNpemUpOgorCisgICAgICAgICAgICBUaGlzIGlzIHRoZSBvbmx5IGxvZ2ljIGluIFNW
R0ltYWdlRm9yQ29udGFpbmVyLiBUaGUgc2l6ZSByZXR1cm5lZCBuZWVkcyB0byBiZSB6b29tZWQK
KyAgICAgICAgICAgIGJ1dCBub3Qgc2NhbGVkIGJlY2F1c2UgaXQgaXMgdXNlZCAoZS5nLiwgYnkg
UmVuZGVySW1hZ2UpIHRvIHBhc3MgYmFjayBpbnRvIGRyYXcoKSB3aGljaAorICAgICAgICAgICAg
dGFrZXMgem9vbWVkIGJ1dCBub3Qgc2NhbGVkIHZhbHVlcy4KKworICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VG
b3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNW
R0ltYWdlRm9yQ29udGFpbmVyKToKKworICAgICAgICAgICAgSW4gYSBmdXR1cmUgcGF0Y2ggU1ZH
SW1hZ2VGb3JDb250YWluZXIgY2FuIGJlIG1hZGUgaW1tdXRhYmxlIGJ1dCB3aXRob3V0IGEgcmVm
YWN0b3JpbmcKKyAgICAgICAgICAgIGZvciBub3Qgc2V0dGluZyB0aGUgcGFnZSBzY2FsZSBmYWN0
b3IgaW4gU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVJbWFnZUZvclJlbmRlcmVyLAorICAg
ICAgICAgICAgc2V0dGVycyBhcmUgbmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUZvckNvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpjb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpwYWdlU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWlu
ZXI6Onpvb20pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFpvb20pOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OnNldFBhZ2VTY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6U1ZHSW1hZ2VGb3JDb250YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRlc3Ryb3lEZWNv
ZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZGVjb2Rl
ZFNpemUpOgorCiAyMDEzLTAyLTExICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBBZGQgdGVtcG9yYXJ5IHR5cGVkZWYgdG8gQU5HTEVXZWJLaXRCcmlkZ2UgdG8g
c3VwcG9ydCBpbmNvbXBhdGlibGUgQVBJIHVwZ3JhZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNDI1MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjUwNyw2ICsyNTA3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAg
ICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAogICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNh
Y2hlLmNwcAorICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKIAogICAg
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCiAgICAgc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShy
ZXZpc2lvbiAxNDI1MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC00OTIyLDYgKzQ5MjIsOCBAQCB3ZWJjb3JlX3N2Z19zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmggXAogCVNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE0MjUxOCkKKysrIFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI2NTEsNiArMjY1MSw3IEBAIEhFQURF
UlMgKz0gXAogICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIFwKICAgICBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaCBcCiAgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBc
CisgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggXAogICAgIHN2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCBcCkBAIC0zNzczLDYgKzM3NzQs
NyBAQCBlbmFibGU/KFNWRykgewogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgXAogICAg
ICAgICBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAgXAorICAgICAgICBzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIFwKICAgICAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAgXAogICAgICAgICBzdmcvcHJvcGVydGllcy9TVkdQ
YXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5jcHAgXAogICAgICAgICBzdmcvU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxNDI1MTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTUxMzYsNiAr
NTEzNiw4IEBACiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAnLAogICAgICAgICAg
ICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oJywKKyAgICAgICAgICAgICdzdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaCcsCisgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuaCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNw
cCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkocmV2aXNpb24gMTQyNTE4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0NTIxLDYgKzc0NTIxLDE0IEBACiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXFNWR0ltYWdlQ2hyb21lQ2xpZW50LmgiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdc
Z3JhcGhpY3NcU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXFNWR0ltYWdlRm9y
Q29udGFpbmVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CiAJCQkJPEZpbHRlcgogCQkJCQlOYW1l
PSJmaWx0ZXJzIgogCQkJCQk+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDI1MTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTIyMSw2ICsyMjEsOCBAQAogCQkwOEYyRjAwQTEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1h
Z2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDhGMkYwMDgxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEY4NTlENDE0
NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZH
SW1hZ2VDYWNoZS5jcHAgKi87IH07CiAJCTA4Rjg1OUQ1MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJ
bWFnZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA4Rjg1OUQ0MTQ2M0Y5Q0Qw
MDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwICovOyB9OworCQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzQg
LyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNv
bnRhaW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA4RkIxN0MxMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIx
N0MwMTNCQzdFOTEwMDA0MDA4NiAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmNwcCAqLzsg
fTsKIAkJMDhGQjNGODQxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIz
RjgzMTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGRTBCQzUxMjdF
MkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGRTBCQzQxMjdFMkFDMTAw
MEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NDkzLDYgKzc0OTUsOCBAQAog
CQkwOEYyRjAwODEyMTNFNjE3MDBEQ0VDNDggLyogUmVuZGVySW1hZ2VSZXNvdXJjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4Rjg1OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJ
bWFnZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0lt
YWdlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEY4NTlEMzE0NjNG
OUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdJbWFnZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4
Rjg1OUQyMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdJbWFnZUZvckNvbnRhaW5lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzNCAv
KiBTVkdJbWFnZUZvckNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdJbWFnZUZvckNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
OEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGQjNGODMxM0JDNzU0
QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwOEZFMEJDNDEyN0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA0MjMsNiArMjA0MjcsOCBAQAogCQkJCUIyNTU5OTBDMEQwMEQ4QjkwMEJCODI1
QyAvKiBTVkdJbWFnZS5oICovLAogCQkJCTA4Rjg1OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJ
bWFnZUNhY2hlLmNwcCAqLywKIAkJCQkwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1h
Z2VDYWNoZS5oICovLAorCQkJCTA4Rjg1OUQyMTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAgKi8sCisJCQkJMDhGODU5RDMxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0lt
YWdlRm9yQ29udGFpbmVyLmggKi8sCiAJCQkJQUFDMDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNW
R0ltYWdlQ2hyb21lQ2xpZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwpAQCAt
MjYwOTEsNiArMjYwOTcsNyBAQAogCQkJCTY1MEZCRjJCMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdI
S2VybkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE0MEQwMEQ4QkEwMEJCODI1
QyAvKiBTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGODU5RDUxNDYzRjlDRDAwNjdE
OTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4Rjg1OUQ1MTQ2M0Y5
Q0QwMDY3RDkzNCAvKiBTVkdJbWFnZUZvckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUFDMDhDRUYxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyN0EyRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjhDNkEyQTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1h
Z2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkzNjUsNiArMjkzNzIsNyBAQAogCQkJCTY1
MEZCRjJBMEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjI1NTk5QTMwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ltYWdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA4Rjg1OUQ0MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTA4Rjg1OUQ0MTQ2M0Y5Q0QwMDY3RDkzNCAvKiBTVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EyQzBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHSW1hZ2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyOEM2QTI5
MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdJbWFnZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjIyN0EyRjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CShyZXZpc2lvbiAxNDI1MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgaW5saW5lIEltYWdl
KiBDYWNoZWRJbWFnZTo6bG9va3VwT3JDcmVhdAogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAo
IW1faW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7Ci0g
ICAgSW1hZ2UqIHVzZUltYWdlID0gbV9zdmdJbWFnZUNhY2hlLT5sb29rdXBPckNyZWF0ZUJpdG1h
cEltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOworICAgIEltYWdlKiB1c2VJbWFnZSA9IG1fc3Zn
SW1hZ2VDYWNoZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYgKHVzZUltYWdl
ID09IEltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7CiAg
ICAgcmV0dXJuIHVzZUltYWdlOwpAQCAtMjE1LDYgKzIxNSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6
OnNldENvbnRhaW5lclNpemVGb3JSZW4KICAgICBpZiAoY29udGFpbmVyU2l6ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQocmVuZGVyZXIpOworICAgIEFTU0VSVChjb250
YWluZXJab29tKTsKICAgICBpZiAoIW1faW1hZ2UpIHsKICAgICAgICAgbV9wZW5kaW5nQ29udGFp
bmVyU2l6ZVJlcXVlc3RzLnNldChyZW5kZXJlciwgU2l6ZUFuZFpvb20oY29udGFpbmVyU2l6ZSwg
Y29udGFpbmVyWm9vbSkpOwogICAgICAgICByZXR1cm47CkBAIC0zMTIsOSArMzEzLDYgQEAgdm9p
ZCBDYWNoZWRJbWFnZTo6Y2hlY2tTaG91bGRQYWludEJyb2tlbgogdm9pZCBDYWNoZWRJbWFnZTo6
Y2xlYXIoKQogewogICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwotI2lmIEVOQUJMRShTVkcpCi0g
ICAgbV9zdmdJbWFnZUNhY2hlLmNsZWFyKCk7Ci0jZW5kaWYKICAgICBjbGVhckltYWdlKCk7CiAg
ICAgbV9wZW5kaW5nQ29udGFpbmVyU2l6ZVJlcXVlc3RzLmNsZWFyKCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CkBAIC00ODQsMTMgKzQ4Miw2IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJ
blJlY3QoY29uc3QgSW0KIHsKICAgICBpZiAoIWltYWdlIHx8IGltYWdlICE9IG1faW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoU1ZHKQotICAgIC8vIFdlIGhhdmUgdG8gdXBkYXRl
IHRoZSBjYWNoZWQgSW1hZ2VCdWZmZXJzIGlmIHRoZSB1bmRlcmx5aW5nIGNvbnRlbnQgY2hhbmdl
ZC4KLSAgICBpZiAoaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkgewotICAgICAgICBtX3N2Z0ltYWdlQ2Fj
aGUtPmltYWdlQ29udGVudENoYW5nZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRp
ZgogICAgIG5vdGlmeU9ic2VydmVycygmcmVjdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMTQyNTE4KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNs
dWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdJbWFnZUNocm9tZUNsaWVudC5oIgpAQCAtNTksMTAgKzYwLDIzIEBAIFNWR0ltYWdlOjp+
U1ZHSW1hZ2UoKQogICAgIEFTU0VSVCghbV9jaHJvbWVDbGllbnQgfHwgIW1fY2hyb21lQ2xpZW50
LT5pbWFnZSgpKTsKIH0KIAotdm9pZCBTVkdJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZShjb25zdCBJ
bnRTaXplJikKK3ZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICAvLyBTVkdJbWFnZUNhY2hlIGFscmVhZHkgaW50ZXJjZXB0ZWQgdGhpcyBj
YWxsLCBhcyBpdCBzdG9yZXMgJiBjYWNoZXMgdGhlIGRlc2lyZWQgY29udGFpbmVyIHNpemVzICYg
em9vbSBsZXZlbHMuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFtX3BhZ2Ug
fHwgIXVzZXNDb250YWluZXJTaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVs
ZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgUmVu
ZGVyU1ZHUm9vdCogcmVuZGVyZXIgPSB0b1JlbmRlclNWR1Jvb3Qocm9vdEVsZW1lbnQtPnJlbmRl
cmVyKCkpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1l
VmlldyogdmlldyA9IGZyYW1lVmlldygpOworICAgIHZpZXctPnJlc2l6ZSh0aGlzLT5zaXplKCkp
OworCisgICAgcmVuZGVyZXItPnNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKIEludFNpemUg
U1ZHSW1hZ2U6OnNpemUoKSBjb25zdApAQCAtOTksNTYgKzExMyw0NiBAQCBJbnRTaXplIFNWR0lt
YWdlOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZSgzMDAsIDE1MCk7CiB9CiAKLXZv
aWQgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIsIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgem9vbUFuZFNjYWxlLCBTaG91bGRDbGVhckJ1ZmZl
ciBzaG91bGRDbGVhcikKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9v
bSwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsg
Y29ycmVjdGx5IHdpdGggYW5pbWF0aW9ucy4gSWYgYW4gaW1hZ2UgY29udGFpbnMgYW5pbWF0aW9u
cywgdGhhdCBzYXkgcnVuIGZvciAyIHNlY29uZHMsCi0gICAgLy8gYW5kIHdlIGN1cnJlbnRseSBo
YXZlIG9uZSA8aW1nPiB0aGF0IGRpc3BsYXlzIHVzLiBJZiB3ZSBvcGVuIGFub3RoZXIgZG9jdW1l
bnQgcmVmZXJlbmNpbmcgdGhlIHNhbWUgU1ZHSW1hZ2UgaXQKLSAgICAvLyB3aWxsIGRpc3BsYXkg
dGhlIGRvY3VtZW50IGF0IGEgdGltZSB3aGVyZSBhbmltYXRpb25zIGFscmVhZHkgcmFuIC0gZXZl
biB0aG91Z2ggaXQgaGFzIGl0cyBvd24gSW1hZ2VCdWZmZXIuCi0gICAgLy8gV2UgY3VycmVudGx5
IGRvbid0IGltcGxlbWVudCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50VGltZSwgYW5kIGNhbiBO
T1QgZ28gYmFjayBpbiB0aW1lLCBvbmNlIGFuaW1hdGlvbnMgc3RhcnRlZC4KLSAgICAvLyBUaGVy
ZSdzIG5vIHdheSB0byBmaXggdGhpcyBiZXNpZGVzIGF2b2lkaW5nIHN0eWxlL2F0dHJpYnV0ZSBt
dXRhdGlvbnMgZnJvbSBTVkdBbmltYXRpb25FbGVtZW50LgotICAgIEFTU0VSVChidWZmZXIpOwot
ICAgIEFTU0VSVCghc2l6ZS5pc0VtcHR5KCkpOwotCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAg
U1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZy
YW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsKLSAgICBpZiAoIXJvb3RFbGVtZW50KQot
ICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyU1ZHUm9vdCogcmVuZGVyZXIgPSB0b1JlbmRlclNW
R1Jvb3Qocm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIERyYXcgaW1hZ2UgYXQgcmVxdWVzdGVkIHNpemUuCiAgICAg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZU9ic2VydmVyKCk7CiAgICAgQVNTRVJUKG9i
c2VydmVyKTsKIAogICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdlIG9ic2VydmVyLCB3ZSBk
b24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlz
IHJlbGF5b3V0LgogICAgIHNldEltYWdlT2JzZXJ2ZXIoMCk7CiAKLSAgICAvLyBEaXNhYmxlIHJl
cGFpbnRpbmc7IHdlIGRvbid0IHdhbnQgZGVmZXJyZWQgcmVwYWludHMgdG8gc2NoZWR1bGUgYW55
IHRpbWVycyBkdWUgdG8gdGhpcyByZWxheW91dC4KLSAgICBmcmFtZS0+dmlldygpLT5iZWdpbkRp
c2FibGVSZXBhaW50cygpOworICAgIEludFNpemUgcm91bmRlZENvbnRhaW5lclNpemUgPSByb3Vu
ZGVkSW50U2l6ZShjb250YWluZXJTaXplKTsKKyAgICBzZXRDb250YWluZXJTaXplKHJvdW5kZWRD
b250YWluZXJTaXplKTsKIAotICAgIEludFNpemUgY29udGFpbmVyU2l6ZSA9IHJvdW5kZWRJbnRT
aXplKHNpemUpOwotICAgIHJlbmRlcmVyLT5zZXRDb250YWluZXJTaXplKGNvbnRhaW5lclNpemUp
OwotICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZSh0aGlzLT5zaXplKCkpOwotCi0gICAgRmxvYXRT
aXplIHNjYWxlZENvbnRhaW5lclNpemUoc2l6ZSk7Ci0gICAgc2NhbGVkQ29udGFpbmVyU2l6ZS5z
Y2FsZSh6b29tQW5kU2NhbGUpOwotICAgIEludFJlY3QgZGVzdFJlY3QgPSBJbnRSZWN0KEludFBv
aW50KCksIGV4cGFuZGVkSW50U2l6ZShzY2FsZWRDb250YWluZXJTaXplKSk7Ci0gICAgaWYgKHNo
b3VsZENsZWFyID09IENsZWFySW1hZ2VCdWZmZXIpCi0gICAgICAgIGJ1ZmZlci0+Y29udGV4dCgp
LT5jbGVhclJlY3QoZGVzdFJlY3QpOworICAgIEZsb2F0UmVjdCBzY2FsZWRTcmMgPSBzcmNSZWN0
OworICAgIHNjYWxlZFNyYy5zY2FsZSgxIC8gem9vbSk7CiAKLSAgICAvLyBEcmF3IFNWRyBvbiB0
b3Agb2YgSW1hZ2VCdWZmZXIuCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgZGVzdFJlY3Qs
IEludFJlY3QoSW50UG9pbnQoKSwgY29udGFpbmVyU2l6ZSksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgLy8gQ29tcGVuc2F0
ZSBmb3IgdGhlIGNvbnRhaW5lciBzaXplIHJvdW5kaW5nIGJ5IGFkanVzdGluZyB0aGUgc291cmNl
IHJlY3QuCisgICAgRmxvYXRTaXplIGFkanVzdGVkU3JjU2l6ZSA9IHNjYWxlZFNyYy5zaXplKCk7
CisgICAgYWRqdXN0ZWRTcmNTaXplLnNjYWxlKHJvdW5kZWRDb250YWluZXJTaXplLndpZHRoKCkg
LyBjb250YWluZXJTaXplLndpZHRoKCksIHJvdW5kZWRDb250YWluZXJTaXplLmhlaWdodCgpIC8g
Y29udGFpbmVyU2l6ZS5oZWlnaHQoKSk7CisgICAgc2NhbGVkU3JjLnNldFNpemUoYWRqdXN0ZWRT
cmNTaXplKTsKIAotICAgIGlmIChmcmFtZS0+dmlldygpLT5uZWVkc0xheW91dCgpKQotICAgICAg
ICBmcmFtZS0+dmlldygpLT5sYXlvdXQoKTsKKyAgICBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNj
YWxlZFNyYywgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CiAKICAgICBzZXRJ
bWFnZU9ic2VydmVyKG9ic2VydmVyKTsKK30KIAotICAgIGZyYW1lLT52aWV3KCktPmVuZERpc2Fi
bGVSZXBhaW50cygpOwordm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxv
YXQgcGFnZVNjYWxlLCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCisgICAg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQoreworICAgIEZsb2F0U2l6ZSB6b29tZWRD
b250YWluZXJTaXplKGNvbnRhaW5lclNpemUpOworICAgIHpvb21lZENvbnRhaW5lclNpemUuc2Nh
bGUoem9vbSk7CisgICAgRmxvYXRSZWN0IHpvb21lZENvbnRhaW5lclJlY3QgPSBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCB6b29tZWRDb250YWluZXJTaXplKTsKKworICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUoem9vbWVk
Q29udGFpbmVyU2l6ZSksIHBhZ2VTY2FsZSk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXIt
PmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwgem9vbSwgem9vbWVkQ29udGFpbmVyUmVjdCwgem9v
bWVkQ29udGFpbmVyUmVjdCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlTm9ybWFsKTsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXIt
PmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbG9yU3BhY2UsIGNvbXBv
c2l0ZU9wLCBkc3RSZWN0KTsKIH0KIAogdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlKQpAQCAtMjUwLDIxICsyNTQsMzQgQEAgdm9pZCBTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNp
Y0RpbWVuc2lvbgogICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6ZShmbG9hdFZhbHVl
Rm9yTGVuZ3RoKGludHJpbnNpY1dpZHRoLCAwKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChpbnRyaW5z
aWNIZWlnaHQsIDApKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKKy8vIEZJWE1FOiBzdXBwb3J0IGNhdGNoVXBJZk5lY2Vzc2FyeS4K
K3ZvaWQgU1ZHSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKGJvb2wgLyogY2F0Y2hVcElmTmVjZXNzYXJ5
ICovKQogewotICAgIC8vIEZJWE1FOiBJbiBvcmRlciB0byBzdXBwb3J0IGR5bmFtaWMgU1ZHcyB3
ZSBuZWVkIHRvIGhhdmUgYSB3YXkgdG8gaW52YWxpZGF0ZSB0aGlzCi0gICAgLy8gZnJhbWUgY2Fj
aGUsIG9yIGJldHRlciB5ZXQsIG5vdCB1c2UgYSBjYWNoZSBmb3IgdGlsZWQgZHJhd2luZyBhdCBh
bGwsIGluc3RlYWQKLSAgICAvLyBoYXZpbmcgYSB0aWxlZCBkcmF3aW5nIGNhbGxiYWNrIChob3Bl
ZnVsbHkgbm9uLXZpcnR1YWwpLgotICAgIGlmICghbV9mcmFtZUNhY2hlKSB7Ci0gICAgICAgIGlm
ICghbV9wYWdlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOwotICAgICAgICBp
ZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCi0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7
Ci0gICAgICAgIG1fZnJhbWVDYWNoZSA9IGJ1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3Rv
cmUpOwotICAgIH0KLSAgICByZXR1cm4gbV9mcmFtZUNhY2hlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAgRnJhbWUq
IGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxl
bWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290
RWxlbWVudCgpOworICAgIGlmICghcm9vdEVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBy
b290RWxlbWVudC0+dW5wYXVzZUFuaW1hdGlvbnMoKTsKKyAgICByb290RWxlbWVudC0+c2V0Q3Vy
cmVudFRpbWUoMCk7Cit9CisKK3ZvaWQgU1ZHSW1hZ2U6OnN0b3BBbmltYXRpb24oKQoreworICAg
IGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdl
LT5tYWluRnJhbWUoKTsKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19j
YXN0PFNWR0RvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpLT5yb290RWxlbWVudCgpOworICAg
IGlmICghcm9vdEVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICByb290RWxlbWVudC0+cGF1
c2VBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgU1ZHSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKK3sK
KyAgICBzdG9wQW5pbWF0aW9uKCk7CisgICAgc3RhcnRBbmltYXRpb24oKTsKIH0KIAogYm9vbCBT
VkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCkBAIC0zMjIsNyArMzM5
LDYgQEAgdm9pZCBTVkdJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5TwogICAgIEltYWdl
OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX2Nocm9tZUNsaWVudCwgImNocm9tZUNsaWVudCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1f
cGFnZSwgInBhZ2UiKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2ZyYW1lQ2FjaGUsICJmcmFtZUNh
Y2hlIik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5o
CShyZXZpc2lvbiAxNDI1MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVu
dDsKK2NsYXNzIFNWR0ltYWdlRm9yQ29udGFpbmVyOwogCiBjbGFzcyBTVkdJbWFnZSA6IHB1Ymxp
YyBJbWFnZSB7CiBwdWJsaWM6CkBAIC00NiwxMiArNDcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU1ZHSW1hZ2Uob2JzZXJ2ZXIpKTsKICAgICB9CiAKLSAgICBlbnVt
IFNob3VsZENsZWFyQnVmZmVyIHsKLSAgICAgICAgQ2xlYXJJbWFnZUJ1ZmZlciwKLSAgICAgICAg
RG9udENsZWFySW1hZ2VCdWZmZXIKLSAgICB9OwotCi0gICAgdm9pZCBkcmF3U1ZHVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0LCBTaG91bGRDbGVhckJ1
ZmZlcik7CiAgICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKICAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldygpIGNvbnN0OwogCkBAIC02MSwxMCArNTYsMTYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRBbmltYXRpb24oYm9vbCAvKmNhdGNoVXBJZk5lY2Vzc2FyeSovID0gdHJ1ZSkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVzZXRBbmltYXRpb24oKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR0ltYWdlQ2hyb21lQ2xpZW50OworICAgIGZyaWVuZCBj
bGFzcyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKKwogICAgIHZpcnR1YWwgflNWR0ltYWdlKCk7CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwpAQCAtODcsMTIg
Kzg4LDEyIEBAIHByaXZhdGU6CiAKICAgICBTVkdJbWFnZShJbWFnZU9ic2VydmVyKik7CiAgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBmcm9t
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLQotICAgIHZpcnR1YWwgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2b2lkIGRyYXdGb3JDb250
YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSk7CisgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludCYsIENvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIE93blB0
cjxTVkdJbWFnZUNocm9tZUNsaWVudD4gbV9jaHJvbWVDbGllbnQ7CiAgICAgT3duUHRyPFBhZ2U+
IG1fcGFnZTsKLSAgICBSZWZQdHI8SW1hZ2U+IG1fZnJhbWVDYWNoZTsKIH07CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAJKHJldmlz
aW9uIDE0MjUxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNTAgKzI5LDI3IEBACiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgorI2lu
Y2x1ZGUgIlNWR0ltYWdlRm9yQ29udGFpbmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGNvbnN0IGludCB0aW1lVG9LZWVwQ2FjaGVkQml0bWFwc0FmdGVyTGFzdFVzZUluU2Vj
b25kcyA9IDMwOwotCiBTVkdJbWFnZUNhY2hlOjpTVkdJbWFnZUNhY2hlKFNWR0ltYWdlKiBzdmdJ
bWFnZSkKICAgICA6IG1fc3ZnSW1hZ2Uoc3ZnSW1hZ2UpCi0gICAgLCBtX3JlZHJhd1RpbWVyKHRo
aXMsICZTVkdJbWFnZUNhY2hlOjpyZWRyYXdUaW1lckZpcmVkKQotICAgICwgbV9jYWNoZUNsZWFy
VGltZXIodGhpcywgJlNWR0ltYWdlQ2FjaGU6OmNhY2hlQ2xlYXJUaW1lckZpcmVkLCB0aW1lVG9L
ZWVwQ2FjaGVkQml0bWFwc0FmdGVyTGFzdFVzZUluU2Vjb25kcykKIHsKICAgICBBU1NFUlQobV9z
dmdJbWFnZSk7CiB9CiAKIFNWR0ltYWdlQ2FjaGU6On5TVkdJbWFnZUNhY2hlKCkKIHsKLSAgICBt
X3NpemVBbmRTY2FsZXNNYXAuY2xlYXIoKTsKLSAgICBjbGVhckJpdG1hcENhY2hlKCk7Ci19Ci0K
LXZvaWQgU1ZHSW1hZ2VDYWNoZTo6Y2xlYXJCaXRtYXBDYWNoZSgpCi17Ci0gICAgSW1hZ2VEYXRh
TWFwOjppdGVyYXRvciBlbmQgPSBtX2ltYWdlRGF0YU1hcC5lbmQoKTsKLSAgICBmb3IgKEltYWdl
RGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgLy8gQ2hlY2tzIGlmIHRoZSBjbGllbnQgKGl0LT5rZXkpIGlzIHN0
aWxsIHZhbGlkLiBUaGUgY2xpZW50IHNob3VsZCByZW1vdmUgaXRzZWxmIGZyb20gdGhpcwotICAg
ICAgICAvLyBjYWNoZSBiZWZvcmUgaXRzIGVuZCBvZiBsaWZlLCBvdGhlcndpc2UgdGhlIGZvbGxv
d2luZyBBU1NFUlQgd2lsbCBjcmFzaCBvbiBwdXJlIHZpcnR1YWwKLSAgICAgICAgLy8gZnVuY3Rp
b24gY2FsbCBvciBhIGdlbmVyYWwgY3Jhc2guCi0gICAgICAgIEFTU0VSVChpdC0+a2V5LT5yZXNv
dXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNsaWVudDo6ZXhwZWN0ZWRUeXBlKCkpOwot
ICAgICAgICBkZWxldGUgaXQtPnZhbHVlLmJ1ZmZlcjsKLSAgICB9Ci0KLSAgICBtX2ltYWdlRGF0
YU1hcC5jbGVhcigpOworICAgIG1faW1hZ2VGb3JDb250YWluZXJNYXAuY2xlYXIoKTsKIH0KIAog
dm9pZCBTVkdJbWFnZUNhY2hlOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoY29uc3QgQ2FjaGVkSW1h
Z2VDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKLSAgICBtX3NpemVBbmRT
Y2FsZXNNYXAucmVtb3ZlKGNsaWVudCk7Ci0KLSAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9pbWFnZURhdGFNYXAuZmluZChjbGllbnQpOwotICAgIGlmIChpdCA9PSBtX2ltYWdlRGF0
YU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwogCi0gICAgZGVsZXRlIGl0LT52YWx1ZS5idWZm
ZXI7Ci0gICAgbV9pbWFnZURhdGFNYXAucmVtb3ZlKGl0KTsKKyAgICBpZiAobV9pbWFnZUZvckNv
bnRhaW5lck1hcC5jb250YWlucyhjbGllbnQpKQorICAgICAgICBtX2ltYWdlRm9yQ29udGFpbmVy
TWFwLnJlbW92ZShjbGllbnQpOwogfQogCiB2b2lkIFNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5l
clNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50LCBjb25zdCBJ
bnRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tKQpAQCAtODIsMTM1ICs1
OSw1OCBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnNldENvbnRhaW5lclNpemVGb3JSCiAKICAgICBG
bG9hdFNpemUgY29udGFpbmVyU2l6ZVdpdGhvdXRab29tKGNvbnRhaW5lclNpemUpOwogICAgIGNv
bnRhaW5lclNpemVXaXRob3V0Wm9vbS5zY2FsZSgxIC8gY29udGFpbmVyWm9vbSk7Ci0gICAgbV9z
aXplQW5kU2NhbGVzTWFwLnNldChjbGllbnQsIFNpemVBbmRTY2FsZXMoY29udGFpbmVyU2l6ZVdp
dGhvdXRab29tLCBjb250YWluZXJab29tKSk7CisKKyAgICBJbWFnZUZvckNvbnRhaW5lck1hcDo6
aXRlcmF0b3IgaW1hZ2VJdCA9IG1faW1hZ2VGb3JDb250YWluZXJNYXAuZmluZChjbGllbnQpOwor
ICAgIGlmIChpbWFnZUl0ID09IG1faW1hZ2VGb3JDb250YWluZXJNYXAuZW5kKCkpIHsKKyAgICAg
ICAgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPiBpbWFnZSA9IFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpjcmVhdGUobV9zdmdJbWFnZSwgY29udGFpbmVyU2l6ZVdpdGhvdXRab29tLCAxLCBjb250
YWluZXJab29tKTsKKyAgICAgICAgbV9pbWFnZUZvckNvbnRhaW5lck1hcC5zZXQoY2xpZW50LCBp
bWFnZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW1hZ2VJdC0+dmFsdWUtPnNldFNpemUoY29u
dGFpbmVyU2l6ZVdpdGhvdXRab29tKTsKKyAgICAgICAgaW1hZ2VJdC0+dmFsdWUtPnNldFpvb20o
Y29udGFpbmVyWm9vbSk7CisgICAgfQogfQogCiBJbnRTaXplIFNWR0ltYWdlQ2FjaGU6OmltYWdl
U2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAg
ICAgSW50U2l6ZSBpbWFnZVNpemUgPSBtX3N2Z0ltYWdlLT5zaXplKCk7Ci0KICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICByZXR1cm4gaW1hZ2VTaXplOwotICAgIFNpemVBbmRTY2FsZXNNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zaXplQW5kU2NhbGVzTWFwLmZpbmQocmVuZGVyZXIpOwot
ICAgIGlmIChpdCA9PSBtX3NpemVBbmRTY2FsZXNNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBp
bWFnZVNpemU7CiAKLSAgICBTaXplQW5kU2NhbGVzIHNpemVBbmRTY2FsZXMgPSBpdC0+dmFsdWU7
Ci0gICAgaWYgKCFzaXplQW5kU2NhbGVzLnNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZsb2F0
IHNjYWxlID0gc2l6ZUFuZFNjYWxlcy5zY2FsZTsKLSAgICAgICAgaWYgKCFzY2FsZSkgewotICAg
ICAgICAgICAgUGFnZSogcGFnZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5wYWdlKCk7Ci0gICAg
ICAgICAgICBzY2FsZSA9IHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgKiBwYWdlLT5wYWdlU2Nh
bGVGYWN0b3IoKTsKLSAgICAgICAgfQorICAgIEltYWdlRm9yQ29udGFpbmVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1faW1hZ2VGb3JDb250YWluZXJNYXAuZmluZChyZW5kZXJlcik7CisgICAg
aWYgKGl0ID09IG1faW1hZ2VGb3JDb250YWluZXJNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBp
bWFnZVNpemU7CiAKLSAgICAgICAgaW1hZ2VTaXplLnNldFdpZHRoKHNjYWxlICogc2l6ZUFuZFNj
YWxlcy5zaXplLndpZHRoKCkpOwotICAgICAgICBpbWFnZVNpemUuc2V0SGVpZ2h0KHNjYWxlICog
c2l6ZUFuZFNjYWxlcy5zaXplLmhlaWdodCgpKTsKKyAgICBSZWZQdHI8U1ZHSW1hZ2VGb3JDb250
YWluZXI+IGltYWdlID0gaXQtPnZhbHVlOworICAgIEZsb2F0U2l6ZSBzaXplID0gaW1hZ2UtPmNv
bnRhaW5lclNpemUoKTsKKyAgICBpZiAoIXNpemUuaXNFbXB0eSgpKSB7CisgICAgICAgIHNpemUu
c2NhbGUoaW1hZ2UtPnpvb20oKSk7CisgICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChzaXplLndp
ZHRoKCkpOworICAgICAgICBpbWFnZVNpemUuc2V0SGVpZ2h0KHNpemUuaGVpZ2h0KCkpOwogICAg
IH0KLSAgICByZXR1cm4gaW1hZ2VTaXplOwotfQogCi12b2lkIFNWR0ltYWdlQ2FjaGU6OmltYWdl
Q29udGVudENoYW5nZWQoKQotewotICAgIEltYWdlRGF0YU1hcDo6aXRlcmF0b3IgZW5kID0gbV9p
bWFnZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFs
dWUuaW1hZ2VOZWVkc1VwZGF0ZSA9IHRydWU7Ci0KLSAgICAvLyBBbHdheXMgcmVkcmF3IG9uIGEg
dGltZXIgYmVjYXVzZSB0aGlzIG1ldGhvZCBtYXkgYmUgaW52b2tlZCBmcm9tIGRlc3RydWN0b3Jz
IG9mIHRoaW5ncyB3ZSBhcmUgaW50ZW5kaW5nIHRvIGRyYXcuCi0gICAgaWYgKCFtX3JlZHJhd1Rp
bWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fcmVkcmF3VGltZXIuc3RhcnRPbmVTaG90KDApOwot
fQotCi12b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhdygpCi17Ci0gICAgSW1hZ2VEYXRhTWFwOjpp
dGVyYXRvciBlbmQgPSBtX2ltYWdlRGF0YU1hcC5lbmQoKTsKLSAgICBmb3IgKEltYWdlRGF0YU1h
cDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgSW1hZ2VEYXRhJiBkYXRhID0gaXQtPnZhbHVlOwotICAgICAgICBpZiAoIWRh
dGEuaW1hZ2VOZWVkc1VwZGF0ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBJ
ZiB0aGUgY29udGVudCBjaGFuZ2VkIHdlIHJlZHJhdyB1c2luZyBvdXIgZXhpc3RpbmcgSW1hZ2VC
dWZmZXIuCi0gICAgICAgIEFTU0VSVChkYXRhLmJ1ZmZlcik7Ci0gICAgICAgIEFTU0VSVChkYXRh
LmltYWdlKTsKLSAgICAgICAgbV9zdmdJbWFnZS0+ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoZGF0YS5i
dWZmZXIsIGRhdGEuc2l6ZUFuZFNjYWxlcy5zaXplLCBkYXRhLnNpemVBbmRTY2FsZXMuem9vbSAq
IGRhdGEuc2l6ZUFuZFNjYWxlcy5zY2FsZSwgU1ZHSW1hZ2U6OkNsZWFySW1hZ2VCdWZmZXIpOwot
ICAgICAgICBkYXRhLmltYWdlID0gZGF0YS5idWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0
b3JlKTsKLSAgICAgICAgZGF0YS5pbWFnZU5lZWRzVXBkYXRlID0gZmFsc2U7Ci0gICAgfQotICAg
IEFTU0VSVChtX3N2Z0ltYWdlLT5pbWFnZU9ic2VydmVyKCkpOwotICAgIG1fc3ZnSW1hZ2UtPmlt
YWdlT2JzZXJ2ZXIoKS0+YW5pbWF0aW9uQWR2YW5jZWQobV9zdmdJbWFnZSk7Ci19Ci0KLXZvaWQg
U1ZHSW1hZ2VDYWNoZTo6cmVkcmF3VGltZXJGaXJlZChUaW1lcjxTVkdJbWFnZUNhY2hlPiopCi17
Ci0gICAgLy8gV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCB0aGUgZnJhbWUgZG9lcyBub3QgcmVx
dWlyZSBsYXlvdXQgd2hlbiB0aGUgdGltZXIgZmlyZWQuCi0gICAgLy8gU28gYmUgc3VyZSB0byBj
aGVjayBhZ2FpbiBpbiBjYXNlIGl0IGlzIHN0aWxsIG5vdCBzYWZlIHRvIHJ1biByZWRyYXcuCi0g
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3N2Z0ltYWdlLT5mcmFtZVZpZXcoKTsKLSAgICBp
ZiAoZnJhbWVWaWV3ICYmIChmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkgfHwgZnJhbWVWaWV3LT5p
c0luTGF5b3V0KCkpKSB7Ci0gICAgICAgIGlmICghbV9yZWRyYXdUaW1lci5pc0FjdGl2ZSgpKQot
ICAgICAgICAgICAgbV9yZWRyYXdUaW1lci5zdGFydE9uZVNob3QoMCk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgcmVkcmF3KCk7Ci19Ci0KLXZvaWQgU1ZHSW1hZ2VDYWNoZTo6Y2FjaGVDbGVhclRpbWVy
RmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxTVkdJbWFnZUNhY2hlPiopCi17Ci0gICAgY2xl
YXJCaXRtYXBDYWNoZSgpOworICAgIHJldHVybiBpbWFnZVNpemU7CiB9CiAKLUltYWdlKiBTVkdJ
bWFnZUNhY2hlOjpsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKKy8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgdGFrZSBpbnRvIGFj
Y291bnQgdGhlIGFuaW1hdGlvbiB0aW1lbGluZSBzbyBhbmltYXRpb25zIHdpbGwgbm90CisvLyBy
ZXN0YXJ0IG9uIHBhZ2UgbG9hZCwgbm9yIHdpbGwgdHdvIGFuaW1hdGlvbnMgaW4gZGlmZmVyZW50
IHBhZ2VzIGhhdmUgZGlmZmVyZW50IHRpbWVsaW5lcy4KK0ltYWdlKiBTVkdJbWFnZUNhY2hlOjpp
bWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIGNv
bnN0IENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQgPSByZW5kZXJlcjsKLQogICAgIC8vIFRoZSBj
YWNoZSBuZWVkcyB0byBrbm93IHRoZSBzaXplIG9mIHRoZSByZW5kZXJlciBiZWZvcmUgcXVlcnlp
bmcgYW4gaW1hZ2UgZm9yIGl0LgotICAgIFNpemVBbmRTY2FsZXNNYXA6Oml0ZXJhdG9yIHNpemVJ
dCA9IG1fc2l6ZUFuZFNjYWxlc01hcC5maW5kKHJlbmRlcmVyKTsKLSAgICBpZiAoc2l6ZUl0ID09
IG1fc2l6ZUFuZFNjYWxlc01hcC5lbmQoKSkKKyAgICBJbWFnZUZvckNvbnRhaW5lck1hcDo6aXRl
cmF0b3IgaXQgPSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmZpbmQocmVuZGVyZXIpOworICAgIGlm
IChpdCA9PSBtX2ltYWdlRm9yQ29udGFpbmVyTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gSW1h
Z2U6Om51bGxJbWFnZSgpOwogCi0gICAgRmxvYXRTaXplIHNpemUgPSBzaXplSXQtPnZhbHVlLnNp
emU7Ci0gICAgZmxvYXQgem9vbSA9IHNpemVJdC0+dmFsdWUuem9vbTsKLSAgICBmbG9hdCBzY2Fs
ZSA9IHNpemVJdC0+dmFsdWUuc2NhbGU7CisgICAgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVy
PiBpbWFnZSA9IGl0LT52YWx1ZTsKKyAgICBBU1NFUlQoIWltYWdlLT5jb250YWluZXJTaXplKCku
aXNFbXB0eSgpKTsKIAotICAgIC8vIEZJWE1FICg4NTMzNSk6IFRoaXMgbmVlZHMgdG8gdGFrZSBD
U1MgdHJhbnNmb3JtIHNjYWxlIGludG8gYWNjb3VudCBhcyB3ZWxsLgorICAgIC8vIEZJWE1FOiBT
ZXQgdGhlIHBhZ2Ugc2NhbGUgaW4gc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyIGluc3RlYWQg
b2YgbG9va2luZyBpdCB1cCBoZXJlLgogICAgIFBhZ2UqIHBhZ2UgPSByZW5kZXJlci0+ZG9jdW1l
bnQoKS0+cGFnZSgpOwotICAgIGlmICghc2NhbGUpCi0gICAgICAgIHNjYWxlID0gcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSAqIHBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwotCi0gICAgQVNTRVJU
KCFzaXplLmlzRW1wdHkoKSk7Ci0KLSAgICAvLyAoUmUpc2NoZWR1bGUgdGhlIG9uZXNob3QgdGlt
ZXIgdG8gdGhyb3cgb3V0IGFsbCB0aGUgY2FjaGVkIEltYWdlQnVmZmVycyBpZiB0aGV5IHJlbWFp
biB1bnVzZWQgZm9yIHRvbyBsb25nLgotICAgIG1fY2FjaGVDbGVhclRpbWVyLnJlc3RhcnQoKTsK
LQotICAgIC8vIExvb2t1cCBpbWFnZSBmb3IgY2xpZW50IGluIGNhY2hlIGFuZCBldmVudHVhbGx5
IHVwZGF0ZSBpdC4KLSAgICBJbWFnZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFN
YXAuZmluZChjbGllbnQpOwotICAgIGlmIChpdCAhPSBtX2ltYWdlRGF0YU1hcC5lbmQoKSkgewot
ICAgICAgICBJbWFnZURhdGEmIGRhdGEgPSBpdC0+dmFsdWU7Ci0KLSAgICAgICAgLy8gQ29tbW9u
IGNhc2U6IGltYWdlIHNpemUgJiB6b29tIHJlbWFpbmVkIHRoZSBzYW1lLgotICAgICAgICBpZiAo
ZGF0YS5zaXplQW5kU2NhbGVzLnNpemUgPT0gc2l6ZSAmJiBkYXRhLnNpemVBbmRTY2FsZXMuem9v
bSA9PSB6b29tICYmIGRhdGEuc2l6ZUFuZFNjYWxlcy5zY2FsZSA9PSBzY2FsZSkKLSAgICAgICAg
ICAgIHJldHVybiBkYXRhLmltYWdlLmdldCgpOwotCi0gICAgICAgIC8vIElmIHRoZSBpbWFnZSBz
aXplIGZvciB0aGUgY2xpZW50IGNoYW5nZWQsIHdlIGhhdmUgdG8gZGVsZXRlIHRoZSBidWZmZXIs
IHJlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBjYWNoZSBhbmQgcmVjcmVhdGUgaXQuCi0gICAgICAg
IGRlbGV0ZSBkYXRhLmJ1ZmZlcjsKLSAgICAgICAgbV9pbWFnZURhdGFNYXAucmVtb3ZlKGl0KTsK
LSAgICB9Ci0KLSAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZShzaXplKTsKLSAgICBzY2FsZWRTaXpl
LnNjYWxlKHNjYWxlICogem9vbSk7Ci0KLSAgICAvLyBDcmVhdGUgYW5kIGNhY2hlIG5ldyBpbWFn
ZSBhbmQgaW1hZ2UgYnVmZmVyIGF0IHJlcXVlc3RlZCBzaXplLgotICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gbmV3QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUoc2Nh
bGVkU2l6ZSksIDEpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSW1hZ2U6
Om51bGxJbWFnZSgpOwotCi0gICAgbV9zdmdJbWFnZS0+ZHJhd1NWR1RvSW1hZ2VCdWZmZXIobmV3
QnVmZmVyLmdldCgpLCBzaXplLCBzY2FsZSAqIHpvb20sIFNWR0ltYWdlOjpEb250Q2xlYXJJbWFn
ZUJ1ZmZlcik7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IG5ld0ltYWdlID0gbmV3QnVmZmVyLT5jb3B5
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7Ci0gICAgSW1hZ2UqIG5ld0ltYWdlUHRyID0gbmV3SW1h
Z2UuZ2V0KCk7Ci0gICAgQVNTRVJUKG5ld0ltYWdlUHRyKTsKKyAgICBpbWFnZS0+c2V0UGFnZVNj
YWxlKHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgKiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7
CiAKLSAgICBtX2ltYWdlRGF0YU1hcC5hZGQoY2xpZW50LCBJbWFnZURhdGEobmV3QnVmZmVyLmxl
YWtQdHIoKSwgbmV3SW1hZ2UucmVsZWFzZSgpLCBTaXplQW5kU2NhbGVzKHNpemUsIHpvb20sIHNj
YWxlKSkpOwotICAgIHJldHVybiBuZXdJbWFnZVB0cjsKKyAgICByZXR1cm4gaW1hZ2UuZ2V0KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAkocmV2aXNpb24gMTQyNTE4KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NyArMjQsNiBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KQEAgLTM1LDYgKzM0LDcgQEAgY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBDYWNoZWRJ
bWFnZUNsaWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgU1ZHSW1hZ2U7CitjbGFzcyBT
VkdJbWFnZUZvckNvbnRhaW5lcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIAogY2xhc3MgU1ZHSW1h
Z2VDYWNoZSB7CkBAIC00Nyw3NyArNDcsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFNWR0ltYWdlQ2FjaGUoaW1hZ2UpKTsKICAgICB9CiAKLSAgICBzdHJ1Y3QgU2l6
ZUFuZFNjYWxlcyB7Ci0gICAgICAgIFNpemVBbmRTY2FsZXMoKQotICAgICAgICAgICAgOiB6b29t
KDEpCi0gICAgICAgICAgICAsIHNjYWxlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIFNpemVBbmRTY2FsZXMoY29uc3QgRmxvYXRTaXplJiBuZXdTaXplLCBmbG9hdCBuZXdab29t
LCBmbG9hdCBuZXdTY2FsZSkKLSAgICAgICAgICAgIDogc2l6ZShuZXdTaXplKQotICAgICAgICAg
ICAgLCB6b29tKG5ld1pvb20pCi0gICAgICAgICAgICAsIHNjYWxlKG5ld1NjYWxlKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLQotICAgICAgICBTaXplQW5kU2NhbGVzKGNvbnN0IEZsb2F0U2l6ZSYg
bmV3U2l6ZSwgZmxvYXQgbmV3Wm9vbSkKLSAgICAgICAgICAgIDogc2l6ZShuZXdTaXplKQotICAg
ICAgICAgICAgLCB6b29tKG5ld1pvb20pCi0gICAgICAgICAgICAsIHNjYWxlKDApCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIEZsb2F0U2l6ZSBzaXplOyAvLyBUaGlzIGlzIHRoZSBj
b250YWluZXIgc2l6ZSB3aXRob3V0IHpvb20uCi0gICAgICAgIGZsb2F0IHpvb207Ci0gICAgICAg
IGZsb2F0IHNjYWxlOyAvLyBBIHNjYWxlIG9mIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGRlZmF1bHQg
c2NhbGUgc2hvdWxkIGJlIHVzZWQuCi0gICAgfTsKLQogICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJv
bUNhY2hlKGNvbnN0IENhY2hlZEltYWdlQ2xpZW50Kik7CiAKICAgICB2b2lkIHNldENvbnRhaW5l
clNpemVGb3JSZW5kZXJlcihjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIGNvbnN0IEludFNpemUm
LCBmbG9hdCk7CiAgICAgSW50U2l6ZSBpbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdDsKIAotICAgIEltYWdlKiBsb29rdXBPckNyZWF0ZUJpdG1hcEltYWdlRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCBpbWFnZUNvbnRlbnRDaGFu
Z2VkKCk7CisgICAgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7
CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VDYWNoZShTVkdJbWFnZSopOwotICAgIHZvaWQgcmVk
cmF3KCk7Ci0gICAgdm9pZCByZWRyYXdUaW1lckZpcmVkKFRpbWVyPFNWR0ltYWdlQ2FjaGU+Kik7
Ci0gICAgdm9pZCBjYWNoZUNsZWFyVGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFNW
R0ltYWdlQ2FjaGU+Kik7Ci0gICAgdm9pZCBjbGVhckJpdG1hcENhY2hlKCk7Ci0KLSAgICBzdHJ1
Y3QgSW1hZ2VEYXRhIHsKLSAgICAgICAgSW1hZ2VEYXRhKCkKLSAgICAgICAgICAgIDogaW1hZ2VO
ZWVkc1VwZGF0ZShmYWxzZSkKLSAgICAgICAgICAgICwgYnVmZmVyKDApCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIEltYWdlRGF0YShJbWFnZUJ1ZmZlciogbmV3QnVmZmVyLCBQYXNz
UmVmUHRyPEltYWdlPiBuZXdJbWFnZSwgY29uc3QgU2l6ZUFuZFNjYWxlcyYgbmV3U2l6ZUFuZFNj
YWxlcykKLSAgICAgICAgICAgIDogaW1hZ2VOZWVkc1VwZGF0ZShmYWxzZSkKLSAgICAgICAgICAg
ICwgc2l6ZUFuZFNjYWxlcyhuZXdTaXplQW5kU2NhbGVzKQotICAgICAgICAgICAgLCBidWZmZXIo
bmV3QnVmZmVyKQotICAgICAgICAgICAgLCBpbWFnZShuZXdJbWFnZSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0KLSAgICAgICAgYm9vbCBpbWFnZU5lZWRzVXBkYXRlOwotICAgICAgICBTaXplQW5k
U2NhbGVzIHNpemVBbmRTY2FsZXM7Ci0KLSAgICAgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlcjsKLSAg
ICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKLSAgICB9OwogCi0gICAgdHlwZWRlZiBIYXNoTWFw
PGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgU2l6ZUFuZFNjYWxlcz4gU2l6ZUFuZFNjYWxlc01h
cDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBJbWFnZURh
dGE+IEltYWdlRGF0YU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1hZ2VD
bGllbnQqLCBSZWZQdHI8U1ZHSW1hZ2VGb3JDb250YWluZXI+ID4gSW1hZ2VGb3JDb250YWluZXJN
YXA7CiAKICAgICBTVkdJbWFnZSogbV9zdmdJbWFnZTsKLSAgICBTaXplQW5kU2NhbGVzTWFwIG1f
c2l6ZUFuZFNjYWxlc01hcDsKLSAgICBJbWFnZURhdGFNYXAgbV9pbWFnZURhdGFNYXA7Ci0gICAg
VGltZXI8U1ZHSW1hZ2VDYWNoZT4gbV9yZWRyYXdUaW1lcjsKLSAgICBEZWZlcnJhYmxlT25lU2hv
dFRpbWVyPFNWR0ltYWdlQ2FjaGU+IG1fY2FjaGVDbGVhclRpbWVyOworICAgIEltYWdlRm9yQ29u
dGFpbmVyTWFwIG1faW1hZ2VGb3JDb250YWluZXJNYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR0ltYWdlRm9yQ29u
dGFpbmVyLmgiCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5o
IgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1
ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitJbnRTaXplIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICBG
bG9hdFNpemUgc2NhbGVkQ29udGFpbmVyU2l6ZShtX2NvbnRhaW5lclNpemUpOworICAgIHNjYWxl
ZENvbnRhaW5lclNpemUuc2NhbGUobV96b29tKTsKKyAgICByZXR1cm4gcm91bmRlZEludFNpemUo
c2NhbGVkQ29udGFpbmVyU2l6ZSk7Cit9CisKK3ZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCisg
ICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQoreworICAgIG1f
aW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20s
IGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwor
fQorCit2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QpCit7CisgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWlu
ZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3BhZ2VTY2FsZSwgbV96b29tLCBzcmNSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGRzdFJl
Y3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFNW
R0ltYWdlRm9yQ29udGFpbmVyX2gKKyNkZWZpbmUgU1ZHSW1hZ2VGb3JDb250YWluZXJfaAorCisj
aWYgRU5BQkxFKFNWRykKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkltYWdlLmgi
CisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
VkdJbWFnZUZvckNvbnRhaW5lciA6IHB1YmxpYyBJbWFnZSB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U1ZHSW1hZ2VGb3JDb250YWluZXI+IGNyZWF0ZShTVkdJbWFnZSogaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCB6
b29tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdJbWFnZUZvckNvbnRh
aW5lcihpbWFnZSwgY29udGFpbmVyU2l6ZSwgcGFnZVNjYWxlLCB6b29tKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IE9WRVJSSURFOworCisgICAg
dmlydHVhbCBib29sIHVzZXNDb250YWluZXJTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9pbWFnZS0+dXNlc0NvbnRhaW5lclNpemUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxh
dGl2ZVdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbWFnZS0+aGFzUmVsYXRpdmVX
aWR0aCgpOyB9CisgICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRo
LCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgT1ZF
UlJJREUKKyAgICB7CisgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0
UmVjdCYpIE9WRVJSSURFOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxl
c3MgY29uc2VydmF0aXZlLgorICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVP
cGFxdWUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgRmxvYXRTaXplIGNvbnRh
aW5lclNpemUoKSB7IHJldHVybiBtX2NvbnRhaW5lclNpemU7IH0KKyAgICBmbG9hdCBwYWdlU2Nh
bGUoKSB7IHJldHVybiBtX3BhZ2VTY2FsZTsgfQorICAgIGZsb2F0IHpvb20oKSB7IHJldHVybiBt
X3pvb207IH0KKworICAgIHZvaWQgc2V0U2l6ZShGbG9hdFNpemUmIHNpemUpIHsgbV9jb250YWlu
ZXJTaXplID0gc2l6ZTsgfQorICAgIHZvaWQgc2V0Wm9vbShmbG9hdCB6b29tKSB7IG1fem9vbSA9
IHpvb207IH0KKyAgICB2b2lkIHNldFBhZ2VTY2FsZShmbG9hdCBwYWdlU2NhbGUpIHsgbV9wYWdl
U2NhbGUgPSBwYWdlU2NhbGU7IH0KKworcHJpdmF0ZToKKyAgICBTVkdJbWFnZUZvckNvbnRhaW5l
cihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
cGFnZVNjYWxlLCBmbG9hdCB6b29tKQorICAgICAgICA6IG1faW1hZ2UoaW1hZ2UpLCBtX2NvbnRh
aW5lclNpemUoY29udGFpbmVyU2l6ZSksIG1fcGFnZVNjYWxlKHBhZ2VTY2FsZSksIG1fem9vbSh6
b29tKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAvKmRl
c3Ryb3lBbGwqLyA9IHRydWUpIHsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUo
KSBjb25zdCB7IHJldHVybiAwOyB9CisKKyAgICBTVkdJbWFnZSogbV9pbWFnZTsKKyAgICBGbG9h
dFNpemUgbV9jb250YWluZXJTaXplOworICAgIGZsb2F0IG1fcGFnZVNjYWxlOworICAgIGZsb2F0
IG1fem9vbTsKK307Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR0lt
YWdlRm9yQ29udGFpbmVyX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjU2OCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTEx
ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBTVkcg
Yml0bWFwIGNhY2hlIHdpdGggZGlyZWN0bHktcmVuZGVyZWQgU1ZHCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHR3byBleGlz
dGluZyBidWdzIChXSzk5NDgxIGFuZCBXSzEwNDE4OSkgdGhhdCB3ZXJlIGR1ZSB0byBjYWNoaW5n
IGJpdG1hcHMKKyAgICAgICAgYXQgYSBmaXhlZCBzaXplLiBBIHRlc3QgaGFzIGJlZW4gYWRkZWQg
Zm9yIGVhY2ggb2YgdGhlc2UgYnVncy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1zY2FsZWQt
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1z
Y2FsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS12aWV3
Ym94LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1h
Z2Utdmlld2JveC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMi0xMSAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGRlbGV0aW9uVUkgdGVzdHMgaW50byBwbGF0
Zm9ybS9tYWMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3Rh
dGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4
cGVjdGF0aW9ucwkocmV2aXNpb24gMTQyNTE4KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNDEzNiw2ICs0MTM2LDMz
IEBAIHdlYmtpdC5vcmcvYi8xMDMyOTkgWyBMaW51eCBNYWMgV2luIF0gZmEKIHdlYmtpdC5vcmcv
Yi8xMDMxNDggWyBMaW51eCBXaW4gXSBmYXN0L3RleHQvYXRzdWktc21hbGwtY2Fwcy1wdW5jdHVh
dGlvbi1zaXplLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIEZhaWx1cmUgUGFzcyBdCiB3ZWJraXQu
b3JnL2IvMTAzMzA4IFsgU25vd0xlb3BhcmQgTGlvbiBdIGNzczMvZmlsdGVycy9jdXN0b20vY3Vz
dG9tLWZpbHRlci10cmFuc2Zvcm1zLWFuaW1hdGlvbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAor
IyBSZWJhc2VsaW5lIGFmdGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDYxNTkKK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJhY2tncm91bmQtaW1hZ2UvYW5p
bWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3
ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1iYWNrZ3Jv
dW5kLTEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5
IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLTIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3JvdW5k
LWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBd
Cit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1iYWNr
Z3JvdW5kLTQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2
MTU5IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLTUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3Jv
dW5kLWltYWdlL3N2Zy1hcy1iYWNrZ3JvdW5kLTYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFz
cyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2Zy1hcy1i
YWNrZ3JvdW5kLXdpdGgtcmVsYXRpdmUtc2l6ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNz
IF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWJhY2tncm91bmQtaW1hZ2Uvc3ZnLWJhY2tn
cm91bmQtcGFydGlhbC1yZWRyYXcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJr
aXQub3JnL2IvMTA2MTU5IHN2Zy9hcy1ib3JkZXItaW1hZ2Uvc3ZnLWFzLWJvcmRlci1pbWFnZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2Fz
LWltYWdlL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS1uby1maXhlZC1pbnRyaW5zaWMtc2l6ZS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWlt
YWdlL2ltZy1wcmVzZXJ2ZUFzcGVjdFJhdGlvLXN1cHBvcnQtMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1j
aGFuZ2UtY29udGVudC1zaXplLnhodG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtp
dC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWltYWdlL3N2Zy1ub24taW50ZWdlci1zY2FsZWQtaW1hZ2Uu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy9j
YXJ0by5uZXQvY29tYm9ib3guc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5v
cmcvYi8xMDYxNTkgc3ZnL3dpY2QvdGVzdC1zY2FsYWJsZS1iYWNrZ3JvdW5kLWltYWdlMS54aHRt
bCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IHN2Zy93aWNk
L3Rlc3Qtc2NhbGFibGUtYmFja2dyb3VuZC1pbWFnZTIueGh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IFBhc3MgXQord2Via2l0Lm9yZy9iLzEwNjE1OSBzdmcvem9vbS9wYWdlL3pvb20tYmFja2dyb3Vu
ZC1pbWFnZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2
MTU5IHN2Zy96b29tL3BhZ2Uvem9vbS1zdmctYXMtYmFja2dyb3VuZC13aXRoLXJlbGF0aXZlLXNp
emUtYW5kLXZpZXdCb3guaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3Jn
L2IvMTA2MTU5IHN2Zy96b29tL3BhZ2Uvem9vbS1zdmctYXMtYmFja2dyb3VuZC13aXRoLXJlbGF0
aXZlLXNpemUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCit3ZWJraXQub3JnL2IvMTA2
MTU5IGNzczIuMS8yMDExMDMyMy9iYWNrZ3JvdW5kLWludHJpbnNpYy0wMDUuaHRtIFsgSW1hZ2VP
bmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMDYxNTkgc3ZnL2FzLWltYWdlL3NhbWUt
aW1hZ2UtdHdvLWluc3RhbmNlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtp
dC5vcmcvYi8xMDYxNTkgY3NzMi4xLzIwMTEwMzIzL2JhY2tncm91bmQtaW50cmluc2ljLTAwNC5o
dG0gWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9iLzEwNjE1OSBmYXN0L2Jh
Y2tncm91bmRzL3NpemUvY29udGFpbi1hbmQtY292ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
UGFzcyBdCit3ZWJraXQub3JnL2IvMTA2MTU5IGZhc3Qvd3JpdGluZy1tb2RlL2Jsb2NrLWxldmVs
LWltYWdlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KKwogd2Via2l0Lm9yZy9iLzEw
MzM2MyBbIE1hYyBdIHRvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbCBb
IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwMzQ0NiBbIE1hYyBdIGh0dHAvdGVzdHMvY2FudmFz
L2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvMTAzNDQ3IFsgTW91bnRhaW5MaW9uIF0gZmFzdC9jYW52YXMvZm9udC11cGRhdGUu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdl
L3N2Zy1pbWFnZS1zY2FsZWQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLXNjYWxlZC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1zY2FsZWQtZXhwZWN0ZWQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+CitUZXN0IGZvciBXSzk5NDgxOiBUaGlzIHRlc3QgcGFzc2VzIGlmIHRoZXJl
IGlzIGEgZ3JlZW4gc3F1YXJlIHdpdGggc2hhcnAgKG5vdCBibHVycnkpIGVkZ2VzLjxici8+Cis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwMCIgaGVpZ2h0
PSI0MDAiPgorICA8ZyB0cmFuc2Zvcm09InNjYWxlKDEwKSI+CisgICAgPHJlY3QgeD0iMSIgeT0i
MSIgd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsbD0iZ3JlZW4iIC8+CisgIDwvZz4KKzwvc3ZnPgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWlt
YWdlLXNjYWxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9z
dmctaW1hZ2Utc2NhbGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYXMt
aW1hZ2Uvc3ZnLWltYWdlLXNjYWxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KK1Rlc3QgZm9yIFdLOTk0ODE6IFRo
aXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUgaXMgYSBncmVlbiBzcXVhcmUgd2l0aCBzaGFycCAobm90
IGJsdXJyeSkgZWRnZXMuPGJyLz4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+CisgIDxnIHRyYW5zZm9ybT0ic2NhbGUoMTAp
Ij4KKyAgICA8aW1hZ2UgeD0iMCIgeT0iMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiB4bGluazpo
cmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgICA8c3ZnIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2Zyc+CisgICAgICAgIDxyZWN0IHg9JzEnIHk9JzEnIHdpZHRoPSc4JyBoZWln
aHQ9JzgnIGZpbGw9J2dyZWVuJyAvPgorICAgICAgPC9zdmc+CisgICAgIiAvPgorICA8L2c+Cis8
L3N2Zz4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdl
L3N2Zy1pbWFnZS12aWV3Ym94LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS12aWV3Ym94LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLXZpZXdib3gtZXhwZWN0
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+CitUZXN0IGZvciBXSzEwNDE4OTogVGhpcyB0ZXN0IHBhc3NlcyBpZiB0
aGVyZSBpcyBhIGdyZWVuIHNxdWFyZSB3aXRoIHNoYXJwIChub3QgYmx1cnJ5KSBlZGdlcy48YnIv
PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHdpZHRoPSI0
MDAiIGhlaWdodD0iNDAwIj4KKyAgPHJlY3QgeD0iMTAlIiB5PSIxMCUiIHdpZHRoPSI4MCUiIGhl
aWdodD0iODAlIiBmaWxsPSJncmVlbiIgLz4KKzwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLXZpZXdib3guaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLXZpZXdib3guaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utdmll
d2JveC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KK1Rlc3QgZm9yIFdLMTA0MTg5OiBUaGlzIHRlc3QgcGFzc2VzIGlm
IHRoZXJlIGlzIGEgZ3JlZW4gc3F1YXJlIHdpdGggc2hhcnAgKG5vdCBibHVycnkpIGVkZ2VzLjxi
ci8+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCAxMCAxMCIgd2lkdGg9
IjQwMCIgaGVpZ2h0PSI0MDAiPgorICA8aW1hZ2UgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhl
aWdodD0iMTAwJSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9zdmcreG1sLAorICAgIDxzdmcgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz4KKyAgICAgIDxyZWN0IHg9JzEwJScgeT0n
MTAlJyB3aWR0aD0nODAlJyBoZWlnaHQ9JzgwJScgZmlsbD0nZ3JlZW4nIC8+CisgICAgPC9zdmc+
CisgICIgLz4KKzwvc3ZnPgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>