<?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>104176</bug_id>
          
          <creation_ts>2012-12-05 15:15:45 -0800</creation_ts>
          <short_desc>Extend platform layer so it can pass blend modes to the compositing calls</short_desc>
          <delta_ts>2012-12-07 20:04:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>104415</dependson>
          <blocked>100069</blocked>
    
    <blocked>104367</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rik Cabanier">cabanier</reporter>
          <assigned_to name="Rik Cabanier">cabanier</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>d-r</cc>
    
    <cc>fmalita</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>pdr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>schenney</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>784175</commentid>
    <comment_count>0</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-05 15:15:45 -0800</bug_when>
    <thetext>Canvas has a proposal to allow blending in the compositing operator.
The plaform code needs to be enhanced to support this. This bug will just extend the platform interface to allow this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784193</commentid>
    <comment_count>1</comment_count>
      <attachid>177847</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-05 15:34:11 -0800</bug_when>
    <thetext>Created attachment 177847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784217</commentid>
    <comment_count>2</comment_count>
      <attachid>177847</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-05 15:53:35 -0800</bug_when>
    <thetext>Comment on attachment 177847
Patch

Attachment 177847 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15170261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784224</commentid>
    <comment_count>3</comment_count>
      <attachid>177854</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-05 16:02:02 -0800</bug_when>
    <thetext>Created attachment 177854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784265</commentid>
    <comment_count>4</comment_count>
      <attachid>177866</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-05 16:44:16 -0800</bug_when>
    <thetext>Created attachment 177866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784274</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 16:48:55 -0800</bug_when>
    <thetext>Attachment 177866 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/tests/DragImageTest.cpp:87:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 35 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>784402</commentid>
    <comment_count>6</comment_count>
      <attachid>177866</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 18:07:16 -0800</bug_when>
    <thetext>Comment on attachment 177866
Patch

Attachment 177866 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15173128</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784445</commentid>
    <comment_count>7</comment_count>
      <attachid>177866</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-05 18:34:25 -0800</bug_when>
    <thetext>Comment on attachment 177866
Patch

Attachment 177866 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15153648</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784480</commentid>
    <comment_count>8</comment_count>
      <attachid>177908</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-05 19:03:30 -0800</bug_when>
    <thetext>Created attachment 177908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784485</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 19:07:49 -0800</bug_when>
    <thetext>Attachment 177908 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/html/HTMLCanvasElement.cpp&apos;...&quot; exit_code: 1
Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/DragImageTest.cpp:87:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 35 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>784518</commentid>
    <comment_count>10</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-05 20:15:34 -0800</bug_when>
    <thetext>This patch updates interfaces so relevant calls also pass blend modes.
In addition, the blend mode is stored in the graphics context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784531</commentid>
    <comment_count>11</comment_count>
      <attachid>177908</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-12-05 20:41:27 -0800</bug_when>
    <thetext>Comment on attachment 177908
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:409
&gt;          void setCompositeOperation(CompositeOperator);
&gt; +        void setCompositeOperation(CompositeOperator, BlendMode);

Does it make sense to combine both and use the default value BlendModeNormal like you did for setPlatformCompositeOperation ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784660</commentid>
    <comment_count>12</comment_count>
      <attachid>177949</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-05 23:16:19 -0800</bug_when>
    <thetext>Created attachment 177949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784662</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 23:18:43 -0800</bug_when>
    <thetext>Attachment 177949 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/DragImageTest.cpp:87:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 36 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>784676</commentid>
    <comment_count>14</comment_count>
      <attachid>177908</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-05 23:42:03 -0800</bug_when>
    <thetext>Comment on attachment 177908
Patch

Attachment 177908 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15154752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784757</commentid>
    <comment_count>15</comment_count>
      <attachid>177949</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-06 01:39:54 -0800</bug_when>
    <thetext>Comment on attachment 177949
Patch

Attachment 177949 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15181029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784937</commentid>
    <comment_count>16</comment_count>
      <attachid>177949</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-12-06 07:33:13 -0800</bug_when>
    <thetext>Comment on attachment 177949
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:475
&gt; +{    if (paintingDisabled() || !image)

Missing a newline in here.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:548
&gt; +    drawImageBuffer(image, styleColorSpace, p, IntRect(0, 0, -1, -1), op, blendMode);

I am not a fan of all of the methods in GraphicsContext named drawImageBuffer that chain together to finally end up at the one call with the FloatRect, FloatRect arguments. Can short-circuit all of these calls and go direct to the correct method? I&apos;ll probably take it on as a separate patch.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:553
&gt; +    drawImageBuffer(image, styleColorSpace, r, IntRect(0, 0, -1, -1), op, blendMode, useLowQualityScale);

Ditto.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:558
&gt; +    drawImageBuffer(image, styleColorSpace, IntRect(dest, srcRect.size()), srcRect, op, blendMode);

Ditto.

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:409
&gt; +        void setCompositeOperation(CompositeOperator, BlendMode);

Why not add BlendMode as a default parameter to the existing method? It would be functionally the same and avoid further bloat to this class.

&gt;&gt; Source/WebKit/chromium/tests/DragImageTest.cpp:87
&gt;&gt; +                      WebCore::CompositeOperator, WebCore::BlendMode)
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Ignore this.

&gt;&gt; Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99
&gt;&gt; +                      WebCore::CompositeOperator, WebCore::BlendMode)
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Ignore this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785323</commentid>
    <comment_count>17</comment_count>
      <attachid>178089</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-06 15:11:54 -0800</bug_when>
    <thetext>Created attachment 178089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785324</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-06 15:14:44 -0800</bug_when>
    <thetext>Attachment 178089 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/DragImageTest.cpp:87:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 37 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>785363</commentid>
    <comment_count>19</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-06 15:54:03 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 177908 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177908&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.h:409
&gt; &gt;          void setCompositeOperation(CompositeOperator);
&gt; &gt; +        void setCompositeOperation(CompositeOperator, BlendMode);
&gt; 
&gt; Does it make sense to combine both and use the default value BlendModeNormal like you did for setPlatformCompositeOperation ?

I did not combine them because there are dependencies between the different WebKit libraries and I wanted to minimize the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785372</commentid>
    <comment_count>20</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-06 16:01:29 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 177949 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177949&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:475
&gt; &gt; +{    if (paintingDisabled() || !image)
&gt; 
&gt; Missing a newline in here.

Fixed

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:548
&gt; &gt; +    drawImageBuffer(image, styleColorSpace, p, IntRect(0, 0, -1, -1), op, blendMode);
&gt; 
&gt; I am not a fan of all of the methods in GraphicsContext named drawImageBuffer that chain together to finally end up at the one call with the FloatRect, FloatRect arguments. Can short-circuit all of these calls and go direct to the correct method? I&apos;ll probably take it on as a separate patch.

I agree. It&apos;s messy.
when you say &quot;I&apos;ll take it on&quot;, do you mean you or me?

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:553
&gt; &gt; +    drawImageBuffer(image, styleColorSpace, r, IntRect(0, 0, -1, -1), op, blendMode, useLowQualityScale);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:558
&gt; &gt; +    drawImageBuffer(image, styleColorSpace, IntRect(dest, srcRect.size()), srcRect, op, blendMode);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.h:409
&gt; &gt; +        void setCompositeOperation(CompositeOperator, BlendMode);
&gt; 
&gt; Why not add BlendMode as a default parameter to the existing method? It would be functionally the same and avoid further bloat to this class.
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/tests/DragImageTest.cpp:87
&gt; &gt;&gt; +                      WebCore::CompositeOperator, WebCore::BlendMode)
&gt; &gt; 
&gt; &gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; 
&gt; Ignore this.
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99
&gt; &gt;&gt; +                      WebCore::CompositeOperator, WebCore::BlendMode)
&gt; &gt; 
&gt; &gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; 
&gt; Ignore this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785373</commentid>
    <comment_count>21</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-06 16:03:08 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 177949 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177949&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:475
&gt; &gt; +{    if (paintingDisabled() || !image)
&gt; 
&gt; Missing a newline in here.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:548
&gt; &gt; +    drawImageBuffer(image, styleColorSpace, p, IntRect(0, 0, -1, -1), op, blendMode);
&gt; 
&gt; I am not a fan of all of the methods in GraphicsContext named drawImageBuffer that chain together to finally end up at the one call with the FloatRect, FloatRect arguments. Can short-circuit all of these calls and go direct to the correct method? I&apos;ll probably take it on as a separate patch.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:553
&gt; &gt; +    drawImageBuffer(image, styleColorSpace, r, IntRect(0, 0, -1, -1), op, blendMode, useLowQualityScale);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:558
&gt; &gt; +    drawImageBuffer(image, styleColorSpace, IntRect(dest, srcRect.size()), srcRect, op, blendMode);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.h:409
&gt; &gt; +        void setCompositeOperation(CompositeOperator, BlendMode);
&gt; 
&gt; Why not add BlendMode as a default parameter to the existing method? It would be functionally the same and avoid further bloat to this class.

Krit had the same remark.
If I change this, there will be a link issues between the libraries.
I can fix this in another patch. 

&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/tests/DragImageTest.cpp:87
&gt; &gt;&gt; +                      WebCore::CompositeOperator, WebCore::BlendMode)
&gt; &gt; 
&gt; &gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; 
&gt; Ignore this.
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99
&gt; &gt;&gt; +                      WebCore::CompositeOperator, WebCore::BlendMode)
&gt; &gt; 
&gt; &gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; 
&gt; Ignore this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785374</commentid>
    <comment_count>22</comment_count>
      <attachid>178099</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-06 16:03:46 -0800</bug_when>
    <thetext>Created attachment 178099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785377</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-06 16:09:27 -0800</bug_when>
    <thetext>Attachment 178099 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/DragImageTest.cpp:87:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 37 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>785845</commentid>
    <comment_count>24</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-12-07 06:08:42 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 177949 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177949&amp;action=review

&gt; &gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:548
&gt; &gt; &gt; +    drawImageBuffer(image, styleColorSpace, p, IntRect(0, 0, -1, -1), op, blendMode);
&gt; &gt; 
&gt; &gt; I am not a fan of all of the methods in GraphicsContext named drawImageBuffer that chain together to finally end up at the one call with the FloatRect, FloatRect arguments. Can short-circuit all of these calls and go direct to the correct method? I&apos;ll probably take it on as a separate patch.
&gt; 
&gt; I agree. It&apos;s messy.
&gt; when you say &quot;I&apos;ll take it on&quot;, do you mean you or me?

I mean myself. https://bugs.webkit.org/show_bug.cgi?id=104367</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785919</commentid>
    <comment_count>25</comment_count>
      <attachid>178099</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-12-07 09:15:08 -0800</bug_when>
    <thetext>Comment on attachment 178099
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:710
&gt;  void GraphicsContext::setCompositeOperation(CompositeOperator compositeOperation)
&gt;  {
&gt; +    setCompositeOperation(compositeOperation, BlendModeNormal);
&gt; +}

I don&apos;t get your point here actually. Which libraries do you mean? All files that include this functions can still use setCompositeOperation(compositeOperation)? Can you give an example please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785994</commentid>
    <comment_count>26</comment_count>
      <attachid>178242</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-07 11:11:00 -0800</bug_when>
    <thetext>Created attachment 178242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785998</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 11:12:54 -0800</bug_when>
    <thetext>Attachment 178242 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/DragImageTest.cpp:87:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 37 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>785999</commentid>
    <comment_count>28</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-07 11:13:59 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 178099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178099&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:710
&gt; &gt;  void GraphicsContext::setCompositeOperation(CompositeOperator compositeOperation)
&gt; &gt;  {
&gt; &gt; +    setCompositeOperation(compositeOperation, BlendModeNormal);
&gt; &gt; +}
&gt; 
&gt; I don&apos;t get your point here actually. Which libraries do you mean? All files that include this functions can still use setCompositeOperation(compositeOperation)? Can you give an example please?

I changed the .def.in file that defines the exported functions. This fixed the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786109</commentid>
    <comment_count>29</comment_count>
      <attachid>178242</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-12-07 13:48:24 -0800</bug_when>
    <thetext>Comment on attachment 178242
Patch

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

Can you just upload a new patch with a better change log?

&gt; Source/WebCore/ChangeLog:8
&gt; +        Interface changes for the new blend modes

Can you provide more details here? The changelog helps other people to understand what exaclty you did, w/o looking at the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786116</commentid>
    <comment_count>30</comment_count>
      <attachid>178266</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-07 13:55:10 -0800</bug_when>
    <thetext>Created attachment 178266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786201</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 14:58:09 -0800</bug_when>
    <thetext>Attachment 178266 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/DragImageTest.cpp:87:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 37 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>786233</commentid>
    <comment_count>32</comment_count>
      <attachid>178266</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 15:34:09 -0800</bug_when>
    <thetext>Comment on attachment 178266
Patch

Clearing flags on attachment: 178266

Committed r136993: &lt;http://trac.webkit.org/changeset/136993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786234</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 15:34:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786282</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 16:31:58 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 104415</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786301</commentid>
    <comment_count>35</comment_count>
      <attachid>178304</attachid>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-12-07 16:49:00 -0800</bug_when>
    <thetext>Created attachment 178304
Added missing exports file for mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786328</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 17:51:40 -0800</bug_when>
    <thetext>Attachment 178304 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/chromium/tests/ImageLayerChromiumTest.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/tests/DragImageTest.cpp:87:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 38 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>786383</commentid>
    <comment_count>37</comment_count>
      <attachid>178304</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-12-07 19:41:46 -0800</bug_when>
    <thetext>Comment on attachment 178304
Added missing exports file for mac

Lets try it agin. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786392</commentid>
    <comment_count>38</comment_count>
      <attachid>178304</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 20:04:03 -0800</bug_when>
    <thetext>Comment on attachment 178304
Added missing exports file for mac

Clearing flags on attachment: 178304

Committed r137011: &lt;http://trac.webkit.org/changeset/137011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786393</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 20:04:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>177847</attachid>
            <date>2012-12-05 15:34:11 -0800</date>
            <delta_ts>2012-12-05 16:23:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121205153136.patch</filename>
            <type>text/plain</type>
            <size>45114</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjc3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEyLTEyLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBpbnRl
cmZhY2UgY2hhbmdlcyBmb3IgdGhlIG5ldyBibGVuZCBtb2RlcworCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVk
SW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRvckdlbmVyYXRl
ZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoR3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
ZHJhd1RpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAg
ICAoSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6Cisg
ICAgICAgIChJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Qml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQREZEb2N1bWVu
dEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29t
cG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1
ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGls
bEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6ZHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAgICAgIChTdGls
bEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2lu
Z2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVP
cGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEyLTEyLTA1ICBEYW4gQmVybnN0
ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBkZWNvcmF0aW9ucyBhcmUgcm90
YXRlZCB3aGVuIHRleHQtY29tYmluZSB0YWtlcyBlZmZlY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0
LDcgKzM1NCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ28KICAg
ICAgICAgICAgIGlmIChtX3ByZXNlbnRlZEltYWdlKQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBw
aXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBEb05vdFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNl
T3ZlciwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBl
ZEludFJlY3QociksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDcsOSArMjA3LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKICNlbmRpZgot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CiAjaWYgVVNFKENHKSB8fCBQTEFURk9STShDSFJPTUlVTSkgfHwgVVNFKENBSVJPKQot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbkVudW0pIE9WRVJSSURFOwogI2VuZGlmCiAKICNpZiAoT1MoV0lOQ0UpICYmICFQ
TEFURk9STShRVCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZgogICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Ap
Cit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKICAg
ICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3ApOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOwogCiAgICAgQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1hZ2UsIGZsb2F0IHBlcmNl
bnRhZ2UsIEludFNpemUgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgSW50U2l6ZSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCShy
ZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkg
PSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JH
ZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2
b2lkIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkK
IHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmRlc3RDb250ZXh0
KTsKICAgICBkZXN0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRl
ZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAx
MzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDExIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
IHx8ICFpbWFnZSkKKyAgICBkcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRS
ZWN0KGRlc3QpLCBzcmMsIG9wLCBCbGVuZE1vZGVOb3JtYWwsIHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQor
eyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZmxvYXQgdHN3ID0gc3JjLndpZHRoKCk7CkBAIC00OTgsNyArNTAyLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaQogI2VuZGlmCiAgICAgfQogCi0gICAg
aW1hZ2UtPmRyYXcodGhpcywgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3
LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBz
dHlsZUNvbG9yU3BhY2UsIG9wLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAg
aW1hZ2UtPmRyYXcodGhpcywgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3
LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBz
dHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKTsKIAogICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpCiAgICAgICAgIHNldEltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkocHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CkBAIC01Mzks
MjcgKzU0MywyNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hCiAg
ICAgICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdCwgc3JjUmVjdCwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBwLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGlt
YWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIHAsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBwLCBJbnRSZWN0KDAsIDAsIC0xLCAtMSksIG9w
KTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgcCwgSW50UmVj
dCgwLCAwLCAtMSwgLTEpLCBvcCwgYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiByLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IElu
dFJlY3QmIHIsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxl
Q29sb3JTcGFjZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCwgdXNlTG93UXVhbGl0eVNj
YWxlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgciwgSW50
UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBp
bWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0LCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAg
IGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBJbnRSZWN0KGRlc3QsIHNy
Y1JlY3Quc2l6ZSgpKSwgc3JjUmVjdCwgb3ApOworICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwg
c3R5bGVDb2xvclNwYWNlLCBJbnRSZWN0KGRlc3QsIHNyY1JlY3Quc2l6ZSgpKSwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
SW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUp
CiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVj
dChkZXN0KSwgc3JjUmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgZHJhd0ltYWdl
QnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFp
bWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTg3LDEwICs1OTEsMTAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbQogICAgICAgICAvLyBGSVhNRSAoNDkwMDIpOiBT
aG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKICNlbmRpZgotICAgICAgICBpbWFnZS0+ZHJhdyh0
aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6
ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gp
KSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0
eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0
aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwg
YmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIH0gZWxzZQot
ICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0
LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigp
LCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAg
IGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRp
b24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0
U2l6ZSh0c3csIHRzaCkpLCBvcCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQog
CiAjaWYgIVBMQVRGT1JNKFFUKQpAQCAtNzAxLDggKzcwNSwxNCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKQogewor
ICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZU5v
cm1hbCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
KQorewogICAgIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb247
Ci0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKTsK
KyAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CiB9CiAKIENvbXBv
c2l0ZU9wZXJhdG9yIEdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgZmlsbENvbG9yU3BhY2UoQ29s
b3JTcGFjZURldmljZVJHQikKICAgICAgICAgICAgICwgc2hhZG93Q29sb3JTcGFjZShDb2xvclNw
YWNlRGV2aWNlUkdCKQogICAgICAgICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihDb21wb3NpdGVT
b3VyY2VPdmVyKQorICAgICAgICAgICAgLCBibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQogICAg
ICAgICAgICAgLCBzaG91bGRBbnRpYWxpYXModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU21v
b3RoRm9udHModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KHRydWUpCkBAIC0yMDMsNiArMjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBD
b2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3I7CisgICAgICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CiAKICAgICAg
ICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwogICAgICAgICBib29sIHNob3VsZFNtb290aEZv
bnRzIDogMTsKQEAgLTI3MSw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBh
dGgmKTsKIAotICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29u
c3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVs
dEltYWdlT3JpZW50YXRpb24pOworICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bik7CiAKICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcp
LiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dz
Rm9udFNtb290aGluZyhib29sKTsKQEAgLTMyMiwxOCArMzI0LDE5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dR
dWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAogICAgICAgICAg
ICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24s
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFn
ZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICAKICAg
ICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9
IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxl
LCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBJbnRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0g
ICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9
IGZhbHNlKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEludFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0Jiwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUg
PSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICAgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwpA
QCAtNDAzLDYgKzQwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRB
bHBoYShmbG9hdCk7CiAKICAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlT3BlcmF0b3IpOworICAgICAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3BlcmF0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IFBhdGgmKTsK
QEAgLTU1Niw3ICs1NjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3Im
LCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKLSAg
ICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAKICAgICAgICAgdm9pZCBi
ZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7CiAgICAgICAgIHZv
aWQgZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MSw5ICs5MSw5IEBAIHZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0MKICAg
ICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAKLXZv
aWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkKK3Zv
aWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uRW51bSkKIHsKLSAgICBkcmF3KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5
bGVDb2xvclNwYWNlLCBvcCk7CisgICAgZHJhdyhjdHgsIGRzdFJlY3QsIHNyY1JlY3QsIHN0eWxl
Q29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChH
cmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCkBAIC0xMjksNyAr
MTI5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogYwogICAgICAg
ICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8g
c2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVj
dC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhl
aWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAg
ICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNl
LCBvcCwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTIsOCArMTkyLDggQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgUmVzcGVj
dEltYWdlT3JpZW50YXRpb25FbnVtKTsKICAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IpOwogICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZS
dWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJ
KHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsK
KyAgICAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxz
ZSk7CiAgICAgICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgICAgIGlu
bGluZSB2b2lkIGdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDEyICs3MSwxMyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VDYWly
CiAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsKLSAgICBkcmF3KGNvbnRleHQsIGRzdCwgc3JjLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBEb05v
dFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBkcmF3KGNvbnRleHQsIGRzdCwgc3JjLCBz
dHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRp
b24pOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwKKyAgICBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBpZiAoIWRzdC53aWR0aCgp
IHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lvbiAxMzY1OTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTEgKzk3LDExIEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiAKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhH
cmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AgLCBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSkKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgQmFja2luZ1N0b3JlQ29w
eSBjb3B5TW9kZSA9IGRlc3RpbmF0aW9uQ29udGV4dCA9PSBjb250ZXh0KCkgPyBDb3B5QmFja2lu
Z1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBEb05v
dFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGRlc3Rp
bmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAJ
KHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0JpdG1hcEltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTIgKzE1NywxMiBAQCBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHCiAgICAgcmV0dXJuIFJldGFp
blB0cjxDRkFycmF5UmVmPihBZG9wdENGLCBhcnJheSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y3R4LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNv
bG9yU3BhY2UsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBkcmF3KGN0
eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBEb05v
dFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBzdGFydEFuaW1hdGlvbigp
OwogCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIAogICAgIGlmIChzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbikKICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKLSAgICBjdHh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UsIHNlbGZTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3Np
dGVPcCwgb3JpZW50YXRpb24pOworICAgIGN0eHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc2Vs
ZlNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBi
bGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGEKICAgICBtX2RhdGEt
Pm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFn
ZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0
ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0
cik7CiAKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKE5hCiAgICAgaWYgKCFzaG91bGRVc2VTdWJpbWFnZSAmJiBjdXJySGVpZ2h0IDwgaW1h
Z2VTaXplLmhlaWdodCgpKQogICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChhZGp1
c3RlZERlc3RSZWN0LmhlaWdodCgpICogY3VyckhlaWdodCAvIGltYWdlU2l6ZS5oZWlnaHQoKSk7
CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CisgICAgc2V0UGxhdGZv
cm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CiAKICAgICAvLyBJbWFnZU9yaWVu
dGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJl
Y3QueSgpKTsKQEAgLTE2OTgsNyArMTY5OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybVNob3VsZFMKICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhwbGF0Zm9y
bUNvbnRleHQoKSwgZW5hYmxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG1vZGUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0
b3IgbW9kZSwgQmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpjb3B5
TmF0aXZlSW0KICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBJbWFnZUJ1
ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2Fs
ZSk7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKGRlc3RDb250ZXh0ID09IG1fY29udGV4
dCkgPyBDb2xvclNwYWNlRGV2aWNlUkdCIDogc3R5bGVDb2xvclNwYWNlOwpAQCAtMjcyLDcgKzI3
Miw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiAKIAogICAgIEZs
b2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5z
Y2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSgpLCBjb2xvclNw
YWNlLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCk7CisgICAgZGVzdENvbnRleHQtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKCksIGNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYz
LDcgKzE2Myw3IEBAIGludCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQoKSBjb25zdAogICAg
IHJldHVybiBtX2RvY3VtZW50ID8gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMobV9kb2N1
bWVudCkgOiAwOwogfQogCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgbV9jdXJy
ZW50UGFnZSA9PSAtMSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNp
b24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKIAogICAgICAg
ICBQREZEb2N1bWVudEltYWdlKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgICAgICAKICAgICAgICAg
dm9pZCBzZXRDdXJyZW50UGFnZShpbnQpOwogICAgICAgICBpbnQgcGFnZUNvdW50KCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBo
YShmbG9hdCBvcGEKICAgICBwLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0
b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAkocmV2aXNpb24gMTM2
NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBQYXNzUmVmUHRyPEltYWdl
PiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlCiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0
eVNjYWxlKQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlKQogewogICAgIGlmIChkZXN0Q29udGV4dCA9PSBjb250ZXh0KCkpIHsKICAg
ICAgICAgLy8gV2UncmUgZHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLiAgSW4gb3JkZXIgZm9y
IHRoaXMgdG8gd29yaywgd2UgbmVlZCB0byBjb3B5IHRoZSBzb3VyY2UgYnVmZmVyIGZpcnN0LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5j
cHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YQogCiAvLyBEcmF3aW5nIFJvdXRpbmVz
CiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAg
Y29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIFFSZWN0RiBub3JtYWxpemVkRHN0ID0g
ZHN0Lm5vcm1hbGl6ZWQoKTsKICAgICBRUmVjdEYgbm9ybWFsaXplZFNyYyA9IHNyYy5ub3JtYWxp
emVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1N0aWxsSW1hZ2VRdC5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDcgKzY4LDcgQEAgTmF0aXZlSW1hZ2VQdHIgU3RpbGxJbWFnZTo6bmF0aXZlSW1hZ2VGbwog
fQogCiB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIHNy
YywgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAg
ICAgaWYgKG1fcGl4bWFwLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHJl
dmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0
aWxsSW1hZ2VRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RpbGxJbWFnZShjb25zdCBR
UGl4bWFwJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0Jp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCShyZXZp
c2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0Jp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiBwcml2YXRlOgogICAg
IE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNr
aWEuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzQs
NyArODc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFscAogICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5zZXRBbHBoYShhbHBoYSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHJldmlzaW9u
IDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VC
dWZmZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBi
b29sIGRyYXdOZWVkc0NvcHkoR3JhcGhpY3NDb250ZXgKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1
YWxpdHlTY2FsZSkKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlLCBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1h
Z2VTaW5nbGVGcmFtZVNraWE6OmNyZWF0ZSgqbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LmJpdG1h
cCgpLCBkcmF3TmVlZHNDb3B5KG1fY29udGV4dC5nZXQoKSwgY29udGV4dCkpOwogICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tp
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9JbWFnZVNraWEuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4Myw3
ICs1ODMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgIH0K
IH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQordm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAgICAgZHJhdyhjdHh0LCBk
c3RSZWN0LCBzcmNSZWN0LCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgRG9Ob3RSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbik7CiB9CkBAIC02NDMsMTAgKzY0MywxMCBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGdvIGludG8g
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCiAKIHZvaWQgQml0bWFwSW1hZ2VTaW5nbGVG
cmFtZVNraWE6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCisgICAgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsKICAgICBG
bG9hdFJlY3Qgbm9ybURzdFJlY3QgPSBub3JtYWxpemVSZWN0KGRzdFJlY3QpOwogICAgIEZsb2F0
UmVjdCBub3JtU3JjUmVjdCA9IG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFn
CiAgICAgICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGVhclJlY3QoZW5jbG9zaW5nSW50UmVjdChz
Y2FsZWRSZWN0KSk7CiAKICAgICAvLyBEcmF3IFNWRyBvbiB0b3Agb2YgSW1hZ2VCdWZmZXIuCi0g
ICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSwg
cmVjdCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgZHJh
dyhidWZmZXItPmNvbnRleHQoKSwgZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSwgcmVjdCwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFs
KTsKIAogICAgIC8vIFJlc2V0IGNvbnRhaW5lciBzaXplICYgem9vbSB0byBpbml0aWFsIHN0YXRl
LiBPdGhlcndoaXNlIHRoZSBzaXplKCkgb2YgdGhpcwogICAgIC8vIGltYWdlIHdvdWxkIHJldHVy
biB3aGF0ZXZlciBsYXN0IHNpemUgd2FzIHNldCBieSBkcmF3U1ZHVG9JbWFnZUJ1ZmZlcigpLgpA
QCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVyKElt
YWcKICAgICBmcmFtZS0+dmlldygpLT5lbmREaXNhYmxlUmVwYWludHMoKTsKIH0KIAotdm9pZCBT
VkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckMKICAgICAgICAgT3du
UHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSk7
CiAgICAgICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCks
IHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAg
ICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBt
X2ZyYW1lQ2FjaGUgPSBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fZnJhbWVDYWNoZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAxMzY1
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgZnJhbWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQogCiAgICAgU1ZHSW1hZ2UoSW1h
Z2VPYnNlcnZlciopOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>177854</attachid>
            <date>2012-12-05 16:02:02 -0800</date>
            <delta_ts>2012-12-05 16:41:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121205155927.patch</filename>
            <type>text/plain</type>
            <size>48682</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjc3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTEyLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBpbnRl
cmZhY2UgY2hhbmdlcyBmb3IgdGhlIG5ldyBibGVuZCBtb2RlcworCisgICAgICAgIE5vIG5ldyB0
ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVk
SW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRvckdlbmVyYXRl
ZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoR3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
ZHJhd1RpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAg
ICAoSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6Cisg
ICAgICAgIChJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Qml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNv
bXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAg
ICAgIChQREZEb2N1bWVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFn
ZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6
CisgICAgICAgIChTdGlsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0Nv
bnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1Db21wb3NpdGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvSW1hZ2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldEhCSVRNQVBPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEyLTEyLTA1ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgRW1wdHkgcGFyc2UgY2FjaGUg
d2hlbiByZWNlaXZpbmcgYSBsb3cgbWVtb3J5IHdhcm5pbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0
LDcgKzM1NCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ28KICAg
ICAgICAgICAgIGlmIChtX3ByZXNlbnRlZEltYWdlKQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBw
aXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBEb05vdFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNl
T3ZlciwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBl
ZEludFJlY3QociksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDcsOSArMjA3LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKICNlbmRpZgot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CiAjaWYgVVNFKENHKSB8fCBQTEFURk9STShDSFJPTUlVTSkgfHwgVVNFKENBSVJPKQot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbkVudW0pIE9WRVJSSURFOwogI2VuZGlmCiAKICNpZiAoT1MoV0lOQ0UpICYmICFQ
TEFURk9STShRVCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZgogICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Ap
Cit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKICAg
ICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3ApOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOwogCiAgICAgQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1hZ2UsIGZsb2F0IHBlcmNl
bnRhZ2UsIEludFNpemUgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgSW50U2l6ZSYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCShy
ZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkg
PSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JH
ZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12b2lkIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2
b2lkIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkK
IHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmRlc3RDb250ZXh0
KTsKICAgICBkZXN0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRl
ZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAx
MzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDExIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
IHx8ICFpbWFnZSkKKyAgICBkcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRS
ZWN0KGRlc3QpLCBzcmMsIG9wLCBCbGVuZE1vZGVOb3JtYWwsIHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQor
eyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZmxvYXQgdHN3ID0gc3JjLndpZHRoKCk7CkBAIC00OTgsNyArNTAyLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaQogI2VuZGlmCiAgICAgfQogCi0gICAg
aW1hZ2UtPmRyYXcodGhpcywgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3
LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBz
dHlsZUNvbG9yU3BhY2UsIG9wLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAg
aW1hZ2UtPmRyYXcodGhpcywgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3
LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBz
dHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKTsKIAogICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpCiAgICAgICAgIHNldEltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkocHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CkBAIC01Mzks
MjcgKzU0MywyNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hCiAg
ICAgICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdCwgc3JjUmVjdCwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBwLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGlt
YWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIHAsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXdJbWFnZUJ1
ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBwLCBJbnRSZWN0KDAsIDAsIC0xLCAtMSksIG9w
KTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgcCwgSW50UmVj
dCgwLCAwLCAtMSwgLTEpLCBvcCwgYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiByLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IElu
dFJlY3QmIHIsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxl
Q29sb3JTcGFjZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCwgdXNlTG93UXVhbGl0eVNj
YWxlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgciwgSW50
UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBp
bWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0LCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAg
IGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBJbnRSZWN0KGRlc3QsIHNy
Y1JlY3Quc2l6ZSgpKSwgc3JjUmVjdCwgb3ApOworICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwg
c3R5bGVDb2xvclNwYWNlLCBJbnRSZWN0KGRlc3QsIHNyY1JlY3Quc2l6ZSgpKSwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
SW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUp
CiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVj
dChkZXN0KSwgc3JjUmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgZHJhd0ltYWdl
QnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFp
bWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTg3LDEwICs1OTEsMTAgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbQogICAgICAgICAvLyBGSVhNRSAoNDkwMDIpOiBT
aG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKICNlbmRpZgotICAgICAgICBpbWFnZS0+ZHJhdyh0
aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6
ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gp
KSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0
eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0
aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwg
YmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIH0gZWxzZQot
ICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0
LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigp
LCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAg
IGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRp
b24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0
U2l6ZSh0c3csIHRzaCkpLCBvcCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQog
CiAjaWYgIVBMQVRGT1JNKFFUKQpAQCAtNzAxLDggKzcwNSwxNCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKQogewor
ICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZU5v
cm1hbCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
KQorewogICAgIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb247
Ci0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKTsK
KyAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CiB9CiAKIENvbXBv
c2l0ZU9wZXJhdG9yIEdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgZmlsbENvbG9yU3BhY2UoQ29s
b3JTcGFjZURldmljZVJHQikKICAgICAgICAgICAgICwgc2hhZG93Q29sb3JTcGFjZShDb2xvclNw
YWNlRGV2aWNlUkdCKQogICAgICAgICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihDb21wb3NpdGVT
b3VyY2VPdmVyKQorICAgICAgICAgICAgLCBibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQogICAg
ICAgICAgICAgLCBzaG91bGRBbnRpYWxpYXModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU21v
b3RoRm9udHModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KHRydWUpCkBAIC0yMDMsNiArMjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBD
b2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3I7CisgICAgICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CiAKICAgICAg
ICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwogICAgICAgICBib29sIHNob3VsZFNtb290aEZv
bnRzIDogMTsKQEAgLTI3MSw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBh
dGgmKTsKIAotICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29u
c3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVs
dEltYWdlT3JpZW50YXRpb24pOworICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bik7CiAKICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcp
LiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dz
Rm9udFNtb290aGluZyhib29sKTsKQEAgLTMyMiwxOCArMzI0LDE5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dR
dWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAogICAgICAgICAg
ICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24s
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFn
ZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICAKICAg
ICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9
IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxl
LCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBJbnRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0g
ICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9
IGZhbHNlKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEludFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0Jiwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUg
PSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICAgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwpA
QCAtNDAzLDYgKzQwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRB
bHBoYShmbG9hdCk7CiAKICAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlT3BlcmF0b3IpOworICAgICAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3BlcmF0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IFBhdGgmKTsK
QEAgLTU1Niw3ICs1NjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3Im
LCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKLSAg
ICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAKICAgICAgICAgdm9pZCBi
ZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7CiAgICAgICAgIHZv
aWQgZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MSw5ICs5MSw5IEBAIHZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0MKICAg
ICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAKLXZv
aWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkKK3Zv
aWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uRW51bSkKIHsKLSAgICBkcmF3KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5
bGVDb2xvclNwYWNlLCBvcCk7CisgICAgZHJhdyhjdHgsIGRzdFJlY3QsIHNyY1JlY3QsIHN0eWxl
Q29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChH
cmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCkBAIC0xMjksNyAr
MTI5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogYwogICAgICAg
ICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8g
c2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVj
dC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhl
aWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAg
ICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNl
LCBvcCwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTIsOCArMTkyLDggQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgUmVzcGVj
dEltYWdlT3JpZW50YXRpb25FbnVtKTsKICAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IpOwogICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZS
dWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJ
KHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsK
KyAgICAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxz
ZSk7CiAgICAgICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgICAgIGlu
bGluZSB2b2lkIGdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDEyICs3MSwxMyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VDYWly
CiAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsKLSAgICBkcmF3KGNvbnRleHQsIGRzdCwgc3JjLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBEb05v
dFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBkcmF3KGNvbnRleHQsIGRzdCwgc3JjLCBz
dHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRp
b24pOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwKKyAgICBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBpZiAoIWRzdC53aWR0aCgp
IHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHJldmlzaW9u
IDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwNiw3ICsxMDA2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFscAogICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zZXRHbG9iYWxBbHBoYShhbHBoYSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lvbiAx
MzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTEgKzk3LDExIEBAIHZvaWQgSW1h
Z2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiAKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AgLCBi
b29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgQmFja2luZ1N0
b3JlQ29weSBjb3B5TW9kZSA9IGRlc3RpbmF0aW9uQ29udGV4dCA9PSBjb250ZXh0KCkgPyBDb3B5
QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LT5kcmF3
SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
LCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAg
IGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3Bh
Y2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VD
Ry5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTIgKzE1Nywx
MiBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHCiAgICAgcmV0dXJu
IFJldGFpblB0cjxDRkFycmF5UmVmPihBZG9wdENGLCBhcnJheSk7CiB9CiAKLXZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogY3R4LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBz
dHlsZUNvbG9yU3BhY2UsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBk
cmF3KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2Rl
LCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBzdGFydEFuaW1h
dGlvbigpOwogCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIAogICAgIGlmIChzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVu
dGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKLSAgICBjdHh0LT5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIHNlbGZTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBj
b21wb3NpdGVPcCwgb3JpZW50YXRpb24pOworICAgIGN0eHQtPmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgc2VsZlNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0
ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkp
CiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcg
KzI2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGEKICAgICBt
X2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBp
bWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShp
bWFnZVB0cik7CiAKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d05hdGl2ZUltYWdlKE5hCiAgICAgaWYgKCFzaG91bGRVc2VTdWJpbWFnZSAmJiBjdXJySGVpZ2h0
IDwgaW1hZ2VTaXplLmhlaWdodCgpKQogICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdo
dChhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpICogY3VyckhlaWdodCAvIGltYWdlU2l6ZS5oZWln
aHQoKSk7CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CisgICAgc2V0
UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CiAKICAgICAvLyBJbWFn
ZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAgICBDR0Nv
bnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVk
RGVzdFJlY3QueSgpKTsKQEAgLTE2OTgsNyArMTY5OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybVNob3VsZFMKICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhw
bGF0Zm9ybUNvbnRleHQoKSwgZW5hYmxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG1vZGUpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0b3IgbW9kZSwgQmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVy
Ojpjb3B5TmF0aXZlSW0KICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBJ
bWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxp
dHlTY2FsZSk7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKGRlc3RDb250ZXh0ID09IG1f
Y29udGV4dCkgPyBDb2xvclNwYWNlRGV2aWNlUkdCIDogc3R5bGVDb2xvclNwYWNlOwpAQCAtMjcy
LDcgKzI3Miw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiAKIAog
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3Jj
UmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGRl
c3RDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSgpLCBj
b2xvclNwYWNlLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCk7CisgICAgZGVzdENvbnRl
eHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKCksIGNvbG9yU3Bh
Y2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lk
IEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTYzLDcgKzE2Myw3IEBAIGludCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQoKSBjb25z
dAogICAgIHJldHVybiBtX2RvY3VtZW50ID8gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMo
bV9kb2N1bWVudCkgOiAwOwogfQogCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwg
bV9jdXJyZW50UGFnZSA9PSAtMSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAko
cmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKIAog
ICAgICAgICBQREZEb2N1bWVudEltYWdlKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ip
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgICAgICAKICAg
ICAgICAgdm9pZCBzZXRDdXJyZW50UGFnZShpbnQpOwogICAgICAgICBpbnQgcGFnZUNvdW50KCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNDMsNyArMTI0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRBbHBoYShmbG9hdCBvcGEKICAgICBwLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAkocmV2aXNp
b24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VC
dWZmZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBQYXNzUmVmUHRy
PEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlCiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlKQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIGlmIChkZXN0Q29udGV4dCA9PSBjb250ZXh0KCkp
IHsKICAgICAgICAgLy8gV2UncmUgZHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLiAgSW4gb3Jk
ZXIgZm9yIHRoaXMgdG8gd29yaywgd2UgbmVlZCB0byBjb3B5IHRoZSBzb3VyY2UgYnVmZmVyIGZp
cnN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VRdC5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3JtRGF0YQogCiAvLyBEcmF3aW5nIFJv
dXRpbmVzCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVj
dCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIFFSZWN0RiBub3JtYWxpemVk
RHN0ID0gZHN0Lm5vcm1hbGl6ZWQoKTsKICAgICBRUmVjdEYgbm9ybWFsaXplZFNyYyA9IHNyYy5u
b3JtYWxpemVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDcgKzY4LDcgQEAgTmF0aXZlSW1hZ2VQdHIgU3RpbGxJbWFnZTo6bmF0aXZlSW1h
Z2VGbwogfQogCiB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxv
YXRSZWN0JiBzcmMsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUp
CiB7CiAgICAgaWYgKG1fcGl4bWFwLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0
LmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1N0aWxsSW1hZ2VRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RpbGxJbWFnZShj
b25zdCBRUGl4bWFwJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5o
CShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcg
KzcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiBwcml2YXRl
OgogICAgIE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dFNraWEuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NzQsNyArODc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFs
cAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRBbHBoYShhbHBoYSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHJl
dmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
SW1hZ2VCdWZmZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0
YXRpYyBib29sIGRyYXdOZWVkc0NvcHkoR3JhcGhpY3NDb250ZXgKIH0KIAogdm9pZCBJbWFnZUJ1
ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsCi0gICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSkKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlLCBi
b29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmNyZWF0ZSgqbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0
LmJpdG1hcCgpLCBkcmF3TmVlZHNDb3B5KG1fY29udGV4dC5nZXQoKSwgY29udGV4dCkpOwogICAg
IGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxp
dHlTY2FsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0lt
YWdlU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9JbWFnZVNraWEuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU4MywxMiArNTgzLDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigp
CiAgICAgfQogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7
Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBzcmNSZWN0LCBjb2xvclNwYWNlLCBjb21wb3NpdGVP
cCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0
LCBzcmNSZWN0LCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBEb05vdFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQogewogICAgIGlmICghbV9zb3VyY2UuaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNjQzLDEwICs2NDMsMTAgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIAogLy8gRklYTUU6IFRoZXNlIHNob3VsZCBnbyBpbnRvIEJpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhLmNwcAogCiB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY3R4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCisgICAgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LAorICAgIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLAorICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAgICAgRmxvYXRSZWN0IG5vcm1Ec3RS
ZWN0ID0gbm9ybWFsaXplUmVjdChkc3RSZWN0KTsKICAgICBGbG9hdFJlY3Qgbm9ybVNyY1JlY3Qg
PSBub3JtYWxpemVSZWN0KHNyY1JlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAkocmV2aXNpb24gMTM2NTk3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRN
QVBPZlNpemUoSEJJVE0KICAgICBpZiAoc2l6ZSkKICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1w
SW5mby5ibUhlaWdodCksIEludFNpemUoKnNpemUpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21w
b3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCk7CiAKICAgICAv
LyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQpOwpAQCAtOTQsNyAr
OTQsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAg
IGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3Vy
cmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9
IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBzdHlsZUNvbG9yU3BhY2UsIGNv
bXBvc2l0ZU9wKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHN0eWxlQ29sb3JT
cGFjZSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgICAgICAgICBtX2N1cnJl
bnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291
cmMKIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxs
YmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAgICAgSW50U2l6ZSBpbWFnZVNpemUg
PSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBzdHls
ZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0
UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwg
c3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBT
VkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZwogICAgICAgICBidWZmZXItPmNvbnRl
eHQoKS0+Y2xlYXJSZWN0KGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCkpOwogCiAgICAgLy8g
RHJhdyBTVkcgb24gdG9wIG9mIEltYWdlQnVmZmVyLgotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0
KCksIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCksIHJlY3QsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIGVu
Y2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCksIHJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAKICAgICAvLyBSZXNldCBjb250
YWluZXIgc2l6ZSAmIHpvb20gdG8gaW5pdGlhbCBzdGF0ZS4gT3RoZXJ3aGlzZSB0aGUgc2l6ZSgp
IG9mIHRoaXMKICAgICAvLyBpbWFnZSB3b3VsZCByZXR1cm4gd2hhdGV2ZXIgbGFzdCBzaXplIHdh
cyBzZXQgYnkgZHJhd1NWR1RvSW1hZ2VCdWZmZXIoKS4KQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFnCiAgICAgZnJhbWUtPnZpZXcoKS0+
ZW5kRGlzYWJsZVJlcGFpbnRzKCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2
b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybjsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOwogICAgICAgICBpZiAoIWJ1ZmZlcikg
Ly8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4
dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgbV9mcmFtZUNhY2hlID0gYnVmZmVyLT5j
b3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgfQogICAgIHJldHVybiBtX2ZyYW1lQ2Fj
aGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3Qp
IHsgcmV0dXJuIDA7IH0KIAogICAgIFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXIqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwog
CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>177866</attachid>
            <date>2012-12-05 16:44:16 -0800</date>
            <delta_ts>2012-12-05 19:04:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121205164141.patch</filename>
            <type>text/plain</type>
            <size>49945</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTEyLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJmYWNl
IGNoYW5nZXMgZm9yIHRoZSBuZXcgYmxlbmQgbW9kZXMKKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAoQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdl
Lmg6CisgICAgICAgIChHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJh
dG9yR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dl
bmVyYXRvckdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChHZW5lcmF0b3JHZW5lcmF0ZWRJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVy
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlKToKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKEdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdU
aWxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKElt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAoSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oOgorICAgICAgICAo
UERGRG9jdW1lbnRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VCdWZmZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oOgorICAg
ICAgICAoU3RpbGxJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRt
YXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oOgorICAgICAgICAoQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0
U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3Jt
Q29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0lt
YWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRI
QklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuaDoKKyAgICAgICAgKFNWR0ltYWdlKToKKwogMjAxMi0xMi0wNSAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjEzNjQ4MS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ28KICAgICAgICAgICAgIGlmIChtX3ByZXNl
bnRlZEltYWdlKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX3ByZXNlbnRl
ZEltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIp
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGl4
ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgdXNlTG93UXVhbGl0eVNj
YWxlKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAg
ICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsOSArMjA3
LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAjaWYgVVNFKENHKSB8
fCBQTEFURk9STShDSFJPTUlVTSkgfHwgVVNFKENBSVJPKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pIE9WRVJS
SURFOwogI2VuZGlmCiAKICNpZiAoT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
d0Nyb3NzZgogICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLXZvaWQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKICAgICBjb250ZXh0LT5zZXRDb21wb3Np
dGVPcGVyYXRpb24oY29tcG9zaXRlT3ApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCShyZXZp
c2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBP
VkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QpOwogCiAgICAgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UqIGZy
b21JbWFnZSwgSW1hZ2UqIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIEludFNpemUgY3Jvc3Nm
YWRlU2l6ZSwgY29uc3QgSW50U2l6ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2Vu
ZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEdlbmVyYXRv
ckdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIEdlbmVyYXRvckdlbmVyYXRl
ZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC0+
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1h
Z2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NjgsNyArNDY4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1h
Z2UqIGkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSkKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBkcmF3
SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QpLCBzcmMsIG9wLCBC
bGVuZE1vZGVOb3JtYWwsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBp
bWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQoreyAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgdHN3ID0gc3Jj
LndpZHRoKCk7CkBAIC00OTgsNyArNTAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZShJbWFnZSogaQogI2VuZGlmCiAgICAgfQogCi0gICAgaW1hZ2UtPmRyYXcodGhpcywgRmxv
YXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3Jj
LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgaW1hZ2UtPmRyYXcodGhpcywgRmxv
YXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3Jj
LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBi
bGVuZE1vZGUsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgIGlmICh1c2VM
b3dRdWFsaXR5U2NhbGUpCiAgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkocHJl
dmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CkBAIC01MzksMjcgKzU0MywyNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hCiAgICAgICAgIGltYWdlLT5kcmF3VGls
ZWQodGhpcywgZGVzdCwgc3JjUmVjdCwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIHN0
eWxlQ29sb3JTcGFjZSwgb3ApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEludFBvaW50JiBwLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIHAsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xv
clNwYWNlLCBwLCBJbnRSZWN0KDAsIDAsIC0xLCAtMSksIG9wKTsKKyAgICBkcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgcCwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCwg
YmxlbmRNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRS
ZWN0JiByLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIHIsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
IHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgciwgSW50UmVj
dCgwLCAwLCAtMSwgLTEpLCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBkcmF3SW1hZ2VC
dWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBv
cCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgSW50UG9pbnQmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZSwgc3R5bGVDb2xvclNwYWNlLCBJbnRSZWN0KGRlc3QsIHNyY1JlY3Quc2l6ZSgpKSwgc3JjUmVj
dCwgb3ApOworICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBJbnRS
ZWN0KGRlc3QsIHNyY1JlY3Quc2l6ZSgpKSwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0
eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgZHJhd0ltYWdlQnVm
ZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjUmVjdCwgb3As
IHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNv
bG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTg3LDEwICs1OTEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1
ZmZlcihJbQogICAgICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUgSW50ZXJwb2xhdGlv
bkxvdwogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25O
b25lKTsKICNlbmRpZgotICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2Us
IEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0
KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIHVzZUxvd1F1YWxpdHlT
Y2FsZSk7CisgICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRS
ZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxv
Y2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOwogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3Vz
SW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIH0gZWxzZQotICAgICAgICBpbWFnZS0+ZHJhdyh0
aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6
ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gp
KSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0
eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0
aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwg
YmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiAjaWYgIVBMQVRGT1JNKFFUKQpA
QCAtNzAxLDggKzcwNSwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91
bmRlCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKQogeworICAgIHNldENvbXBvc2l0ZU9wZXJh
dGlvbihjb21wb3NpdGVPcGVyYXRpb24sIEJsZW5kTW9kZU5vcm1hbCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorewogICAgIG1fc3RhdGUuY29t
cG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb247Ci0gICAgc2V0UGxhdGZvcm1Db21w
b3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKTsKKyAgICBtX3N0YXRlLmJsZW5kTW9k
ZSA9IGJsZW5kTW9kZTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3Np
dGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CiB9CiAKIENvbXBvc2l0ZU9wZXJhdG9yIEdyYXBoaWNz
Q29udGV4dDo6Y29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAx
MzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICwgZmlsbENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQikKICAg
ICAgICAgICAgICwgc2hhZG93Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKQogICAgICAg
ICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihDb21wb3NpdGVTb3VyY2VPdmVyKQorICAgICAgICAg
ICAgLCBibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQogICAgICAgICAgICAgLCBzaG91bGRBbnRp
YWxpYXModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU21vb3RoRm9udHModHJ1ZSkKICAgICAg
ICAgICAgICwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKHRydWUpCkBAIC0yMDMsNiArMjA0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9y
U3BhY2U7CiAKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3I7Cisg
ICAgICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CiAKICAgICAgICAgYm9vbCBzaG91bGRBbnRpYWxp
YXMgOiAxOwogICAgICAgICBib29sIHNob3VsZFNtb290aEZvbnRzIDogMTsKQEAgLTI3MSw3ICsy
NzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVy
bigpOwogICAgICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKTsKIAotICAgICAgICB2b2lk
IGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwor
ICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdl
T3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CiAKICAgICAgICAgLy8gQWxs
b3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcpLiBOb3QgcGFydCBvZiB0aGUgZ3Jh
cGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dzRm9udFNtb290aGluZyhib29sKTsK
QEAgLTMyMiwxOCArMzI0LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBk
cmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7
CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAogICAgICAgICAgICAgICAgICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
RW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICAKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9p
ZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6
OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYsIENvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IElu
dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICAgICAgdm9p
ZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0g
RmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBD
b21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZv
aWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwpAQCAtNDAzLDYgKzQwNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7CiAKICAgICAg
ICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAg
ICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
KTsKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBjbGlwKGNvbnN0IFBhdGgmKTsKQEAgLTU1Niw3ICs1NjAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAg
ICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKLSAgICAgICAgdm9pZCBzZXRQbGF0Zm9y
bUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHZvaWQgc2V0
UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZU5vcm1hbCk7CiAKICAgICAgICAgdm9pZCBiZWdpblBsYXRmb3JtVHJhbnNwYXJl
bmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7CiAgICAgICAgIHZvaWQgZW5kUGxhdGZvcm1UcmFuc3Bh
cmVuY3lMYXllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw5ICs5MSw5IEBAIHZvaWQgSW1h
Z2U6OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0MKICAgICBjdHh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAKLXZvaWQgSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkKK3ZvaWQgSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkKIHsK
LSAgICBkcmF3KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCk7Cisg
ICAgZHJhdyhjdHgsIGRzdFJlY3QsIHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5k
TW9kZSk7CiB9CiAKIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogYwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZ
KChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwogICAg
ICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lk
dGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQo
KSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJs
ZVNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBkcmF3KGN0eHQsIGRlc3RS
ZWN0LCB2aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFs
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsOCArMTkyLDgg
QEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bkVudW0pOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVt
KTsKICAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwog
ICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2Fs
ZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDEzNjU5NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAg
ICAgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0
OwogCi0gICAgICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJl
Y3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgICAgIGlubGluZSB2b2lkIGdlbmVyaWNDb252
ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAkocmV2aXNp
b24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0
bWFwSW1hZ2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEyICs3MSwxMyBAQCBCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VDYWlyCiAgICAgY2hlY2tGb3JTb2xpZENv
bG9yKCk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3KGNvbnRleHQs
IGRzdCwgc3JjLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKTsKKyAgICBkcmF3KGNvbnRleHQsIGRzdCwgc3JjLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBi
bGVuZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwogfQogCi12b2lkIEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKKyAgICBC
bGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbikKIHsKICAgICBpZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwg
IXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldEFscGhhKGZsb2F0IGFscAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRHbG9iYWxBbHBo
YShhbHBoYSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0
ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsMTEgKzk3LDExIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhp
Y3NDb250ZXh0KiAKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AgLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSkKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9kZSA9IGRl
c3RpbmF0aW9uQ29udGV4dCA9PSBjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENv
cHlCYWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5
TW9kZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0
eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+
ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcCwgYmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDEzNjU5
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTIgKzE1NywxMiBAQCBSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gQml0bWFwSW1hZ2U6OmdldENHCiAgICAgcmV0dXJuIFJldGFpblB0cjxDRkFycmF5UmVm
PihBZG9wdENGLCBhcnJheSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
Cit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQog
ewotICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBE
b05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBkcmF3KGN0eCwgZHN0UmVjdCwgc3Jj
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBzdGFydEFuaW1hdGlvbigpOwogCkBAIC0xODEsNyAr
MTgxLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIAogICAgIGlm
IChzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikKICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJl
bnRGcmFtZSk7CiAKLSAgICBjdHh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIHNlbGZTaXplLCBz
dHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgb3JpZW50YXRp
b24pOworICAgIGN0eHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc2VsZlNpemUsIHN0eWxlQ29s
b3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVu
dGF0aW9uKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2
ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDEz
NjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGEKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNl
VHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0cik7CiAKQEAgLTMyNCw3
ICszMjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hCiAgICAg
aWYgKCFzaG91bGRVc2VTdWJpbWFnZSAmJiBjdXJySGVpZ2h0IDwgaW1hZ2VTaXplLmhlaWdodCgp
KQogICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChhZGp1c3RlZERlc3RSZWN0Lmhl
aWdodCgpICogY3VyckhlaWdodCAvIGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBzZXRQbGF0
Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVy
YXRpb24ob3AsIGJsZW5kTW9kZSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMg
dGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29u
dGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpKTsKQEAgLTE2
OTgsNyArMTY5OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZFMK
ICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhwbGF0Zm9ybUNvbnRleHQoKSwgZW5h
YmxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgbW9kZSwgQmxlbmRN
b2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcg
KzI1OSw3IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW0KICAgICBy
ZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2FsZSk7CiAgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gKGRlc3RDb250ZXh0ID09IG1fY29udGV4dCkgPyBDb2xvclNwYWNl
RGV2aWNlUkdCIDogc3R5bGVDb2xvclNwYWNlOwpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiAKIAogICAgIEZsb2F0UmVjdCBhZGp1c3Rl
ZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRp
b25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LT5kcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSgpLCBjb2xvclNwYWNlLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcCk7CisgICAgZGVzdENvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShp
bWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKCksIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3Rl
ZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCShy
ZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIGlu
dCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RvY3Vt
ZW50ID8gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMobV9kb2N1bWVudCkgOiAwOwogfQog
Ci12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgbV9jdXJyZW50UGFnZSA9PSAtMSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKIAogICAgICAgICBQREZEb2N1bWVudElt
YWdlKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRDdXJyZW50
UGFnZShpbnQpOwogICAgICAgICBpbnQgcGFnZUNvdW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0UXQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDMs
NyArMTI0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBvcGEKICAg
ICBwLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZUJ1ZmZlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6
Y29weUltYWdlCiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBk
ZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQog
ewogICAgIGlmIChkZXN0Q29udGV4dCA9PSBjb250ZXh0KCkpIHsKICAgICAgICAgLy8gV2UncmUg
ZHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLiAgSW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yaywg
d2UgbmVlZCB0byBjb3B5IHRoZSBzb3VyY2UgYnVmZmVyIGZpcnN0LgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAJKHJldmlzaW9uIDEz
NjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW52
YWxpZGF0ZVBsYXRmb3JtRGF0YQogCiAvLyBEcmF3aW5nIFJvdXRpbmVzCiB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlKQogewogICAgIFFSZWN0RiBub3JtYWxpemVkRHN0ID0gZHN0Lm5vcm1hbGl6ZWQo
KTsKICAgICBRUmVjdEYgbm9ybWFsaXplZFNyYyA9IHNyYy5ub3JtYWxpemVkKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VR
dC5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAg
TmF0aXZlSW1hZ2VQdHIgU3RpbGxJbWFnZTo6bmF0aXZlSW1hZ2VGbwogfQogCiB2b2lkIFN0aWxs
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKG1fcGl4bWFw
LT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHJldmlzaW9uIDEzNjU5NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RpbGxJbWFnZShjb25zdCBRUGl4bWFwJik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCShyZXZpc2lvbiAxMzY1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xl
RnJhbWVTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiBwcml2YXRlOgogICAgIE5hdGl2ZUltYWdlU2tp
YSBtX25hdGl2ZUltYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCShyZXZpc2lv
biAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBo
aWNzQ29udGV4dFNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzQsNyArODc0LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFscAogICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5zZXRBbHBoYShhbHBoYSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBib29sIGRyYXdOZWVkc0Nv
cHkoR3JhcGhpY3NDb250ZXgKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAg
ICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSkKIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNr
aWE6OmNyZWF0ZSgqbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpLCBkcmF3TmVlZHND
b3B5KG1fY29udGV4dC5nZXQoKSwgY29udGV4dCkpOwogICAgIGNvbnRleHQtPmRyYXdJbWFnZShp
bWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIERvTm90
UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3Bw
CShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ltYWdlU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MywxMiArNTgzLDEyIEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgfQogfQogCi12b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgZHJhdyhjdHh0LCBkc3RS
ZWN0LCBzcmNSZWN0LCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgRG9Ob3RSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbik7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBzcmNSZWN0LCBjb2xvclNwYWNl
LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsK
IH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCit2b2lkIEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9z
b3VyY2UuaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjQzLDEwICs2NDMsMTAg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIAogLy8gRklYTUU6IFRo
ZXNlIHNob3VsZCBnbyBpbnRvIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAogCiB2b2lk
IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKKyAgICBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAorICAgIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLAorICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUpCiB7CiAgICAgRmxvYXRSZWN0IG5vcm1Ec3RSZWN0ID0gbm9ybWFsaXplUmVjdChk
c3RSZWN0KTsKICAgICBGbG9hdFJlY3Qgbm9ybVNyY1JlY3QgPSBub3JtYWxpemVSZWN0KHNyY1Jl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUNHV2luLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3
ICs3OCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0KICAgICBp
ZiAoc2l6ZSkKICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEludFNp
emUoKnNpemUpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNl
Ci0gICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRo
LCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0
aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVD
b3B5KTsKKyAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBv
c2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dD
b250ZXh0UmVsZWFzZShjZ0NvbnRleHQpOwpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkp
ICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXpl
LndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50
RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNy
Y1NpemUuaGVpZ2h0KCkpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAg
ICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lk
dGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZU5vcm1hbCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFt
ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKIAogICAgIC8vIE5vIGltYWdl
IG9mIHRoZSBjb3JyZWN0IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBj
dXJyZW50IGZyYW1lCiAgICAgSW50U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgp
OwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6
ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0
ZU9wKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFn
ZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgc3R5bGVDb2xvclNwYWNlLCBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAx
MzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1NWR1RvSW1h
Z2VCdWZmZXIoSW1hZwogICAgICAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xlYXJSZWN0KGVuY2xv
c2luZ0ludFJlY3Qoc2NhbGVkUmVjdCkpOwogCiAgICAgLy8gRHJhdyBTVkcgb24gdG9wIG9mIElt
YWdlQnVmZmVyLgotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIGVuY2xvc2luZ0ludFJlY3Qo
c2NhbGVkUmVjdCksIHJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92
ZXIpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVk
UmVjdCksIHJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZU5vcm1hbCk7CiAKICAgICAvLyBSZXNldCBjb250YWluZXIgc2l6ZSAmIHpvb20gdG8g
aW5pdGlhbCBzdGF0ZS4gT3RoZXJ3aGlzZSB0aGUgc2l6ZSgpIG9mIHRoaXMKICAgICAvLyBpbWFn
ZSB3b3VsZCByZXR1cm4gd2hhdGV2ZXIgbGFzdCBzaXplIHdhcyBzZXQgYnkgZHJhd1NWR1RvSW1h
Z2VCdWZmZXIoKS4KQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9J
bWFnZUJ1ZmZlcihJbWFnCiAgICAgZnJhbWUtPnZpZXcoKS0+ZW5kRGlzYWJsZVJlcGFpbnRzKCk7
CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAg
LTI3Nyw3ICsyNzcsNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JD
CiAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzaXplKCksIDEpOwogICAgICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRl
IGltYWdlCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRl
eHQoKSwgcmVjdCgpLCByZWN0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFs
KTsKICAgICAgICAgbV9mcmFtZUNhY2hlID0gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdT
dG9yZSk7CiAgICAgfQogICAgIHJldHVybiBtX2ZyYW1lQ2FjaGUtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAko
cmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IE5hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3QpIHsgcmV0dXJuIDA7IH0KIAogICAg
IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRv
UmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZy
b21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiAgICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2Nzc5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMi0wNSAg
UmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIEV4dGVuZCBwbGF0
Zm9ybSBsYXllciBzbyBpdCBjYW4gcGFzcyBibGVuZCBtb2RlcyB0byB0aGUgY29tcG9zaXRpbmcg
Y2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NDE3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
dGVyZmFjZSBjaGFuZ2VzIGZvciB0aGUgbmV3IGJsZW5kIG1vZGVzCisKKyAgICAgICAgKiB0ZXN0
cy9EcmFnSW1hZ2VUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6ZHJhdyk6
CisKIDIwMTItMTItMDUgIEViZXJoYXJkIEdyYWV0aGVyICA8ZWdyYWV0aGVyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgV2ViTGF5ZXJUcmVlVmlldyBBUEkgdG8gc2V0
IGZvbnQgYXRsYXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdl
VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFn
SW1hZ2VUZXN0LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLAogICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkNvbG9yU3BhY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IpCisgICAgICAgICAgICAgICAg
ICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSkKICAg
ICB7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177908</attachid>
            <date>2012-12-05 19:03:30 -0800</date>
            <delta_ts>2012-12-06 15:11:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121205190054.patch</filename>
            <type>text/plain</type>
            <size>46481</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6
OnBhaW50KEdyYXBoaWNzQ28KICAgICAgICAgICAgIGlmIChtX3ByZXNlbnRlZEltYWdlKQogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdldCgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVj
dChyKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZU5vcm1hbCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5o
CShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsOSArMjA3LDkgQEAgcHJvdGVjdGVk
OgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdT
b3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yKTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAjaWYgVVNFKENHKSB8fCBQTEFURk9STShDSFJP
TUlVTSkgfHwgVVNFKENBSVJPKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uRW51bSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pIE9WRVJSSURFOwogI2VuZGlmCiAK
ICNpZiAoT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcg
KzgxLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZgogICAgIGNv
bnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29t
cG9zaXRlT3ApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qp
OwogCiAgICAgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2Uq
IHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIEludFNpemUgY3Jvc3NmYWRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJh
dGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3Bw
CShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
ZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEdlbmVyYXRvckdlbmVyYXRlZEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmRlc3RDb250ZXh0KTsKICAgICBkZXN0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKGNvbXBvc2l0ZU9wKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24g
MTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2Vu
ZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAg
IHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4
LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKLSAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKKyAgICBkcmF3SW1hZ2UoaW1hZ2UsIHN0
eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QpLCBzcmMsIG9wLCBCbGVuZE1vZGVOb3JtYWws
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlKQoreyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgdHN3ID0gc3JjLndpZHRoKCk7CkBAIC00
OTgsNyArNTAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaQog
I2VuZGlmCiAgICAgfQogCi0gICAgaW1hZ2UtPmRyYXcodGhpcywgRmxvYXRSZWN0KGRlc3QubG9j
YXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZs
b2F0U2l6ZSh0c3csIHRzaCkpLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBzaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbik7CisgICAgaW1hZ2UtPmRyYXcodGhpcywgRmxvYXRSZWN0KGRlc3QubG9j
YXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZs
b2F0U2l6ZSh0c3csIHRzaCkpLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUp
CiAgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkocHJldmlvdXNJbnRlcnBvbGF0
aW9uUXVhbGl0eSk7CkBAIC01MzksMjcgKzU0MywyNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RpbGVkSW1hZ2UoSW1hCiAgICAgICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdCwg
c3JjUmVjdCwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIHN0eWxlQ29sb3JTcGFjZSwg
b3ApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBw
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgSW50UG9pbnQmIHAsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
KQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBwLCBJbnRS
ZWN0KDAsIDAsIC0xLCAtMSksIG9wKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxl
Q29sb3JTcGFjZSwgcCwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCwgYmxlbmRNb2RlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1h
Z2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiByLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIHIsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKLSAgICBkcmF3SW1h
Z2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEp
LCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0
eWxlQ29sb3JTcGFjZSwgciwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCwgYmxlbmRNb2RlLCB1
c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEludFBvaW50JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIGRl
c3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNw
YWNlLCBJbnRSZWN0KGRlc3QsIHNyY1JlY3Quc2l6ZSgpKSwgc3JjUmVjdCwgb3ApOworICAgIGRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBJbnRSZWN0KGRlc3QsIHNyY1Jl
Y3Quc2l6ZSgpKSwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHls
ZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjUmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlT
Y2FsZSk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0
UmVjdChkZXN0KSwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciog
aW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dR
dWFsaXR5U2NhbGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTg3LDEwICs1
OTEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbQogICAgICAg
ICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgICAgICBz
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKICNlbmRpZgot
ICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0
LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigp
LCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAg
IGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRp
b24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0
U2l6ZSh0c3csIHRzaCkpLCBvcCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAg
ICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1
YWxpdHkpOwogICAgIH0gZWxzZQotICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9y
U3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxv
YXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CisgICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwg
RmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qo
c3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwgYmxlbmRNb2RlLCB1c2VM
b3dRdWFsaXR5U2NhbGUpOwogfQogCiAjaWYgIVBMQVRGT1JNKFFUKQpAQCAtNzAxLDggKzcwNSwx
NCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlCiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0aW9uKQogeworICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVP
cGVyYXRpb24sIEJsZW5kTW9kZU5vcm1hbCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9u
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorewogICAgIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3Ig
PSBjb21wb3NpdGVPcGVyYXRpb247Ci0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3BlcmF0aW9uKTsKKyAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsK
KyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24sIGJs
ZW5kTW9kZSk7CiB9CiAKIENvbXBvc2l0ZU9wZXJhdG9yIEdyYXBoaWNzQ29udGV4dDo6Y29tcG9z
aXRlT3BlcmF0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY1LDYgKzE2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICwgZmlsbENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQikKICAgICAgICAgICAgICwgc2hh
ZG93Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKQogICAgICAgICAgICAgLCBjb21wb3Np
dGVPcGVyYXRvcihDb21wb3NpdGVTb3VyY2VPdmVyKQorICAgICAgICAgICAgLCBibGVuZE1vZGUo
QmxlbmRNb2RlTm9ybWFsKQogICAgICAgICAgICAgLCBzaG91bGRBbnRpYWxpYXModHJ1ZSkKICAg
ICAgICAgICAgICwgc2hvdWxkU21vb3RoRm9udHModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzKHRydWUpCkBAIC0yMDMsNiArMjA0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAKICAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3I7CisgICAgICAgIEJsZW5kTW9k
ZSBibGVuZE1vZGU7CiAKICAgICAgICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwogICAgICAg
ICBib29sIHNob3VsZFNtb290aEZvbnRzIDogMTsKQEAgLTI3MSw3ICsyNzMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAgICB2
b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKTsKIAotICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFn
ZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOworICAgICAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CiAKICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhp
bmcgKExDRCBhbnRpYWxpYXNpbmcpLiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAg
ICAgICAgIHZvaWQgc2V0QWxsb3dzRm9udFNtb290aGluZyhib29sKTsKQEAgLTMyMiwxOCArMzI0
LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2Uq
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3ZlciwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQg
ZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAw
LCAtMSwgLTEpLAogICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVz
cGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwor
ICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0g
ZmFsc2UpOworICAgICAgICAKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
SW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFn
ZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxl
ID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3Ry
ZXRjaFRpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsK
IAotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxl
ID0gZmFsc2UpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IC0xLCAtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7
CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxl
ID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAw
LCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7
CiAKICAgICAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5KTsKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0OwpAQCAtNDAzLDYgKzQwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7CiAKICAgICAgICAgdm9pZCBzZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2b2lkIHNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgdm9p
ZCBjbGlwKGNvbnN0IFBhdGgmKTsKQEAgLTU1Niw3ICs1NjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxv
YXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBjbGVhclBs
YXRmb3JtU2hhZG93KCk7CiAKLSAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKICAgICAgICAgdm9pZCBiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQg
b3BhY2l0eSk7CiAgICAgICAgIHZvaWQgZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNp
b24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw5ICs5MSw5IEBAIHZvaWQgSW1hZ2U6OmZpbGxXaXRoU29s
aWRDb2xvcihHcmFwaGljc0MKICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlv
dXNPcGVyYXRvcik7CiB9CiAKLXZvaWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uRW51bSkKK3ZvaWQgSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkKIHsKLSAgICBkcmF3KGN0eCwg
ZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CisgICAgZHJhdyhjdHgsIGRz
dFJlY3QsIHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZv
aWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCogYwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkg
LSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICB2aXNpYmxlU3Jj
UmVjdC5zZXRXaWR0aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAg
IHZpc2libGVTcmNSZWN0LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdo
dCgpKTsKLSAgICAgICAgZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxl
Q29sb3JTcGFjZSwgb3ApOworICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3Jj
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsOCArMTkyLDggQEAgcHJvdGVjdGVkOgog
I2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
SW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yKSB7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKTsKICAgICB2b2lkIGRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogICAgIHZvaWQgZHJhd1Rp
bGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1
bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3
ICsxMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAgdm9pZCBjbGlw
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgICAgIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0x
KSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1
YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCos
IENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VM
b3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpOwogCiAgICAgICAgIGlubGluZSB2b2lkIGdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRt
YXBJbWFnZUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEyICs3MSwxMyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UoTmF0aXZlSW1hZ2VDYWlyCiAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiB9CiAKLXZv
aWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3KGNvbnRleHQsIGRzdCwgc3JjLCBzdHls
ZUNvbG9yU3BhY2UsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBkcmF3
KGNvbnRleHQsIGRzdCwgc3JjLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIERvTm90
UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbikKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKKyAgICBCbGVuZE1vZGUsIFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKIHsK
ICAgICBpZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8
ICFzcmMuaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0
IGFscAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRHbG9iYWxBbHBoYShhbHBoYSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcs
MTEgKzk3LDExIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiAKIH0K
IAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29u
dGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3Igb3AgLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUpCiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9kZSA9IGRlc3RpbmF0aW9uQ29udGV4
dCA9PSBjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7
CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVz
dGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGUpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2Rl
LCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQog
CiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0
bWFwSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTcsMTIgKzE1NywxMiBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1h
Z2U6OmdldENHCiAgICAgcmV0dXJuIFJldGFpblB0cjxDRkFycmF5UmVmPihBZG9wdENGLCBhcnJh
eSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXcoY3R4
LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBEb05vdFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKTsKKyAgICBkcmF3KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xv
clNwYWNlLCBvcCwgYmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0K
IAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCit2b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikKIHsKICAgICBzdGFydEFuaW1hdGlvbigpOwogCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIAogICAgIGlmIChzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKICAgICAgICAgb3Jp
ZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKLSAg
ICBjdHh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIHNlbGZTaXplLCBzdHlsZUNvbG9yU3BhY2Us
IGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgb3JpZW50YXRpb24pOworICAgIGN0eHQt
PmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc2VsZlNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKIAogICAg
IGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0
aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0
b3JlUGxhdGZvcm1TdGEKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25U
b0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJ
bWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0cik7CiAKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hCiAgICAgaWYgKCFzaG91bGRVc2VT
dWJpbWFnZSAmJiBjdXJySGVpZ2h0IDwgaW1hZ2VTaXplLmhlaWdodCgpKQogICAgICAgICBhZGp1
c3RlZERlc3RSZWN0LnNldEhlaWdodChhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpICogY3Vyckhl
aWdodCAvIGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihvcCk7CisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5k
TW9kZSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBi
ZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgYWRqdXN0ZWRE
ZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpKTsKQEAgLTE2OTgsNyArMTY5OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZFMKICAgICBDR0NvbnRleHRT
ZXRTaG91bGRTbW9vdGhGb250cyhwbGF0Zm9ybUNvbnRleHQoKSwgZW5hYmxlKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yIG1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgbW9kZSwgQmxlbmRNb2RlKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCShy
ZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIE5hdGl2
ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW0KICAgICByZXR1cm4gaW1hZ2U7CiB9
CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRl
c3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2FsZSk7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gKGRlc3RDb250ZXh0ID09IG1fY29udGV4dCkgPyBDb2xvclNwYWNlRGV2aWNlUkdCIDogc3R5
bGVDb2xvclNwYWNlOwpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiAKIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNS
ZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNv
bHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0
KCksIGludGVybmFsU2l6ZSgpLCBjb2xvclNwYWNlLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBvcCk7CisgICAgZGVzdENvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgaW50
ZXJuYWxTaXplKCksIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBi
bGVuZE1vZGUpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIGludCBQREZEb2N1bWVudElt
YWdlOjpwYWdlQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RvY3VtZW50ID8gQ0dQREZEb2N1
bWVudEdldE51bWJlck9mUGFnZXMobV9kb2N1bWVudCkgOiAwOwogfQogCi12b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3ApCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAg
ICBpZiAoIW1fZG9jdW1lbnQgfHwgbV9jdXJyZW50UGFnZSA9PSAtMSkKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJbnRT
aXplIHNpemUoKSBjb25zdDsKIAogICAgICAgICBQREZEb2N1bWVudEltYWdlKCk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUpOwogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRDdXJyZW50UGFnZShpbnQpOwogICAg
ICAgICBpbnQgcGFnZUNvdW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZp
c2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDMsNyArMTI0Myw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBvcGEKICAgICBwLT5zZXRPcGFjaXR5
KG9wYWNpdHkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZUJ1ZmZlclF0LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3
ICsxMjYsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlCiB9CiAK
IHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIGlmIChkZXN0
Q29udGV4dCA9PSBjb250ZXh0KCkpIHsKICAgICAgICAgLy8gV2UncmUgZHJhd2luZyBpbnRvIG91
ciBvd24gYnVmZmVyLiAgSW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yaywgd2UgbmVlZCB0byBjb3B5
IHRoZSBzb3VyY2UgYnVmZmVyIGZpcnN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW52YWxpZGF0ZVBsYXRmb3Jt
RGF0YQogCiAvLyBEcmF3aW5nIFJvdXRpbmVzCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewog
ICAgIFFSZWN0RiBub3JtYWxpemVkRHN0ID0gZHN0Lm5vcm1hbGl6ZWQoKTsKICAgICBRUmVjdEYg
bm9ybWFsaXplZFNyYyA9IHNyYy5ub3JtYWxpemVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAJKHJldmlzaW9u
IDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgTmF0aXZlSW1hZ2VQdHIg
U3RpbGxJbWFnZTo6bmF0aXZlSW1hZ2VGbwogfQogCiB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3ApCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKG1fcGl4bWFwLT5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
U3RpbGxJbWFnZVF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIElu
dFNpemUgc2l6ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgU3RpbGxJbWFnZShjb25zdCBRUGl4bWFwJik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpOwogCiBwcml2YXRlOgogICAgIE5hdGl2ZUltYWdlU2tpYSBtX25hdGl2ZUltYWdl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0Nv
bnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEFscGhhKGZsb2F0IGFscAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRBbHBoYShh
bHBoYSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0lt
YWdlQnVmZmVyU2tpYS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBib29sIGRyYXdOZWVkc0NvcHkoR3JhcGhpY3NDb250
ZXgKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmNyZWF0ZSgqbV9k
YXRhLm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpLCBkcmF3TmVlZHNDb3B5KG1fY29udGV4dC5n
ZXQoKSwgY29udGV4dCkpOwogICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5
bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIERvTm90UmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCShyZXZpc2lvbiAxMzY1
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MywxMiArNTgzLDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgfQogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3ApCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBzcmNSZWN0LCBj
b2xvclNwYWNlLCBjb21wb3NpdGVPcCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7Cisg
ICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBzcmNSZWN0LCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwg
YmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghbV9zb3VyY2UuaW5pdGlhbGl6
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjQzLDEwICs2NDMsMTAgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIAogLy8gRklYTUU6IFRoZXNlIHNob3VsZCBnbyBp
bnRvIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAogCiB2b2lkIEJpdG1hcEltYWdlU2lu
Z2xlRnJhbWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCisg
ICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAorICAgIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLAorICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAg
ICAgRmxvYXRSZWN0IG5vcm1Ec3RSZWN0ID0gbm9ybWFsaXplUmVjdChkc3RSZWN0KTsKICAgICBG
bG9hdFJlY3Qgbm9ybVNyY1JlY3QgPSBub3JtYWxpemVSZWN0KHNyY1JlY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNw
cAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wg
Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0KICAgICBpZiAoc2l6ZSkKICAgICAg
ICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEludFNpemUoKnNpemUpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXco
JmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVp
Z2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAg
ZHJhdygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8u
Ym1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdl
U2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5k
TW9kZU5vcm1hbCk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVsZWFzZShj
Z0NvbnRleHQpOwpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRX
aWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAg
ICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAg
ICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3Qs
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkp
LCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwg
ZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5o
ZWlnaHQoKSksIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCk7
CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0
IHNpemUgd2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAg
ICAgSW50U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4
dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCkpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wKTsKKyAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwg
aW1hZ2VTaXplLmhlaWdodCgpKSwgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlTm9ybWFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZwog
ICAgICAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xlYXJSZWN0KGVuY2xvc2luZ0ludFJlY3Qoc2Nh
bGVkUmVjdCkpOwogCiAgICAgLy8gRHJhdyBTVkcgb24gdG9wIG9mIEltYWdlQnVmZmVyLgotICAg
IGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCksIHJl
Y3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGRyYXco
YnVmZmVyLT5jb250ZXh0KCksIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCksIHJlY3QsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7
CiAKICAgICAvLyBSZXNldCBjb250YWluZXIgc2l6ZSAmIHpvb20gdG8gaW5pdGlhbCBzdGF0ZS4g
T3RoZXJ3aGlzZSB0aGUgc2l6ZSgpIG9mIHRoaXMKICAgICAvLyBpbWFnZSB3b3VsZCByZXR1cm4g
d2hhdGV2ZXIgbGFzdCBzaXplIHdhcyBzZXQgYnkgZHJhd1NWR1RvSW1hZ2VCdWZmZXIoKS4KQEAg
LTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFn
CiAgICAgZnJhbWUtPnZpZXcoKS0+ZW5kRGlzYWJsZVJlcGFpbnRzKCk7CiB9CiAKLXZvaWQgU1ZH
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTI3Nyw3ICsyNzcsNyBA
QCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgICAgIE93blB0
cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOwog
ICAgICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCBy
ZWN0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgbV9m
cmFtZUNhY2hlID0gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgfQog
ICAgIHJldHVybiBtX2ZyYW1lQ2FjaGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IGZyYW1lQXRJbmRleChzaXplX3QpIHsgcmV0dXJuIDA7IH0KIAogICAgIFNWR0ltYWdlKEltYWdl
T2JzZXJ2ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpOwogCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gMTM2Nzc5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMi0wNSAgUmlrIENhYmFuaWVyICA8
Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIEV4dGVuZCBwbGF0Zm9ybSBsYXllciBzbyBp
dCBjYW4gcGFzcyBibGVuZCBtb2RlcyB0byB0aGUgY29tcG9zaXRpbmcgY2FsbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDE3NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludGVyZmFjZSBjaGFuZ2Vz
IGZvciB0aGUgbmV3IGJsZW5kIG1vZGVzCisKKyAgICAgICAgKiB0ZXN0cy9EcmFnSW1hZ2VUZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6ZHJhdyk6CisKIDIwMTItMTItMDUg
IEViZXJoYXJkIEdyYWV0aGVyICA8ZWdyYWV0aGVyQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2No
cm9taXVtXSBSZW1vdmUgV2ViTGF5ZXJUcmVlVmlldyBBUEkgdG8gc2V0IGZvbnQgYXRsYXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAko
cmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1h
Z2VUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIFdlYkNvcmU6OkNvbG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6Q29tcG9zaXRlT3BlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6
Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSkKICAgICB7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXll
ckNocm9taXVtVGVzdC5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwKICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpDb2xvclNwYWNl
LAotICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yKQorICAg
ICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpC
bGVuZE1vZGUpCiAgICAgewogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177949</attachid>
            <date>2012-12-05 23:16:19 -0800</date>
            <delta_ts>2012-12-06 15:11:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121205231343.patch</filename>
            <type>text/plain</type>
            <size>50621</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTEyLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJmYWNl
IGNoYW5nZXMgZm9yIHRoZSBuZXcgYmxlbmQgbW9kZXMKKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2Uu
aDoKKyAgICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRvckdlbmVyYXRlZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQ
REZEb2N1bWVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAg
ICAgIChTdGlsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1h
cEltYWdlU2luZ2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1D
b21wb3NpdGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEyLTEyLTAzICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJTlBVVF9NVUxUSVBMRV9GSUVMRFNf
VUkgZG9lc24ndCBzaG93IGRpZ2l0cyB3ZWxsIGluIFJUTCBsb2NhbGVzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGlj
c0NvCiAgICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgRG9Ob3RS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBvc2l0
ZVNvdXJjZU92ZXIsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhl
bFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWws
IHVzZUxvd1F1YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMTM2
NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjA3LDkgKzIwNyw5IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNy
Y1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAj
ZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUpOwogI2lmIFVTRShDRykgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFVTRShD
QUlSTykKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVu
dW0pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgUmVzcGVj
dEltYWdlT3JpZW50YXRpb25FbnVtKSBPVkVSUklERTsKICNlbmRpZgogCiAjaWYgKE9TKFdJTkNF
KSAmJiAhUExBVEZPUk0oUVQpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNp
b24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2YKICAgICBjb250ZXh0LT5lbmRUcmFu
c3BhcmVuY3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4
dCk7CiAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKIAogICAgIENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9h
dCBwZXJjZW50YWdlLCBJbnRTaXplIGNyb3NzZmFkZVNpemUsIGNvbnN0IEludFNpemUmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ip
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTM2
NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJh
dGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wKQordm9pZCBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpkZXN0
Q29udGV4dCk7CiAgICAgZGVzdENvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3Np
dGVPcCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JH
ZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2
aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDcgKzQ2OCwxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2Us
IEZsb2F0UmVjdChkZXN0KSwgc3JjLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSkKK3sgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGZsb2F0IHRzdyA9IHNyYy53aWR0aCgpOwpAQCAtNDk4LDcgKzUwMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKICNlbmRpZgogICAgIH0K
IAotICAgIGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0
U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0
c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24p
OworICAgIGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0
U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0
c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbik7CiAKICAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKQogICAgICAgICBzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkpOwpA
QCAtNTM5LDI3ICs1NDMsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdl
KEltYQogICAgICAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNyY1JlY3QsIHRpbGVT
Y2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBw
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3
SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgcCwgSW50UmVjdCgwLCAwLCAtMSwg
LTEpLCBvcCk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHAs
IEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBj
b25zdCBJbnRSZWN0JiByLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdl
LCBzdHlsZUNvbG9yU3BhY2UsIHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2Us
IHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNj
YWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYg
ZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0LCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgSW50UmVjdChk
ZXN0LCBzcmNSZWN0LnNpemUoKSksIHNyY1JlY3QsIG9wKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIo
aW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgSW50UmVjdChkZXN0LCBzcmNSZWN0LnNpemUoKSksIHNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEludFJlY3QmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0
eVNjYWxlKQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBG
bG9hdFJlY3QoZGVzdCksIHNyY1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCksIHNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NywxMCArNTkxLDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW0KICAgICAgICAgLy8gRklYTUUgKDQ5
MDAyKTogU2hvdWxkIGJlIEludGVycG9sYXRpb25Mb3cKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CiAjZW5kaWYKLSAgICAgICAgaW1hZ2Ut
PmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBG
bG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRz
dywgdHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICBpbWFnZS0+ZHJhdyh0
aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6
ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gp
KSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgc2V0SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICB9
IGVsc2UKLSAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJl
Y3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9j
YXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwor
ICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0
LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigp
LCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKIH0KIAogI2lmICFQTEFURk9STShRVCkKQEAgLTcwMSw4ICs3MDUsMTQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlv
bikKIHsKKyAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVu
ZE1vZGVOb3JtYWwpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKK3sKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3Bl
cmF0aW9uOwotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wZXJh
dGlvbik7CisgICAgbV9zdGF0ZS5ibGVuZE1vZGUgPSBibGVuZE1vZGU7CisgICAgc2V0UGxhdGZv
cm1Db21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uLCBibGVuZE1vZGUpOwogfQog
CiBDb21wb3NpdGVPcGVyYXRvciBHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0ZU9wZXJhdGlvbigp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw2
ICsxNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIGZpbGxDb2xvclNw
YWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIHNoYWRvd0NvbG9yU3BhY2Uo
Q29sb3JTcGFjZURldmljZVJHQikKICAgICAgICAgICAgICwgY29tcG9zaXRlT3BlcmF0b3IoQ29t
cG9zaXRlU291cmNlT3ZlcikKKyAgICAgICAgICAgICwgYmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1h
bCkKICAgICAgICAgICAgICwgc2hvdWxkQW50aWFsaWFzKHRydWUpCiAgICAgICAgICAgICAsIHNo
b3VsZFNtb290aEZvbnRzKHRydWUpCiAgICAgICAgICAgICAsIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyh0cnVlKQpAQCAtMjAzLDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwogCiAgICAgICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yOworICAgICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlOwog
CiAgICAgICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIDogMTsKICAgICAgICAgYm9vbCBzaG91bGRT
bW9vdGhGb250cyA6IDE7CkBAIC0yNzEsNyArMjczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICAgICAgdm9pZCBkcmF3UGF0aChj
b25zdCBQYXRoJik7CiAKLSAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQ
dHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgSW1hZ2VPcmllbnRhdGlvbiA9
IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKKyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3Jp
ZW50YXRpb24pOwogCiAgICAgICAgIC8vIEFsbG93IGZvbnQgc21vb3RoaW5nIChMQ0QgYW50aWFs
aWFzaW5nKS4gTm90IHBhcnQgb2YgdGhlIGdyYXBoaWNzIHN0YXRlLgogICAgICAgICB2b2lkIHNl
dEFsbG93c0ZvbnRTbW9vdGhpbmcoYm9vbCk7CkBAIC0zMjIsMTggKzMyNCwxOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwogICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFn
ZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VP
dmVyLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBk
cmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICAg
ICAgCiAgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFBvaW50JiBzcmNQ
b2ludCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IElu
dFJlY3QmIHNyY1JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSA9IEltYWdlOjpTdHJl
dGNoVGlsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAKLSAgICAgICAgdm9p
ZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgY29uc3QgSW50UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBD
b21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAg
ICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICAgICAg
dm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lk
IGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50
UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAg
ICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0
eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwogCiAgICAgICAgIHZv
aWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAg
ICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBj
b25zdDsKQEAgLTQwMyw2ICs0MDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0QWxwaGEoZmxvYXQpOwogCiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgY2xpcChjb25zdCBQ
YXRoJik7CkBAIC01NTYsNyArNTYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0
IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgY2xlYXJQbGF0Zm9ybVNoYWRvdygp
OwogCi0gICAgICAgIHZvaWQgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0b3IpOworICAgICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgICAg
IHZvaWQgYmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpOwogICAg
ICAgICB2b2lkIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTEsOSArOTEsOSBAQCB2b2lkIEltYWdlOjpmaWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhp
Y3NDCiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwog
fQogCi12b2lkIEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVu
dW0pCit2b2lkIEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pCiB7Ci0gICAgZHJhdyhjdHgsIGRzdFJlY3QsIHNyY1Jl
Y3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lkIEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQpAQCAt
MTI5LDcgKzEyOSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGMK
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3Qu
eSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgo
ZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVj
dC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgICAg
IGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9w
KTsKKyAgICAgICAgZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHN0eWxlQ29s
b3JTcGFjZSwgb3AsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNpb24g
MTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDggKzE5Miw4IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShX
SU4pCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1Np
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAj
ZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSk7CiAgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBz
cmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKICAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxl
UnVsZSB2UnVsZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHZvaWQgY2xpcChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAotICAgICAgICB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBm
YWxzZSk7CisgICAgICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBDb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9h
dFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxl
ID0gZmFsc2UpOwogICAgICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKIAogICAg
ICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Qml0bWFwSW1hZ2VDYWlyby5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSwxMiArNzEsMTMgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUlt
YWdlQ2FpcgogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogfQogCi12b2lkIEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3ApCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCiB7Ci0gICAgZHJhdyhjb250ZXh0LCBkc3QsIHNyYywgc3R5bGVDb2xvclNwYWNlLCBv
cCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgZHJhdyhjb250ZXh0LCBkc3Qs
IHNyYywgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCit2b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsCisgICAgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFkc3Qu
d2lkdGgoKSB8fCAhZHN0LmhlaWdodCgpIHx8ICFzcmMud2lkdGgoKSB8fCAhc3JjLmhlaWdodCgp
KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCShy
ZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDYsNyArMTAw
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBhbHAKICAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+c2V0R2xvYmFsQWxwaGEoYWxwaGEpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkocmV2
aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDExICs5NywxMSBAQCB2
b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogCiB9CiAKIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9y
IG9wICwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIEJh
Y2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSBkZXN0aW5hdGlvbkNvbnRleHQgPT0gY29udGV4dCgp
ID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29udGV4
dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVD
b2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgRG9Ob3RSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAogdm9pZCBJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1h
cEltYWdlQ0cuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDEy
ICsxNTcsMTIgQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDRwogICAg
IHJldHVybiBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4oQWRvcHRDRiwgYXJyYXkpOwogfQogCi12b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3KGN0eCwgZHN0UmVjdCwgc3Jj
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7
CisgICAgZHJhdyhjdHgsIGRzdFJlY3QsIHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJs
ZW5kTW9kZSwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25F
bnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgc3Rh
cnRBbmltYXRpb24oKTsKIApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiAKICAgICBpZiAoc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBzZWxmU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgY29tcG9zaXRlT3AsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LT5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIHNlbGZTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBj
b21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNl
cnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2NSw3ICsyNjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3Rh
CiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0g
ZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UoaW1hZ2VQdHIpOwogCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZShOYQogICAgIGlmICghc2hvdWxkVXNlU3ViaW1hZ2UgJiYgY3Vy
ckhlaWdodCA8IGltYWdlU2l6ZS5oZWlnaHQoKSkKICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5z
ZXRIZWlnaHQoYWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQoKSAqIGN1cnJIZWlnaHQgLyBpbWFnZVNp
emUuaGVpZ2h0KCkpOwogCi0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3ApOwor
ICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOwogCiAgICAg
Ly8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApCiAg
ICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGFkanVzdGVkRGVzdFJlY3QueCgpLCBh
ZGp1c3RlZERlc3RSZWN0LnkoKSk7CkBAIC0xNjk4LDcgKzE2OTgsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRTCiAgICAgQ0dDb250ZXh0U2V0U2hvdWxkU21vb3Ro
Rm9udHMocGxhdGZvcm1Db250ZXh0KCksIGVuYWJsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBtb2Rl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZU9wZXJhdG9yIG1vZGUsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkocmV2aXNpb24gMTM2NTk3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw3ICsyNTksNyBAQCBOYXRpdmVJbWFnZVB0ciBJbWFn
ZUJ1ZmZlcjo6Y29weU5hdGl2ZUltCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi12b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
K3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIFVOVVNFRF9QQVJBTSh1c2VM
b3dRdWFsaXR5U2NhbGUpOwogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IChkZXN0Q29udGV4
dCA9PSBtX2NvbnRleHQpID8gQ29sb3JTcGFjZURldmljZVJHQiA6IHN0eWxlQ29sb3JTcGFjZTsK
QEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1
c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsK
LSAgICBkZXN0Q29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbnRlcm5hbFNp
emUoKSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3ApOworICAgIGRl
c3RDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSgpLCBj
b2xvclNwYWNlLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKIH0K
IAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBpbnQgUERGRG9jdW1lbnRJbWFnZTo6cGFnZUNvdW50
KCkgY29uc3QKICAgICByZXR1cm4gbV9kb2N1bWVudCA/IENHUERGRG9jdW1lbnRHZXROdW1iZXJP
ZlBhZ2VzKG1fZG9jdW1lbnQpIDogMDsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQor
dm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKCFtX2RvY3Vt
ZW50IHx8IG1fY3VycmVudFBhZ2UgPT0gLTEpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29u
c3Q7CiAKICAgICAgICAgUERGRG9jdW1lbnRJbWFnZSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFBhZ2UoaW50KTsKICAgICAgICAgaW50IHBhZ2VD
b3VudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkocmV2aXNpb24gMTM2NTk3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0QWxwaGEoZmxvYXQgb3BhCiAgICAgcC0+c2V0T3BhY2l0eShvcGFjaXR5KTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAJ
KHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlQnVmZmVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgUGFz
c1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZQogfQogCiB2b2lkIEltYWdlQnVm
ZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBpZiAoZGVzdENvbnRleHQgPT0gY29u
dGV4dCgpKSB7CiAgICAgICAgIC8vIFdlJ3JlIGRyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlci4g
IEluIG9yZGVyIGZvciB0aGlzIHRvIHdvcmssIHdlIG5lZWQgdG8gY29weSB0aGUgc291cmNlIGJ1
ZmZlciBmaXJzdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlUXQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDcgKzIz
Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEKIAogLy8gRHJh
d2luZyBSb3V0aW5lcwogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBG
bG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBRUmVjdEYgbm9y
bWFsaXplZERzdCA9IGRzdC5ub3JtYWxpemVkKCk7CiAgICAgUVJlY3RGIG5vcm1hbGl6ZWRTcmMg
PSBzcmMubm9ybWFsaXplZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvU3RpbGxJbWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIE5hdGl2ZUltYWdlUHRyIFN0aWxsSW1hZ2U6Om5h
dGl2ZUltYWdlRm8KIH0KIAogdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorICAgIGNv
bnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlKQogewogICAgIGlmIChtX3BpeG1hcC0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxs
SW1hZ2VRdC5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFN0aWxs
SW1hZ2UoY29uc3QgUVBpeG1hcCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWEuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIAog
cHJpdmF0ZToKICAgICBOYXRpdmVJbWFnZVNraWEgbV9uYXRpdmVJbWFnZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFw
aGljc0NvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYShm
bG9hdCBhbHAKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0QWxwaGEoYWxwaGEpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEu
Y3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDks
NyBAQCBzdGF0aWMgYm9vbCBkcmF3TmVlZHNDb3B5KEdyYXBoaWNzQ29udGV4CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjcmVhdGUoKm1fZGF0YS5tX3BsYXRmb3Jt
Q29udGV4dC5iaXRtYXAoKSwgZHJhd05lZWRzQ29weShtX2NvbnRleHQuZ2V0KCksIGNvbnRleHQp
KTsKICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9JbWFnZVNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01ODMsMTIgKzU4MywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlk
Q29sb3IoKQogICAgIH0KIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
KQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQogewotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgY29sb3JTcGFjZSwgY29t
cG9zaXRlT3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIGRyYXcoY3R4dCwg
ZHN0UmVjdCwgc3JjUmVjdCwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRG9O
b3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbikKIHsKICAgICBpZiAoIW1fc291cmNlLmluaXRpYWxpemVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTY0MywxMCArNjQzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiAKIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgZ28gaW50byBCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYS5jcHAKIAogdm9pZCBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3ApCisgICAgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAorICAgIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwKKyAgICBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwKKyAgICBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlKQogewogICAgIEZsb2F0UmVjdCBu
b3JtRHN0UmVjdCA9IG5vcm1hbGl6ZVJlY3QoZHN0UmVjdCk7CiAgICAgRmxvYXRSZWN0IG5vcm1T
cmNSZWN0ID0gbm9ybWFsaXplUmVjdChzcmNSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAJKHJldmlzaW9uIDEz
NjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBib29sIEJpdG1hcEltYWdlOjpn
ZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAgICAgaWYgKHNpemUpCiAgICAgICAgIGRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZSgmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lk
dGgsIGJtcEluZm8uYm1IZWlnaHQpLCBJbnRTaXplKCpzaXplKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KCZnYywgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGRyYXcoJmdjLCBGbG9h
dFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkp
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwpOwog
CiAgICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJlbGVhc2UoY2dDb250ZXh0KTsKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwog
ICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09
IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6
ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50
RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgc3R5bGVDb2xvclNw
YWNlLCBjb21wb3NpdGVPcCk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0
UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBzdHls
ZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICAgICAg
bV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3Vu
ZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEludFNpemUgaW1h
Z2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
KSwgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCk7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSksIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBA
IHZvaWQgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVyKEltYWcKICAgICAgICAgYnVmZmVy
LT5jb250ZXh0KCktPmNsZWFyUmVjdChlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpKTsKIAog
ICAgIC8vIERyYXcgU1ZHIG9uIHRvcCBvZiBJbWFnZUJ1ZmZlci4KLSAgICBkcmF3KGJ1ZmZlci0+
Y29udGV4dCgpLCBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpLCByZWN0LCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4
dCgpLCBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpLCByZWN0LCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgLy8gUmVz
ZXQgY29udGFpbmVyIHNpemUgJiB6b29tIHRvIGluaXRpYWwgc3RhdGUuIE90aGVyd2hpc2UgdGhl
IHNpemUoKSBvZiB0aGlzCiAgICAgLy8gaW1hZ2Ugd291bGQgcmV0dXJuIHdoYXRldmVyIGxhc3Qg
c2l6ZSB3YXMgc2V0IGJ5IGRyYXdTVkdUb0ltYWdlQnVmZmVyKCkuCkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZwogICAgIGZyYW1lLT52
aWV3KCktPmVuZERpc2FibGVSZXBhaW50cygpOwogfQogCi12b2lkIFNWR0ltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wKQordm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlKQogewogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0yNzcsNyArMjc3LDcgQEAgTmF0aXZlSW1hZ2VQ
dHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQwogICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCAxKTsKICAgICAgICAgaWYgKCFi
dWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgZHJhdyhidWZmZXIt
PmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgICAgIG1fZnJhbWVDYWNoZSA9IGJ1
ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIH0KICAgICByZXR1cm4gbV9m
cmFtZUNhY2hlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4
Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgo
c2l6ZV90KSB7IHJldHVybiAwOyB9CiAKICAgICBTVkdJbWFnZShJbWFnZU9ic2VydmVyKik7Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBm
cm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1Jl
Y3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlKTsKIAogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjgw
OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMDUgIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGFkb2Jl
LmNvbT4KKworICAgICAgICBFeHRlbmQgcGxhdGZvcm0gbGF5ZXIgc28gaXQgY2FuIHBhc3MgYmxl
bmQgbW9kZXMgdG8gdGhlIGNvbXBvc2l0aW5nIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxNzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRlcmZhY2UgY2hhbmdlcyBmb3IgdGhlIG5ldyBi
bGVuZCBtb2RlcworCisgICAgICAgICogdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpkcmF3KToKKwog
MjAxMi0xMi0wNSAgVGFrYXNoaSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgV2ViS2l0IGdhcmRlbmluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLAogICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkNv
bG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0
b3IpCisgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdl
YkNvcmU6OkJsZW5kTW9kZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAJKHJl
dmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXll
ckNocm9taXVtVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpDb2xvclNwYWNlLAotICAgICAgICAgICAgICAgICAg
ICAgIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yKQorICAgICAgICAgICAgICAgICAgICAgIFdl
YkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUpCiAgICAgewogICAg
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178089</attachid>
            <date>2012-12-06 15:11:54 -0800</date>
            <delta_ts>2012-12-06 16:03:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121206150918.patch</filename>
            <type>text/plain</type>
            <size>52550</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTEyLTA2ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJmYWNl
IGNoYW5nZXMgZm9yIHRoZSBuZXcgYmxlbmQgbW9kZXMKKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2Uu
aDoKKyAgICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRvckdlbmVyYXRlZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQ
REZEb2N1bWVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAg
ICAgIChTdGlsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1h
cEltYWdlU2luZ2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1D
b21wb3NpdGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEyLTEyLTA2ICBNaW4gUWluICA8
cWlubWluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlIExhenlEZWNvZGluZ1BpeGVsUmVm
IGluaGVyaXQgZnJvbSBza2lhOjpMYXp5UGl4ZWxSZWYgc28gdGhhdCBjYyB0aHJlYWQgY2FuIGFj
Y2VzcyBpdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDbwogICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1h
Z2UpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1hZ2Uu
Z2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBv
c2l0ZVNvdXJjZU92ZXIsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxp
dHlTY2FsZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICB9CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5ICsyMDcsOSBAQCBw
cm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IpOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICNpZiBVU0UoQ0cpIHx8IFBMQVRG
T1JNKENIUk9NSVVNKSB8fCBVU0UoQ0FJUk8pCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkgT1ZFUlJJREU7CiAj
ZW5kaWYKIAogI2lmIChPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODEsNyArODEsNyBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3Nm
CiAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbihjb21wb3NpdGVPcCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEz
Njg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURF
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCk7CiAKICAgICBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSogZnJvbUltYWdl
LCBJbWFnZSogdG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgSW50U2l6ZSBjcm9zc2ZhZGVTaXpl
LCBjb25zdCBJbnRTaXplJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJ
bWFnZS5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgR2VuZXJhdG9yR2VuZXJh
dGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqZGVzdENvbnRleHQpOwogICAgIGRlc3RDb250ZXh0LT5zZXRDb21w
b3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3ApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5oCShy
ZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0b3JHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
OCw3ICs0NjgsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQog
ewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQorICAgIGRyYXdJbWFnZShp
bWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCksIHNyYywgb3AsIEJsZW5kTW9k
ZU5vcm1hbCwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
biwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit7ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkg
fHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBmbG9hdCB0c3cgPSBzcmMud2lkdGgo
KTsKQEAgLTQ5OCw3ICs1MDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlKiBpCiAjZW5kaWYKICAgICB9CiAKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3Qo
ZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRp
b24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwgb3AsIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3Qo
ZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRp
b24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9k
ZSwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgaWYgKHVzZUxvd1F1YWxp
dHlTY2FsZSkKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0lu
dGVycG9sYXRpb25RdWFsaXR5KTsKQEAgLTUzOSwyNyArNTQzLDI3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWEKICAgICAgICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlz
LCBkZXN0LCBzcmNSZWN0LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgc3R5bGVDb2xv
clNwYWNlLCBvcCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50
UG9pbnQmIHAsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2Us
IHAsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3ApOworICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZSwgc3R5bGVDb2xvclNwYWNlLCBwLCBJbnRSZWN0KDAsIDAsIC0xLCAtMSksIG9wLCBibGVuZE1v
ZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIHIs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewotICAg
IGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCByLCBJbnRSZWN0KDAsIDAs
IC0xLCAtMSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGRyYXdJbWFnZUJ1ZmZlcihp
bWFnZSwgc3R5bGVDb2xvclNwYWNlLCByLCBJbnRSZWN0KDAsIDAsIC0xLCAtMSksIG9wLCBibGVu
ZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgSW50UG9pbnQmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQ
b2ludCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHls
ZUNvbG9yU3BhY2UsIEludFJlY3QoZGVzdCwgc3JjUmVjdC5zaXplKCkpLCBzcmNSZWN0LCBvcCk7
CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEludFJlY3QoZGVz
dCwgc3JjUmVjdC5zaXplKCkpLCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFn
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3QsIGNvbnN0
IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1h
Z2UsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QpLCBzcmNSZWN0LCBvcCwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFj
ZSwgRmxvYXRSZWN0KGRlc3QpLCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5
U2NhbGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CkBAIC01
ODcsMTAgKzU5MSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
CiAgICAgICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAg
ICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwog
I2VuZGlmCi0gICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRS
ZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxv
Y2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsK
KyAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVz
dC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24o
KSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2Fs
ZSk7CiAgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkocHJldmlvdXNJbnRlcnBv
bGF0aW9uUXVhbGl0eSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0
eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0
aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwg
dXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xv
clNwYWNlLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZs
b2F0UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCBibGVuZE1v
ZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKICNpZiAhUExBVEZPUk0oUVQpCkBAIC03MDEs
OCArNzA1LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUKIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRpb24pCiB7CisgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2RlTm9ybWFsKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRpb24sIEJsZW5kTW9kZSBibGVuZE1vZGUpCit7CiAgICAgbV9zdGF0ZS5jb21wb3NpdGVP
cGVyYXRvciA9IGNvbXBvc2l0ZU9wZXJhdGlvbjsKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24pOworICAgIG1fc3RhdGUuYmxlbmRNb2RlID0gYmxl
bmRNb2RlOworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wZXJh
dGlvbiwgYmxlbmRNb2RlKTsKIH0KIAogQ29tcG9zaXRlT3BlcmF0b3IgR3JhcGhpY3NDb250ZXh0
Ojpjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDEzNjg5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjUsNiArMTY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgLCBmaWxsQ29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKQogICAgICAgICAg
ICAgLCBzaGFkb3dDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAs
IGNvbXBvc2l0ZU9wZXJhdG9yKENvbXBvc2l0ZVNvdXJjZU92ZXIpCisgICAgICAgICAgICAsIGJs
ZW5kTW9kZShCbGVuZE1vZGVOb3JtYWwpCiAgICAgICAgICAgICAsIHNob3VsZEFudGlhbGlhcyh0
cnVlKQogICAgICAgICAgICAgLCBzaG91bGRTbW9vdGhGb250cyh0cnVlKQogICAgICAgICAgICAg
LCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKQEAgLTIwMyw2ICsyMDQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsK
IAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvcjsKKyAgICAgICAg
QmxlbmRNb2RlIGJsZW5kTW9kZTsKIAogICAgICAgICBib29sIHNob3VsZEFudGlhbGlhcyA6IDE7
CiAgICAgICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgOiAxOwpAQCAtMjcxLDcgKzI3Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAg
ICAgICAgIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpOwogCi0gICAgICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgICAg
IHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRh
dGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgICAgICAvLyBBbGxvdyBmb250
IHNtb290aGluZyAoTENEIGFudGlhbGlhc2luZykuIE5vdCBwYXJ0IG9mIHRoZSBncmFwaGljcyBz
dGF0ZS4KICAgICAgICAgdm9pZCBzZXRBbGxvd3NGb250U21vb3RoaW5nKGJvb2wpOwpAQCAtMzIy
LDE4ICszMjQsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRyYXdJbWFn
ZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAg
ICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRS
ZWN0KDAsIDAsIC0xLCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0g
RG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBm
YWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIAogICAgICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBJbnRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwogICAgICAgICB2b2lkIGRyYXdU
aWxlZEltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1
bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSA9IElt
YWdlOjpTdHJldGNoVGlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0g
ZmFsc2UpOwogCi0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYs
IENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGUgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJl
Y3QoMCwgMCwgLTEsIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9
IGZhbHNlKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Cisg
ICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgdm9pZCBk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9y
bWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRS
ZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9
IGZhbHNlKTsKIAogICAgICAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50
ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CkBAIC00MDMsNiArNDA2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEFscGhhKGZsb2F0KTsKIAogICAgICAgICB2b2lk
IHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHZvaWQg
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdDsKIAogICAg
ICAgICB2b2lkIGNsaXAoY29uc3QgUGF0aCYpOwpAQCAtNTU2LDcgKzU2MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgICAgICB2b2lk
IGNsZWFyUGxhdGZvcm1TaGFkb3coKTsKIAotICAgICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9z
aXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9y
bUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRN
b2RlTm9ybWFsKTsKIAogICAgICAgICB2b2lkIGJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KTsKICAgICAgICAgdm9pZCBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxh
eWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
CShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDkgKzkxLDkgQEAgdm9pZCBJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQwogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKQogewotICAgIGRy
YXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICBkcmF3
KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlKTsK
IH0KIAogdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZs
b2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCkKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0KiBjCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RS
ZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsK
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2Nh
bGUuaGVpZ2h0KCkpOwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVj
dCwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZp
c2libGVTcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBCbGVuZE1vZGVOb3JtYWwpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw4ICsxOTIsOCBAQCBwcm90
ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IpIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSk7
CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pOwogICAg
IHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAgICAgdm9p
ZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTM4LDcgKzEzOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2
b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAg
ICAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAw
LCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0KiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBi
b29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCk7CiAKICAgICAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1
bWluYW5jZU1hc2soKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCShyZXZpc2lvbiAxMzY4
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTIgKzcxLDEzIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZUNhaXIKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsK
IH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXcoY29udGV4dCwgZHN0LCBz
cmMsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwor
ICAgIGRyYXcoY29udGV4dCwgZHN0LCBzcmMsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9k
ZSwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAorICAgIEJsZW5kTW9k
ZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQogewogICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRzdC5oZWlnaHQoKSB8fCAhc3JjLndp
ZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0QWxw
aGEoZmxvYXQgYWxwCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEdsb2JhbEFscGhhKGFscGhh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NywxMSArOTcsMTEgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRl
eHQqCiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5h
dGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wICwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVh
bGl0eVNjYWxlKQogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSBkZXN0aW5hdGlv
bkNvbnRleHQgPT0gY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2lu
Z1N0b3JlOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoY29weU1vZGUpOwot
ICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9y
U3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
biwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJs
ZW5kTW9kZSwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0JpdG1hcEltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCShyZXZpc2lvbiAxMzY4OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU3LDEyICsxNTcsMTIgQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+IEJp
dG1hcEltYWdlOjpnZXRDRwogICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4oQWRvcHRD
RiwgYXJyYXkpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y3R4LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBk
cmF3KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgRG9Ob3RSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgZHJhdyhjdHgsIGRzdFJlY3QsIHNyY1JlY3QsIHN0
eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bik7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQor
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pCiB7CiAgICAgc3RhcnRBbmltYXRpb24oKTsKIApAQCAtMTgxLDcgKzE4MSw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KgogICAgIGlmIChzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKICAgICAg
ICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7
CiAKLSAgICBjdHh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIHNlbGZTaXplLCBzdHlsZUNvbG9y
U3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgb3JpZW50YXRpb24pOworICAg
IGN0eHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc2VsZlNpemUsIHN0eWxlQ29sb3JTcGFjZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsK
IAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlk
RHJhdyh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpyZXN0b3JlUGxhdGZvcm1TdGEKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3Jt
S25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0cik7CiAKQEAgLTMyNCw3ICszMjQsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hCiAgICAgaWYgKCFzaG91
bGRVc2VTdWJpbWFnZSAmJiBjdXJySGVpZ2h0IDwgaW1hZ2VTaXplLmhlaWdodCgpKQogICAgICAg
ICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpICog
Y3VyckhlaWdodCAvIGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihvcCk7CisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3As
IGJsZW5kTW9kZSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdp
biB0byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgYWRq
dXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpKTsKQEAgLTE2OTgsNyArMTY5
OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZFMKICAgICBDR0Nv
bnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhwbGF0Zm9ybUNvbnRleHQoKSwgZW5hYmxlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZU9wZXJhdG9yIG1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1D
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgbW9kZSwgQmxlbmRNb2RlKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBA
IE5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW0KICAgICByZXR1cm4gaW1h
Z2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29u
dGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHVzZUxvd1F1YWxpdHlTY2FsZSk7CiAgICAgQ29sb3JTcGFjZSBjb2xv
clNwYWNlID0gKGRlc3RDb250ZXh0ID09IG1fY29udGV4dCkgPyBDb2xvclNwYWNlRGV2aWNlUkdC
IDogc3R5bGVDb2xvclNwYWNlOwpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KgogCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9
IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBt
X3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFn
ZS5nZXQoKSwgaW50ZXJuYWxTaXplKCksIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIG9wKTsKKyAgICBkZXN0Q29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgp
LCBpbnRlcm5hbFNpemUoKSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9uIDEz
Njg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgaW50IFBERkRvY3Vt
ZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBDR1BE
RkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3VtZW50KSA6IDA7CiB9CiAKLXZvaWQgUERG
RG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQog
ewogICAgIGlmICghbV9kb2N1bWVudCB8fCBtX2N1cnJlbnRQYWdlID09IC0xKQogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IEludFNpemUgc2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIFBERkRvY3VtZW50SW1hZ2UoKTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldEN1cnJlbnRQYWdlKGludCk7
CiAgICAgICAgIGludCBwYWdlQ291bnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJ
KHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0Myw3ICsxMjQzLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IG9wYQogICAgIHAtPnNldE9w
YWNpdHkob3BhY2l0eSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVy
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlQnVmZmVyUXQuY3BwCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI2LDcgKzEyNiw3IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UK
IH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYg
KGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSkgewogICAgICAgICAvLyBXZSdyZSBkcmF3aW5nIGlu
dG8gb3VyIG93biBidWZmZXIuICBJbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLCB3ZSBuZWVkIHRv
IGNvcHkgdGhlIHNvdXJjZSBidWZmZXIgZmlyc3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxh
dGZvcm1EYXRhCiAKIC8vIERyYXdpbmcgUm91dGluZXMKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUp
CiB7CiAgICAgUVJlY3RGIG5vcm1hbGl6ZWREc3QgPSBkc3Qubm9ybWFsaXplZCgpOwogICAgIFFS
ZWN0RiBub3JtYWxpemVkU3JjID0gc3JjLm5vcm1hbGl6ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkocmV2
aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBOYXRpdmVJbWFn
ZVB0ciBTdGlsbEltYWdlOjpuYXRpdmVJbWFnZUZvCiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAotICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAobV9waXhtYXAtPmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1
YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRyYXco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBTdGlsbEltYWdlKGNvbnN0IFFQaXhtYXAmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0Jp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEu
aAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSk7CiAKIHByaXZhdGU6CiAgICAgTmF0aXZlSW1hZ2VTa2lhIG1fbmF0aXZl
SW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBo
aWNzQ29udGV4dFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDEzNjg5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0
U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEFs
cGhhKGFscGhhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9z
aXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNr
aWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wgZHJhd05lZWRzQ29weShHcmFwaGlj
c0NvbnRleAogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRl
KCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCksIGRyYXdOZWVkc0NvcHkobV9jb250
ZXh0LmdldCgpLCBjb250ZXh0KSk7CiAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgp
LCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgRG9Ob3RSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAJKHJldmlzaW9u
IDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VT
a2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDEyICs1ODMsMTIgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICB9CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1Jl
Y3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0
ZU9wLCBibGVuZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwogfQogCi12b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
RW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFtX3NvdXJjZS5pbml0
aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CkBAIC02NDMsMTAgKzY0MywxMCBAQCB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCoKIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQg
Z28gaW50byBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5jcHAKIAogdm9pZCBCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCisgICAgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LAorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKKyAgICBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwKKyAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlKQog
ewogICAgIEZsb2F0UmVjdCBub3JtRHN0UmVjdCA9IG5vcm1hbGl6ZVJlY3QoZHN0UmVjdCk7CiAg
ICAgRmxvYXRSZWN0IG5vcm1TcmNSZWN0ID0gbm9ybWFsaXplUmVjdChzcmNSZWN0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBi
b29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAgICAgaWYgKHNpemUpCiAg
ICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSgmZ2MsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBJbnRTaXplKCpzaXplKSwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBk
cmF3KCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5i
bUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CisgICAg
ICAgIGRyYXcoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJ
bmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBC
bGVuZE1vZGVOb3JtYWwpOwogCiAgICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJlbGVh
c2UoY2dDb250ZXh0KTsKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChp
bWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdl
R2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkg
ewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAg
ICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RS
ZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdo
dCgpKSwgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCk7CisgICAgICAgICAgICBkcmF3KGN0
eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1Np
emUuaGVpZ2h0KCkpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3Jt
YWwpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29y
cmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFt
ZQogICAgIEludFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwg
aW1hZ2VTaXplLmhlaWdodCgpKSwgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCk7CisgICAg
ZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZU5vcm1hbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVyKElt
YWcKICAgICAgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsZWFyUmVjdChlbmNsb3NpbmdJbnRSZWN0
KHNjYWxlZFJlY3QpKTsKIAogICAgIC8vIERyYXcgU1ZHIG9uIHRvcCBvZiBJbWFnZUJ1ZmZlci4K
LSAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3Qp
LCByZWN0LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBk
cmF3KGJ1ZmZlci0+Y29udGV4dCgpLCBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpLCByZWN0
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3Jt
YWwpOwogCiAgICAgLy8gUmVzZXQgY29udGFpbmVyIHNpemUgJiB6b29tIHRvIGluaXRpYWwgc3Rh
dGUuIE90aGVyd2hpc2UgdGhlIHNpemUoKSBvZiB0aGlzCiAgICAgLy8gaW1hZ2Ugd291bGQgcmV0
dXJuIHdoYXRldmVyIGxhc3Qgc2l6ZSB3YXMgc2V0IGJ5IGRyYXdTVkdUb0ltYWdlQnVmZmVyKCku
CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIo
SW1hZwogICAgIGZyYW1lLT52aWV3KCktPmVuZERpc2FibGVSZXBhaW50cygpOwogfQogCi12b2lk
IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQordm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0yNzcsNyArMjc3
LDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQwogICAgICAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCAx
KTsKICAgICAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3Qo
KSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAg
ICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgICAg
IG1fZnJhbWVDYWNoZSA9IGJ1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAg
IH0KICAgICByZXR1cm4gbV9mcmFtZUNhY2hlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDEz
Njg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KSB7IHJldHVybiAwOyB9CiAKICAgICBTVkdJbWFnZShJ
bWFnZU9ic2VydmVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29u
c3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIAogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
Zi5pbgkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsMTEgKzM3MywxMSBAQCBFWFBPUlRTCiAgICAgICAg
ID9kcmF3UGF0dGVybkBJbWFnZUBXZWJDb3JlQEBVQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJW
RmxvYXRSZWN0QDJAQUJWQWZmaW5lVHJhbnNmb3JtQDJAQUJWRmxvYXRQb2ludEAyQFc0Q29sb3JT
cGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkAxQFoKICAgICAgICAgP3JlcG9ydE1lbW9yeVVz
YWdlQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVCRVhQQVZNZW1vcnlPYmplY3RJbmZvQFdURkBAQFoK
ICAgICAgICAgP2RyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZUBCaXRtYXBJbWFnZUBXZWJDb3Jl
QEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJWRmxvYXRSZWN0QDJAQUJWSW50U2l6ZUAyQFc0
Q29sb3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBAWgotICAgICAgICA/ZHJhd0BJbWFn
ZUBXZWJDb3JlQEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJWRmxvYXRSZWN0QDJAMVc0Q29s
b3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBXNFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
RW51bUAyQEBaCi0gICAgICAgID9kcmF3QEJpdG1hcEltYWdlQFdlYkNvcmVAQE1BRVhQQVZHcmFw
aGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkAxVzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVP
cGVyYXRvckAyQEBaCisgICAgICAgID9kcmF3QEltYWdlQFdlYkNvcmVAQE1BRVhQQVZHcmFwaGlj
c0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkAxVzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVy
YXRvckAyQFc0QmxlbmRNb2RlQDJAVzRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW1AMkBAWgor
ICAgICAgICA/ZHJhd0BCaXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0
QDJAQUJWRmxvYXRSZWN0QDJAMVc0Q29sb3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBX
NEJsZW5kTW9kZUAyQEBaCiAgICAgICAgID9tYXlGaWxsV2l0aFNvbGlkQ29sb3JAQml0bWFwSW1h
Z2VAV2ViQ29yZUBATUFFX05YWgogICAgICAgICA/c29saWRDb2xvckBCaXRtYXBJbWFnZUBXZWJD
b3JlQEBNQkU/QVZDb2xvckAyQFhaCi0gICAgICAgID9kcmF3QEJpdG1hcEltYWdlQFdlYkNvcmVA
QE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkAxVzRDb2xvclNwYWNlQDJA
VzRDb21wb3NpdGVPcGVyYXRvckAyQFc0UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtQDJAQFoK
KyAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNzQ29udGV4
dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJhdG9yQDJA
VzRCbGVuZE1vZGVAMkBXNFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bUAyQEBaCiAgICAgICAg
ID9mcmFtZUNvdW50QEJpdG1hcEltYWdlQFdlYkNvcmVAQE1BRUlYWgogICAgICAgICA/YWRkQXV0
aG9yU2hlZXRARG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRQUVYVj8kUGFz
c1JlZlB0ckBWU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaCiAgICAgICAgID9w
YXJzZVN0cmluZ0BTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUFFX05BQlZTdHJpbmdAV1RG
QEBAWgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjg5MSkKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMTItMDYgIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4K
KworICAgICAgICBFeHRlbmQgcGxhdGZvcm0gbGF5ZXIgc28gaXQgY2FuIHBhc3MgYmxlbmQgbW9k
ZXMgdG8gdGhlIGNvbXBvc2l0aW5nIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRlcmZhY2UgY2hhbmdlcyBmb3IgdGhlIG5ldyBibGVuZCBt
b2RlcworCisgICAgICAgICogdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEltYWdlOjpkcmF3KToKKwogMjAxMi0x
Mi0wNiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjEzNTA4Mik6IFJlc3RvcmUgdGhlIGFiaWxpdHkgdG8gaW5zZXJ0IGF1dGhvciBsZXZlbCBz
dHlsZSBzaGVldHMgZnJvbSBzY3JpcHQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRHJhZ0ltYWdlVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLAogICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkNvbG9yU3BhY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IpCisgICAg
ICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNvcmU6OkJs
ZW5kTW9kZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAJKHJldmlzaW9uIDEz
Njg5MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVt
VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBXZWJDb3JlOjpDb2xvclNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgIFdlYkNv
cmU6OkNvbXBvc2l0ZU9wZXJhdG9yKQorICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNv
bXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUpCiAgICAgewogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178099</attachid>
            <date>2012-12-06 16:03:46 -0800</date>
            <delta_ts>2012-12-07 11:10:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121206160110.patch</filename>
            <type>text/plain</type>
            <size>52483</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTEyLTA2ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJmYWNl
IGNoYW5nZXMgZm9yIHRoZSBuZXcgYmxlbmQgbW9kZXMKKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2Uu
aDoKKyAgICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRvckdlbmVyYXRlZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQ
REZEb2N1bWVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAg
ICAgIChTdGlsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1h
cEltYWdlU2luZ2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1D
b21wb3NpdGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEyLTEyLTA2ICBNaW4gUWluICA8
cWlubWluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlIExhenlEZWNvZGluZ1BpeGVsUmVm
IGluaGVyaXQgZnJvbSBza2lhOjpMYXp5UGl4ZWxSZWYgc28gdGhhdCBjYyB0aHJlYWQgY2FuIGFj
Y2VzcyBpdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDbwogICAgICAgICAgICAgaWYgKG1fcHJlc2VudGVkSW1h
Z2UpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1hZ2Uu
Z2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBv
c2l0ZVNvdXJjZU92ZXIsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxp
dHlTY2FsZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29s
b3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICB9CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5ICsyMDcsOSBAQCBw
cm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IpOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICNpZiBVU0UoQ0cpIHx8IFBMQVRG
T1JNKENIUk9NSVVNKSB8fCBVU0UoQ0FJUk8pCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSkgT1ZFUlJJREU7CiAj
ZW5kaWYKIAogI2lmIChPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODEsNyArODEsNyBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3Nm
CiAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbihjb21wb3NpdGVPcCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEz
Njg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURF
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCk7CiAKICAgICBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSogZnJvbUltYWdl
LCBJbWFnZSogdG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgSW50U2l6ZSBjcm9zc2ZhZGVTaXpl
LCBjb25zdCBJbnRTaXplJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJ
bWFnZS5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgR2VuZXJhdG9yR2VuZXJh
dGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqZGVzdENvbnRleHQpOwogICAgIGRlc3RDb250ZXh0LT5zZXRDb21w
b3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3ApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5oCShy
ZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0b3JHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
OCw2ICs0NjgsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0g
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQog
eworICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCks
IHNyYywgb3AsIEJsZW5kTW9kZU5vcm1hbCwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24s
IHVzZUxvd1F1YWxpdHlTY2FsZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDk4
LDcgKzUwMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKICNl
bmRpZgogICAgIH0KIAotICAgIGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0
aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9h
dFNpemUodHN3LCB0c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgc2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24pOworICAgIGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0
aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9h
dFNpemUodHN3LCB0c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiAKICAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKQog
ICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlv
blF1YWxpdHkpOwpAQCAtNTM5LDI3ICs1NDQsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKEltYQogICAgICAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNy
Y1JlY3QsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBzdHlsZUNvbG9yU3BhY2UsIG9w
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYgcCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEludFBvaW50JiBwLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgcCwgSW50UmVj
dCgwLCAwLCAtMSwgLTEpLCBvcCk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNv
bG9yU3BhY2UsIHAsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIGJsZW5kTW9kZSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgciwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiByLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgZHJhd0ltYWdl
QnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwg
b3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHls
ZUNvbG9yU3BhY2UsIHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIGJsZW5kTW9kZSwgdXNl
TG93UXVhbGl0eVNjYWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBJbnRQb2ludCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFj
ZSwgSW50UmVjdChkZXN0LCBzcmNSZWN0LnNpemUoKSksIHNyY1JlY3QsIG9wKTsKKyAgICBkcmF3
SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgSW50UmVjdChkZXN0LCBzcmNSZWN0
LnNpemUoKSksIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlKQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVD
b2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCksIHNyY1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpOworICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJl
Y3QoZGVzdCksIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGlt
YWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVh
bGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NywxMCArNTky
LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW0KICAgICAgICAg
Ly8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9sYXRpb25Mb3cKICAgICAgICAgc2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CiAjZW5kaWYKLSAg
ICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdC5s
b2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwg
RmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICBp
bWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9u
KCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNp
emUodHN3LCB0c2gpKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAg
ICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRpb25RdWFs
aXR5KTsKICAgICB9IGVsc2UKLSAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNw
YWNlLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0
UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOworICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZs
b2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNy
Yy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKIH0KIAogI2lmICFQTEFURk9STShRVCkKQEAgLTcwMSw4ICs3MDYsMTQg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wZXJhdGlvbikKIHsKKyAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3Bl
cmF0aW9uLCBCbGVuZE1vZGVOb3JtYWwpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKK3sKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0g
Y29tcG9zaXRlT3BlcmF0aW9uOwotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wZXJhdGlvbik7CisgICAgbV9zdGF0ZS5ibGVuZE1vZGUgPSBibGVuZE1vZGU7Cisg
ICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uLCBibGVu
ZE1vZGUpOwogfQogCiBDb21wb3NpdGVPcGVyYXRvciBHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0
ZU9wZXJhdGlvbigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2NSw2ICsxNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAs
IGZpbGxDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIHNoYWRv
d0NvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQikKICAgICAgICAgICAgICwgY29tcG9zaXRl
T3BlcmF0b3IoQ29tcG9zaXRlU291cmNlT3ZlcikKKyAgICAgICAgICAgICwgYmxlbmRNb2RlKEJs
ZW5kTW9kZU5vcm1hbCkKICAgICAgICAgICAgICwgc2hvdWxkQW50aWFsaWFzKHRydWUpCiAgICAg
ICAgICAgICAsIHNob3VsZFNtb290aEZvbnRzKHRydWUpCiAgICAgICAgICAgICAsIHNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cyh0cnVlKQpAQCAtMjAzLDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwogCiAgICAgICAg
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yOworICAgICAgICBCbGVuZE1vZGUg
YmxlbmRNb2RlOwogCiAgICAgICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIDogMTsKICAgICAgICAg
Ym9vbCBzaG91bGRTbW9vdGhGb250cyA6IDE7CkBAIC0yNzEsNyArMjczLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKICAgICAgICAgdm9p
ZCBkcmF3UGF0aChjb25zdCBQYXRoJik7CiAKLSAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgSW1hZ2VP
cmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKKyAgICAgICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgICAgIC8vIEFsbG93IGZvbnQgc21vb3RoaW5n
IChMQ0QgYW50aWFsaWFzaW5nKS4gTm90IHBhcnQgb2YgdGhlIGdyYXBoaWNzIHN0YXRlLgogICAg
ICAgICB2b2lkIHNldEFsbG93c0ZvbnRTbW9vdGhpbmcoYm9vbCk7CkBAIC0zMjIsMTggKzMyNCwx
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50
YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwogICAgICAgICB2b2lkIGRy
YXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAg
ICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBE
b05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZh
bHNlKTsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IElu
dFBvaW50JiBzcmNQb2ludCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSA9
IEltYWdlOjpTdHJldGNoVGlsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlID0gSW1hZ2U6OlN0cmV0
Y2hUaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAK
LSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9
IGZhbHNlKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
KTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAt
MSwgLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwor
ICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgdm9p
ZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9
IGZhbHNlKTsKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwog
CiAgICAgICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoKSBjb25zdDsKQEAgLTQwMyw2ICs0MDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOwogCiAgICAgICAgIHZvaWQgc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdm9pZCBzZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAgICAgICAgIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0OwogCiAgICAgICAgIHZvaWQg
Y2xpcChjb25zdCBQYXRoJik7CkBAIC01NTYsNyArNTYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0
IGJsdXIsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgY2xlYXJQbGF0
Zm9ybVNoYWRvdygpOwogCi0gICAgICAgIHZvaWQgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlT3BlcmF0b3IpOworICAgICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
OwogCiAgICAgICAgIHZvaWQgYmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9w
YWNpdHkpOwogICAgICAgICB2b2lkIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHJldmlzaW9u
IDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTEsOSArOTEsOSBAQCB2b2lkIEltYWdlOjpmaWxsV2l0aFNvbGlk
Q29sb3IoR3JhcGhpY3NDCiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3Vz
T3BlcmF0b3IpOwogfQogCi12b2lkIEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbkVudW0pCit2b2lkIEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pCiB7Ci0gICAgZHJhdyhjdHgsIGRz
dFJlY3QsIHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgIGRyYXcoY3R4LCBkc3RS
ZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lk
IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBz
Y2FsZWRUaWxlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQqIGMKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0g
b25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1Jl
Y3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAgICAgICB2
aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQo
KSk7Ci0gICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBzdHlsZUNv
bG9yU3BhY2UsIG9wKTsKKyAgICAgICAgZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1Jl
Y3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDggKzE5Miw4IEBAIHByb3RlY3RlZDoKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSk7CiAgICAgdm9pZCBkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKICAgICB2b2lkIGRyYXdUaWxl
ZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxl
IGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyAr
MTM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHZvaWQgY2xpcChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAotICAgICAgICB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSks
IENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBD
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlID0gZmFsc2UpOwogICAgICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KTsKIAogICAgICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFz
aygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMiArNzEsMTMgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcElt
YWdlKE5hdGl2ZUltYWdlQ2FpcgogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogfQogCi12b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgZHJhdyhjb250ZXh0LCBkc3QsIHNyYywgc3R5bGVD
b2xvclNwYWNlLCBvcCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgZHJhdyhj
b250ZXh0LCBkc3QsIHNyYywgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBEb05vdFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCisgICAgQmxlbmRNb2RlLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAg
ICAgaWYgKCFkc3Qud2lkdGgoKSB8fCAhZHN0LmhlaWdodCgpIHx8ICFzcmMud2lkdGgoKSB8fCAh
c3JjLmhlaWdodCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMDYsNyArMTAwNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBh
bHAKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0R2xvYmFsQWxwaGEoYWxwaGEpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDEx
ICs5NywxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCoKIH0KIAog
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AgLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUp
CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9kZSA9IGRlc3RpbmF0aW9uQ29udGV4dCA9
PSBjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dR
dWFsaXR5U2NhbGUpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdl
dCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBE
b05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2
b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTcsMTIgKzE1NywxMiBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6
OmdldENHCiAgICAgcmV0dXJuIFJldGFpblB0cjxDRkFycmF5UmVmPihBZG9wdENGLCBhcnJheSk7
CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXcoY3R4LCBk
c3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKTsKKyAgICBkcmF3KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNw
YWNlLCBvcCwgYmxlbmRNb2RlLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAot
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCit2b2lkIEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikK
IHsKICAgICBzdGFydEFuaW1hdGlvbigpOwogCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqCiAgICAgaWYgKHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICBvcmllbnRh
dGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAotICAgIGN0
eHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc2VsZlNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBvcmllbnRhdGlvbik7CisgICAgY3R4dC0+ZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBzZWxmU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwg
c3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYg
KGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQ
bGF0Zm9ybVN0YQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJ
ZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGltYWdlKGltYWdlUHRyKTsKIApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmEKICAgICBpZiAoIXNob3VsZFVzZVN1Ymlt
YWdlICYmIGN1cnJIZWlnaHQgPCBpbWFnZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgIGFkanVzdGVk
RGVzdFJlY3Quc2V0SGVpZ2h0KGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkgKiBjdXJySGVpZ2h0
IC8gaW1hZ2VTaXplLmhlaWdodCgpKTsKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0
aW9uKG9wKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2Rl
KTsKIAogICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0
ICgwLCAwKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3RlZERlc3RS
ZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwpAQCAtMTY5OCw3ICsxNjk4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkUwogICAgIENHQ29udGV4dFNldFNo
b3VsZFNtb290aEZvbnRzKHBsYXRmb3JtQ29udGV4dCgpLCBlbmFibGUpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3Bl
cmF0b3IgbW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBtb2RlLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlz
aW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNyArMjU5LDcgQEAgTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbQogICAgIHJldHVybiBpbWFnZTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENv
bnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURf
UEFSQU0odXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAo
ZGVzdENvbnRleHQgPT0gbV9jb250ZXh0KSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNv
bG9yU3BhY2U7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsK
ICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlv
blNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bnRlcm5hbFNpemUoKSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3Ap
OworICAgIGRlc3RDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGludGVybmFs
U2l6ZSgpLCBjb2xvclNwYWNlLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgYmxlbmRN
b2RlKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBpbnQgUERGRG9jdW1lbnRJbWFnZTo6
cGFnZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kb2N1bWVudCA/IENHUERGRG9jdW1lbnRH
ZXROdW1iZXJPZlBhZ2VzKG1fZG9jdW1lbnQpIDogMDsKIH0KIAotdm9pZCBQREZEb2N1bWVudElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYg
KCFtX2RvY3VtZW50IHx8IG1fY3VycmVudFBhZ2UgPT0gLTEpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmgJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBz
aXplKCkgY29uc3Q7CiAKICAgICAgICAgUERGRG9jdW1lbnRJbWFnZSgpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
KTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFBhZ2UoaW50KTsKICAgICAgICAg
aW50IHBhZ2VDb3VudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkocmV2aXNpb24g
MTM2ODkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0QWxwaGEoZmxvYXQgb3BhCiAgICAgcC0+c2V0T3BhY2l0eShvcGFj
aXR5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUp
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZm
ZXJRdC5jcHAJKHJldmlzaW9uIDEzNjg5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2
LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZQogfQogCiB2b2lk
IEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBpZiAoZGVzdENvbnRl
eHQgPT0gY29udGV4dCgpKSB7CiAgICAgICAgIC8vIFdlJ3JlIGRyYXdpbmcgaW50byBvdXIgb3du
IGJ1ZmZlci4gIEluIG9yZGVyIGZvciB0aGlzIHRvIHdvcmssIHdlIG5lZWQgdG8gY29weSB0aGUg
c291cmNlIGJ1ZmZlciBmaXJzdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMyLDcgKzIzMiw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEK
IAogLy8gRHJhd2luZyBSb3V0aW5lcwogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAotICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBR
UmVjdEYgbm9ybWFsaXplZERzdCA9IGRzdC5ub3JtYWxpemVkKCk7CiAgICAgUVJlY3RGIG5vcm1h
bGl6ZWRTcmMgPSBzcmMubm9ybWFsaXplZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCShyZXZpc2lvbiAxMzY4
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIE5hdGl2ZUltYWdlUHRyIFN0aWxs
SW1hZ2U6Om5hdGl2ZUltYWdlRm8KIH0KIAogdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlmIChtX3BpeG1hcC0+aXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxs
SW1hZ2VRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1N0aWxsSW1hZ2VRdC5oCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBJbnRTaXpl
IHNpemUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFN0aWxsSW1hZ2UoY29uc3QgUVBpeG1hcCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VT
aW5nbGVGcmFtZVNraWEuaAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlKTsKIAogcHJpdmF0ZToKICAgICBOYXRpdmVJbWFnZVNraWEgbV9uYXRpdmVJbWFnZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0
U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRBbHBoYShmbG9hdCBhbHAKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0QWxwaGEoYWxwaGEp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1
ZmZlclNraWEuY3BwCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBkcmF3TmVlZHNDb3B5KEdyYXBoaWNzQ29udGV4CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVy
YXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgUmVmUHRyPElt
YWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpjcmVhdGUoKm1fZGF0YS5t
X3BsYXRmb3JtQ29udGV4dC5iaXRtYXAoKSwgZHJhd05lZWRzQ29weShtX2NvbnRleHQuZ2V0KCks
IGNvbnRleHQpKTsKICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29s
b3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAkocmV2aXNpb24gMTM2ODkxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01ODMsMTIgKzU4MywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVj
a0ZvclNvbGlkQ29sb3IoKQogICAgIH0KIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgY29sb3JT
cGFjZSwgY29tcG9zaXRlT3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgY29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIGJsZW5k
TW9kZSwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikKIHsKICAgICBpZiAoIW1fc291cmNlLmluaXRpYWxpemVkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTY0MywxMCArNjQzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KgogLy8gRklYTUU6IFRoZXNlIHNob3VsZCBnbyBpbnRvIEJp
dG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmNwcAogCiB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJh
bWVTa2lhOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCisgICAgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LAorICAgIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLAor
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAgICAgRmxv
YXRSZWN0IG5vcm1Ec3RSZWN0ID0gbm9ybWFsaXplUmVjdChkc3RSZWN0KTsKICAgICBGbG9hdFJl
Y3Qgbm9ybVNyY1JlY3QgPSBub3JtYWxpemVSZWN0KHNyY1JlY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAkocmV2
aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgQml0bWFw
SW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0KICAgICBpZiAoc2l6ZSkKICAgICAgICAgZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcElu
Zm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEludFNpemUoKnNpemUpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoJmdjLCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhdygm
Z2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWln
aHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5o
ZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5v
cm1hbCk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRl
eHQpOwpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjCiAgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChp
bWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAg
ICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBt
X2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0
UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBzdHls
ZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQo
KSksIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAg
ICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmMKIAogICAgIC8vIE5vIGltYWdlIG9mIHRoZSBjb3JyZWN0IHNpemUg
d2FzIGZvdW5kLCBmYWxsYmFjayB0byBkcmF3aW5nIHRoZSBjdXJyZW50IGZyYW1lCiAgICAgSW50
U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0
UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUu
aGVpZ2h0KCkpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wKTsKKyAgICBkcmF3KGN0eHQs
IGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpKSwgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9y
bWFsKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyAr
MTQ2LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1NWR1RvSW1hZ2VCdWZmZXIoSW1hZwogICAgICAg
ICBidWZmZXItPmNvbnRleHQoKS0+Y2xlYXJSZWN0KGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVj
dCkpOwogCiAgICAgLy8gRHJhdyBTVkcgb24gdG9wIG9mIEltYWdlQnVmZmVyLgotICAgIGRyYXco
YnVmZmVyLT5jb250ZXh0KCksIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCksIHJlY3QsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGRyYXcoYnVmZmVy
LT5jb250ZXh0KCksIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCksIHJlY3QsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAKICAg
ICAvLyBSZXNldCBjb250YWluZXIgc2l6ZSAmIHpvb20gdG8gaW5pdGlhbCBzdGF0ZS4gT3RoZXJ3
aGlzZSB0aGUgc2l6ZSgpIG9mIHRoaXMKICAgICAvLyBpbWFnZSB3b3VsZCByZXR1cm4gd2hhdGV2
ZXIgbGFzdCBzaXplIHdhcyBzZXQgYnkgZHJhd1NWR1RvSW1hZ2VCdWZmZXIoKS4KQEAgLTE2Nyw3
ICsxNjcsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFnCiAgICAg
ZnJhbWUtPnZpZXcoKS0+ZW5kRGlzYWJsZVJlcGFpbnRzKCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3ApCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBOYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgICAgIE93blB0cjxJbWFn
ZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEpOwogICAgICAg
ICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBkcmF3
KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgbV9mcmFtZUNh
Y2hlID0gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgfQogICAgIHJl
dHVybiBtX2ZyYW1lQ2FjaGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTM2ODkxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGZyYW1l
QXRJbmRleChzaXplX3QpIHsgcmV0dXJuIDA7IH0KIAogICAgIFNWR0ltYWdlKEltYWdlT2JzZXJ2
ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUpOwogCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmLmluCShyZXZp
c2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTM3MywxMSArMzczLDExIEBAIEVYUE9SVFMKICAgICAgICAgP2RyYXdQYXR0
ZXJuQEltYWdlQFdlYkNvcmVAQFVBRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RA
MkBBQlZBZmZpbmVUcmFuc2Zvcm1AMkBBQlZGbG9hdFBvaW50QDJAVzRDb2xvclNwYWNlQDJAVzRD
b21wb3NpdGVPcGVyYXRvckAyQDFAWgogICAgICAgICA/cmVwb3J0TWVtb3J5VXNhZ2VAQml0bWFw
SW1hZ2VAV2ViQ29yZUBAVUJFWFBBVk1lbW9yeU9iamVjdEluZm9AV1RGQEBAWgogICAgICAgICA/
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplQEJpdG1hcEltYWdlQFdlYkNvcmVAQE1BRVhQQVZH
cmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkBBQlZJbnRTaXplQDJAVzRDb2xvclNwYWNl
QDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQEBaCi0gICAgICAgID9kcmF3QEltYWdlQFdlYkNvcmVA
QE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkAxVzRDb2xvclNwYWNlQDJA
VzRDb21wb3NpdGVPcGVyYXRvckAyQFc0UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtQDJAQFoK
LSAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNzQ29udGV4
dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJhdG9yQDJA
QFoKKyAgICAgICAgP2RyYXdASW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNzQ29udGV4dEAy
QEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJhdG9yQDJAVzRC
bGVuZE1vZGVAMkBXNFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bUAyQEBaCisgICAgICAgID9k
cmF3QEJpdG1hcEltYWdlQFdlYkNvcmVAQE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9h
dFJlY3RAMkAxVzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQFc0QmxlbmRNb2Rl
QDJAQFoKICAgICAgICAgP21heUZpbGxXaXRoU29saWRDb2xvckBCaXRtYXBJbWFnZUBXZWJDb3Jl
QEBNQUVfTlhaCiAgICAgICAgID9zb2xpZENvbG9yQEJpdG1hcEltYWdlQFdlYkNvcmVAQE1CRT9B
VkNvbG9yQDJAWFoKLSAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdy
YXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0
ZU9wZXJhdG9yQDJAVzRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW1AMkBAWgorICAgICAgICA/
ZHJhd0BCaXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJWRmxv
YXRSZWN0QDJAMVc0Q29sb3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBXNEJsZW5kTW9k
ZUAyQFc0UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtQDJAQFoKICAgICAgICAgP2ZyYW1lQ291
bnRAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFSVhaCiAgICAgICAgID9hZGRBdXRob3JTaGVldEBE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uQFdlYkNvcmVAQFFBRVhWPyRQYXNzUmVmUHRyQFZT
dHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP3BhcnNlU3RyaW5n
QFN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBRQUVfTkFCVlN0cmluZ0BXVEZAQEBaCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2ODkxKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAor
MjAxMi0xMi0wNiAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAg
IEV4dGVuZCBwbGF0Zm9ybSBsYXllciBzbyBpdCBjYW4gcGFzcyBibGVuZCBtb2RlcyB0byB0aGUg
Y29tcG9zaXRpbmcgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDE3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEludGVyZmFjZSBjaGFuZ2VzIGZvciB0aGUgbmV3IGJsZW5kIG1vZGVzCisKKyAg
ICAgICAgKiB0ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJ
bWFnZTo6ZHJhdyk6CisgICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OmRyYXcpOgorCiAyMDEyLTEyLTA2ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTM1MDgy
KTogUmVzdG9yZSB0aGUgYWJpbGl0eSB0byBpbnNlcnQgYXV0aG9yIGxldmVsIHN0eWxlIHNoZWV0
cyBmcm9tIHNjcmlwdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1h
Z2VUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Ry
YWdJbWFnZVRlc3QuY3BwCShyZXZpc2lvbiAxMzY4OTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsCiAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6Q29sb3JTcGFjZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvcikKKyAgICAgICAgICAgICAg
ICAgICAgICBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2RlKQog
ICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VM
YXllckNocm9taXVtVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAkocmV2aXNpb24gMTM2ODkxKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9z
aXRlT3BlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3Bl
cmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSkKICAgICB7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178242</attachid>
            <date>2012-12-07 11:11:00 -0800</date>
            <delta_ts>2012-12-07 13:55:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121207110824.patch</filename>
            <type>text/plain</type>
            <size>52243</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTEyLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJmYWNl
IGNoYW5nZXMgZm9yIHRoZSBuZXcgYmxlbmQgbW9kZXMKKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2Uu
aDoKKyAgICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdG9yR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRvckdlbmVyYXRlZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0
ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQ
REZEb2N1bWVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAg
ICAgIChTdGlsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1h
cEltYWdlU2luZ2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1D
b21wb3NpdGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZVNpbmdsZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEyLTEyLTAzICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJTlBVVF9NVUxUSVBMRV9GSUVMRFNf
VUkgZG9lc24ndCBzaG93IGRpZ2l0cyB3ZWxsIGluIFJUTCBsb2NhbGVzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGlj
c0NvCiAgICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgRG9Ob3RS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBvc2l0
ZVNvdXJjZU92ZXIsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhl
bFNuYXBwZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWws
IHVzZUxvd1F1YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMTM2
NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjA3LDkgKzIwNyw5IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNy
Y1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAj
ZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUpOwogI2lmIFVTRShDRykgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFVTRShD
QUlSTykKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVu
dW0pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgUmVzcGVj
dEltYWdlT3JpZW50YXRpb25FbnVtKSBPVkVSUklERTsKICNlbmRpZgogCiAjaWYgKE9TKFdJTkNF
KSAmJiAhUExBVEZPUk0oUVQpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNp
b24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2YKICAgICBjb250ZXh0LT5lbmRUcmFu
c3BhcmVuY3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4
dCk7CiAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKIAogICAgIENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9h
dCBwZXJjZW50YWdlLCBJbnRTaXplIGNyb3NzZmFkZVNpemUsIGNvbnN0IEludFNpemUmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ip
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTM2
NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJh
dGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wKQordm9pZCBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpkZXN0
Q29udGV4dCk7CiAgICAgZGVzdENvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3Np
dGVPcCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JH
ZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2
aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDcgKzQ2OCwxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSB8fCAhaW1hZ2UpCisgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2Us
IEZsb2F0UmVjdChkZXN0KSwgc3JjLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSkKK3sgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGZsb2F0IHRzdyA9IHNyYy53aWR0aCgpOwpAQCAtNDk4LDcgKzUwMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKICNlbmRpZgogICAgIH0K
IAotICAgIGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0
U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0
c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24p
OworICAgIGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0
U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0
c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbik7CiAKICAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKQogICAgICAgICBzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkpOwpA
QCAtNTM5LDI3ICs1NDMsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdl
KEltYQogICAgICAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNyY1JlY3QsIHRpbGVT
Y2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBw
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3
SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgcCwgSW50UmVjdCgwLCAwLCAtMSwg
LTEpLCBvcCk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHAs
IEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBj
b25zdCBJbnRSZWN0JiByLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdl
LCBzdHlsZUNvbG9yU3BhY2UsIHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2Us
IHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNj
YWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYg
ZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0LCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgSW50UmVjdChk
ZXN0LCBzcmNSZWN0LnNpemUoKSksIHNyY1JlY3QsIG9wKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIo
aW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgSW50UmVjdChkZXN0LCBzcmNSZWN0LnNpemUoKSksIHNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEludFJlY3QmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0
eVNjYWxlKQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBG
bG9hdFJlY3QoZGVzdCksIHNyY1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCksIHNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NywxMCArNTkxLDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW0KICAgICAgICAgLy8gRklYTUUgKDQ5
MDAyKTogU2hvdWxkIGJlIEludGVycG9sYXRpb25Mb3cKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CiAjZW5kaWYKLSAgICAgICAgaW1hZ2Ut
PmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBG
bG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRz
dywgdHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICBpbWFnZS0+ZHJhdyh0
aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6
ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gp
KSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgc2V0SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICB9
IGVsc2UKLSAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJl
Y3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9j
YXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwor
ICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0
LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigp
LCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKIH0KIAogI2lmICFQTEFURk9STShRVCkKQEAgLTY5OSwxMCArNzAzLDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUKIH0KICNlbmRpZgogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wZXJhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQogewogICAgIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRp
b247Ci0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9u
KTsKKyAgICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKKyAgICBzZXRQbGF0Zm9ybUNv
bXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CiB9CiAKIENv
bXBvc2l0ZU9wZXJhdG9yIEdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRlT3BlcmF0aW9uKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgZmlsbENvbG9yU3BhY2Uo
Q29sb3JTcGFjZURldmljZVJHQikKICAgICAgICAgICAgICwgc2hhZG93Q29sb3JTcGFjZShDb2xv
clNwYWNlRGV2aWNlUkdCKQogICAgICAgICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihDb21wb3Np
dGVTb3VyY2VPdmVyKQorICAgICAgICAgICAgLCBibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQog
ICAgICAgICAgICAgLCBzaG91bGRBbnRpYWxpYXModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxk
U21vb3RoRm9udHModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKHRydWUpCkBAIC0yMDMsNiArMjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3I7CisgICAgICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CiAKICAg
ICAgICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwogICAgICAgICBib29sIHNob3VsZFNtb290
aEZvbnRzIDogMTsKQEAgLTI3MSw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0
IFBhdGgmKTsKIAotICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uID0gRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pOworICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbik7CiAKICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNp
bmcpLiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxs
b3dzRm9udFNtb290aGluZyhib29sKTsKQEAgLTMyMiwxOCArMzI0LDE5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VM
b3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAogICAgICAg
ICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRp
b24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJ
bWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdl
T3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICAK
ICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hU
aWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VP
dmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBj
b25zdCBJbnRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7
Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAg
ICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lk
IGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSA9IGZhbHNlKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEludFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0
JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAg
ICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJs
ZW5kTW9kZU5vcm1hbCk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBz
ZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICAg
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0
OwpAQCAtNDAyLDcgKzQwNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IHNldEFscGhhKGZsb2F0KTsKIAotICAgICAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdDsKIAogICAgICAgICB2
b2lkIGNsaXAoY29uc3QgUGF0aCYpOwpAQCAtNTU2LDcgKzU1OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBm
bG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIGNsZWFy
UGxhdGZvcm1TaGFkb3coKTsKIAotICAgICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9y
bWFsKTsKIAogICAgICAgICB2b2lkIGJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9h
dCBvcGFjaXR5KTsKICAgICAgICAgdm9pZCBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShyZXZp
c2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDkgKzkxLDkgQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhT
b2xpZENvbG9yKEdyYXBoaWNzQwogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2
aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKQogewotICAgIGRyYXcoY3R4
LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICBkcmF3KGN0eCwg
ZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlKTsKIH0KIAog
dm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgc2NhbGVkVGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3Jh
cGhpY3NDb250ZXh0KiBjCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0Lnko
KSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAg
ICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVp
Z2h0KCkpOwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgc3R5
bGVDb2xvclNwYWNlLCBvcCk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVT
cmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw4ICsxOTIsOCBAQCBwcm90ZWN0ZWQ6
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IpIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSk7CisgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pOwogICAgIHZvaWQg
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAgICAgdm9pZCBkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxl
UnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2b2lkIGNs
aXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICAgICAg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwg
LTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0
KiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVz
ZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCk7CiAKICAgICAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jp
dG1hcEltYWdlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCShyZXZpc2lvbiAxMzY1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTIgKzcxLDEzIEBAIEJpdG1hcEltYWdlOjpCaXRt
YXBJbWFnZShOYXRpdmVJbWFnZUNhaXIKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIH0KIAot
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXcoY29udGV4dCwgZHN0LCBzcmMsIHN0
eWxlQ29sb3JTcGFjZSwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIGRy
YXcoY29udGV4dCwgZHN0LCBzcmMsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSwgRG9O
b3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAorICAgIEJsZW5kTW9kZSwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQog
ewogICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRzdC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkg
fHwgIXNyYy5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0QWxwaGEoZmxv
YXQgYWxwCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEdsb2JhbEFscGhhKGFscGhhKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NywxMSArOTcsMTEgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIAog
fQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25D
b250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciBvcCAsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSkKIHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNvcHlNb2RlID0gZGVzdGluYXRpb25Db250
ZXh0ID09IGNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9y
ZTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBk
ZXN0aW5hdGlvbkNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVz
ZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1h
Z2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1v
ZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NywxMiArMTU3LDEyIEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJ
bWFnZTo6Z2V0Q0cKICAgICByZXR1cm4gUmV0YWluUHRyPENGQXJyYXlSZWY+KEFkb3B0Q0YsIGFy
cmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgZHJhdyhj
dHgsIGRzdFJlY3QsIHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIERvTm90UmVzcGVjdElt
YWdlT3JpZW50YXRpb24pOworICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNv
bG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwog
fQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQogewogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAgaWYgKHNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICBv
cmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAot
ICAgIGN0eHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc2VsZlNpemUsIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBvcmllbnRhdGlvbik7CisgICAgY3R4
dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzZWxmU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJl
c3RvcmVQbGF0Zm9ybVN0YQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93
blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGltYWdlKGltYWdlUHRyKTsKIApAQCAtMzI0LDcgKzMyNCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmEKICAgICBpZiAoIXNob3VsZFVz
ZVN1YmltYWdlICYmIGN1cnJIZWlnaHQgPCBpbWFnZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgIGFk
anVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkgKiBjdXJy
SGVpZ2h0IC8gaW1hZ2VTaXplLmhlaWdodCgpKTsKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRl
T3BlcmF0aW9uKG9wKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxl
bmRNb2RlKTsKIAogICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRv
IGJlIGF0ICgwLCAwKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3Rl
ZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwpAQCAtMTY5OCw3ICsxNjk4LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkUwogICAgIENHQ29udGV4
dFNldFNob3VsZFNtb290aEZvbnRzKHBsYXRmb3JtQ29udGV4dCgpLCBlbmFibGUpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlT3BlcmF0b3IgbW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBtb2RlLCBCbGVuZE1vZGUpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJ
KHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNyArMjU5LDcgQEAgTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbQogICAgIHJldHVybiBpbWFnZTsK
IH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VM
b3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
ZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBV
TlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UgPSAoZGVzdENvbnRleHQgPT0gbV9jb250ZXh0KSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBz
dHlsZUNvbG9yU3BhY2U7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIAogCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNy
Y1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jl
c29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZS5n
ZXQoKSwgaW50ZXJuYWxTaXplKCksIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIG9wKTsKKyAgICBkZXN0Q29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bnRlcm5hbFNpemUoKSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3As
IGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNjU5
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgaW50IFBERkRvY3VtZW50
SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBDR1BERkRv
Y3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3VtZW50KSA6IDA7CiB9CiAKLXZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewog
ICAgIGlmICghbV9kb2N1bWVudCB8fCBtX2N1cnJlbnRQYWdlID09IC0xKQogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIElu
dFNpemUgc2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIFBERkRvY3VtZW50SW1hZ2UoKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldEN1cnJlbnRQYWdlKGludCk7CiAg
ICAgICAgIGludCBwYWdlQ291bnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHJl
dmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IG9wYQogICAgIHAtPnNldE9wYWNp
dHkob3BhY2l0eSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlQnVmZmVyUXQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2
LDcgKzEyNiw3IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UKIH0K
IAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVP
cGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKGRl
c3RDb250ZXh0ID09IGNvbnRleHQoKSkgewogICAgICAgICAvLyBXZSdyZSBkcmF3aW5nIGludG8g
b3VyIG93biBidWZmZXIuICBJbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLCB3ZSBuZWVkIHRvIGNv
cHkgdGhlIHNvdXJjZSBidWZmZXIgZmlyc3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZv
cm1EYXRhCiAKIC8vIERyYXdpbmcgUm91dGluZXMKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7
CiAgICAgUVJlY3RGIG5vcm1hbGl6ZWREc3QgPSBkc3Qubm9ybWFsaXplZCgpOwogICAgIFFSZWN0
RiBub3JtYWxpemVkU3JjID0gc3JjLm5vcm1hbGl6ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkocmV2aXNp
b24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJ
bWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBOYXRpdmVJbWFnZVB0
ciBTdGlsbEltYWdlOjpuYXRpdmVJbWFnZUZvCiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAotICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBvcCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAobV9waXhtYXAtPmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9TdGlsbEltYWdlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
SW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBTdGlsbEltYWdlKGNvbnN0IFFQaXhtYXAmKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1h
cEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSk7CiAKIHByaXZhdGU6CiAgICAgTmF0aXZlSW1hZ2VTa2lhIG1fbmF0aXZlSW1h
Z2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNz
Q29udGV4dFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tp
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEFscGhh
KGFscGhhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
SW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDksNyArMjA5LDcgQEAgc3RhdGljIGJvb2wgZHJhd05lZWRzQ29weShHcmFwaGljc0Nv
bnRleAogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKCpt
X2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCksIGRyYXdOZWVkc0NvcHkobV9jb250ZXh0
LmdldCgpLCBjb250ZXh0KSk7CiAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBz
dHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgRG9Ob3RSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAJKHJldmlzaW9uIDEz
NjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDEyICs1ODMsMTIgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICB9CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1JlY3Qs
IGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsK
KyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9w
LCBibGVuZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwogfQogCi12b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFs
aXplZCgpKQogICAgICAgICByZXR1cm47CkBAIC02NDMsMTAgKzY0MywxMCBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGdv
IGludG8gQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCiAKIHZvaWQgQml0bWFwSW1hZ2VT
aW5nbGVGcmFtZVNraWE6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwK
KyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCisgICAgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsCisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsK
ICAgICBGbG9hdFJlY3Qgbm9ybURzdFJlY3QgPSBub3JtYWxpemVSZWN0KGRzdFJlY3QpOwogICAg
IEZsb2F0UmVjdCBub3JtU3JjUmVjdCA9IG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4u
Y3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlmIChzaXplKQogICAg
ICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4w
ZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgSW50U2l6ZSgqc2l6ZSksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJh
dygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1I
ZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOworICAgICAg
ICBkcmF3KCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5m
by5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxl
bmRNb2RlTm9ybWFsKTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNl
KGNnQ29udGV4dCk7CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmMKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdl
dFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsK
ICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAg
ICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQo
KSksIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3ApOworICAgICAgICAgICAgZHJhdyhjdHh0
LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXpl
LmhlaWdodCgpKSwgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFs
KTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJl
Y3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUK
ICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhj
dHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGlt
YWdlU2l6ZS5oZWlnaHQoKSksIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3ApOworICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGVOb3JtYWwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFn
CiAgICAgICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGVhclJlY3QoZW5jbG9zaW5nSW50UmVjdChz
Y2FsZWRSZWN0KSk7CiAKICAgICAvLyBEcmF3IFNWRyBvbiB0b3Agb2YgSW1hZ2VCdWZmZXIuCi0g
ICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSwg
cmVjdCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgZHJh
dyhidWZmZXItPmNvbnRleHQoKSwgZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSwgcmVjdCwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFs
KTsKIAogICAgIC8vIFJlc2V0IGNvbnRhaW5lciBzaXplICYgem9vbSB0byBpbml0aWFsIHN0YXRl
LiBPdGhlcndoaXNlIHRoZSBzaXplKCkgb2YgdGhpcwogICAgIC8vIGltYWdlIHdvdWxkIHJldHVy
biB3aGF0ZXZlciBsYXN0IHNpemUgd2FzIHNldCBieSBkcmF3U1ZHVG9JbWFnZUJ1ZmZlcigpLgpA
QCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVyKElt
YWcKICAgICBmcmFtZS0+dmlldygpLT5lbmREaXNhYmxlUmVwYWludHMoKTsKIH0KIAotdm9pZCBT
VkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckMKICAgICAgICAgT3du
UHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSk7
CiAgICAgICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCks
IHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAg
ICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBt
X2ZyYW1lQ2FjaGUgPSBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICB9
CiAgICAgcmV0dXJuIG1fZnJhbWVDYWNoZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAxMzY1
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQ
dHIgZnJhbWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQogCiAgICAgU1ZHSW1hZ2UoSW1h
Z2VPYnNlcnZlciopOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYu
aW4JKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5p
bgkod29ya2luZyBjb3B5KQpAQCAtMzc0LDkgKzM3NCw5IEBAIEVYUE9SVFMKICAgICAgICAgP2Ry
YXdQYXR0ZXJuQEltYWdlQFdlYkNvcmVAQFVBRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9h
dFJlY3RAMkBBQlZBZmZpbmVUcmFuc2Zvcm1AMkBBQlZGbG9hdFBvaW50QDJAVzRDb2xvclNwYWNl
QDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQDFAWgogICAgICAgICA/cmVwb3J0TWVtb3J5VXNhZ2VA
Qml0bWFwSW1hZ2VAV2ViQ29yZUBAVUJFWFBBVk1lbW9yeU9iamVjdEluZm9AV1RGQEBAWgogICAg
ICAgICA/ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplQEJpdG1hcEltYWdlQFdlYkNvcmVAQE1B
RVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkBBQlZJbnRTaXplQDJAVzRDb2xv
clNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQEBaCi0gICAgICAgID9kcmF3QEltYWdlQFdl
YkNvcmVAQE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkAxVzRDb2xvclNw
YWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQFc0UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVt
QDJAQFoKLSAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNz
Q29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJh
dG9yQDJAQFoKKyAgICAgICAgP2RyYXdASW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNzQ29u
dGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJhdG9y
QDJAVzRCbGVuZE1vZGVAMkBXNFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bUAyQEBaCisgICAg
ICAgID9kcmF3QEJpdG1hcEltYWdlQFdlYkNvcmVAQE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBB
QlZGbG9hdFJlY3RAMkAxVzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQFc0Qmxl
bmRNb2RlQDJAQFoKICAgICAgICAgP21heUZpbGxXaXRoU29saWRDb2xvckBCaXRtYXBJbWFnZUBX
ZWJDb3JlQEBNQUVfTlhaCiAgICAgICAgID9zb2xpZENvbG9yQEJpdG1hcEltYWdlQFdlYkNvcmVA
QE1CRT9BVkNvbG9yQDJAWFoKLSAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFF
WFBBVkdyYXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENv
bXBvc2l0ZU9wZXJhdG9yQDJAVzRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW1AMkBAWgorICAg
ICAgICA/ZHJhd0BCaXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJA
QUJWRmxvYXRSZWN0QDJAMVc0Q29sb3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBXNEJs
ZW5kTW9kZUAyQFc0UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtQDJAQFoKICAgICAgICAgP2Zy
YW1lQ291bnRAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFSVhaCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gMTM2ODA4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wNSAgUmlr
IENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIEV4dGVuZCBwbGF0Zm9y
bSBsYXllciBzbyBpdCBjYW4gcGFzcyBibGVuZCBtb2RlcyB0byB0aGUgY29tcG9zaXRpbmcgY2Fs
bHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDE3
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludGVy
ZmFjZSBjaGFuZ2VzIGZvciB0aGUgbmV3IGJsZW5kIG1vZGVzCisKKyAgICAgICAgKiB0ZXN0cy9E
cmFnSW1hZ2VUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0SW1hZ2U6OmRyYXcpOgorCiAyMDEyLTEyLTA1ICBUYWthc2hpIFNha2Ftb3RvICA8
dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBXZWJLaXQgZ2FyZGVuaW5n
LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3Qu
Y3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Ry
YWdJbWFnZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6Q29sb3JTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICBXZWJD
b3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2RlKQogICAgIHsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVt
VGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFn
ZUxheWVyQ2hyb21pdW1UZXN0LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLAogICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkNvbG9y
U3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3Ip
CisgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNv
cmU6OkJsZW5kTW9kZSkKICAgICB7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178266</attachid>
            <date>2012-12-07 13:55:10 -0800</date>
            <delta_ts>2012-12-07 16:48:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104176-20121207135234.patch</filename>
            <type>text/plain</type>
            <size>52301</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNjgwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTEyLTA1ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGJs
ZW5kIG1vZGUgZW51bWVyYXRpb24gdG8gZHJhd0ltYWdlIGZ1bmN0aW9ucyArIHN0b3JlZCBibGVu
ZG1vZGUgaW4gZ3JhcGhpY3MgY29udGV4dCAKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG5l
dyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChDcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAg
ICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0b3JHZW5l
cmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9y
R2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRvckdlbmVyYXRlZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOgor
ICAgICAgICAoR3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJh
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQREZEb2N1
bWVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3Jt
Q29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAgICAgIChT
dGlsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZm
ZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNp
bmdsZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5n
U291cmNlU2l6ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEyLTEyLTAzICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkgZG9l
c24ndCBzaG93IGRpZ2l0cyB3ZWxsIGluIFJUTCBsb2NhbGVzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
NCw3ICszNTQsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvCiAg
ICAgICAgICAgICBpZiAobV9wcmVzZW50ZWRJbWFnZSkKICAgICAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3SW1hZ2UobV9wcmVzZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
cGl4ZWxTbmFwcGVkSW50UmVjdChyKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgRG9Ob3RSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHIpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIHVzZUxv
d1F1YWxpdHlTY2FsZSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA3LDkgKzIwNyw5IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShXSU4p
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAjZW5kaWYK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUpOwogI2lmIFVTRShDRykgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFVTRShDQUlSTykK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtKSBPVkVSUklERTsKICNlbmRpZgogCiAjaWYgKE9TKFdJTkNFKSAmJiAh
UExBVEZPUk0oUVQpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTM2
NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2YKICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVu
Y3lMYXllcigpOwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
KQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlKQog
ewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAg
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKIAogICAgIENyb3NzZmFkZUdl
bmVyYXRlZEltYWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJj
ZW50YWdlLCBJbnRTaXplIGNyb3NzZmFkZVNpemUsIGNvbnN0IEludFNpemUmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAko
cmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qp
ID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9y
R2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTM2NTk3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQor
dm9pZCBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUp
CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpkZXN0Q29udGV4
dCk7CiAgICAgZGVzdENvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0
ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24g
MTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDcgKzQ2OCwxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
biwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSB8fCAhaW1hZ2UpCisgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0
UmVjdChkZXN0KSwgc3JjLCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVt
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
K3sgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGZsb2F0IHRzdyA9IHNyYy53aWR0aCgpOwpAQCAtNDk4LDcgKzUwMiw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKICNlbmRpZgogICAgIH0KIAotICAg
IGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0
dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwg
c3R5bGVDb2xvclNwYWNlLCBvcCwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAg
IGltYWdlLT5kcmF3KHRoaXMsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0
dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwg
c3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbik7CiAKICAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKQogICAgICAgICBzZXRJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkpOwpAQCAtNTM5
LDI3ICs1NDMsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYQog
ICAgICAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3QsIHNyY1JlY3QsIHRpbGVTY2FsZUZh
Y3RvciwgaFJ1bGUsIHZSdWxlLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBp
bWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBwLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3SW1hZ2VC
dWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgcCwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBv
cCk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHAsIEludFJl
Y3QoMCwgMCwgLTEsIC0xKSwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJ
bnRSZWN0JiByLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHls
ZUNvbG9yU3BhY2UsIHIsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIHVzZUxvd1F1YWxpdHlT
Y2FsZSk7CisgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHIsIElu
dFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciog
aW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdCwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAg
ICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgSW50UmVjdChkZXN0LCBz
cmNSZWN0LnNpemUoKSksIHNyY1JlY3QsIG9wKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2Us
IHN0eWxlQ29sb3JTcGFjZSwgSW50UmVjdChkZXN0LCBzcmNSZWN0LnNpemUoKSksIHNyY1JlY3Qs
IG9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEludFJlY3QmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxl
KQogewotICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJl
Y3QoZGVzdCksIHNyY1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGRyYXdJbWFn
ZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCksIHNyY1JlY3Qs
IG9wLCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
YywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
aW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTU4NywxMCArNTkxLDEwIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW0KICAgICAgICAgLy8gRklYTUUgKDQ5MDAyKTog
U2hvdWxkIGJlIEludGVycG9sYXRpb25Mb3cKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CiAjZW5kaWYKLSAgICAgICAgaW1hZ2UtPmRyYXco
dGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNp
emUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNo
KSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBz
dHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywg
dGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3As
IGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICB9IGVsc2UK
LSAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVz
dC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24o
KSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAg
ICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0
aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9h
dFNpemUodHN3LCB0c2gpKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0K
IAogI2lmICFQTEFURk9STShRVCkKQEAgLTY5OSwxMCArNzAzLDExIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ZXJhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQog
ewogICAgIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb247Ci0g
ICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKTsKKyAg
ICBtX3N0YXRlLmJsZW5kTW9kZSA9IGJsZW5kTW9kZTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0
ZU9wZXJhdGlvbihjb21wb3NpdGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CiB9CiAKIENvbXBvc2l0
ZU9wZXJhdG9yIEdyYXBoaWNzQ29udGV4dDo6Y29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgZmlsbENvbG9yU3BhY2UoQ29sb3JT
cGFjZURldmljZVJHQikKICAgICAgICAgICAgICwgc2hhZG93Q29sb3JTcGFjZShDb2xvclNwYWNl
RGV2aWNlUkdCKQogICAgICAgICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihDb21wb3NpdGVTb3Vy
Y2VPdmVyKQorICAgICAgICAgICAgLCBibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQogICAgICAg
ICAgICAgLCBzaG91bGRBbnRpYWxpYXModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU21vb3Ro
Rm9udHModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKHRy
dWUpCkBAIC0yMDMsNiArMjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb2xv
clNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0b3I7CisgICAgICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CiAKICAgICAgICAg
Ym9vbCBzaG91bGRBbnRpYWxpYXMgOiAxOwogICAgICAgICBib29sIHNob3VsZFNtb290aEZvbnRz
IDogMTsKQEAgLTI3MSw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgm
KTsKIAotICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVsdElt
YWdlT3JpZW50YXRpb24pOworICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7
CiAKICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcpLiBO
b3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dzRm9u
dFNtb290aGluZyhib29sKTsKQEAgLTMyMiwxOCArMzI0LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAogICAgICAgICAgICAg
ICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJv
b2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShJ
bWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50
YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICAKICAgICAg
ICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZh
bHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJ
bWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBi
b29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJ
bnRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAg
ICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2b2lk
IGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZh
bHNlKTsKLSAgICAgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IElu
dFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lk
IGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJ
bnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBm
YWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBzZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICAgICAgSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwpAQCAt
NDAyLDcgKzQwNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldEFs
cGhhKGZsb2F0KTsKIAotICAgICAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVPcGVyYXRvcik7CisgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBjb25zdDsKIAogICAgICAgICB2b2lkIGNs
aXAoY29uc3QgUGF0aCYpOwpAQCAtNTU2LDcgKzU1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBi
bHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIGNsZWFyUGxhdGZv
cm1TaGFkb3coKTsKIAotICAgICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9u
KENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsK
IAogICAgICAgICB2b2lkIGJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFj
aXR5KTsKICAgICAgICAgdm9pZCBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShyZXZpc2lvbiAx
MzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDkgKzkxLDkgQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENv
bG9yKEdyYXBoaWNzQwogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09w
ZXJhdG9yKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb25FbnVtKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKQogewotICAgIGRyYXcoY3R4LCBkc3RS
ZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICBkcmF3KGN0eCwgZHN0UmVj
dCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2Nh
bGVkVGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCkKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0KiBjCiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0LnkoKSAtIG9u
ZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAgdmlz
aWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkp
OwotICAgICAgICBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xv
clNwYWNlLCBvcCk7CisgICAgICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0
LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJ
KHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw4ICsxOTIsOCBAQCBwcm90ZWN0ZWQ6CiAjaWYg
UExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNp
emUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IpIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSk7CisgICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pOwogICAgIHZvaWQgZHJhd1Rp
bGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAgICAgdm9pZCBkcmF3VGlsZWQo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBo
UnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2b2lkIGNsaXAoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0
eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgQ29s
b3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1
YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCk7CiAKICAgICAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2so
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzEsMTIgKzcxLDEzIEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZShOYXRpdmVJbWFnZUNhaXIKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIH0KIAotdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
YywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGRyYXcoY29udGV4dCwgZHN0LCBzcmMsIHN0eWxlQ29s
b3JTcGFjZSwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIGRyYXcoY29u
dGV4dCwgZHN0LCBzcmMsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSwgRG9Ob3RSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAorICAgIEJsZW5kTW9kZSwgUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogewogICAg
IGlmICghZHN0LndpZHRoKCkgfHwgIWRzdC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNy
Yy5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDA2LDcgKzEwMDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxw
CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEdsb2JhbEFscGhhKGFscGhhKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NywxMSAr
OTcsMTEgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIAogfQogCiB2
b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250ZXh0
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciBvcCAsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
IHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNvcHlNb2RlID0gZGVzdGluYXRpb25Db250ZXh0ID09
IGNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5h
dGlvbkNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CisgICAgZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0
KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIERv
Tm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJ
bWFnZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9CaXRtYXBJbWFnZUNHLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NywxMiArMTU3LDEyIEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6
Z2V0Q0cKICAgICByZXR1cm4gUmV0YWluUHRyPENGQXJyYXlSZWY+KEFkb3B0Q0YsIGFycmF5KTsK
IH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgZHJhdyhjdHgsIGRz
dFJlY3QsIHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIERvTm90UmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pOworICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3Bh
Y2UsIG9wLCBibGVuZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwogfQogCi12
b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQog
ewogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAgaWYgKHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICBvcmllbnRh
dGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAotICAgIGN0
eHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc2VsZlNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBvcmllbnRhdGlvbik7CisgICAgY3R4dC0+ZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBzZWxmU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwg
c3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYg
KGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQ
bGF0Zm9ybVN0YQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJ
ZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGltYWdlKGltYWdlUHRyKTsKIApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmEKICAgICBpZiAoIXNob3VsZFVzZVN1Ymlt
YWdlICYmIGN1cnJIZWlnaHQgPCBpbWFnZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgIGFkanVzdGVk
RGVzdFJlY3Quc2V0SGVpZ2h0KGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkgKiBjdXJySGVpZ2h0
IC8gaW1hZ2VTaXplLmhlaWdodCgpKTsKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0
aW9uKG9wKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2Rl
KTsKIAogICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0
ICgwLCAwKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3RlZERlc3RS
ZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwpAQCAtMTY5OCw3ICsxNjk4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkUwogICAgIENHQ29udGV4dFNldFNo
b3VsZFNtb290aEZvbnRzKHBsYXRmb3JtQ29udGV4dCgpLCBlbmFibGUpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3Bl
cmF0b3IgbW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBtb2RlLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlz
aW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNyArMjU5LDcgQEAgTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbQogICAgIHJldHVybiBpbWFnZTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENv
bnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURf
UEFSQU0odXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAo
ZGVzdENvbnRleHQgPT0gbV9jb250ZXh0KSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNv
bG9yU3BhY2U7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIAogCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7
CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRp
b25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwg
aW50ZXJuYWxTaXplKCksIGNvbG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9w
KTsKKyAgICBkZXN0Q29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbnRlcm5h
bFNpemUoKSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgaW50IFBERkRvY3VtZW50SW1hZ2U6
OnBhZ2VDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBDR1BERkRvY3VtZW50
R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3VtZW50KSA6IDA7CiB9CiAKLXZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBvcCkKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlm
ICghbV9kb2N1bWVudCB8fCBtX2N1cnJlbnRQYWdlID09IC0xKQogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIEludFNpemUg
c2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIFBERkRvY3VtZW50SW1hZ2UoKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldEN1cnJlbnRQYWdlKGludCk7CiAgICAgICAg
IGludCBwYWdlQ291bnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHJldmlzaW9u
IDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IG9wYQogICAgIHAtPnNldE9wYWNpdHkob3Bh
Y2l0eSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVm
ZmVyUXQuY3BwCShyZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEy
Niw3IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UKIH0KIAogdm9p
ZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKGRlc3RDb250
ZXh0ID09IGNvbnRleHQoKSkgewogICAgICAgICAvLyBXZSdyZSBkcmF3aW5nIGludG8gb3VyIG93
biBidWZmZXIuICBJbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLCB3ZSBuZWVkIHRvIGNvcHkgdGhl
IHNvdXJjZSBidWZmZXIgZmlyc3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMiw3ICsyMzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRh
CiAKIC8vIERyYXdpbmcgUm91dGluZXMKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAg
UVJlY3RGIG5vcm1hbGl6ZWREc3QgPSBkc3Qubm9ybWFsaXplZCgpOwogICAgIFFSZWN0RiBub3Jt
YWxpemVkU3JjID0gc3JjLm5vcm1hbGl6ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkocmV2aXNpb24gMTM2
NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBOYXRpdmVJbWFnZVB0ciBTdGls
bEltYWdlOjpuYXRpdmVJbWFnZUZvCiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAotICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAobV9waXhtYXAtPmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGls
bEltYWdlUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuaAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgSW50U2l6
ZSBzaXplKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBTdGlsbEltYWdlKGNvbnN0IFFQaXhtYXAmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhLmgJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSk7CiAKIHByaXZhdGU6CiAgICAgTmF0aXZlSW1hZ2VTa2lhIG1fbmF0aXZlSW1hZ2U7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4
dFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0QWxwaGEoZmxvYXQgYWxwCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEFscGhhKGFscGhh
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VC
dWZmZXJTa2lhLmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDksNyArMjA5LDcgQEAgc3RhdGljIGJvb2wgZHJhd05lZWRzQ29weShHcmFwaGljc0NvbnRleAog
fQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKCptX2RhdGEu
bV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCksIGRyYXdOZWVkc0NvcHkobV9jb250ZXh0LmdldCgp
LCBjb250ZXh0KSk7CiAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNv
bG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAJKHJldmlzaW9uIDEzNjU5NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTgzLDEyICs1ODMsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hl
Y2tGb3JTb2xpZENvbG9yKCkKICAgICB9CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9y
U3BhY2UsIGNvbXBvc2l0ZU9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBk
cmF3KGN0eHQsIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwogfQogCi12b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgp
KQogICAgICAgICByZXR1cm47CkBAIC02NDMsMTAgKzY0MywxMCBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGdvIGludG8g
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuY3BwCiAKIHZvaWQgQml0bWFwSW1hZ2VTaW5nbGVG
cmFtZVNraWE6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCisgICAgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsKICAgICBG
bG9hdFJlY3Qgbm9ybURzdFJlY3QgPSBub3JtYWxpemVSZWN0KGRzdFJlY3QpOwogICAgIEZsb2F0
UmVjdCBub3JtU3JjUmVjdCA9IG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCShy
ZXZpc2lvbiAxMzY1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlmIChzaXplKQogICAgICAgICBk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1w
SW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgSW50U2l6ZSgqc2l6ZSksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdygmZ2Ms
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQp
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBkcmF3
KCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhl
aWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2Rl
Tm9ybWFsKTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29u
dGV4dCk7CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNo
aW5nU291cmMKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09
IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRo
KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAg
ICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHN0
eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3ApOworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RS
ZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdo
dCgpKSwgc3R5bGVDb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsKTsKICAg
ICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6
ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBJ
bnRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhjdHh0LCBk
c3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSksIHN0eWxlQ29sb3JTcGFjZSwgY29tcG9zaXRlT3ApOworICAgIGRyYXcoY3R4
dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCkpLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVO
b3JtYWwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3
ICsxNDYsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFnCiAgICAg
ICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGVhclJlY3QoZW5jbG9zaW5nSW50UmVjdChzY2FsZWRS
ZWN0KSk7CiAKICAgICAvLyBEcmF3IFNWRyBvbiB0b3Agb2YgSW1hZ2VCdWZmZXIuCi0gICAgZHJh
dyhidWZmZXItPmNvbnRleHQoKSwgZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSwgcmVjdCwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgZHJhdyhidWZm
ZXItPmNvbnRleHQoKSwgZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSwgcmVjdCwgQ29sb3JT
cGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKIAog
ICAgIC8vIFJlc2V0IGNvbnRhaW5lciBzaXplICYgem9vbSB0byBpbml0aWFsIHN0YXRlLiBPdGhl
cndoaXNlIHRoZSBzaXplKCkgb2YgdGhpcwogICAgIC8vIGltYWdlIHdvdWxkIHJldHVybiB3aGF0
ZXZlciBsYXN0IHNpemUgd2FzIHNldCBieSBkcmF3U1ZHVG9JbWFnZUJ1ZmZlcigpLgpAQCAtMTY3
LDcgKzE2Nyw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVyKEltYWcKICAg
ICBmcmFtZS0+dmlldygpLT5lbmREaXNhYmxlUmVwYWludHMoKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCkKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIE5h
dGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckMKICAgICAgICAgT3duUHRyPElt
YWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSk7CiAgICAg
ICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3Qo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIGRy
YXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBtX2ZyYW1l
Q2FjaGUgPSBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICB9CiAgICAg
cmV0dXJuIG1fZnJhbWVDYWNoZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAxMzY1OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJh
bWVBdEluZGV4KHNpemVfdCkgeyByZXR1cm4gMDsgfQogCiAgICAgU1ZHSW1hZ2UoSW1hZ2VPYnNl
cnZlciopOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSk7CiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
Zi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4JKHJl
dmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzc0LDkgKzM3NCw5IEBAIEVYUE9SVFMKICAgICAgICAgP2RyYXdQYXR0
ZXJuQEltYWdlQFdlYkNvcmVAQFVBRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RA
MkBBQlZBZmZpbmVUcmFuc2Zvcm1AMkBBQlZGbG9hdFBvaW50QDJAVzRDb2xvclNwYWNlQDJAVzRD
b21wb3NpdGVPcGVyYXRvckAyQDFAWgogICAgICAgICA/cmVwb3J0TWVtb3J5VXNhZ2VAQml0bWFw
SW1hZ2VAV2ViQ29yZUBAVUJFWFBBVk1lbW9yeU9iamVjdEluZm9AV1RGQEBAWgogICAgICAgICA/
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplQEJpdG1hcEltYWdlQFdlYkNvcmVAQE1BRVhQQVZH
cmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkBBQlZJbnRTaXplQDJAVzRDb2xvclNwYWNl
QDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQEBaCi0gICAgICAgID9kcmF3QEltYWdlQFdlYkNvcmVA
QE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkAxVzRDb2xvclNwYWNlQDJA
VzRDb21wb3NpdGVPcGVyYXRvckAyQFc0UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtQDJAQFoK
LSAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNzQ29udGV4
dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJhdG9yQDJA
QFoKKyAgICAgICAgP2RyYXdASW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNzQ29udGV4dEAy
QEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJhdG9yQDJAVzRC
bGVuZE1vZGVAMkBXNFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bUAyQEBaCisgICAgICAgID9k
cmF3QEJpdG1hcEltYWdlQFdlYkNvcmVAQE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9h
dFJlY3RAMkAxVzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQFc0QmxlbmRNb2Rl
QDJAQFoKICAgICAgICAgP21heUZpbGxXaXRoU29saWRDb2xvckBCaXRtYXBJbWFnZUBXZWJDb3Jl
QEBNQUVfTlhaCiAgICAgICAgID9zb2xpZENvbG9yQEJpdG1hcEltYWdlQFdlYkNvcmVAQE1CRT9B
VkNvbG9yQDJAWFoKLSAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdy
YXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0
ZU9wZXJhdG9yQDJAVzRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW1AMkBAWgorICAgICAgICA/
ZHJhd0BCaXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJWRmxv
YXRSZWN0QDJAMVc0Q29sb3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBXNEJsZW5kTW9k
ZUAyQFc0UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtQDJAQFoKICAgICAgICAgP2ZyYW1lQ291
bnRAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFSVhaCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTM2ODA4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wNSAgUmlrIENhYmFu
aWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgorCisgICAgICAgIEV4dGVuZCBwbGF0Zm9ybSBsYXll
ciBzbyBpdCBjYW4gcGFzcyBibGVuZCBtb2RlcyB0byB0aGUgY29tcG9zaXRpbmcgY2FsbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDE3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBibGVu
ZCBtb2RlIGVudW1lcmF0aW9uIHRvIGRyYXcgZnVuY3Rpb25zIAorCisgICAgICAgICogdGVzdHMv
RHJhZ0ltYWdlVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdEltYWdlOjpkcmF3KToKKwogMjAxMi0xMi0wNSAgVGFrYXNoaSBTYWthbW90byAg
PHRhc2FrQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgV2ViS2l0IGdhcmRlbmlu
Zy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0
LmNwcAkocmV2aXNpb24gMTM2NTk3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9E
cmFnSW1hZ2VUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkNvbG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSkKICAgICB7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1h
Z2VMYXllckNocm9taXVtVGVzdC5jcHAJKHJldmlzaW9uIDEzNjU5NykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwKICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpDb2xv
clNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9y
KQorICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJD
b3JlOjpCbGVuZE1vZGUpCiAgICAgewogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178304</attachid>
            <date>2012-12-07 16:49:00 -0800</date>
            <delta_ts>2012-12-07 20:04:03 -0800</delta_ts>
            <desc>Added missing exports file for mac</desc>
            <filename>bug-104176-20121207164623.patch</filename>
            <type>text/plain</type>
            <size>53284</size>
            <attacher name="Rik Cabanier">cabanier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTEyLTA3ICBSaWsgQ2Fi
YW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3JtIGxh
eWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGJs
ZW5kIG1vZGUgZW51bWVyYXRpb24gdG8gZHJhd0ltYWdlIGZ1bmN0aW9ucyArIHN0b3JlZCBibGVu
ZG1vZGUgaW4gZ3JhcGhpY3MgY29udGV4dCAKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIG5l
dyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChDcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAg
ICAgICAgKEdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0b3JHZW5l
cmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9y
R2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKEdlbmVyYXRvckdlbmVyYXRlZEltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENvbXBvc2l0ZU9wZXJhdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOgor
ICAgICAgICAoR3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJh
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgIChQREZEb2N1
bWVudEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3Jt
Q29tcG9zaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0Lmg6CisgICAgICAgIChT
dGlsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdl
U2luZ2xlRnJhbWVTa2lhLmg6CisgICAgICAgIChCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZm
ZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNp
bmdsZUZyYW1lU2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5n
U291cmNlU2l6ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oOgorICAgICAgICAoU1ZHSW1hZ2UpOgorCiAyMDEyLTEyLTA3ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTM2OTkzLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEzNzAwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEs
NyArMzkxLDcgQEAgX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxOHNldFNob3VsZAogX19a
TjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxOXNldElzQ0FMYXllckNvbnRleHRFYgogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyMGVuZFRyYW5zcGFyZW5jeUxheWVyRXYKIF9fWk43V2Vi
Q29yZTE1R3JhcGhpY3NDb250ZXh0MjBzZXRTaG91bGRTbW9vdGhGb250c0ViCi1fX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDIxc2V0Q29tcG9zaXRlT3BlcmF0aW9uRU5TXzE3Q29tcG9zaXRl
T3BlcmF0b3JFCitfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIxc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uRU5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFTlNfOUJsZW5kTW9kZUUKIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MjJhcHBseURldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MjJiZWdpblRyYW5zcGFyZW5jeUxheWVyRWYKIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MjhzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5RU5TXzIwSW50
ZXJwb2xhdGlvblF1YWxpdHlFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvCiAgICAgICAgICAgICBpZiAobV9w
cmVzZW50ZWRJbWFnZSkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9wcmVz
ZW50ZWRJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgcGl4ZWxTbmFwcGVkSW50UmVj
dChyKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwg
dXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IHBpeGVsU25hcHBlZEludFJlY3QociksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHVzZUxvd1F1YWxp
dHlTY2FsZSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHIpLCBDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDkg
KzIwNyw5IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogI2lmIFVTRShD
RykgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFVTRShDQUlSTykKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKSBP
VkVSUklERTsKICNlbmRpZgogCiAjaWYgKE9TKFdJTkNFKSAmJiAhUExBVEZPUk0oUVQpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6
OmRyYXdDcm9zc2YKICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12
b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQordm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlKQogewogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAgICAgY29udGV4dC0+c2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAko
cmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3QgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0KTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdl
KiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBJbnRTaXplIGNy
b3NzZmFkZVNpemUsIGNvbnN0IEludFNpemUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM3MDAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCBPVkVSUklERTsKIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpID0gMDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRv
ckdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBHZW5l
cmF0b3JHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQordm9pZCBHZW5lcmF0b3JHZW5l
cmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUpCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpkZXN0Q29udGV4dCk7CiAgICAgZGVzdENvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRvckdlbmVyYXRl
ZEltYWdlLmgJKHJldmlzaW9uIDEzNzAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRvckdlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDY4LDcgKzQ2OCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
KEltYWdlKiBpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFs
aXR5U2NhbGUpCiB7Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCisgICAg
ZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0KSwgc3JjLCBv
cCwgQmxlbmRNb2RlTm9ybWFsLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFn
ZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKK3sgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IHRzdyA9
IHNyYy53aWR0aCgpOwpAQCAtNDk4LDcgKzUwMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UoSW1hZ2UqIGkKICNlbmRpZgogICAgIH0KIAotICAgIGltYWdlLT5kcmF3KHRoaXMs
IEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0
KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBv
cCwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIGltYWdlLT5kcmF3KHRoaXMs
IEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0
KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgc3R5bGVDb2xvclNwYWNlLCBv
cCwgYmxlbmRNb2RlLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiAKICAgICBpZiAo
dXNlTG93UXVhbGl0eVNjYWxlKQogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkpOwpAQCAtNTM5LDI3ICs1NDMsMjcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYQogICAgICAgICBpbWFnZS0+ZHJh
d1RpbGVkKHRoaXMsIGRlc3QsIHNyY1JlY3QsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxl
LCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBjb25zdCBJbnRQb2ludCYgcCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiBwLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxl
Q29sb3JTcGFjZSwgcCwgSW50UmVjdCgwLCAwLCAtMSwgLTEpLCBvcCk7CisgICAgZHJhd0ltYWdl
QnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHAsIEludFJlY3QoMCwgMCwgLTEsIC0xKSwg
b3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
SW50UmVjdCYgciwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1h
Z2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiByLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUpCiB7Ci0gICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHIsIElu
dFJlY3QoMCwgMCwgLTEsIC0xKSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgZHJhd0lt
YWdlQnVmZmVyKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIHIsIEludFJlY3QoMCwgMCwgLTEsIC0x
KSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEludFBvaW50JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBkcmF3SW1hZ2VCdWZmZXIo
aW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgSW50UmVjdChkZXN0LCBzcmNSZWN0LnNpemUoKSksIHNy
Y1JlY3QsIG9wKTsKKyAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwg
SW50UmVjdChkZXN0LCBzcmNSZWN0LnNpemUoKSksIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBp
bWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3QsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1
YWxpdHlTY2FsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYg
ZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewotICAgIGRyYXdJbWFn
ZUJ1ZmZlcihpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCksIHNyY1JlY3Qs
IG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgc3R5
bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdCksIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIHVz
ZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKQEAgLTU4NywxMCArNTkxLDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2VCdWZmZXIoSW0KICAgICAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hvdWxkIGJlIEludGVycG9s
YXRpb25Mb3cKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uTm9uZSk7CiAjZW5kaWYKLSAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNw
YWNlLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0
UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIG9wLCB1c2VMb3dRdWFs
aXR5U2NhbGUpOworICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZs
b2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNy
Yy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIGJsZW5kTW9kZSwgdXNlTG93
UXVhbGl0eVNjYWxlKTsKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShwcmV2
aW91c0ludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICB9IGVsc2UKLSAgICAgICAgaW1hZ2UtPmRy
YXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9h
dFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywg
dHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICBpbWFnZS0+ZHJhdyh0aGlz
LCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0
dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwg
b3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAogI2lmICFQTEFURk9STShR
VCkKQEAgLTY5OSwxMCArNzAzLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdp
dGhSb3VuZGUKIH0KICNlbmRpZgogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbikKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0aW9uLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIG1fc3RhdGUuY29t
cG9zaXRlT3BlcmF0b3IgPSBjb21wb3NpdGVPcGVyYXRpb247Ci0gICAgc2V0UGxhdGZvcm1Db21w
b3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9uKTsKKyAgICBtX3N0YXRlLmJsZW5kTW9k
ZSA9IGJsZW5kTW9kZTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3Np
dGVPcGVyYXRpb24sIGJsZW5kTW9kZSk7CiB9CiAKIENvbXBvc2l0ZU9wZXJhdG9yIEdyYXBoaWNz
Q29udGV4dDo6Y29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAx
MzcwMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICwgZmlsbENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQikKICAg
ICAgICAgICAgICwgc2hhZG93Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKQogICAgICAg
ICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihDb21wb3NpdGVTb3VyY2VPdmVyKQorICAgICAgICAg
ICAgLCBibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQogICAgICAgICAgICAgLCBzaG91bGRBbnRp
YWxpYXModHJ1ZSkKICAgICAgICAgICAgICwgc2hvdWxkU21vb3RoRm9udHModHJ1ZSkKICAgICAg
ICAgICAgICwgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKHRydWUpCkBAIC0yMDMsNiArMjA0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9y
U3BhY2U7CiAKICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3I7Cisg
ICAgICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CiAKICAgICAgICAgYm9vbCBzaG91bGRBbnRpYWxp
YXMgOiAxOwogICAgICAgICBib29sIHNob3VsZFNtb290aEZvbnRzIDogMTsKQEAgLTI3MSw3ICsy
NzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVy
bigpOwogICAgICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgmKTsKIAotICAgICAgICB2b2lk
IGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6
ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwor
ICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdl
T3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CiAKICAgICAgICAgLy8gQWxs
b3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcpLiBOb3QgcGFydCBvZiB0aGUgZ3Jh
cGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dzRm9udFNtb290aGluZyhib29sKTsK
QEAgLTMyMiwxOCArMzI0LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBk
cmF3SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7
CiAgICAgICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLAogICAgICAgICAgICAgICAgICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
RW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICAKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9p
ZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6
OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6OlN0cmV0Y2hUaWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYsIENvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IElu
dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKLSAgICAgICAgdm9p
ZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0g
RmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFBvaW50JiwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBD
b21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgICAgIHZv
aWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwpAQCAtNDAyLDcgKzQwNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldEFscGhhKGZsb2F0KTsKIAotICAg
ICAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CisgICAg
ICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRpb24oKSBjb25zdDsKIAogICAgICAgICB2b2lkIGNsaXAoY29uc3QgUGF0aCYpOwpA
QCAtNTU2LDcgKzU1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQ
bGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYs
IENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIGNsZWFyUGxhdGZvcm1TaGFkb3coKTsKIAotICAg
ICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIAogICAgICAgICB2b2lkIGJl
Z2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KTsKICAgICAgICAgdm9p
ZCBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzcwMDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDkgKzkxLDkgQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQwogICAg
IGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9p
ZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKQordm9p
ZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtKQogewotICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHls
ZUNvbG9yU3BhY2UsIG9wKTsKKyAgICBkcmF3KGN0eCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVD
b2xvclNwYWNlLCBvcCwgYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdy
YXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTEyOSw3ICsx
MjksNyBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjCiAgICAgICAg
IHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBz
Y2FsZS5oZWlnaHQoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0
LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVp
Z2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICBkcmF3KGN0
eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CisgICAg
ICAgIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2Us
IG9wLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDEzNzAwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5Miw4ICsxOTIsOCBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAg
IHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIHsgfQogI2VuZGlmCi0g
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSk7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbkVudW0pOwogICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvcik7CiAgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1
bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAko
cmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOwor
ICAgICAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgQ29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAs
IDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxl
bmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNl
KTsKICAgICAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAgICAgaW5s
aW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwCShyZXZpc2lvbiAxMzcwMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzEsMTIgKzcxLDEzIEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZUNhaXIK
ICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQog
ewotICAgIGRyYXcoY29udGV4dCwgZHN0LCBzcmMsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIERvTm90
UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIGRyYXcoY29udGV4dCwgZHN0LCBzcmMsIHN0
eWxlQ29sb3JTcGFjZSwgb3AsIGJsZW5kTW9kZSwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bik7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQordm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLAorICAgIEJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVt
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogewogICAgIGlmICghZHN0LndpZHRoKCkg
fHwgIWRzdC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAkocmV2aXNpb24g
MTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwCiAgICAgcGxhdGZvcm1Db250
ZXh0KCktPnNldEdsb2JhbEFscGhhKGFscGhhKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHJldmlzaW9uIDEz
NzAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NywxMSArOTcsMTEgQEAgdm9pZCBJbWFn
ZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIAogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250ZXh0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCAsIGJv
b2wgdXNlTG93UXVhbGl0eVNjYWxlKQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBCYWNraW5nU3Rv
cmVDb3B5IGNvcHlNb2RlID0gZGVzdGluYXRpb25Db250ZXh0ID09IGNvbnRleHQoKSA/IENvcHlC
YWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1hZ2U+IGlt
YWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmRyYXdJ
bWFnZShpbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3As
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAg
ZGVzdGluYXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIERvTm90UmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24sIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNH
LmNwcAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMiArMTU3LDEy
IEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0cKICAgICByZXR1cm4g
UmV0YWluUHRyPENGQXJyYXlSZWY+KEFkb3B0Q0YsIGFycmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7Ci0gICAgZHJhdyhjdHgsIGRzdFJlY3QsIHNyY1JlY3QsIHN0
eWxlQ29sb3JTcGFjZSwgb3AsIERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworICAgIGRy
YXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUs
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91
bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgUmVzcGVjdEltYWdlT3JpZW50YXRp
b25FbnVtIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogewogICAgIHN0YXJ0QW5pbWF0
aW9uKCk7CiAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogCiAgICAgaWYgKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAotICAgIGN0eHQtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc2VsZlNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNv
bXBvc2l0ZU9wLCBvcmllbnRhdGlvbik7CisgICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBzZWxmU2l6ZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRl
T3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkK
ICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyAr
MjY1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YQogICAgIG1f
ZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRy
IGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGlt
YWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKGlt
YWdlUHRyKTsKIApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UoTmEKICAgICBpZiAoIXNob3VsZFVzZVN1YmltYWdlICYmIGN1cnJIZWlnaHQg
PCBpbWFnZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0
KGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkgKiBjdXJySGVpZ2h0IC8gaW1hZ2VTaXplLmhlaWdo
dCgpKTsKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICBzZXRQ
bGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKIAogICAgIC8vIEltYWdl
T3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKQogICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWRE
ZXN0UmVjdC55KCkpOwpAQCAtMTY5OCw3ICsxNjk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hvdWxkUwogICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKHBs
YXRmb3JtQ29udGV4dCgpLCBlbmFibGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgbW9kZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVP
cGVyYXRvciBtb2RlLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDEzNzAwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTksNyArMjU5LDcgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXI6
OmNvcHlOYXRpdmVJbQogICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIElt
YWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBi
b29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0
eVNjYWxlKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gbV9j
b250ZXh0KSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CkBAIC0yNzIs
NyArMjcyLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIAogCiAg
ICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNS
ZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVz
dENvbnRleHQtPmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKCksIGNv
bG9yU3BhY2UsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wKTsKKyAgICBkZXN0Q29udGV4
dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUoKSwgY29sb3JTcGFj
ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKIHZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNzAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjMsNyArMTYzLDcgQEAgaW50IFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyht
X2RvY3VtZW50KSA6IDA7CiB9CiAKLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgUERG
RG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBt
X2N1cnJlbnRQYWdlID09IC0xKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCShy
ZXZpc2lvbiAxMzcwMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwogCiAg
ICAgICAgIFBERkRvY3VtZW50SW1hZ2UoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAgICAgICAgIAogICAg
ICAgICB2b2lkIHNldEN1cnJlbnRQYWdlKGludCk7CiAgICAgICAgIGludCBwYWdlQ291bnQoKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHJldmlzaW9uIDEzNzAwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dEFscGhhKGZsb2F0IG9wYQogICAgIHAtPnNldE9wYWNpdHkob3BhY2l0eSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVP
cGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCShyZXZpc2lv
biAxMzcwMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1
ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIFBhc3NSZWZQdHI8
SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dR
dWFsaXR5U2NhbGUpCisgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgYm9vbCB1
c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSkg
ewogICAgICAgICAvLyBXZSdyZSBkcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIuICBJbiBvcmRl
ciBmb3IgdGhpcyB0byB3b3JrLCB3ZSBuZWVkIHRvIGNvcHkgdGhlIHNvdXJjZSBidWZmZXIgZmly
c3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZVF0LmNwcAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhCiAKIC8vIERyYXdpbmcgUm91
dGluZXMKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkK
KyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAgUVJlY3RGIG5vcm1hbGl6ZWRE
c3QgPSBkc3Qubm9ybWFsaXplZCgpOwogICAgIFFSZWN0RiBub3JtYWxpemVkU3JjID0gc3JjLm5v
cm1hbGl6ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0
aWxsSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNyArNjgsNyBAQCBOYXRpdmVJbWFnZVB0ciBTdGlsbEltYWdlOjpuYXRpdmVJbWFn
ZUZvCiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVj
dCYgc3JjLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKKyAgICBjb25zdCBGbG9h
dFJlY3QmIHNyYywgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkK
IHsKICAgICBpZiAobV9waXhtYXAtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
aAkocmV2aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvU3RpbGxJbWFnZVF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTdGlsbEltYWdlKGNv
bnN0IFFQaXhtYXAmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0JpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhLmgJ
KHJldmlzaW9uIDEzNzAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWEuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyAr
NzAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAKIHByaXZhdGU6
CiAgICAgTmF0aXZlSW1hZ2VTa2lhIG1fbmF0aXZlSW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250
ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDEzNzAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3NCw3ICs4NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxw
CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldEFscGhhKGFscGhhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2
aXNpb24gMTM3MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9J
bWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3Rh
dGljIGJvb2wgZHJhd05lZWRzQ29weShHcmFwaGljc0NvbnRleAogfQogCiB2b2lkIEltYWdlQnVm
ZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlKQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIGJv
b2wgdXNlTG93UXVhbGl0eVNjYWxlKQogewogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRt
YXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQu
Yml0bWFwKCksIGRyYXdOZWVkc0NvcHkobV9jb250ZXh0LmdldCgpLCBjb250ZXh0KSk7CiAgICAg
Y29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcCwgRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwgdXNlTG93UXVhbGl0
eVNjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ltYWdlU2tpYS5jcHAJKHJldmlzaW9uIDEzNzAwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgzLDEyICs1ODMsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkK
ICAgICB9CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsK
LSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9w
LCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3Qs
IHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERvTm90UmVzcGVj
dEltYWdlT3JpZW50YXRpb24pOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
LCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24pCiB7CiAgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47
CkBAIC02NDMsMTAgKzY0MywxMCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogCiAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGdvIGludG8gQml0bWFwSW1hZ2VTaW5nbGVG
cmFtZVNraWEuY3BwCiAKIHZvaWQgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjdHh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
KQorICAgIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsCisgICAgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisgICAgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsKICAgICBGbG9hdFJlY3Qgbm9ybURzdFJl
Y3QgPSBub3JtYWxpemVSZWN0KGRzdFJlY3QpOwogICAgIEZsb2F0UmVjdCBub3JtU3JjUmVjdCA9
IG5vcm1hbGl6ZVJlY3Qoc3JjUmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCShyZXZpc2lvbiAxMzcwMDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1B
UE9mU2l6ZShIQklUTQogICAgIGlmIChzaXplKQogICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJ
bmZvLmJtSGVpZ2h0KSwgSW50U2l6ZSgqc2l6ZSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBv
c2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBkcmF3KCZnYywgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsKTsKIAogICAgIC8v
IERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29udGV4dCk7CkBAIC05NCw3ICs5
NCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAgICAgICAg
aWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVf
dD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJy
ZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0g
aTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHN0eWxlQ29sb3JTcGFjZSwgY29t
cG9zaXRlT3ApOworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgc3R5bGVDb2xvclNw
YWNlLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgICAgIG1fY3VycmVu
dEZyYW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xMDIsNyArMTAyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
YwogCiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxi
YWNrIHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBJbnRTaXplIGltYWdlU2l6ZSA9
IEJpdG1hcEltYWdlOjpzaXplKCk7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHN0eWxl
Q29sb3JTcGFjZSwgY29tcG9zaXRlT3ApOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBz
dHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAJKHJldmlzaW9uIDEzNzAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNW
R0ltYWdlOjpkcmF3U1ZHVG9JbWFnZUJ1ZmZlcihJbWFnCiAgICAgICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT5jbGVhclJlY3QoZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSk7CiAKICAgICAvLyBE
cmF3IFNWRyBvbiB0b3Agb2YgSW1hZ2VCdWZmZXIuCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQo
KSwgZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSwgcmVjdCwgQ29sb3JTcGFjZURldmljZVJH
QiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgZW5j
bG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KSwgcmVjdCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKIAogICAgIC8vIFJlc2V0IGNvbnRh
aW5lciBzaXplICYgem9vbSB0byBpbml0aWFsIHN0YXRlLiBPdGhlcndoaXNlIHRoZSBzaXplKCkg
b2YgdGhpcwogICAgIC8vIGltYWdlIHdvdWxkIHJldHVybiB3aGF0ZXZlciBsYXN0IHNpemUgd2Fz
IHNldCBieSBkcmF3U1ZHVG9JbWFnZUJ1ZmZlcigpLgpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQg
U1ZHSW1hZ2U6OmRyYXdTVkdUb0ltYWdlQnVmZmVyKEltYWcKICAgICBmcmFtZS0+dmlldygpLT5l
bmREaXNhYmxlUmVwYWludHMoKTsKIH0KIAotdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3Zv
aWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0lt
YWdlOjpuYXRpdmVJbWFnZUZvckMKICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSk7CiAgICAgICAgIGlmICghYnVmZmVyKSAv
LyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0
KCksIHJlY3QoKSwgcmVjdCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBtX2ZyYW1lQ2FjaGUgPSBidWZmZXItPmNv
cHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICB9CiAgICAgcmV0dXJuIG1fZnJhbWVDYWNo
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAxMzcwMDApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCkg
eyByZXR1cm4gMDsgfQogCiAgICAgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciopOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7CiAK
ICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4JKHJldmlzaW9uIDEzNzAwMCkKKysr
IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbgkod29ya2luZyBjb3B5KQpAQCAtMzcz
LDExICszNzMsMTEgQEAgRVhQT1JUUwogICAgICAgICA/ZHJhd1BhdHRlcm5ASW1hZ2VAV2ViQ29y
ZUBAVUFFWFBBVkdyYXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQEFCVkFmZmluZVRyYW5z
Zm9ybUAyQEFCVkZsb2F0UG9pbnRAMkBXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJhdG9y
QDJAMUBaCiAgICAgICAgID9yZXBvcnRNZW1vcnlVc2FnZUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBV
QkVYUEFWTWVtb3J5T2JqZWN0SW5mb0BXVEZAQEBaCiAgICAgICAgID9kcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemVAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNzQ29udGV4dEAy
QEFCVkZsb2F0UmVjdEAyQEFCVkludFNpemVAMkBXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9w
ZXJhdG9yQDJAQFoKLSAgICAgICAgP2RyYXdASW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdyYXBoaWNz
Q29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJh
dG9yQDJAVzRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW1AMkBAWgotICAgICAgICA/ZHJhd0BC
aXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJWRmxvYXRSZWN0
QDJAMVc0Q29sb3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBAWgorICAgICAgICA/ZHJh
d0BJbWFnZUBXZWJDb3JlQEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJWRmxvYXRSZWN0QDJA
MVc0Q29sb3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBXNEJsZW5kTW9kZUAyQFc0UmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtQDJAQFoKKyAgICAgICAgP2RyYXdAQml0bWFwSW1hZ2VA
V2ViQ29yZUBATUFFWFBBVkdyYXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQDFXNENvbG9y
U3BhY2VAMkBXNENvbXBvc2l0ZU9wZXJhdG9yQDJAVzRCbGVuZE1vZGVAMkBAWgogICAgICAgICA/
bWF5RmlsbFdpdGhTb2xpZENvbG9yQEJpdG1hcEltYWdlQFdlYkNvcmVAQE1BRV9OWFoKICAgICAg
ICAgP3NvbGlkQ29sb3JAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUJFP0FWQ29sb3JAMkBYWgotICAg
ICAgICA/ZHJhd0BCaXRtYXBJbWFnZUBXZWJDb3JlQEBNQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJA
QUJWRmxvYXRSZWN0QDJAMVc0Q29sb3JTcGFjZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBXNFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bUAyQEBaCisgICAgICAgID9kcmF3QEJpdG1hcEltYWdl
QFdlYkNvcmVAQE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RAMkAxVzRDb2xv
clNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQFc0QmxlbmRNb2RlQDJAVzRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbkVudW1AMkBAWgogICAgICAgICA/ZnJhbWVDb3VudEBCaXRtYXBJbWFnZUBX
ZWJDb3JlQEBNQUVJWFoKICAgICAgICAgP2FkZEF1dGhvclNoZWV0QERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb25AV2ViQ29yZUBAUUFFWFY/JFBhc3NSZWZQdHJAVlN0eWxlU2hlZXRDb250ZW50
c0BXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/cGFyc2VTdHJpbmdAU3R5bGVTaGVldENvbnRl
bnRzQFdlYkNvcmVAQFFBRV9OQUJWU3RyaW5nQFdURkBAQFoKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMzcwMDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTA3ICBSaWsg
Q2FiYW5pZXIgIDxjYWJhbmllckBhZG9iZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIHBsYXRmb3Jt
IGxheWVyIHNvIGl0IGNhbiBwYXNzIGJsZW5kIG1vZGVzIHRvIHRoZSBjb21wb3NpdGluZyBjYWxs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5n
IGJsZW5kIG1vZGUgZW51bWVyYXRpb24gdG8gZHJhdyBmdW5jdGlvbnMgCisKKyAgICAgICAgKiB0
ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0SW1hZ2U6OmRyYXcpOgorCiAyMDEyLTEyLTA3ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTM2OTkzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EcmFn
SW1hZ2VUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0RyYWdJbWFnZVRlc3QuY3BwCShyZXZpc2lvbiAxMzcwMDApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsCiAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6Q29sb3JTcGFjZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvcikKKyAgICAgICAgICAg
ICAgICAgICAgICBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2Rl
KQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1h
Z2VMYXllckNocm9taXVtVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAkocmV2aXNpb24gMTM3MDAwKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZHJhdyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29t
cG9zaXRlT3BlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q29tcG9zaXRl
T3BlcmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSkKICAgICB7CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>